diff --git a/workplans/CB-WP-0019-the-am4-family.md b/workplans/CB-WP-0019-the-am4-family.md index a9529d7..9fac38c 100644 --- a/workplans/CB-WP-0019-the-am4-family.md +++ b/workplans/CB-WP-0019-the-am4-family.md @@ -1,7 +1,7 @@ --- id: CB-WP-0019 kind: meta -title: "The AM-4 family's last two defects, and the self-quoting rule" +title: "Budgets: what the meta budget is for, AM-4b's scope, and the self-quoting rule" status: todo --- @@ -141,6 +141,60 @@ re-derived three times already. both? T03 of CB-WP-0018 used the second and it worked. Say which is load bearing. +## Task: say what the meta budget is *for*, and set it at 80/20 + +```task +id: CB-WP-0019-T05 +status: todo +priority: high +``` + +The maintainer, 2026-08-03: + +> *"we should establish a rule for what the budget is for. The main budget +> should be spent on the task at hand while some of the budget should be +> spent on control, review and improvement of the process we use to propell +> us forward. We can make that 80/20 to start with and allow for increasing +> or lowering the meta budget based on the phase or task at hand."* + +META-25 has a threshold and **no stated purpose** — which is why it has +been argued about as a number three times. Write the purpose first; the +number follows from it. + +### The window and the ratio have to be chosen together + +The budget is measured over a **trailing 3-pass window**. One meta pass +among three, at the same cost as its neighbours, is already **33%**. So a +20% soft line over three passes does not mean *"one pass in five is +meta"* — it means *"one in five **and** at half the cost of a product +pass"*, which pushes meta work toward being rushed rather than rare. + +| window | what a 20% line requires of a meta pass | +|---|---| +| trailing 3 | costs **half** a product pass | +| **trailing 5** | costs **the same** as a product pass | + +**80/20 over a trailing 5-pass window is the literal reading of the +instruction:** one pass in five, at normal cost. Adopt that, and say in the +spec that the ratio and the window are a pair — changing one without the +other changes what the rule means. + +### The phase dial, and why it must not be a dial + +*"increasing or lowering based on the phase or task at hand"* is right — +stage 0 and a stabilisation phase should not carry the same ratio. But a +threshold anyone may move is not a threshold, and this project has a +standing rule that a limit is fixed structurally rather than raised +(four loadability breaches, `make status`'s 40 lines). + +So the phase setting must be **declared, argued, and expiring**, in the +same shape `gates.toml` already uses: a value, a reason, a `review_by` +after which it reverts to 20 unless re-argued. Raising it silently to pass +a breach is the failure this shape exists to prevent. + +**Controls:** `status.py`'s self-test must cover the new window and ratio, +and must fail if a phase override has no reason or no expiry. + ## Task: evidence ```task @@ -160,4 +214,8 @@ priority: high say which, with the cost. - **Quote CB-WP-0018's cost by re-running the instrument.** Under the rule T03 writes down. +- **The meta budget's new shape**, and what it would have said about the + last five passes had it been in force. If 80/20 over trailing-5 would + have failed passes that were plainly right to run, say so — that is the + ratio being wrong, not the passes. - **Chaos: declaration 2 of 12 in window 2, first roll at d8.**