docs: narrow TC-4 to Go substrate and shell residuals #1124

Merged
pullings merged 2 commits from rigger/1118-narrow-tc4 into main 2026-09-04 11:27:37 +02:00
Owner

Scope

Reconciled docs amendment for Refs frankenbit/release-toolkit#1118 after rebasing onto current main. This PR changes only the Arc42 TC-4 constraint and its changelog fragment. It does not edit ADR-0001, tracker #1115, or any acceptance criteria.

Decision

Go rt is the release-engine substrate under ADR-0009. TC-4 permits standalone shell only for the measured bootstrap, entrypoint, and thin-check residuals recorded in Arc42 section 2.4. Bash embedded in workflow run: blocks is workflow glue and is outside this script-file constraint.

ADR-0001 remains the accepted historical decision. Its formal supersession/status flip is deferred to the v1.0.0 ratifying commit, as required by ADR-0009.

Evidence boundary and reconciled population

The branch was rebased onto current main at 6b9d919afea5201a191b5c97f2115bdc3f051da2, read on 2026-09-04 at 11:21 CEST.

The live REST body of release-toolkit#1115 was read at 2026-09-04 10:40 CEST. It names exactly four files: fetch-rt.sh, bootstrap-rt.sh, docker-entrypoint.sh, and workflow-parse-check.sh. The rebased Arc42 section preserves that as the #1115 list and does not silently attribute a fifth file to it.

The fifth retained current-main residual is scripts/contract-paths-check.sh, separately evidenced and wired by release-toolkit#1114/current main. Current main contains these five retained files:

  • Bootstrap: scripts/fetch-rt.sh (281 lines), scripts/bootstrap-rt.sh (72 lines)
  • Entrypoint: docker-entrypoint.sh (36 lines)
  • Thin checks: scripts/workflow-parse-check.sh (48 lines), scripts/contract-paths-check.sh (149 lines)

The durable #1115 criterion is preserved: a shell residual is allowed when it runs before rt exists (bootstrap), or is a thin wrapper/check with no fragile release/API logic. The newer #1115 Arc42 section and dead-script ledger pointer are retained.

At the earlier evidence boundary, release-assets.sh and the former fork-pr-approval-notice.sh were pending port items tracked as #1112/#1113, not permanent exceptions. Their Go ports are now present on current main: #1112 at 10ccb54c5134b6e9bd5fc7aa84c11800bba3b7c5 and #1113 at 0d79de63eed54439d84a8529e0f8ed53b99569fe; neither shell path remains in the tree.

Verification

  • go test -count=1 ./...: PASS
  • go vet ./...: PASS
  • shellcheck --severity=warning over all shell scripts: PASS
  • python3 scripts/dated-examples-check.py: PASS
  • scripts/contract-paths-check.sh docs/architecture/contracts: PASS
  • bash scripts/workflow-parse-check.sh .: PASS, PARSED=25 TOTAL=25
  • go run ./cmd/rt fragment-check changelog.d: PASS
  • bats --print-output-on-failure tests/: PASS, 143/143 on the rebased tree
  • rt pre-push: 0 FAIL; 6 local gates PASS and 8 CANNOT-GRADE contexts reported explicitly because they require a Forgejo runner or PR/manifest arguments
  • Both issue-source links in the changed docs read HTTP 200
  • No tracker acceptance criteria were changed or ticked
