Skip to content

Commit 07c9caa

Browse files
committed
docs: publish rc2 release truth
1 parent 039865a commit 07c9caa

14 files changed

Lines changed: 161 additions & 151 deletions

CHANGELOG.md

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@ experimental and fixture classifications.
88

99
## Unreleased
1010

11+
## 1.0.0rc2 - 2026-08-08 - independently reviewed public release candidate
12+
13+
- Publishes `govengine==1.0.0rc2` with exact `sclite-core==2.0.1` from
14+
immutable tag `v1.0.0rc2` through the confirmed GitHub OIDC workflow.
15+
Reviewed source A and record child B produce byte-identical wheel and sdist;
16+
clean public-index installs pass and the seven-day observation window is
17+
active through `2026-08-15T11:15:02.258488Z`.
1118
- Adds a private complete-payload seal to compiled policy packs and requires a
1219
stable, detached canonical snapshot before policy evaluation, pack digesting
1320
or enforcement admission. Post-compilation mutation of nested condition,
@@ -24,10 +31,8 @@ experimental and fixture classifications.
2431
approval-expiry bounds. This is fail-closed issuance-time validation and
2532
does not claim continuous activation lookup or background invalidation.
2633

27-
## 1.0.0rc2 - prepared/unpublished source candidate
28-
2934
- Prepares the next GovEngine candidate with exact `sclite-core==2.0.1` while
30-
retaining immutable published rc1 history and deferring the record-only
35+
retaining immutable published rc1 history and using a separate record-only
3136
authentic-review child.
3237
- Seeds the final rc2 external-review JSON path with a fail-closed pending form
3338
for the authentic reviewer to complete in GitHub Web. The record-only child

CONTRIBUTING.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
# Contributing to GovEngine
22

3-
GovEngine source is the prepared/unpublished `1.0.0rc2` candidate for the stable v1
4-
governance facade. Legacy top-level surfaces retain their documented
5-
compatibility/alpha posture. Contributions should preserve the package boundary:
3+
GovEngine source tracks the published `1.0.0rc2` candidate for the stable v1
4+
governance facade while its observation window is active. Legacy top-level
5+
surfaces retain their documented compatibility/alpha posture. Contributions
6+
should preserve the package boundary:
67

