@@ -6,25 +6,22 @@ releases. It describes the repository as it exists; release history belongs in
66
77## Current state
88
9- - Current source version: ` 1.0.0rc2 ` , prepared and unpublished.
10- - Published immutable candidate: ` govengine==1.0.0rc1 ` from ` v1.0.0rc1 ` .
11- - Source dependency: ` sclite-core==2.0.1 ` ; published rc1 remains on ` 2.0.0 ` .
12- - Published ` rc1 ` review: independently reviewed, with no open P0/P1 findings.
13- - Current source review: fail-closed pending form seeded at its final path;
14- authentic reviewer completion and review-record child B remain pending.
9+ - Current source version: ` 1.0.0rc2 ` , published with active observation.
10+ - Published immutable candidate: ` govengine==1.0.0rc2 ` from ` v1.0.0rc2 ` .
11+ - Published and source dependency: ` sclite-core==2.0.1 ` .
12+ - Published ` rc2 ` external review: approved with no open P0/P1 findings.
13+ - Authentic review-record child B: merged and named by ` v1.0.0rc2 ` .
1514- Publication: tag-bound GitHub OIDC workflow, run
16- [ 29764475143 ] ( https://github.com/rozmiarD/GovEngine/actions/runs/29764475143 ) .
17- - RC observation window: active until ` 2026-07-27T17:39:58.058090Z ` .
15+ [ 31254483143 ] ( https://github.com/rozmiarD/GovEngine/actions/runs/31254483143 ) .
16+ - RC observation window: active until ` 2026-08-15T11:15:02.258488Z ` .
1817
19- Current ` main ` is the prepared/unpublished ` 1.0.0rc2 ` source candidate. Do not
20- treat it as a public package or immutable artifact; it remains
21- ` publishable=false ` until authentic review child B and its tag exist .
18+ Current ` main ` tracks the published ` 1.0.0rc2 ` candidate and contains normal
19+ post-tag evidence updates. Stable promotion remains ` publishable=false ` until
20+ the rc2 observation completes and downstream qualification remains green .
2221
23- The immutable PyPI long description for ` 1.0.0rc1 ` is stale because the tag was
24- built from the pre-publication README. It still contains obsolete
25- release-blocked and ` 0.16.11 ` installation wording. The uploaded wheel/sdist,
26- dependency metadata and recorded hashes remain immutable; correct the long
27- description only through the next version, never by recreating the tag.
22+ The immutable PyPI description comes from ` PYPI_LONG_DESCRIPTION.md ` . The
23+ uploaded wheel/sdist, dependency metadata and recorded hashes match the
24+ external review and workflow artifact; never recreate or move the tag.
2825
2926The relevant commits have different roles and must not be conflated:
3027
@@ -33,6 +30,9 @@ The relevant commits have different roles and must not be conflated:
3330- ` 0b5d483f1259aef681521a185e0cdfb19a538314 ` is the frozen RC-window baseline;
3431- ` 33aefcd386351be622794e10cf5c43c8e812d6bc ` is the immutable ` v1.0.0rc1 `
3532 release-tag commit;
33+ - ` f4845c1076df848c1be2df7aa7817450472e6e11 ` is reviewed rc2 source A;
34+ - ` e65ad22ec25d74bbbb4969bd614981a8ed5e47c8 ` is authentic record child B and
35+ the immutable ` v1.0.0rc2 ` tag target;
3636- later ` main ` commits may change documentation or non-frozen fixes, but may not
3737 silently change the frozen facade, schemas, corpus, or reason registry.
3838
@@ -44,14 +44,18 @@ Publish in dependency order:
4444sclite-core 2.0.1 truth/contracts; published and frozen
4545 |
4646 v
47- govengine 1.0.0rc2 governance; prepared/unpublished
47+ govengine 1.0.0rc2 governance; published RC, observation active
4848 |
4949 v
5050rexecop 1.0.0rc1 reference runtime; published RC
5151
5252tecrax 0.4.0rc3 profile source candidate; source-aligned/unpublished
5353```
5454
55+ Published RExecOp ` 1.0.0rc1 ` remains pinned to the rc1 dependency pair.
56+ Qualification against public GovEngine rc2 is the next downstream gate, not a
57+ claim that the published runtime already consumes rc2.
58+
5559Ravenclaw is a legacy/external consumer, not the next package in the current
5660release train. Tecrax is source-aligned/unpublished and pins the published
5761` rexecop==1.0.0rc1 ` runtime line; it is not itself a release authority. A
@@ -126,14 +130,14 @@ git diff --check
126130```
127131
128132On current post-tag ` main ` , ` validate_release_readiness.py ` intentionally
129- reports ` publishable=false ` . The ` rc2 ` release slice must update version,
130- dependency, review and candidate records before any tag is created .
133+ reports stable promotion as ` publishable=false ` while the rc2 observation and
134+ downstream qualification remain incomplete .
131135
132136For an RC, the candidate-specific RC-window validator must pass.
133137RC-window status must be ` prepared ` before first publication.
134- The current ` scripts/validate_rc_window.py ` still validates immutable ` rc1 ` evidence; the
135- ` rc2 ` release slice must retarget it to a new record before tagging. Stable
136- promotion requires the new candidate record, not the completed ` rc1 ` record .
138+ ` scripts/validate_rc_window.py ` validates both immutable rc1 history and the
139+ rc2 v2 record. Current rc2 must pass ` --require-published ` ; stable promotion
140+ requires ` --require-completed ` after the full observation interval .
137141
138142The clean-install script is the dependency-consistency gate. Do not use
139143` pip check ` from a broad system interpreter as release evidence.
@@ -154,12 +158,12 @@ name, version, `sclite-core==2.0.1`, Markdown content type and publication
154158description bytes. Package smoke is an explicit disposable ` /tmp ` check for
155159both wheel and sdist; it is deliberately outside normal unit tests.
156160
157- ## Future rc2 review child
161+ ## Completed rc2 review child
158162
159- The future ` v1.0.0rc2 ` tag must name B, a single-parent child of reviewed source
163+ The immutable ` v1.0.0rc2 ` tag names B, a single-parent child of reviewed source
160164A. Source A contains a valid-JSON, explicitly pending external-review form at
161165` docs/security-review/rc2-external-review.json ` and no rc2 window. The authentic
162- reviewer edits that existing form through GitHub Web. B modifies the seeded
166+ reviewer edited that existing form through GitHub Web. B modifies the seeded
163167external security-review JSON and adds the prepared RC-window JSON. Those must
164168be the only two changed paths, as enforced by
165169` validate_release_record_commit.py ` . The completed external security record
@@ -169,7 +173,7 @@ and zero unresolved P0/P1 findings. The prepared window binds A and frozen-input
169173hashes and cryptographically references that review record without copying its
170174fields.
171175
172- The publish workflow rebuilds A and B, requires artifact equality before OIDC,
176+ The publish workflow rebuilt A and B, required artifact equality before OIDC,
173177and never creates or fills authentic records itself. The seeded form is not
174178approval, identity proof or publication authority and contains no confidential
175179report content. ` scripts/release_ab_repro_gate.sh ` modifies the seeded form and
@@ -182,7 +186,7 @@ Tagging and publication require explicit operator approval. Set the intended
182186version and verify that it matches ` pyproject.toml ` :
183187
184188``` bash
185- VERSION=1.0.0rc1
189+ VERSION=1.0.0rc2
186190TAG=" v${VERSION} "
187191test " $( git rev-parse HEAD) " = " $( git rev-parse origin/main) "
188192test -z " $( git status --porcelain) "
@@ -194,8 +198,8 @@ gh workflow run publish.yml \
194198gh run watch --exit-status
195199```
196200
197- Never recreate ` v1.0.0rc1 ` ; the commands above show the completed RC procedure.
198- A later release uses its own new version and immutable tag.
201+ Never recreate ` v1.0.0rc1 ` or ` v1.0.0rc2 ` ; the commands above show the completed
202+ rc2 procedure. A later release uses its own new version and immutable tag.
199203
200204## Post-publish verification
201205
@@ -204,13 +208,13 @@ automatic public-index install job. Until that workflow gains a post-publish
204208gate, the following verification is mandatory and manual:
205209
206210``` bash
207- VERSION=1.0.0rc1
211+ VERSION=1.0.0rc2
208212python -m venv /tmp/govengine-public-release
209213/tmp/govengine-public-release/bin/python -m pip install --upgrade pip
210214/tmp/govengine-public-release/bin/python -m pip install \
211215 --index-url https://pypi.org/simple \
212216 --no-cache-dir \
213- " sclite-core==2.0.0 " \
217+ " sclite-core==2.0.1 " \
214218 " govengine==${VERSION} "
215219/tmp/govengine-public-release/bin/python -m pip check
216220/tmp/govengine-public-release/bin/python -c \
@@ -236,11 +240,11 @@ move the release tag to include it.
236240
237241## Stable promotion
238242
239- Stable ` 1.0.0 ` remains blocked on a new ` 1.0.0rc2 ` candidate containing current
240- ` main ` . Completion of the existing ` rc1 ` observation remains historical
241- evidence but is insufficient for the post-tag changes. After ` rc2 ` is
242- published, at least seven complete days must elapse from its ` published_at `
243- time and all of the following must remain true:
243+ Stable ` 1.0.0 ` remains blocked on completion of the published ` 1.0.0rc2 `
244+ candidate observation . Completion of the existing ` rc1 ` observation remains
245+ historical evidence but is insufficient for the rc2 changes. At least seven
246+ complete days must elapse from rc2 ` published_at ` , and all of the following
247+ must remain true:
244248
245249- the RC record is ` completed ` with an aware ` completed_at ` ;
246250- frozen facade/schema/corpus/reason inputs have not drifted;
0 commit comments