chore(v1.0.0): velocity discipline shift — SemVer stability contract commits to backward compat forward #338

Closed
opened 2026-07-03 13:36:00 +02:00 by bosun · 6 comments
Member

Finding

Velocity: 40 releases in 10 calendar days, 10 on June 26, 5 minor on July 2. Appropriate pre-1.0; not compatible with treating tool as boring/settled infrastructure.

External verdict: "promising pre-1.0 infrastructure, not adoptable release infrastructure."

Meta-observation

v1.0.0 SemVer signal: adopters pin @v1.0.0 trusting v1.x is backward-compatible. Commitment, not milestone marker.

Discipline shift

  • v1.x releases MUST preserve backward compat on workflow input schema, config schema, published script CLI args, documented behavior contracts
  • Breaking changes require v2.0.0 (major bump)
  • Deprecation cycle: mark deprecated in v1.x, remove in v2.0.0 (never mid-major)
  • Consider slower release cadence post-v1.0.0 — batch minor changes

v1.0.0 relationship

META-DISCIPLINE, not code change. Commitment memorialization + checkpoint at v1.0.0 cut for velocity/stability calibration.

Closes at v1.0.0 cut with comment naming discipline shift as active.

Anchor

External correctness cold-read (anonymous ChatGPT session, uploaded to operator 2026-07-03). Full review surfaced 10 findings across 5 blocking-v1.0.0 + 2 should-fix pre-v1.0.0 + 3 post-v1.0.0 backlog. This tracker addresses one of them.


At the v1.0.0 cut — carried here from rt#1118 (closed)

#1118 decided that ADR-0001 stays as accepted history and that ADR-0009 supplies the status-flip boundary at v1.0.0. That disposition was recorded in a RETIRED acceptance criterion on a CLOSED tracker, so nothing would have fired at the cut. This section is where it fires. Verified 2026-09-04: no open tracker referenced ADR-0001 or a status flip.

  • DEFERRED → #1292, which owns it as a refusal rather than a reminder: docs/adr/0001-language-shell.md — flip **Status**: accepted to superseded-by-ADR-0009. It reads accepted on main at a1737c00; TC-4 has already been amended to the Go substrate (PR #1124), so the ADR is the last surface still asserting shell as the project language.
  • Re-read TC-4's shell residual list against the tree at cut time rather than trusting this list — it named five on 2026-09-04 and the count has expired four times in one milestone. git ls-files '*.sh' is the answer; §2.4 carries the criterion and deliberately carries no total.

Why here: #338 already closes at the v1.0.0 cut with a comment naming the discipline shift as active, so it is the one open tracker guaranteed to be read at that moment.

## Finding Velocity: 40 releases in 10 calendar days, 10 on June 26, 5 minor on July 2. Appropriate pre-1.0; not compatible with treating tool as boring/settled infrastructure. External verdict: "promising pre-1.0 infrastructure, not adoptable release infrastructure." ## Meta-observation v1.0.0 SemVer signal: adopters pin @v1.0.0 trusting v1.x is backward-compatible. Commitment, not milestone marker. ## Discipline shift - v1.x releases MUST preserve backward compat on workflow input schema, config schema, published script CLI args, documented behavior contracts - Breaking changes require v2.0.0 (major bump) - Deprecation cycle: mark deprecated in v1.x, remove in v2.0.0 (never mid-major) - Consider slower release cadence post-v1.0.0 — batch minor changes ## v1.0.0 relationship META-DISCIPLINE, not code change. Commitment memorialization + checkpoint at v1.0.0 cut for velocity/stability calibration. Closes at v1.0.0 cut with comment naming discipline shift as active. ## Anchor External correctness cold-read (anonymous ChatGPT session, uploaded to operator 2026-07-03). Full review surfaced 10 findings across 5 blocking-v1.0.0 + 2 should-fix pre-v1.0.0 + 3 post-v1.0.0 backlog. This tracker addresses one of them. --- ## At the v1.0.0 cut — carried here from rt#1118 (closed) **#1118 decided that ADR-0001 stays as accepted history and that ADR-0009 supplies the status-flip boundary at v1.0.0. That disposition was recorded in a RETIRED acceptance criterion on a CLOSED tracker, so nothing would have fired at the cut.** This section is where it fires. Verified 2026-09-04: no open tracker referenced ADR-0001 or a status flip. - [x] **DEFERRED → #1292**, which owns it as a refusal rather than a reminder: `docs/adr/0001-language-shell.md` — flip `**Status**: accepted` to superseded-by-ADR-0009. It reads `accepted` on `main` at `a1737c00`; TC-4 has already been amended to the Go substrate (PR #1124), so the ADR is the last surface still asserting shell as the project language. - [x] Re-read TC-4's shell residual list against the tree at cut time rather than trusting this list — it named five on 2026-09-04 and the count has expired four times in one milestone. `git ls-files '*.sh'` is the answer; §2.4 carries the criterion and deliberately carries no total. **Why here:** #338 already closes at the v1.0.0 cut with a comment naming the discipline shift as active, so it is the one open tracker guaranteed to be read at that moment.
Owner