## Scope Reconciled docs amendment for Refs frankenbit/release-toolkit#1118 after rebasing onto current main. This PR changes only the Arc42 TC-4 constraint and its changelog fragment. It does not edit ADR-0001, tracker #1115, or any acceptance criteria. ## Decision Go `rt` is the release-engine substrate under ADR-0009. TC-4 permits standalone shell only for the measured bootstrap, entrypoint, and thin-check residuals recorded in Arc42 section 2.4. Bash embedded in workflow `run:` blocks is workflow glue and is outside this script-file constraint. ADR-0001 remains the accepted historical decision. Its formal supersession/status flip is deferred to the v1.0.0 ratifying commit, as required by ADR-0009. ## Evidence boundary and reconciled population The branch was rebased onto current `main` at `6b9d919afea5201a191b5c97f2115bdc3f051da2`, read on 2026-09-04 at 11:21 CEST. The live REST body of release-toolkit#1115 was read at 2026-09-04 10:40 CEST. It names exactly four files: `fetch-rt.sh`, `bootstrap-rt.sh`, `docker-entrypoint.sh`, and `workflow-parse-check.sh`. The rebased Arc42 section preserves that as the #1115 list and does not silently attribute a fifth file to it. The fifth retained current-main residual is `scripts/contract-paths-check.sh`, separately evidenced and wired by release-toolkit#1114/current main. Current main contains these five retained files: - Bootstrap: `scripts/fetch-rt.sh` (281 lines), `scripts/bootstrap-rt.sh` (72 lines) - Entrypoint: `docker-entrypoint.sh` (36 lines) - Thin checks: `scripts/workflow-parse-check.sh` (48 lines), `scripts/contract-paths-check.sh` (149 lines) The durable #1115 criterion is preserved: a shell residual is allowed when it runs before `rt` exists (bootstrap), or is a thin wrapper/check with no fragile release/API logic. The newer #1115 Arc42 section and dead-script ledger pointer are retained. At the earlier evidence boundary, `release-assets.sh` and the former `fork-pr-approval-notice.sh` were pending port items tracked as #1112/#1113, not permanent exceptions. Their Go ports are now present on current main: #1112 at `10ccb54c5134b6e9bd5fc7aa84c11800bba3b7c5` and #1113 at `0d79de63eed54439d84a8529e0f8ed53b99569fe`; neither shell path remains in the tree. ## Verification - `go test -count=1 ./...`: PASS - `go vet ./...`: PASS - `shellcheck --severity=warning` over all shell scripts: PASS - `python3 scripts/dated-examples-check.py`: PASS - `scripts/contract-paths-check.sh docs/architecture/contracts`: PASS - `bash scripts/workflow-parse-check.sh .`: PASS, `PARSED=25 TOTAL=25` - `go run ./cmd/rt fragment-check changelog.d`: PASS - `bats --print-output-on-failure tests/`: PASS, 143/143 on the rebased tree - `rt pre-push`: 0 FAIL; 6 local gates PASS and 8 CANNOT-GRADE contexts reported explicitly because they require a Forgejo runner or PR/manifest arguments - Both issue-source links in the changed docs read HTTP 200 - No tracker acceptance criteria were changed or ticked
docs: narrow TC-4 to Go substrate and shell residuals
Some checks failed
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 7s
ac-closure-check / ac-closure check (pull_request) Successful in 6s
ac-closure-check / check (pull_request) Successful in 0s
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 14s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
check-self-bootstrap / check (pull_request) Successful in 5s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
fragment-check / changelog fragment-kind (pull_request) Successful in 7s
fragment-check / check (pull_request) Successful in 0s
gitea-twin-check / check (pull_request) Successful in 5s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 30s
changelog-body-check / check (pull_request) Successful in 0s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 15s
go-ci / lint + build + test (pull_request) Successful in 27s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
register-check / register-drift check (pull_request) Successful in 7s
register-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 3s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 30s
manifest-check / check (pull_request) Successful in 0s
tests / contract-paths (pull_request) Has been cancelled
tests / shellcheck (pull_request) Has been cancelled
workflow-parse-check / check (pull_request) Has been cancelled
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Has been cancelled
workflow-parse-check / workflow parse and schema (pull_request) Has been cancelled
tests / bats (pull_request) Has been cancelled
tests / dated-examples (pull_request) Has been cancelled
b141eea2b5
docs: reconcile TC-4 port snapshot
All checks were successful
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 5s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
check-self-bootstrap / check (pull_request) Successful in 5s
gitea-twin-check / check (pull_request) Successful in 5s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 29s
changelog-body-check / check (pull_request) Successful in 0s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 15s
go-ci / lint + build + test (pull_request) Successful in 26s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 8s
register-check / register-drift check (pull_request) Successful in 8s
register-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 4s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 34s
manifest-check / check (pull_request) Successful in 0s
tests / bats (pull_request) Successful in 20s
tests / contract-paths (pull_request) Successful in 4s
tests / dated-examples (pull_request) Successful in 17s
tests / shellcheck (pull_request) Successful in 3s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 5s
workflow-parse-check / check (pull_request) Successful in 0s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 15s
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
ac-closure-check / ac-closure check (pull_request) Successful in 6s
ac-closure-check / check (pull_request) Successful in 0s
fragment-check / changelog fragment-kind (pull_request) Successful in 7s
fragment-check / check (pull_request) Successful in 0s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 19s
c9998d9534
lookout requested changes 2026-09-04 11:13:56 +02:00
Dismissed
lookout left a comment

