<commit_before>Table of Contents:
==================

-	[Branches and Tags:](#branches-and-tags)
-	[Testing:](#testing)
-	[Build Tasks](#build-tasks)
-	[Stable Releases](#stable-releases)
-	[Production Releases](#production-releases)
-	[Updating MacPorts (automatic)](#updating-macports-automatic)
-	[Updating MacPorts (manual)](#updating-macports-manual)

Branches and Tags:
==================

There are 3 branches/tags:

-	**HEAD:** The cutting edge of development.
-	**tag stable:** Stable enough for use by most people.
-	**tag production:** Burned in long enough that we are confident it can be widely adopted.

If you are packaging BlackBox for distribution, you should track the *tag production*. You might also want to provide a separate package that tracks *tag stable:* for early adopters.

Testing
=======

Tips:

* macOS: `brew install gpg pinentry`
* FreeBSD: `pkg install gpg gmake`
* CentOS7: `yum install gpg`

To run a suite of tests:

```
cd ~/src/github.com/StackExchange/blackbox
make test
```

FYI: For FreeBSD, use `gmake test`


Build Tasks
===========

Stable Releases
===============

Marking the software to be "stable":

Step 1.  Update CHANGELOG.md<commit_msg>Update RELEASE_ENGINEERING.md<commit_after>Table of Contents:
==================

-	[Branches and Tags:](#branches-and-tags)
-	[Testing:](#testing)
-	[Build Tasks](#build-tasks)
-	[Stable Releases](#stable-releases)
-	[Production Releases](#production-releases)
-	[Updating MacPorts (automatic)](#updating-macports-automatic)
-	[Updating MacPorts (manual)](#updating-macports-manual)

Branches and Tags:
==================

There are 3 branches/tags:

-	**HEAD:** The cutting edge of development.
-	**tag stable:** Stable enough for use by most people.
-	**tag production:** Burned in long enough that we are confident it can be widely adopted.

If you are packaging BlackBox for distribution, you should track the *tag production*. You might also want to provide a separate package that tracks *tag stable:* for early adopters.

Testing
=======

Tips:

* macOS: `brew install gpg pinentry`
* FreeBSD: `pkg install gpg gmake`
* CentOS7: `yum install gpg`

To run a suite of tests:

```
cd ~/src/github.com/StackExchange/blackbox
make test
```

FYI: For FreeBSD, use `gmake test`


Build Tasks
===========

Stable Releases
===============

Step 0. Test the software

Run this command to run the unit and system tests:

```
make test
```

NOTE: The tests require pinentry-tty. On macOS with NIX this
can be installed via: `nix-env -i pinentry`

Marking the software to be "stable":

Step 1.  Update CHANGELOG.md
{'fraction_non_alphanumeric': 0.1581986143187067, 'fraction_numerical': 0.0026943802925327174, 'mean_word_length': 4.827354260089686, 'pattern_counts': {'":': 2, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1839035', 'n_tokens_mistral': 881, 'n_tokens_neox': 800, 'n_words': 296}