v2.6.0 and v2.6.1: the reconciliation cycle and the defects the sweep found #97
No reviewers
Labels
No labels
already-shipped
bug
documentation
duplicate
enhancement
external-review
good first issue
help wanted
in progress
invalid
needs-decision
proposal
question
security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: crenshawdev/cadence-archived#97
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "cadence/v2.6.0"
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?
Two milestones on one integration branch, shipping as 2.6.1.
v2.6.0 — the reconciliation cycle. 73 commits across five phases: the capture queue triaged from 213 open items to 28, per-role token accounting with every phase dispatch bracketed, a runaway-loop bound on all 19 rung agents, named phase dirs and an ignored run record, and the first end-to-end doc sweep at 547 claims with a committed ledger.
v2.6.1 — the defects the sweep found. The four defects that sweep filed rather than reworded away (DFC-01..04), each closed at its source with a check watched to fail against the unpatched code first, plus the exact-budget flip so a surface that shrinks below its recorded byte count fails like one that grows.
The pre-ship review. A cross-model pass over the branch returned eight findings and all eight held up against the tree, including a blocking review gate that could not fire at all on the inline path and a technical-debt harvester reporting itself. Re-firing the same gate against the fixed tree caught two more defects in those fixes. All folded into the 2.6.1 notes.
Closes #87. Closes #72.
Gates on the tip: 1472 tests pass / 0 fail, self-verify problems:[] across 20 checks, tsc -p tsconfig.ci.json exit 0, /cad-audit 0 broken.
The two literal U+0000 bytes inside the `worker` key's template literal at lib/trace.mjs:336 become the two-character `\0` escape. Behaviour is byte-identical - the separator is still U+0000 - but GNU `grep -rn` and `rg` stop treating the whole file as binary and skipping it silently, which had already cost one debugging detour. `git grep` never caught it: its binary heuristic inspects only the head of the blob and the NULs sat at offset ~14.8k. self-verify gains check 15 to keep it closed. `binFiles` takes `{ every: true }` - extension-blind and exclusion-free - so the guard also covers `*.test.mjs`, `lib/config-merge.mjs` and `weight-budgets.json`, which check 12's walk skips and which go dark under `grep` exactly as loudly. Check 12's input is unchanged. Scoped to `cadence-core/bin/**`, not the tree: `.planning/_archive-v2.5.0/1/PLAN-2.md` carries the same two bytes inside an immutable phase record. trace.test.mjs pins the separator itself: two brackets whose corr/phase/plan parts concatenate alike must not pair, so deleting or emptying it fails loudly instead of silently merging worker rows.The step told the model to write the flagged diff to .planning/tasks/{slug}/risk-task-{slug}.diff, but {slug} and that directory are only ever created by planned_path step 1, which itself declines to create them when .planning/ is absent. On the inline path, or in a brownfield repo with no .planning/, the redirect fails with No such file or directory. risk_surface is blocking at every level, so that is a blocking gate that cannot fire at all. Derive the slug here when the inline path did not, mkdir -p before the redirect, and fall back to ${TMPDIR:-/tmp} when .planning/ does not exist. Still shape (c), which since 2.6.1 admits a flagged-diff file however produced. task.md 4,643 -> 5,531 B, so its budget entry and EVIDENCE's workflows subtotal (200,209 -> 201,097), grand total (475,551 -> 476,439), /cad-task turn-one (5,380 -> 6,268) and the 23-command total (279,223 -> 280,111) move with it.