REQUEST_CHANGES at exact head c9998d9534d0d0188e6b6867072cb9f06e9a42df.

The amendment's content and local checks are clean, but the live PR cannot merge onto the current base. The server reports base 6b9d919afea5201a191b5c97f2115bdc3f051da2, and git merge-tree --write-tree 6b9d919afea5201a191b5c97f2115bdc3f051da2 c9998d9534d0d0188e6b6867072cb9f06e9a42df reports a content conflict in docs/architecture/arc42/02-constraints.md (common ancestor 5882f20e…). Main has the newer #1115 constraint/ledger edits after that ancestor; this branch rewrites the same section from the earlier snapshot. Please rebase and reconcile the TC-4 amendment while preserving those current-main edits, then request a fresh read.

The three-dot PR diff remains narrow (the constraints document plus changelog.d/1118.internal.md). Exact-head CI is 27/27 SUCCESS; independent dated-example, contract-path, workflow-parse, fragment, Bats 169/169, Go test/vet, ShellCheck, and diff checks pass. Those checks do not exercise the conflicting merge resolution.

REQUEST_CHANGES at exact head `c9998d9534d0d0188e6b6867072cb9f06e9a42df`. The amendment's content and local checks are clean, but the live PR cannot merge onto the current base. The server reports base `6b9d919afea5201a191b5c97f2115bdc3f051da2`, and `git merge-tree --write-tree 6b9d919afea5201a191b5c97f2115bdc3f051da2 c9998d9534d0d0188e6b6867072cb9f06e9a42df` reports a content conflict in `docs/architecture/arc42/02-constraints.md` (common ancestor `5882f20e…`). Main has the newer #1115 constraint/ledger edits after that ancestor; this branch rewrites the same section from the earlier snapshot. Please rebase and reconcile the TC-4 amendment while preserving those current-main edits, then request a fresh read. The three-dot PR diff remains narrow (the constraints document plus `changelog.d/1118.internal.md`). Exact-head CI is 27/27 SUCCESS; independent dated-example, contract-path, workflow-parse, fragment, Bats 169/169, Go test/vet, ShellCheck, and diff checks pass. Those checks do not exercise the conflicting merge resolution.
rigger force-pushed rigger/1118-narrow-tc4 from c9998d9534
All checks were successful
fork-pr-approval-notice / explain fork workflow approval (pull_request_target) Successful in 5s
changelog-body-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
check-self-bootstrap / check (pull_request) Successful in 5s
gitea-twin-check / check (pull_request) Successful in 5s
changelog-body-check / changelog body Cold-Read linter (pull_request) Successful in 29s
changelog-body-check / check (pull_request) Successful in 0s
manifest-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 15s
go-ci / lint + build + test (pull_request) Successful in 26s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 8s
register-check / register-drift check (pull_request) Successful in 8s
register-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 4s
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 34s
manifest-check / check (pull_request) Successful in 0s
tests / bats (pull_request) Successful in 20s
tests / contract-paths (pull_request) Successful in 4s
tests / dated-examples (pull_request) Successful in 17s
tests / shellcheck (pull_request) Successful in 3s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 5s
workflow-parse-check / check (pull_request) Successful in 0s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 15s
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
ac-closure-check / ac-closure check (pull_request) Successful in 6s
ac-closure-check / check (pull_request) Successful in 0s
fragment-check / changelog fragment-kind (pull_request) Successful in 7s
fragment-check / check (pull_request) Successful in 0s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 19s
to a1737c004c
Some checks failed
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 7s
manifest-check / check (pull_request) Successful in 0s
register-check / register-drift check (pull_request) Successful in 7s
register-check / check (pull_request) Successful in 0s
tests / workflow-schema (pull_request) Successful in 4s
register-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 17s
tests / bats (pull_request) Successful in 17s
tests / dated-examples (pull_request) Successful in 18s
tests / contract-paths (pull_request) Successful in 4s
workflow-parse-check / toolkit-self parse guard and controls (pull_request) Successful in 3s
workflow-parse-check / workflow parse and schema (pull_request) Successful in 5s
workflow-parse-check / check (pull_request) Successful in 0s
tests / shellcheck (pull_request) Successful in 12s
ac-closure-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
fragment-check / toolkit-self gate (PR's own rt) (pull_request) Successful in 5s
fragment-check / changelog fragment-kind (pull_request) Successful in 7s
fragment-check / check (pull_request) Successful in 0s
ac-closure-check / ac-closure check (pull_request) Successful in 29s
ac-closure-check / check (pull_request) Successful in 0s
check-self-bootstrap / check (push) Successful in 5s
gitea-twin-check / check (push) Successful in 25s
go-ci / lint + build + test (push) Successful in 26s
tests / workflow-schema (push) Successful in 3s
tests / bats (push) Successful in 17s
tests / dated-examples (push) Successful in 4s
tests / contract-paths (push) Successful in 4s
tests / shellcheck (push) Successful in 3s
release / decide + act (push) Failing after 39s
release / release (push) Failing after 0s
release / fire-cut (push) Has been skipped
2026-09-04 11:20:33 +02:00
Compare
lookout approved these changes 2026-09-04 11:27:01 +02:00
lookout left a comment

APPROVED at exact head a1737c004c9623db2f0d1fcc81dd0327ceec91dc (base 6b9d919afea5201a191b5c97f2115bdc3f051da2).

The prior merge conflict in docs/architecture/arc42/02-constraints.md is resolved: git merge-tree --write-tree against the current base reports no conflict, and the current-main #1115 content is retained while the fifth residual is separately evidenced by #1114. The amended TC-4 wording correctly makes Go rt the release-engine substrate, bounds standalone shell to the measured five residuals, keeps workflow run: Bash as glue outside that constraint, and defers ADR-0001's formal status flip to v1.0.0. The two former API-shaped scripts are recorded as completed ports, not permanent exceptions. The changelog fragment matches the documentation change.

The exact three-dot diff is limited to the constraints document and changelog.d/1118.internal.md. On this head I independently ran git diff --check, Bats 143/143, go test -count=1 ./..., go vet ./..., ShellCheck, dated-examples, contract-paths, workflow parse (PARSED=25 TOTAL=25), fragment-check (density PASS), and gitea-twin; all passed. Forgejo reports all 27/27 contexts terminal-success. No findings.

APPROVED at exact head `a1737c004c9623db2f0d1fcc81dd0327ceec91dc` (base `6b9d919afea5201a191b5c97f2115bdc3f051da2`). The prior merge conflict in `docs/architecture/arc42/02-constraints.md` is resolved: `git merge-tree --write-tree` against the current base reports no conflict, and the current-main #1115 content is retained while the fifth residual is separately evidenced by #1114. The amended TC-4 wording correctly makes Go `rt` the release-engine substrate, bounds standalone shell to the measured five residuals, keeps workflow `run:` Bash as glue outside that constraint, and defers ADR-0001's formal status flip to v1.0.0. The two former API-shaped scripts are recorded as completed ports, not permanent exceptions. The changelog fragment matches the documentation change. The exact three-dot diff is limited to the constraints document and `changelog.d/1118.internal.md`. On this head I independently ran `git diff --check`, Bats 143/143, `go test -count=1 ./...`, `go vet ./...`, ShellCheck, dated-examples, contract-paths, workflow parse (`PARSED=25 TOTAL=25`), fragment-check (density PASS), and gitea-twin; all passed. Forgejo reports all 27/27 contexts terminal-success. No findings.
pullings deleted branch rigger/1118-narrow-tc4 2026-09-04 11:27:37 +02:00
Sign in to join this conversation.
No description provided.