Record RC publication judgment packet

This commit is contained in:
rcourtman
2026-04-09 14:37:32 +01:00
parent d7d757bddd
commit cb53dfc6a5
4 changed files with 160 additions and 2 deletions
@@ -17,6 +17,11 @@ Use this as the final gate before cutting a Pulse v6 pre-release.
`rc_ready` is intentionally held false in `status.json` by the open decision
`rc-publication-judgment` until the current candidate is explicitly judged
ready for a real governed RC.
- The latest RC publication judgment packet is
`docs/release-control/v6/internal/records/rc-publication-judgment-packet-2026-04-09.md`.
It does not clear the open decision: the active-target proof currently blocks
on the parallel `pulse-enterprise` approval-handler slice requiring
`go mod tidy`.
- The active target is back on `v6-rc-cut`, so GA rehearsal remains
intentionally out of scope until a real RC has actually shipped and
promotion is resumed explicitly.
@@ -0,0 +1,145 @@
# RC Publication Judgment Packet
- Date: `2026-04-09`
- Decision: `rc-publication-judgment`
- Active target: `v6-rc-cut`
- Active branch: `pulse/v6-release`
- Result: `blocked`
## Scope
This packet prepares the explicit owner judgment for publishing a governed Pulse
v6 RC. It does not make the product approval decision.
The current release-control target still uses the `rc_ready` completion rule.
GA or stable promotion remains out of scope until a real prerelease has shipped
and `rc-to-ga-promotion-readiness` is cleared under the later release-ready
phase.
## Governance Snapshot
Commands run from `/Volumes/Development/pulse/repos/pulse`:
1. `python3 scripts/release_control/agent_preflight.py --pretty`
- Result: pass.
- Branch matched `pulse/v6-release`.
- Active target was `v6-rc-cut`.
2. `python3 scripts/release_control/status_audit.py --pretty`
- Result: pass.
- `repo_ready=True`.
- `rc_ready=False`.
- `release_ready=False`.
- All 16 lanes were at the target floor.
- All rc-ready release gates were recorded as passed.
- The only governed rc-ready blocker remained this open decision:
`rc-publication-judgment`.
3. `python3 scripts/release_control/release_promotion_policy_test.py`
- Result: pass.
- This only proves the GA promotion policy guardrails; it does not clear
stable or GA promotion.
## Active-Target Proof Run
Command:
```bash
python3 scripts/release_control/readiness_assertion_guard.py --active-target
```
The first active-target run found a stale `RA16` proof expectation:
1. `pulse-api-cancellation-boundary`: pass.
2. `pulse-v5-recurring-upgrade-migration`: pass.
3. `frontend-grandfathered-license-presentation`: fail.
4. `pulse-pro-public-checkout-reentry-guard`: pass.
The failure was an exact presentation snapshot that had not been extended after
the self-hosted Pulse Pro billing presentation gained canonical demo-hidden and
policy-loading copy. Runtime behavior did not need to change.
The snapshot was updated in
`frontend-modern/src/utils/__tests__/licensePresentation.test.ts`, then the
direct proof was rerun:
```bash
python3 scripts/release_control/internal/commercial_cancellation_reactivation_proof.py
```
Result:
1. `pulse-api-cancellation-boundary`: pass.
2. `pulse-v5-recurring-upgrade-migration`: pass.
3. `frontend-grandfathered-license-presentation`: pass.
4. `pulse-pro-public-checkout-reentry-guard`: pass.
## Current Blocker
After the `RA16` proof repair, the full active-target guard was rerun. It
progressed through the earlier RC proof slices and then blocked at `RA17`:
```text
BLOCKED: readiness assertion proof failed for RA17:mobile-relay-auth-approvals-proof (exit 1)
```
The isolated `RA17` proof showed this failing subcheck:
```text
enterprise-approval-handlers
cwd: /Volumes/Development/pulse/repos/pulse-enterprise
command: go test ./internal/aiautofix -run 'TestHandleListApprovals|TestHandleApproveAndExecuteInvestigationFix|TestHandleApprove' -count=1
detail: go mod tidy
```
The same command run directly in `pulse-enterprise` returned:
```text
go: updates to go.mod needed; to update it:
go mod tidy
```
The `pulse-enterprise` repo already had unrelated dirty files in
`cmd/pulse-enterprise/main.go` and `cmd/pulse-enterprise/main_test.go` before
this packet was written. Those changes appear to belong to another parallel
slice, so this packet does not run `go mod tidy` or edit `pulse-enterprise`.
The mobile portions of the `RA17` proof passed:
1. `mobile-api-client`: pass.
2. `mobile-relay-runtime`: pass.
3. `mobile-secure-persistence-and-approvals`: pass.
4. `mobile-wire-protocol`: pass.
The relay reconnect/drain proof was run separately:
```bash
python3 scripts/release_control/readiness_assertion_guard.py --assertion RA18
```
Result: pass.
## Judgment Outcome
Do not clear `rc-publication-judgment` from this packet.
The release-control metadata is close to the RC floor, but the current
workspace cannot complete the active-target proof while the enterprise approval
handler slice requires `go mod tidy`. Publishing an RC from this state would
turn a parallel worktree hygiene problem into an ambiguous release decision.
## Required Unblock Steps
1. Resolve the `pulse-enterprise` mod-tidy requirement in the owning
enterprise slice.
2. Return all active repos needed for the RC proof to a clean, intentional
state.
3. Rerun:
```bash
python3 scripts/release_control/readiness_assertion_guard.py --active-target
python3 scripts/release_control/status_audit.py --pretty
```
4. If both commands pass, ask the owner to make the explicit product judgment
on `rc-publication-judgment`.
5. Keep `rc-to-ga-promotion-readiness` blocked until a real prerelease has
shipped and the later GA promotion rehearsal exists.
+2 -2
View File
@@ -4225,10 +4225,10 @@
"open_decisions": [
{
"id": "rc-publication-judgment",
"summary": "Pulse v6 prerelease publication remains an explicit product judgment: even if the machine-derived RC floor looks close, `rc_ready` stays blocked until the current candidate is explicitly judged ready for a real governed RC and not inferred from accidental `6.0.0-rc.1` lineage or checklist completion.",
"summary": "Pulse v6 prerelease publication remains an explicit product judgment: the 2026-04-09 packet records that the current active-target proof is blocked by the parallel pulse-enterprise approval-handler mod-tidy state, so `rc_ready` stays blocked until that proof passes and the owner explicitly approves a real governed RC.",
"owner": "project-owner",
"blocking_level": "rc-ready",
"status": "open",
"status": "blocked",
"opened_at": "2026-04-04",
"lane_ids": [
"L1",
@@ -75,6 +75,14 @@ describe('licensePresentation', () => {
planSectionDescription:
'Review your active plan, expiry, included limits, and paid capabilities.',
usageSectionTitle: 'Usage',
hiddenShellTitle: 'Demo mode',
hiddenShellDescription: 'Commercial settings are hidden for this session.',
hiddenStateTitle: 'License and billing details are hidden',
hiddenStateBody:
'This public demo uses sample infrastructure data, so Pulse hides license identity, billing state, monitored-system usage, and upgrade actions instead of creating a demo license.',
policyLoadingTitle: 'Loading settings access',
policyLoadingBody:
'Pulse waits for the session presentation policy before showing license, billing, or usage details.',
monitoredSystemUpgradeArrivalTitle: 'Need a higher monitored-system cap?',
monitoredSystemUpgradeArrivalBody:
'Open Pulse Account to compare self-hosted plans, complete checkout, and return here with Pulse Pro activated automatically.',