CB-WP-0019 T03/T04: the cost rule written down, and the lifecycle
Some checks failed
ci / check (push) Has been cancelled
Some checks failed
ci / check (push) Has been cancelled
T03: InnerLoop v1.7 plus loop-lint's own-cost check. Six passes under-reported themselves by 30-45%, never once high, and the rule lived only in evidence files having been re-derived three times. The READING is load bearing, not the boundary: CB-WP-0018 T04 applied 're-run the instrument at the moment of quoting' alone and its figure was correct. So the operative instruction is re-run when you quote, and loop-lint fails an evidence file naming its own workplan beside a dollar amount without marking it provisional. It binds forward from this pass. The check fires on seven historical files which ARE the evidence for the rule; making them comply would edit the record to remove the thing it proves -- the same category error as a live fact: tag on a dated measurement, which this pass also hit. Lifecycle, at the maintainer's instruction: ready -> active -> done, where ready means declared and not started. loop-lint fails a workplan that has started and still says ready, one that is active with everything closed, and one that is done with an open task. The first version of that check was WRONG and its own self-test caught it: it stripped the leading status: assuming frontmatter, which silently dropped a real task once the frontmatter said ready or active. Both new checks then fired on this pass's own artifacts and both were right to. T04: CB-EV-0017. The new meta budget's first reading is a breach it caused -- 27% against the 20% line, because this pass cost $31.18 against product passes averaging ~$21. Reported rather than exempted: ADR-0006 D2 covers the instrument repairs but not the rule-writing, and the honest reading is that this should have been two passes. CB-WP-0018 settled at $36.53/95 against $28.08/82 last reported, 30% higher. Seven for seven. make all exits 0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
0b6f7c5bc8
commit
69c1658d20
6 changed files with 483 additions and 25 deletions
|
|
@ -24,10 +24,8 @@ covers changes to the loop's own operation (D5).
|
|||
> and at half price*. `InnerLoopReference.md` §Meta budget has the
|
||||
> arithmetic.
|
||||
>
|
||||
> **Soft on purpose.** A task already started may be finished — stopping
|
||||
> mid-task to satisfy a ratio wastes the work and leaves the tree worse
|
||||
> than either finishing or never starting. What the budget constrains is
|
||||
> *opening* new meta work above the line, and it constrains it with two
|
||||
> **Soft on purpose.** A task already started may be finished; what the
|
||||
> budget constrains is *opening* new meta work above the line, with two
|
||||
> exemptions:
|
||||
>
|
||||
> 1. **Repairing the instrument that reports a breach is always in
|
||||
|
|
@ -50,6 +48,22 @@ covers changes to the loop's own operation (D5).
|
|||
> budget, not a gate, for the same reason the session-shape budget is —
|
||||
> it constrains judgment, not artifacts.
|
||||
|
||||
> **Workplan lifecycle (v1.7).** `ready` → `active` → `done`. **`ready`
|
||||
> means declared and not yet started**; a workplan being worked is
|
||||
> `active`, so the status answers *"is anyone on this?"* rather than only
|
||||
> *"is it finished?"*. `loop-lint` fails when a workplan has started work
|
||||
> and still says `ready`, or has finished it and does not say `done`.
|
||||
> Tasks keep `todo` | `done` | `cancel`; `cancel` is a **closed** outcome
|
||||
> and is counted as such.
|
||||
|
||||
> **Quoting a cost (v1.7).** An evidence file **may not quote its own
|
||||
> pass's cost as final** — six passes under-reported themselves by 30–45%,
|
||||
> never once high. **Re-run the instrument at the moment of quoting**;
|
||||
> quoting from memory defeats the rule even when the boundary is right.
|
||||
> `loop-lint` fails an evidence file naming its own workplan beside a
|
||||
> dollar figure without marking it provisional.
|
||||
> `InnerLoopReference.md` §Quoting a cost.
|
||||
|
||||
> **Loop work cashes out (v1.6, ADR-0006 D4).** A `meta` pass must ship at
|
||||
> least one executable check, command, or gate. Findings that stay prose
|
||||
> are recorded as findings and do **not** count as delivery.
|
||||
|
|
@ -262,21 +276,12 @@ was written to stop, one level down. Where the instrument is built later
|
|||
in the pass, the target is marked `provisional:` until the instrument
|
||||
emits it, and the spec is amended to whatever the instrument returns.
|
||||
|
||||
*(v1.1, from CB-WP-0002: `specs/CostAccounting.md` AC-1 named
|
||||
`cb-cost --pin fc76445` before that tool existed, and set the target to
|
||||
a hand-computed $92.87. When the tool was built it returned $93.32 —
|
||||
the hand computation carried a dedup bug the tool's own positive control
|
||||
caught. The metric satisfied v1.0's rule completely and was still
|
||||
wrong.)*
|
||||
*Case: `InnerLoopReference.md` §Numbers you inherit.*
|
||||
|
||||
**A number inherited from earlier work is re-derived before it is used
|
||||
as a target, or it is cited as unverified.** Quoting is not measuring.
|
||||
|
||||
*(v1.1, from CB-WP-0002: the workplan opened with $248.46, inherited
|
||||
from a prior pass. Re-derivation put it at $92.21 — the quoted figure
|
||||
double-counted transcript lines and priced a three-model session at one
|
||||
model's rate. Neither error was of the harness-does-nothing class; both
|
||||
sums ran over real data, and a positive control would have passed them.)*
|
||||
*Case: `InnerLoopReference.md` §Numbers you inherit.*
|
||||
|
||||
**Retargeting: the instrument may move a target, the implementation may
|
||||
not.** A metric's target changes in only two ways, and they are not
|
||||
|
|
@ -292,13 +297,9 @@ mechanical: **a correction is one where the target moves and the
|
|||
implementation does not.** If the same commit changes both the target and
|
||||
the code the target measures, it is a retarget and needs the ADR.
|
||||
|
||||
*(v1.1, from CB-WP-0002/0003: AM-4's targets were measured at 246,250 and
|
||||
set at 250,000 in one commit by the implementer after seeing the number —
|
||||
the structure this rule exists to stop. But CB-WP-0002 then moved AC-1
|
||||
three times, correctly, each time because a new instrument disproved the
|
||||
old figure ($92.21 → $92.87 → $93.32 → $93.15). A blanket prohibition
|
||||
would have forbidden four legitimate corrections to catch one bad
|
||||
retarget.)*
|
||||
*The case that produced this rule, and the four legitimate corrections a
|
||||
blanket prohibition would have forbidden: `InnerLoopReference.md`
|
||||
§Retargeting.*
|
||||
|
||||
**Applied retroactively:** AM-4a and AM-4b are **unratified** until an ADR
|
||||
is written or they are changed. They were set by the implementer after
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue