v3.5.7 - measured, and no lever to change it #227
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#227
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "cadence/v3.5.7"
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?
Cadence has been measuring its own cost for several releases and handing you
nothing to spend the measurement with. That is the theme. Four phases, 83
commits off v3.5.6, four requirement ids seeded at the open and all four traced
to a verified phase.
/cad-auditPASS on both arms: 4 of 4 requirements traced requirement to phaseto plan to verified, 14 of 14 acceptance criteria covered, zero breaks.
What shipped:
stakesis the minimum a project accepts, not the level every phase pays.route.mjs resolvereads the phase's own declaredfiles:at plan time andraises from that floor.
route.mjs replayover this repo's 30 phases: 27raise back to
shippedon real evidence, 2 take the discount, 1 is withheldbecause a declared path was not readable, which is the fail-closed direction.
(CER-01, closes #189)
deferred, one position betweenadvisoryandblocking.It runs its reviewer, queues what it found as a committed
DEFERRED-*.json,and lets the phase finish. The guarantee moves to the land, where
/cad-landrefuses on both publish arms while any member is unadjudicated. (HLT-01,
closes #193)
/cad-config --surfacesgives the risk-surface interview a way back inagainst a fresh scan, and the menu that rendered all eight categories twice
now renders two distinct sets. (IVW-01, closes #206)
trace suggestopens.planning/reads.jsonl. A role over its floor producesan entry naming the worst single file inside one dispatch: on this repo,
cad-executorat 3.64 opens per distinct file, worst caseplanning.mjsread 29 times in one bracket. The entry names no config key, because none
exists, and says so. (RDX-01, closes #167)
Two spikes ran before any phase was planned, which is why this cycle is one
phase shorter than it was scoped to be.
BCH-01(#174) was killed by its own spike. Batching N security reviews intoone process saves 1.91% of reviewer spend, a 1,676-token fixed prefix against
six dispatches totalling 438,080 tokens, and it does not flip at the 61
invocations the issue cites because both sides of the ratio scale with N. The
per-commit scoping #174 correctly names as a real cost would have been traded
for a rounding error. Moved to
## Deferredcarrying the verdict rather thandropped. Closes #174.
The other spike narrowed #167 before it was planned: the 7.0x figure the issue
carries was measured over declared read-sets, and the observed in-dispatch
figure is 3.64.
Full notes in CHANGELOG.md under [3.5.7].
recommendedcontains across the prose and the lib faa957a63eA second face beside `scanDiff`, over the SAME table and the same signal ordering: the caller hands declared paths with whatever body each currently has, and it answers in the `{category, signal}` shape a fire site states a reason from. The walk both faces run was extracted rather than copied, so the floor cannot raise on evidence the commit-time gate would not fire on. A declared path with no readable body contributes its path signals and no content signals, and that is not inconclusive: at plan time a declared file frequently does not exist because the plan creates it, and calling an absent body unjudgeable would raise every create-a-file plan. The two signal-table files are exempt from the whole-body content pass, scoped to this face alone - `scanDiff` reads a hunk, where a self-match is a real edit, and its fix-at-the-mention rule stands unedited. surface-scan.mjs is what proves the exemption bites: its own table evidences three categories by construction.execute.md's executor resolve carries `--plan <k>` beside the `--bracket-plan <k>` it already had - the same number as a different quantity, one keying the trace and one scoping the floor - so an executor is routed for the plan it is being handed. plan.md's check_gate resolve carries an explicit `--phase {N}`, because it runs while the cursor still names N-1 and would otherwise be floored off the wrong phase's plans. seams.md's "the stakes level a config layer set is the level, full stop" becomes the floor rule: the configured level is the minimum, the phase's declared `files:` raise it, an unreadable plan holds it rather than dropping under it, and a malformed `--phase` is refused. The Concurrent-dispatch paragraph gains the executor exception to resolve-ONCE-per-(role, attempt) - the plan scope is a routing input now, so per-plan executors of a parallel phase can resolve different levels. The mechanism is stated once, in the seam; the workflow files cite it. Every budgeted file edited here has its `weight-budgets.json` row re-pinned from weight.mjs's own measurement in this same commit.