Memorialization merged via PR #351 (commit 165bdba). New docs/VERSIONING.md names the v1.0.0 SemVer stability contract: v1.x preserves backward compat on workflow inputs / config schema / script CLI / documented behavior contracts; breaking changes require v2.0.0; deprecation cycle spans a minor before removal; tag immutability commitment; post-v1.0.0 cadence shifts to boring/settled infrastructure. Per this tracker's body: closes at v1.0.0 cut with the discipline-shift named as active.

Memorialization merged via PR #351 (commit 165bdba). New `docs/VERSIONING.md` names the v1.0.0 SemVer stability contract: v1.x preserves backward compat on workflow inputs / config schema / script CLI / documented behavior contracts; breaking changes require v2.0.0; deprecation cycle spans a minor before removal; tag immutability commitment; post-v1.0.0 cadence shifts to boring/settled infrastructure. Per this tracker's body: closes **at v1.0.0 cut** with the discipline-shift named as active.
engineer added this to the v1.0.0 milestone 2026-07-07 23:41:23 +02:00
Author
Member

⏸️ DEFERRED by operator ruling, and expected to be among the LAST items on this board rather than a near-term decision.

Declaring v1.0.0 freezes workflow inputs, config schema and CLI args until v2.

⚠️ Today is evidence against declaring it yet: the manifest schema seed changed inside a patch release (rt#1019). Under a v1 stability contract that is arguably a breaking change to a published artifact's shape — and it was the right fix, shipped the right way, on a v0.x.

The useful work now is not the declaration; it is writing down what would make it safe. Suggested criteria, to be argued rather than adopted:

  • No workflow-input, config-schema or manifest-schema change for N consecutive releases
  • The resumable-cut (#1024) and fragment-gate (#1028) defects closed
  • An adopter other than ourselves has cut a release with it

📌 A v1 you have to walk back is worse than a v0.x nobody adopts.

⏸️ **DEFERRED by operator ruling, and expected to be among the LAST items on this board rather than a near-term decision.** Declaring v1.0.0 freezes workflow inputs, config schema and CLI args until v2. ⚠️ **Today is evidence against declaring it yet:** the manifest schema seed changed inside a patch release (`rt#1019`). *Under a v1 stability contract that is arguably a breaking change to a published artifact's shape* — and it was the right fix, shipped the right way, on a v0.x. **The useful work now is not the declaration; it is writing down what would make it safe.** Suggested criteria, to be argued rather than adopted: - [ ] No workflow-input, config-schema or manifest-schema change for N consecutive releases - [ ] The resumable-cut (`#1024`) and fragment-gate (`#1028`) defects closed - [ ] An adopter other than ourselves has cut a release with it 📌 *A v1 you have to walk back is worse than a v0.x nobody adopts.*
Author
Member

Fresh measurement for AC2, dated — NOT a discharge, because the AC's own instruction is not to trust a list.

git ls-tree -r --name-only origin/main | grep '\.sh$' on dfe9a85f+ (2026-09-05 05:50):

docker-entrypoint.sh
scripts/bootstrap-rt.sh
scripts/contract-paths-check.sh
scripts/fetch-rt.sh
scripts/workflow-parse-check.sh
TOTAL: 5

Unchanged from the five named on 2026-09-04 — the count did not expire a fifth time, despite nine PRs merging and two releases cutting in between. That is worth knowing precisely because the tracker's premise is that it keeps moving: the last two .sh files to leave were release-assets.sh (#1112) and fork-pr-approval-notice.sh (#1113), both ported before this window.

⚠️ This measurement expires the moment anyone adds or ports a script. AC2 says "re-read against the tree AT CUT TIME rather than trusting this list." This comment is a data point, not a substitute — re-run the one command at the v1.0.0 cut.

AC1 is correctly deferred, and the TREE says so rather than this tracker

docs/architecture/arc42/02-constraints.md, TC-4, on current main:

"ADR-0001 remains accepted historical record; its formal supersession/status flip is deferred to the v1.0.0 ratifying commit."

So the flip is not pending work anyone forgot — it is scheduled machinery, recorded in the constraint it belongs to. This tracker fires AT the cut; it is not blocked on a decision and not waiting on an owner.

📌 Correcting @bosun's own earlier framing: this tracker was reported to the operator twice tonight as "needs a policy decision from you or @engineer." That was wrong — its body says "Closes at v1.0.0 cut" and TC-4 names the deferral independently. A tracker that fires on a future event is not the same as one blocked on a person, and reporting it as the latter asks someone to act who has nothing to do.

📌 Measurement only — no code, no ADR touched, tracker unassigned.

**Fresh measurement for AC2, dated — NOT a discharge, because the AC's own instruction is not to trust a list.** `git ls-tree -r --name-only origin/main | grep '\.sh$'` on `dfe9a85f`+ (2026-09-05 05:50): ``` docker-entrypoint.sh scripts/bootstrap-rt.sh scripts/contract-paths-check.sh scripts/fetch-rt.sh scripts/workflow-parse-check.sh TOTAL: 5 ``` **Unchanged from the five named on 2026-09-04** — the count did not expire a fifth time, despite nine PRs merging and two releases cutting in between. **That is worth knowing precisely because the tracker's premise is that it keeps moving**: the last two `.sh` files to leave were `release-assets.sh` (#1112) and `fork-pr-approval-notice.sh` (#1113), both ported before this window. ⚠️ **This measurement expires the moment anyone adds or ports a script.** AC2 says *"re-read against the tree AT CUT TIME rather than trusting this list."* **This comment is a data point, not a substitute** — re-run the one command at the v1.0.0 cut. ## AC1 is correctly deferred, and the TREE says so rather than this tracker `docs/architecture/arc42/02-constraints.md`, TC-4, on current `main`: > *"ADR-0001 remains accepted historical record; its formal supersession/status flip is deferred to the v1.0.0 ratifying commit."* **So the flip is not pending work anyone forgot — it is scheduled machinery, recorded in the constraint it belongs to.** This tracker fires AT the cut; it is not blocked on a decision and not waiting on an owner. 📌 **Correcting @bosun's own earlier framing:** this tracker was reported to the operator twice tonight as *"needs a policy decision from you or @engineer."* **That was wrong** — its body says *"Closes at v1.0.0 cut"* and TC-4 names the deferral independently. **A tracker that fires on a future event is not the same as one blocked on a person**, and reporting it as the latter asks someone to act who has nothing to do. 📌 Measurement only — no code, no ADR touched, tracker unassigned.
Author
Member

📌 BOTH OPEN ACs MEASURED AGAINST THE TREE, so the cut-time reader is not re-deriving them under pressure. Neither is ticked — both fire AT the cut, and that has not happened.

AC2 — the shell residual, git ls-files '*.sh' on origin/main today

docker-entrypoint.sh
scripts/bootstrap-rt.sh
scripts/contract-paths-check.sh
scripts/fetch-rt.sh
scripts/workflow-parse-check.sh
                                    total: 5

⚠️ The tracker says this count "has expired four times in one milestone", so this measurement is dated and will expire too. ✅ The AC is right that the command is the answer and no total belongs in prose — I am recording the list, not amending §2.4 to carry a number.

AC1 — ADR-0001 still reads accepted, and it is the last surface asserting shell

docs/adr/0001-language-shell.md    - **Status**: accepted        (dated 2026-06-24)
docs/adr/0009-go-substrate-for-v1  - **Status**: accepted        (ratified 2026-07-24)

Both read accepted, which is the state the AC exists to end. 🔑 Not flipping it now, deliberately: #1118 decided ADR-0009 supplies the status-flip boundary AT v1.0.0, so flipping early would assert a supersession that has not happened. The AC's placement here is the whole point — this is the one tracker guaranteed to be read at that moment.

📌 On the tracker's own premise, re-measured

2026-07-03 finding   40 releases in 10 calendar days; 10 on June 26
today                114 v-tags total, 42 in the last 30 days
busiest days         2026-06-27=12 · 2026-06-26=11 · 2026-06-28=10 · 2026-08-26=10

The extreme burst is historical — the top three days are all late June. ⚠️ 42 tags in 30 days is still ~1.4/day, which is not "boring, settled infrastructure" by the external reviewer's standard. ✅ The discipline shift this tracker memorialises is therefore still unfired rather than obsolete, and the cadence half of it ("consider slower release cadence post-v1.0.0 — batch minor changes") is the part the numbers still argue for.

What this tracker is actually waiting on

The v1.0.0 cut. ⚠️ And that is NOT a terminal state under this campaign's rules — blocked on another of our own issues relocates the question, it does not answer it. #1068 holds the cut, and its own last AC is the stranger test: a cold read by someone who did not build this, which no chamber can supply. The package is built and verified; the remaining step is a paste into a fresh outside-model session.

(@bosun, 2026-09-06. Measurements taken so the cut-time reader inherits them rather than re-deriving them.)

📌 **BOTH OPEN ACs MEASURED AGAINST THE TREE, so the cut-time reader is not re-deriving them under pressure. Neither is ticked — both fire AT the cut, and that has not happened.** ## AC2 — the shell residual, `git ls-files '*.sh'` on `origin/main` today ``` docker-entrypoint.sh scripts/bootstrap-rt.sh scripts/contract-paths-check.sh scripts/fetch-rt.sh scripts/workflow-parse-check.sh total: 5 ``` ⚠️ **The tracker says this count "has expired four times in one milestone", so this measurement is dated and will expire too.** ✅ **The AC is right that the command is the answer and no total belongs in prose — I am recording the list, not amending §2.4 to carry a number.** ## AC1 — ADR-0001 still reads `accepted`, and it is the last surface asserting shell ``` docs/adr/0001-language-shell.md - **Status**: accepted (dated 2026-06-24) docs/adr/0009-go-substrate-for-v1 - **Status**: accepted (ratified 2026-07-24) ``` **Both read `accepted`, which is the state the AC exists to end.** 🔑 **Not flipping it now, deliberately: `#1118` decided ADR-0009 supplies the status-flip boundary AT v1.0.0, so flipping early would assert a supersession that has not happened.** The AC's placement here is the whole point — this is the one tracker guaranteed to be read at that moment. ## 📌 On the tracker's own premise, re-measured ``` 2026-07-03 finding 40 releases in 10 calendar days; 10 on June 26 today 114 v-tags total, 42 in the last 30 days busiest days 2026-06-27=12 · 2026-06-26=11 · 2026-06-28=10 · 2026-08-26=10 ``` **The extreme burst is historical — the top three days are all late June.** ⚠️ **42 tags in 30 days is still ~1.4/day, which is not "boring, settled infrastructure" by the external reviewer's standard.** ✅ **The discipline shift this tracker memorialises is therefore still unfired rather than obsolete**, and the cadence half of it (*"consider slower release cadence post-v1.0.0 — batch minor changes"*) is the part the numbers still argue for. ## What this tracker is actually waiting on **The v1.0.0 cut.** ⚠️ **And that is NOT a terminal state under this campaign's rules** — *blocked on another of our own issues relocates the question, it does not answer it.* **`#1068` holds the cut, and its own last AC is the stranger test: a cold read by someone who did not build this, which no chamber can supply.** The package is built and verified; the remaining step is a paste into a fresh outside-model session. *(@bosun, 2026-09-06. Measurements taken so the cut-time reader inherits them rather than re-deriving them.)*
bosun self-assigned this 2026-09-06 11:24:41 +02:00
Author
Member

📌 AC2's MEASUREMENT TAKEN NOW rather than deferred to the cut — the AC says "re-read against the tree rather than trusting this list", and the tree is readable today.

git ls-tree -r --name-only origin/main | grep '\.sh$'      on b954df1b

docker-entrypoint.sh                 entrypoint residual
scripts/bootstrap-rt.sh              bootstrap residual
scripts/contract-paths-check.sh      thin check
scripts/fetch-rt.sh                  the one remaining invocable script (covered by C5)
scripts/workflow-parse-check.sh      thin check
                                     -- 5 --

✅ Five, and the count matches what TC-4 named on 2026-09-04 — but the list is what matters and every member falls inside TC-4's four permitted categories (transitional, bootstrap, entrypoint, thin-check). No release-engine logic remains in shell.

⚠️ The AC's own warning is why this is a re-read and not a citation: the count has expired four times in one milestone. It must be re-run at the cut, against the tree as it is then — this measurement establishes the shape, not the final number. §2.4 deliberately carries no total for exactly that reason.


📌 AC1 IS GENUINELY CUT-GATED, AND BY A RATIFIED DECISION RATHER THAN BY NEGLECT. Recording it so nobody re-litigates it here:

ADR-0009:9   "Supersedes (at v1.0.0 cut, NOT BEFORE): ADR-0001"
02-constraints.md:13 (TC-4)
             "ADR-0001 remains accepted historical record; its formal
              supersession/status flip is deferred to the v1.0.0 ratifying commit."

Two surfaces say the same thing, and ADR-0009 carries operator ratification (2026-07-24) plus @surveyor's 4525 at head 04a69a3. ⚠️ Flipping ADR-0001's status today would contradict a ratified ADR to fix a document that ADR-0009 already tells the reader is superseded-in-substance. The status line is stale-by-design, and the design is written down in two places.

🔑 What that makes this tracker: the carrier for two actions that fire at one moment. #1118 put the same disposition in a RETIRED acceptance criterion on a CLOSED tracker, where nothing would have fired — that is the failure this section exists to prevent, and it is worth stating that a tracker held open as a trigger is doing a job, not waiting.

The discipline half is already landed

docs/VERSIONING.md carries the SemVer commitment in full — the four preserved surfaces, the rt CLI surface as contract C5, the breaking-change list, and the paths α/γ contract. ✅ The memorialization this tracker asked for exists on main and is adopter-readable today.

⚠️ One defect found in it while checking: VERSIONING.md:3 still says "latest: v0.56.1", four releases stale. Filed as #1283 — the fix is deletion, not a bump.

📌 **AC2's MEASUREMENT TAKEN NOW rather than deferred to the cut — the AC says *"re-read against the tree rather than trusting this list"*, and the tree is readable today.** ``` git ls-tree -r --name-only origin/main | grep '\.sh$' on b954df1b docker-entrypoint.sh entrypoint residual scripts/bootstrap-rt.sh bootstrap residual scripts/contract-paths-check.sh thin check scripts/fetch-rt.sh the one remaining invocable script (covered by C5) scripts/workflow-parse-check.sh thin check -- 5 -- ``` ✅ **Five, and the count matches what TC-4 named on 2026-09-04 — but the list is what matters and every member falls inside TC-4's four permitted categories** (transitional, bootstrap, entrypoint, thin-check). **No release-engine logic remains in shell.** ⚠️ **The AC's own warning is why this is a re-read and not a citation: the count has expired four times in one milestone.** It must be re-run **at the cut**, against the tree as it is then — **this measurement establishes the shape, not the final number.** §2.4 deliberately carries no total for exactly that reason. --- 📌 **AC1 IS GENUINELY CUT-GATED, AND BY A RATIFIED DECISION RATHER THAN BY NEGLECT.** Recording it so nobody re-litigates it here: ``` ADR-0009:9 "Supersedes (at v1.0.0 cut, NOT BEFORE): ADR-0001" 02-constraints.md:13 (TC-4) "ADR-0001 remains accepted historical record; its formal supersession/status flip is deferred to the v1.0.0 ratifying commit." ``` **Two surfaces say the same thing, and ADR-0009 carries operator ratification (2026-07-24) plus @surveyor's `4525` at head `04a69a3`.** ⚠️ **Flipping `ADR-0001`'s status today would contradict a ratified ADR to fix a document that ADR-0009 already tells the reader is superseded-in-substance.** *The status line is stale-by-design, and the design is written down in two places.* 🔑 **What that makes this tracker: the carrier for two actions that fire at one moment.** `#1118` put the same disposition in a RETIRED acceptance criterion on a CLOSED tracker, where nothing would have fired — **that is the failure this section exists to prevent, and it is worth stating that a tracker held open as a trigger is doing a job, not waiting.** ## The discipline half is already landed **`docs/VERSIONING.md` carries the SemVer commitment in full** — the four preserved surfaces, the `rt` CLI surface as contract C5, the breaking-change list, and the paths α/γ contract. ✅ **The memorialization this tracker asked for exists on `main` and is adopter-readable today.** ⚠️ **One defect found in it while checking: `VERSIONING.md:3` still says *"latest: v0.56.1"*, four releases stale. Filed as `#1283` — the fix is deletion, not a bump.**
Author
Member

✅ CLOSED. The discipline half is landed and verified; the two cut-time actions now have a MECHANICAL carrier — #1292 — instead of this tracker.

The discipline is memorialized and adopter-readable today

docs/VERSIONING.md carries the SemVer commitment in full: the four preserved surfaces (workflow input schemas, workflow output schemas, config schema, documented behaviour contracts), the rt CLI surface as contract C5, the breaking-change list, the deprecation cycle, and the paths α/γ contract. That is what this tracker asked for and it is on main.

AC2's re-measurement, taken rather than deferred

git ls-tree -r --name-only origin/main | grep '\.sh$'      on b954df1b

docker-entrypoint.sh · scripts/bootstrap-rt.sh · scripts/contract-paths-check.sh
scripts/fetch-rt.sh  · scripts/workflow-parse-check.sh                      -- 5 --

Every member falls inside TC-4's four permitted categories — transitional, bootstrap, entrypoint, thin-check. No release-engine logic remains in shell.


🔴 WHY THIS CLOSES RATHER THAN WAITING FOR THE CUT, AND IT IS #1118's OWN LESSON APPLIED ONE STEP FURTHER.

#1118 put this disposition in a retired acceptance criterion on a closed tracker, where nothing would have fired. It was rescued by copying it here. ⚠️ But this is a tracker too, and a tracker fires only if a human reads it at exactly the right moment. Being the one tracker "guaranteed to be read at the cut" is a hope with better odds, not a mechanism.

✅ #1292 makes it a REFUSAL: a v1.0.0 cut cannot proceed while docs/adr/0001-language-shell.md reads Status: accepted, and the refusal prints the live *.sh residual so TC-4 is re-measured by construction rather than cited from a tracker.

📌 The disposition itself is unchanged and remains correct: ADR-0009 supersedes ADR-0001 at the v1.0.0 cut, not before, ratified by the operator 2026-07-24 with @surveyor's 4525, and TC-4 says the same. ADR-0001 reading accepted today is stale BY DESIGN, and the design is written down twice.

⚠️ One defect found in VERSIONING.md while checking it: line 3 said "latest: v0.56.1", four releases stale. Filed as #1283, fixed by #1288 — deletion, not a bump, because nothing owns that sentence.

AC1 and AC2 tick as DEFERRED → #1292, which owns them.

✅ **CLOSED. The discipline half is landed and verified; the two cut-time actions now have a MECHANICAL carrier — `#1292` — instead of this tracker.** ## The discipline is memorialized and adopter-readable today **`docs/VERSIONING.md` carries the SemVer commitment in full**: the four preserved surfaces (workflow input schemas, workflow output schemas, config schema, documented behaviour contracts), **the `rt` CLI surface as contract C5**, the breaking-change list, the deprecation cycle, and the paths α/γ contract. **That is what this tracker asked for and it is on `main`.** ## AC2's re-measurement, taken rather than deferred ``` git ls-tree -r --name-only origin/main | grep '\.sh$' on b954df1b docker-entrypoint.sh · scripts/bootstrap-rt.sh · scripts/contract-paths-check.sh scripts/fetch-rt.sh · scripts/workflow-parse-check.sh -- 5 -- ``` **Every member falls inside TC-4's four permitted categories — transitional, bootstrap, entrypoint, thin-check. No release-engine logic remains in shell.** --- 🔴 **WHY THIS CLOSES RATHER THAN WAITING FOR THE CUT, AND IT IS `#1118`'s OWN LESSON APPLIED ONE STEP FURTHER.** `#1118` put this disposition in a **retired acceptance criterion on a closed tracker**, where nothing would have fired. **It was rescued by copying it here.** ⚠️ **But this is a tracker too, and a tracker fires only if a human reads it at exactly the right moment.** *Being the one tracker "guaranteed to be read at the cut" is a hope with better odds, not a mechanism.* ✅ **`#1292` makes it a REFUSAL: a `v1.0.0` cut cannot proceed while `docs/adr/0001-language-shell.md` reads `Status: accepted`, and the refusal prints the live `*.sh` residual so TC-4 is re-measured by construction rather than cited from a tracker.** 📌 **The disposition itself is unchanged and remains correct: ADR-0009 supersedes ADR-0001 *at the v1.0.0 cut, not before*, ratified by the operator 2026-07-24 with @surveyor's `4525`, and TC-4 says the same.** **ADR-0001 reading `accepted` today is stale BY DESIGN, and the design is written down twice.** ⚠️ **One defect found in `VERSIONING.md` while checking it: line 3 said *"latest: v0.56.1"*, four releases stale. Filed as `#1283`, fixed by `#1288` — deletion, not a bump, because nothing owns that sentence.** **AC1 and AC2 tick as DEFERRED → `#1292`, which owns them.**
bosun closed this issue 2026-09-06 11:59:34 +02:00
Sign in to join this conversation.
No project
No assignees
2 participants
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#338
No description provided.