78
```text
89
domain profile -> host runtime -> GovEngine -> SCLite

PUBLIC_STATUS.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,41 @@
11
# GovEngine public status
22

33
GovEngine is an in-process Python governance kernel. The published
4-
`govengine==1.0.0rc1` package evaluates policy, approval, scope and capability
4+
`govengine==1.0.0rc2` package evaluates policy, approval, scope and capability
55
facts for one concrete operation attempt and returns a deterministic governance
66
decision. It does not execute the operation or define artifact truth.
77

88
## Current release
99

1010
| Item | Current truth |
1111
| --- | --- |
12-
| Current source version | `govengine==1.0.0rc2`; prepared and unpublished |
13-
| Published immutable artifact | `govengine==1.0.0rc1` from tag `v1.0.0rc1` |
12+
| Current source version | `govengine==1.0.0rc2`; published with active observation |
13+
| Published immutable artifact | `govengine==1.0.0rc2` from tag `v1.0.0rc2` |
1414
| Python | `>=3.11`; CI covers 3.11, 3.12 and 3.13 |
1515
| Source dependency | `sclite-core==2.0.1` |
1616
| Stable-candidate facade | `govengine.v1`, exactly 40 exports |
1717
| GovEngine-owned v1 records | 15 |
1818
| Conformance corpus | 33 cases: 5 valid, 28 negative |
19-
| Independent review | published `rc1` complete; rc2 awaits authentic review-record child |
20-
| RC observation | rc1 history retained; rc2 prepared record is not yet created |
19+
| Independent review | rc2 external re-review #4 approved with zero open P0/P1 |
20+
| RC observation | active through `2026-08-15T11:15:02.258488Z` |
2121
| Reference runtime | `rexecop==1.0.0rc1` |
2222
| Profile alignment | Tecrax `0.4.0rc3` source-aligned/unpublished on the rc1 train |
2323

24-
The release was published from immutable tag `v1.0.0rc1` through the
25-
tag-confirmed OIDC workflow. Current `main` is the `1.0.0rc2`
26-
prepared/unpublished source candidate. It remains `publishable=false` until an
27-
authentic review-record child binds the reviewed source and artifacts; rc1
28-
observation evidence does not qualify it by itself.
24+
The release was published from immutable tag `v1.0.0rc2` through confirmed
25+
workflow run `31254483143`, including source-A recovery, authentic review and
26+
window validation, exact A/B artifact equality, provenance and PyPI OIDC.
27+
Current `main` contains only post-tag evidence updates. Stable promotion
28+
remains `publishable=false` until the active seven-day observation is completed
29+
and downstream RExecOp qualification against the public rc2 pair passes.
2930

30-
The immutable PyPI long description for `1.0.0rc1` is stale: it contains the
31-
pre-publication README, including obsolete release-blocked and `0.16.11`
32-
installation wording. The wheel version, exact dependency and recorded hashes
33-
remain valid. The corrected description will ship with the next candidate.
31+
The public wheel and normalized sdist exactly match the reviewed artifacts.
32+
Their SHA-256 values are recorded in the rc2 external-review record and
33+
[PUBLISHING.md](PUBLISHING.md).
3434
The machine-readable current release train is
3535
[`docs/release-train.json`](docs/release-train.json).
3636

3737
Source/package version: `1.0.0rc2`.
38-
Latest published PyPI package: `govengine==1.0.0rc1`.
38+
Latest published PyPI package: `govengine==1.0.0rc2`.
3939

4040
## Supported contract
4141

PUBLISHING.md

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -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

2926
The 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:
4444
sclite-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
5050
rexecop 1.0.0rc1 reference runtime; published RC
5151
5252
tecrax 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+
5559
Ravenclaw is a legacy/external consumer, not the next package in the current
5660
release 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

128132
On 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

132136
For an RC, the candidate-specific RC-window validator must pass.
133137
RC-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

138142
The 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
154158
description bytes. Package smoke is an explicit disposable `/tmp` check for
155159
both 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
160164
A. 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
163167
external security-review JSON and adds the prepared RC-window JSON. Those must
164168
be 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
169173
hashes and cryptographically references that review record without copying its
170174
fields.
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,
173177
and never creates or fills authentic records itself. The seeded form is not
174178
approval, identity proof or publication authority and contains no confidential
175179
report 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
182186
version and verify that it matches `pyproject.toml`:
183187

184188
```bash
185-
VERSION=1.0.0rc1
189+
VERSION=1.0.0rc2
186190
TAG="v${VERSION}"
187191
test "$(git rev-parse HEAD)" = "$(git rev-parse origin/main)"
188192
test -z "$(git status --porcelain)"
@@ -194,8 +198,8 @@ gh workflow run publish.yml \
194198
gh 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
204208
gate, the following verification is mandatory and manual:
205209

