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
Owner

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.

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
Owner

⏸️ 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
Owner

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
Owner

📌 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 rulesblocked 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
Owner

📌 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
Owner

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.