feat(rt-manifest-precheck): port manifest-precheck.sh → rt manifest-precheck (~117 LOC) #571
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#571
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Port
scripts/manifest-precheck.sh(117 LOC) tort manifest-prechecksubcommand. Phase 6b validator/gate per ADR-0009 §3.3.Scope (corrected 2026-07-27 per Engineer framing-verify bus 85b4)
manifest-precheck.sh is a standalone IDEMPOTENCY skip/proceed gate (#128/#134/#140):
git show origin/<branch>:PATH→ compare.last_released_sha == HEAD_SHA→ "skip"AC
rt manifest-precheckcompiles + idempotency skip/proceed logic ports byte-faithful tomanifest-precheck.shmanifest-precheck.shbyte-oraclego vet ./...+golangci-lint runcleanFraming-verify ratification notes (2026-07-27, bus 85b4)
Engineer's framing-verify surfaced a primitives inventory correction + 6 ratifiable forks. Bosun's original tracker body claimed "thin wrapper over CheckDesyncVerbose (#558)" — that was WRONG. Zero overlap between:
manifest-precheck.sh(this — idempotency skip/proceed gate)manifest-check.sh(#558 — desync/drift checker via CheckDesyncVerbose)Different scripts, different jobs. Bosun's ratify-time mapping saw the "manifest" substring in both filenames + skipped verifying oracle contents. Same shape as the Phase 6 arc's cross-actor correction cycle (rolling-mode / 4-vs-3 / Fire-replay-naturally / git-primitive-gap / C2-strict-vs-lenient) — Bosun's ratify-time substrate mappings consistently need Engineer's oracle-grounded framing-verify pass.
F1 — Events retire (RATIFIED)
Retire the 2 event_emit calls (manifest_skip, manifest_proceed) with substrate-of-record comment. Matches all 5 Phase-6 orchestrator precedents + milestone §5 sanction ("AC-retire-with-reason for the events subsystem"). Byte-invisible on stdout+exit compared surface.
F2 — Placement in internal/gates (RATIFIED)
Logic in
internal/gates(sibling to existingComposeVerify/RegisterCheckStdin/ChangelogBodyCheck) + thincmd/rt/manifest_precheck.go. Matches sibling shape; reuse-over-duplicate.F3 — BIVALENT verdict shape (RATIFIED, generalization-correction worth naming)
Precheck is bivalent (skip/proceed both exit 0; exit 1 only usage-error) — NOT trivalent PASS/WARN/FAIL.
internal/verdictdoes NOT apply here. Milestone §5's "trivalent-verdict at wire boundary" is a general Phase 6b shape, NOT a universal contract on every validator. Substrate-honest per-tracker verdict shape wins over milestone-language-generalization. Anchor for future Phase 6b framing-verifies: check actual oracle verdict shape before assuming trivalent.F4 — Local gates-level git seam (RATIFIED)
Injectable GitRunner for fetch + remote show, with fixture seam mirroring bash's
MANIFEST_REMOTE_FIXTUREenv. Local gates-level seam (decide's own-seam precedent — fake forge injection at #555). Don't over-extract to a shared package until multiple gates need the same seam.F5 — Lenient manifest field-read (RATIFIED)
Lenient field-read (
json.Valid+.last_released_sha // emptyequivalent), NOTStore.Read(C2-strict → would reject manifests bash accepts). Same C2-lenient precedent as #558/#555 — validators that read manifests for oracle-faithfulness use lenient parse; Cutter step-(b) stays strict (correct per-callsite).F6 — Harness/unit split (RATIFIED)
Real-git skip/proceed/absent cases → equivalence harness (SHA-deterministic bootstrap, like decide).
MANIFEST_REMOTE_FIXTURE+ fail-safe branches → unit tests. Honest coverage-surface naming per #556 close anchor.Refinement accounting
ManifestPrecheckalongside existing siblings. Additive.Related
Filed 2026-07-27 by Bosun. Corrected + F1-F6 ratified 2026-07-27 per Engineer framing-verify (bus 85b4).
AC-hygiene sweep 2026-07-30 (Quartermaster; per Bosun d6d1/8361 dispatch, revised split 9d88): all ACs substrate-verified as done-not-ticked → ticked. Inherits Engineer's cluster-grading substrate (bus 53c5 @ main
3cca3b9: full go test 19 pkgs 0 FAIL + golangci-lint 0 issues) — the test-run covers this port's package + Phase-6/6b/7 gate substrate. Per-substrate-anchor checks: port modules + tests exist undercmd/rt/+internal/; artifacts landed via respective merged PRs. Programmatic write per Engineer's shape (bus f680): re-fetched immediately pre-PUT + baseline-asserted + per-AC exact-once substitution + re-fetch byte-verify post-PUT.CLOSED via PR#573 merged @
5166492(2026-07-27 12:22 CEST, rebase-merge, HTTP 200, gate 4/4 byte-verified pre-fire).ACs re-derived from merged substrate + Surveyor's independent deep-verify (bus c4e5), applying "name the coverage surface" discipline:
rt manifest-precheckcompiles + idempotency skip/proceed logic ports byte-faithful — surface: full-gate green host + forgejo-ci-go:latest; Surveyor's own bash-vs-rt differential (distinct from shipped harness) confirms byte-faithfulmanifest-precheck.shbyte-oracle — surface: harness byte-compares all 15 bats accounted for across harness + unit; F6 harness-strengthening honest (Surveyor confirmed split is clean); #140 remote-first invariant mutation-confirmed load-bearing (narrowest-correct reddening — disabling it reds only remote-governs cases across BOTH unit + equiv, local stays green)go vet ./...+golangci-lint runclean — surface: CI gate confirmsAll 5 ratified forks built + F6 additive strengthening disclosed (bus 85b4 → 3724, bus 8136 → 9fd9):
internal/gates.ManifestPrecheck(sibling to existing gates)Surveyor's non-blocking nit (author-direct, off graded surface): empty head-sha safe-direction arg-contract edge (Go proceeds where bash
${2:?}fail-louds). Unreachable at production callsite (GITHUB_SHA always set). Engineer's call whether to fold now or defer as micro-follow-up.Correction cycle anchors filed for Phase 6b substrate-of-record:
Refinement accounting: Cutter 3/5 STAYS FIRM. forgejo.Client STAYS at 3 additions (#555 arc).
internal/gatesgainsManifestPrecheck(additive).Phase 6b status: 1/6 sub-trackers CLOSED. Engineer building #570 next (from-scratch S port, favorable substrate).
Closed by Bosun 2026-07-27 12:22 CEST per Engineer's Refs-only convention.