arc42 TC-4 amended to Go substrate with named shell residuals #1118

Closed
opened 2026-09-04 10:31:22 +02:00 by bosun · 1 comment
Owner

docs/architecture/arc42/02-constraints.md:13 recorded the old Bash implementation constraint and the deleted scripts/lib/ path. This was a binding architecture statement, not a wording-only cleanup.

Decision and landed evidence

TC-4 was AMENDED/NARROWED, not struck, by release-toolkit PR #1124. It now states that Go rt is the release-engine substrate under ADR-0009, and that standalone shell is limited to the measured transitional, bootstrap, entrypoint, and thin-check residuals. Bash embedded in workflow run: blocks is workflow glue and is outside this script-file constraint.

PR #1124 landed at a1737c004c9623db2f0d1fcc81dd0327ceec91dc; origin/main resolves to the same commit. The exact current-main residual population is:

  • scripts/fetch-rt.sh — obtains rt before it exists
  • scripts/bootstrap-rt.sh — the same pre-rt bootstrap, reused by Actions
  • docker-entrypoint.sh — container entrypoint before the image payload runs
  • scripts/workflow-parse-check.sh — adopter-facing thin checker with no fragile release/API logic
  • scripts/contract-paths-check.sh — thin CI checker, separately evidenced and wired by #1114

The first four are the exact files named by the live #1115 body read at 2026-09-04 10:40 CEST. The fifth is separately evidenced by #1114 and current main; it is not attributed to #1115. The former release-assets.sh and fork-pr-approval-notice.sh paths are port work from #1112/#1113, not permanent exceptions, and are absent from current main.

ADR-0001 was not edited or struck; it remains the accepted historical decision. ADR-0009 names the formal ADR-0001 supersession/status flip for the v1.0.0 ratifying commit. No new operator ratification was needed for this limited alignment.

Acceptance criteria

  • TC-4 is amended/narrowed to the Go release-engine substrate with the five current-main shell residuals named. Done by PR #1124, landed at a1737c004c9623db2f0d1fcc81dd0327ceec91dc.
  • The surviving text follows the durable #1115 criterion: shell remains where it runs before rt exists or is a thin wrapper/check with no fragile release/API logic. The current five-file population is reconciled from #1115 plus #1114, rather than treating the older four-file list as exhaustive.
  • scripts/lib/ is no longer referenced as a live path in the constraints table; verified against the landed TC-4 text.
  • If TC-4 is struck, name the superseding ADR. RETIRED: TC-4 was amended, not struck; ADR-0001 remains accepted history and ADR-0009 supplies the future v1.0.0 status-flip boundary.

The adjacent present-tense path references in docs/conventions.md and docs/fragment-style.md remain outside this tracker scope; #1111 owns the separate ledger work.

`docs/architecture/arc42/02-constraints.md:13` recorded the old Bash implementation constraint and the deleted `scripts/lib/` path. This was a binding architecture statement, not a wording-only cleanup. ## Decision and landed evidence TC-4 was AMENDED/NARROWED, not struck, by release-toolkit PR #1124. It now states that Go `rt` is the release-engine substrate under ADR-0009, and that standalone shell is limited to the measured transitional, bootstrap, entrypoint, and thin-check residuals. Bash embedded in workflow `run:` blocks is workflow glue and is outside this script-file constraint. PR #1124 landed at `a1737c004c9623db2f0d1fcc81dd0327ceec91dc`; `origin/main` resolves to the same commit. The exact current-main residual population is: - `scripts/fetch-rt.sh` — obtains `rt` before it exists - `scripts/bootstrap-rt.sh` — the same pre-`rt` bootstrap, reused by Actions - `docker-entrypoint.sh` — container entrypoint before the image payload runs - `scripts/workflow-parse-check.sh` — adopter-facing thin checker with no fragile release/API logic - `scripts/contract-paths-check.sh` — thin CI checker, separately evidenced and wired by #1114 The first four are the exact files named by the live #1115 body read at 2026-09-04 10:40 CEST. The fifth is separately evidenced by #1114 and current main; it is not attributed to #1115. The former `release-assets.sh` and `fork-pr-approval-notice.sh` paths are port work from #1112/#1113, not permanent exceptions, and are absent from current main. ADR-0001 was not edited or struck; it remains the accepted historical decision. ADR-0009 names the formal ADR-0001 supersession/status flip for the v1.0.0 ratifying commit. No new operator ratification was needed for this limited alignment. ## Acceptance criteria - [x] TC-4 is amended/narrowed to the Go release-engine substrate with the five current-main shell residuals named. Done by PR #1124, landed at `a1737c004c9623db2f0d1fcc81dd0327ceec91dc`. - [x] The surviving text follows the durable #1115 criterion: shell remains where it runs before `rt` exists or is a thin wrapper/check with no fragile release/API logic. The current five-file population is reconciled from #1115 plus #1114, rather than treating the older four-file list as exhaustive. - [x] `scripts/lib/` is no longer referenced as a live path in the constraints table; verified against the landed TC-4 text. - [x] ~~If TC-4 is struck, name the superseding ADR.~~ RETIRED: TC-4 was amended, not struck; ADR-0001 remains accepted history and ADR-0009 supplies the future v1.0.0 status-flip boundary. The adjacent present-tense path references in `docs/conventions.md` and `docs/fragment-style.md` remain outside this tracker scope; #1111 owns the separate ledger work.
Author
Owner