206210
```bash
207-
VERSION=1.0.0rc1
211+
VERSION=1.0.0rc2
208212
python -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;

README.md

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# GovEngine
22

33
[![CI: pytest](https://github.com/rozmiarD/GovEngine/actions/workflows/pytest.yml/badge.svg)](https://github.com/rozmiarD/GovEngine/actions/workflows/pytest.yml)
4-
[![Package: govengine 1.0.0rc1](https://img.shields.io/badge/package-govengine%201.0.0rc1-blueviolet.svg)](https://pypi.org/project/govengine/1.0.0rc1/)
4+
[![Package: govengine 1.0.0rc2](https://img.shields.io/badge/package-govengine%201.0.0rc2-blueviolet.svg)](https://pypi.org/project/govengine/1.0.0rc2/)
55
[![Python: 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](pyproject.toml)
6-
[![Dependency: SCLite ==2.0.0](https://img.shields.io/badge/dependency-SCLite%20%3D%3D2.0.0-informational.svg)](https://github.com/rozmiarD/SCLite)
6+
[![Dependency: SCLite ==2.0.1](https://img.shields.io/badge/dependency-SCLite%20%3D%3D2.0.1-informational.svg)](https://github.com/rozmiarD/SCLite)
77
[![License: MIT](https://img.shields.io/badge/license-MIT-yellow.svg)](LICENSE)
88

99
GovEngine is an in-process Python governance kernel designed to be integrated
@@ -17,20 +17,20 @@ bundles; those responsibilities belong to SCLite. GovEngine does not perform
1717
the operation, schedule jobs, manage credentials, contact targets or store
1818
evidence.
1919

20-
The immutable published release-candidate package `1.0.0rc1` exposes the frozen
21-
candidate contract through `govengine.v1`. Current source is `1.0.0rc2`,
22-
prepared and unpublished; it requires an authentic review-record child before
23-
tagging or publication.
20+
The immutable published release-candidate package `1.0.0rc2` exposes the frozen
21+
candidate contract through `govengine.v1`. Current source is `1.0.0rc2`; the
22+
candidate was published from `v1.0.0rc2` after authentic external review, and
23+
its seven-day observation window is active through
24+
`2026-08-15T11:15:02.258488Z`.
2425

2526
Current source package coordinate: `govengine==1.0.0rc2`.
2627
The wider package still contains explicitly classified compatibility,
2728
experimental and fixture surfaces.
2829

29-
The immutable PyPI long description for `1.0.0rc1` is stale: it was built from
30-
the pre-publication README and still describes the old release posture and
31-
`0.16.11` installation path. The wheel, dependency pin and release hashes are
32-
unaffected. This repository README is the corrected project description; the
33-
next release candidate must publish it as package metadata.
30+
The PyPI long description is the immutable, distribution-specific
31+
`PYPI_LONG_DESCRIPTION.md`; repository-only release state remains in this
32+
README and `PUBLIC_STATUS.md`. Public wheel and sdist bytes match the reviewed
33+
GitHub workflow artifacts.
3434

3535
## Why GovEngine exists
3636

@@ -155,18 +155,17 @@ SCLite owns truth and proof.
155155
Install the published release candidate:
156156

157157
```bash
158-
python -m pip install govengine==1.0.0rc1
158+
python -m pip install govengine==1.0.0rc2
159159
```
160160

161-
Use the exact pin shown above. Because `1.0.0rc1` is a pre-release, an
161+
Use the exact pin shown above. Because `1.0.0rc2` is a pre-release, an
162162
unqualified `pip install govengine` continues to select the latest stable
163163
`0.16.11` line.
164164

165165
Requirements:
166166

167167
- Python 3.11 or newer;
168-
- published rc1 dependency `sclite-core==2.0.0`; prepared rc2 source dependency
169-
`sclite-core==2.0.1`;
168+
- exact published and source dependency `sclite-core==2.0.1`;
170169
- imports intended for 1.x compatibility should come from `govengine.v1`.
171170

172171
## Quick start: evaluate a typed policy
@@ -230,15 +229,15 @@ continue with the bound request and decision contracts described in
230229

231230
| Item | Current status |
232231
| --- | --- |
233-
| Source/package version | `1.0.0rc2` prepared/unpublished |
232+
| Source/package version | `1.0.0rc2` published; observation active |
234233
| Package maturity | Public release candidate |
235234
| Candidate 1.x facade | `govengine.v1`, exactly 40 exports |
236235
| GovEngine-owned v1 records | 15 frozen records |
237236
| Source SCLite dependency | `sclite-core==2.0.1` |
238237
| Legacy root modules | Compatibility, experimental or fixture classifications |
239238

240-
Current source/package version: `1.0.0rc2` prepared/unpublished.
241-
Latest public package pin: `govengine==1.0.0rc1`.
239+
Current source/package version: `1.0.0rc2` published with an active RC window.
240+
Latest public package pin: `govengine==1.0.0rc2`.
242241

243242
The final `1.0.0` promotion state is maintained in
244243
[`PUBLIC_STATUS.md`](PUBLIC_STATUS.md). Exact facade and schema compatibility

SECURITY.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ framework, sandbox, execution runtime, or remote authorization authority.
55

66
## Supported versions
77

8-
GovEngine source is currently the prepared/unpublished `1.0.0rc2` release
9-
candidate. Security fixes should target `main` until the stable release line
10-
exists. The public `1.0.0rc1` package has passed independent contract review.
11-
Final `1.0.0` promotion requires rc2 authentic review and publication,
12-
review covering that release commit and a completed candidate observation
13-
window without an open P0/P1.
8+
GovEngine source currently tracks the published `1.0.0rc2` release candidate.
9+
Security fixes should target `main` until the stable release line exists. The
10+
public rc2 artifacts passed independent external review with zero open P0/P1
11+
and were published through the tag-confirmed OIDC workflow. Final `1.0.0`
12+
promotion requires the candidate observation window to complete without an
13+
open P0/P1 and the remaining downstream qualification to stay green.
1414

1515
## Reporting issues
1616

0 commit comments

Comments
 (0)