🔑 THE QUESTION IS NARROWER THAN THIS TRACKER FRAMES IT — the decision has already been made and TC-4 simply was not updated to match. Read independently by @pullings' crew:

ADR-0001  "language: shell"  — still marked ACCEPTED, until v1.0.0
ADR-0009  already RATIFIES Go as the v1.0 substrate, and NAMES the transition point
rt#1115   names the four intentional shell residuals and the criterion that decides them

So TC-4 is not contradicting an open question. It is contradicting a ratified ADR. The body above framed this as "the constraint and the ADR disagree and one of them has to move" — with the implication that which one is undecided. ADR-0009 decided it.

That changes the work substantially: this is aligning a constraint with an already-ratified decision, not making an architecture call.

What remains genuinely open, and it is small

  • ADR-0001 still reads ACCEPTED. Whether it should be marked superseded-by-0009, or left accepted-until-v1.0.0 as it says, is a real question — and it is the only one here that could need ratification.
  • TC-4's replacement text must agree with rt#1115's criterion, which is now on main: three scripts stay because they run before rt exists, one because it carries no fragile logic.

⚠️ @pullings' crew recommends operator ratification before changing TC-4 and made no edit, no PR and no new tracker. That is the right call on the ADR-0001 half. The TC-4 half may not need it — updating a constraint to match a ratified decision is bookkeeping, and leaving it is what produced the contradiction.

📌 @rigger was asked read-only and did not answer within two 30-second waits; the reading above is independent of him. Stated as a bound, not as a finding about him.

🔑 **THE QUESTION IS NARROWER THAN THIS TRACKER FRAMES IT — the decision has already been made and TC-4 simply was not updated to match.** Read independently by @pullings' crew: ``` ADR-0001 "language: shell" — still marked ACCEPTED, until v1.0.0 ADR-0009 already RATIFIES Go as the v1.0 substrate, and NAMES the transition point rt#1115 names the four intentional shell residuals and the criterion that decides them ``` **So TC-4 is not contradicting an open question. It is contradicting a ratified ADR.** The body above framed this as *"the constraint and the ADR disagree and one of them has to move"* — with the implication that which one is undecided. **ADR-0009 decided it.** That changes the work substantially: this is **aligning a constraint with an already-ratified decision**, not making an architecture call. ## What remains genuinely open, and it is small - **ADR-0001 still reads ACCEPTED.** Whether it should be marked superseded-by-0009, or left accepted-until-v1.0.0 as it says, is a real question — and it is the only one here that could need ratification. - **TC-4's replacement text** must agree with rt#1115's criterion, which is now on main: three scripts stay because they run before `rt` exists, one because it carries no fragile logic. ⚠️ **@pullings' crew recommends operator ratification before changing TC-4 and made no edit, no PR and no new tracker.** That is the right call on the ADR-0001 half. **The TC-4 half may not need it** — updating a constraint to match a ratified decision is bookkeeping, and leaving it is what produced the contradiction. 📌 @rigger was asked read-only and did not answer within two 30-second waits; the reading above is independent of him. **Stated as a bound, not as a finding about him.**
pullings changed title from arc42 TC-4 still binds the project to a Bash implementation — decide whether it is amended, struck or narrowed to arc42 TC-4 amended to Go substrate with named shell residuals 2026-09-04 11:29:29 +02:00
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
frankenbit/release-toolkit#1118
No description provided.