HOMELAB-2414: docs(ld5): per-ticket cost ceiling $4 → $10 (operator ruling COSTCAP-10) #27
No reviewers
Labels
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
aaron/lab-director!27
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "plane/HOMELAB-2414-costcap-10"
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?
Contract/design text only. The runtime caps (per-node token caps derived from the bound, recalibrated from the measured 5.3M / 7.86M builds) are a separate worker on HOMELAB-2412/2414 — this PR touches no dispatcher code.
Ruling
COSTCAP-10 (operator, 2026-10-30) — recorded on HOMELAB-2414 and HOMELAB-2196: the per-ticket cost ceiling goes $4 → $10. In the operator's words: "we're fine with paying more. we can cap it at 10 USD". The $10 bound replaces the $4 bound everywhere it applies, including the design's per-ticket bound (M0-R21). Caps stay fail-closed.
What changed (normative statements only)
design/ld5/measurement.md(M0-R21)design/ld5/auditor-charter.md(rule 6)design/fleet-design-claude/07-layered-fleet-steer.md§2.1, §2.607§2.6 caps tabledeepseek $ per ticket | $4 | $8… | $10 | $807§2.6 (n) cost table07§2.6 (n) 20-ticket aggregate07§2.6 (o)07§5.207D2907D32design/fleet-design-claude/08-containment-gap-register.md(G15 placement)design/layered-fleet/decisions.html(LD5 caps; Q19)design/layered-fleet/runtime.html(D44 capacity)design/layered-fleet/workflows.html(stat + caps table + static bound)$4/$4/ "the LD5 cap is 32 and $4"$10/$10/ "32 and $10 (raised from $4 by COSTCAP-10)"design/layered-fleet/diagrams/dynamic-workflow.{json,html}design/where-we-are/after.html(stat + running rules)design/where-we-are/next.html(Q19, B12 detail, checklist)History kept, not rewritten
07§2.6 "Correction to the W2 note (D29)" and the revision log's same note keep their24 agents and $3 became 32 agents and $4wording and gain a COSTCAP-10 pointer — the agent count did not change and the dollar history is real.07(n) (≈ $0.4–4list-equivalent) and in02-fleet-design.md/research/R2,research/C1are measurements and projections, not the ceiling. Untouched.design/where-we-are/scope-proposal-2026-10-18.mdis a dated "Status: PROPOSAL, not approved" artifact copied here unchanged ("copied here unchanged except for the two corrections marked [corrected 2026-10-18]"). Its two$4mentions stay; editing it would falsify a date-stamped proposal.fleet-design-pi/andfleet-design-claude/01–06are earlier drafts/reviews. Untouched.Flagged, not decided here
design/layered-fleet/workflows.html's caps table anddesign/where-we-are/plane-map.md(HOMELAB-2134, E3) still plan $8 per ticket for "After LD5". The new $10 LD5 ceiling now sits above that later target, so the E3 raise is no longer a raise. That is a decision for the E3/epic owner, not a text worker — flagging it rather than picking a number.Verify
grep -rE '\$4([^0-9]|$)' designleaves only: the new COSTCAP-10 notes, the two deliberate history pointers in07, the dated 2026-10-18 proposal, and cost measurements in02/research/fleet-economics(mean $/session, not the ceiling).report.sqlassertion references the ceiling value (grepover*.go,*_test.go,design/ld5/report.sql), so no fixture moves with it.report.sqluses'M0-R21'only as a row-identifier literal; no dollar constant there.Branch-only. Do not merge from this worker.
aaron/lab-directormerges viapi-landingonce the review legs are green.COSTCAP-10 (2026-10-30, recorded on HOMELAB-2414/HOMELAB-2196) raises the per-ticket cost ceiling from $4 to $10. This is the contract/design text half of that ruling; the runtime caps (per-node token caps derived from the bound, recalibrated from the measured 5.3M/7.86M builds) are a separate worker. Normative statements changed: - design/ld5/measurement.md — M0-R21 caps rule, plus a ruling note naming COSTCAP-10 and stating that S15's price and the B12/B14 static-bound arithmetic remain as measured and are read against the new bound. - design/ld5/auditor-charter.md — the failure-review envelope (rule 6). - design/fleet-design-claude/07-layered-fleet-steer.md — §2.1, §2.6 (o), the caps table, the (n) cost table (incl. the 20-ticket aggregate, which is 20 x the per-ticket ceiling: $80 -> $200), §5.2, and decisions D29/D32. - design/fleet-design-claude/08-containment-gap-register.md — G15 placement. - design/layered-fleet/{decisions,runtime,workflows}.html and the dynamic-workflow diagram (json source + rendered html). History left intact, as the ruling requires: the two W2-note correction records in 07 (§2.6 and the revision log) keep their "24 agents and $3 became 32 agents and $4" wording and gain a COSTCAP-10 pointer; the cost ranges in 07's (n) table and in 02/research/* are measurements, not the ceiling. Not touched, deliberately: design/where-we-are/scope-proposal-2026-10-18.md (a dated "PROPOSAL, not approved" artifact copied here unchanged) and the fleet-design-pi / fleet-design-claude 01-06 history trees. Observed and NOT decided here (flagged for an owner): the layered-fleet caps table's "After LD5" column and HOMELAB-2134 (E3) still plan $8 per ticket, which the new $10 LD5 ceiling now exceeds.Verdict: REQUEST_CHANGES
model: omniroute/deepseek-flash
head:
ec11790677Scope verified. Live head
ec11790, confirmed bygit ls-remotebefore review. Against the real merge target (origin/main@069f00d) the PR is 11 files, all underdesign/— no.go,.sql,.yaml,.sh,.ts,.svelte. (contracts-b11-b12.mdshows up in a naivegit diffonly because the branch merged main #26 into itself; it is not part of this PR.) The description's change table matches the hunks one for one — no overclaim.Verified as claimed
measurement.md's own contract demands ("a rule changes only by a new operator ruling recorded here before the sign"). The blockquote carries the ruling id, the date, HOMELAB-2414/2196, and the fail-closed statement. Correct placement, correct form.auditor-charter.mdrule 6 envelope,08G15 placement,07§2.1 / §2.6 / (o) / §5.2 / D29 / D32 / caps table,decisions.htmlD29 + Q19,runtime.htmlD44,workflows.htmlstat + caps table + static-bound sentence,dynamic-workflow.{json,html},after.htmlstat and running rules,next.htmlQ19 + B12 detail + checklist.24 agents and $3 became 32 agents and $4(§2.6 correction, D29, Appendix C) is real history and now gains a COSTCAP-10 pointer instead of being falsified. §2.6(n)'s≈ $0.4–4list-equivalent range,02's$4–15, and theresearch/C1/R2/fleet-economicsfigures are measurements, not the ceiling; untouched, correctly. The 20-ticket row is the model to copy:$200 PAYG (20 × the $10 ceiling; $80 under the old $4 ceiling)keeps both facts, and the arithmetic is right.3 + 2 × (1 + 3 + 2 × (1 + 3)) + 1 + 2 + 1 = 31 ≤ 32expansion inworkflows.htmland07is agent-count arithmetic; only the dollar clause changed, and it says so.Blocker
design/layered-fleet/workflows.html:181— the sample's aggregate ceiling is still the $4-era figure. The page now states both, two sections apart:$10— deepseek per ticket — pay-as-you-go cap$80— Hard cap — the 20-ticket sample20 × $10 = $200, not $80. This is the same derivation this PR did fix in
07:1110, on a page this PR edits, which makes it an oversight rather than a decision — and it is undeclared: the description listsworkflows.htmlas "stat + caps table + static bound", and this tile is none of the three. The Verify check cannot catch it by construction:grep -rE '\$4([^0-9]|$)'finds the per-ticket constant but never a$4-derived aggregate. As it stands the page tells a reader the 20-ticket ceiling is $80, which undercuts the containment claim this ruling exists to establish.Fix:
$200, with the two-fact treatment already used in07:1110. Please also re-sweep for derived aggregates ($80,$40,10 in flight × …) rather than only the literal constant — the per-ticket sweep is clean, and this is where the remaining risk sits.Concerns (not blocking; fix or post at discretion)
workflows.html:156and07:1069readdeepseek $ per ticket | $10 | $8, andplane-map.md:189/after.html:212plan $8 for E3 (HOMELAB-2134). Under $4 this column was a raise; it is now a cut, with nothing in the docs saying so. The description flags this well and is right not to pick a number — but the flag lives only in the PR body. One line beside the two caps tables ("the E3 target now sits below the LD5 ceiling; re-ruling open, HOMELAB-2134") would stop the next reader re-deriving the confusion.scope-proposal-2026-10-18.md:36still carries thestays under $4static-ceiling formula (and:250the$4 ceiling). Leaving a dated proposal unedited is defensible and it is declared — but the stated reason ("editing it would falsify a date-stamped proposal") sits oddly with the file's own precedent: it already carries two**[corrected 2026-10-18]**markers for exactly this purpose, and it is linked fromindex.html,next.htmlandafter.htmlas the approved source. A**[superseded by COSTCAP-10, 2026-10-30]**marker in that same style would not falsify the date, and would close the last place the old ceiling is still stated as current.Notes
Fix worker delta — not a review, no verdict. New head
8d3e04b(wasec11790). Responds to review 1340.Blocker fixed —
workflows.htmlsample aggregateworkflows.html:182$80— Hard cap — the 20-ticket sample$200— Hard cap — the 20-ticket sample (20 × $10; was $80 at $4)Two-fact treatment copied from
07:1116, as asked.Concern 1 — the "After LD5" $8 inversion, now stated in the docs
workflows.html:161— new callout under the caps table: the $8 is the E3 target (HOMELAB-2134) and now sits below the $10 LD5 ceiling; re-ruling open, no number picked.07§2.6(l):1080— the same note after the caps table, naming all three $8 sites.after.html:212— clause on the E3 caps line.scope-proposal:316— marker on the "caps of 60/16/$8" item.Concern 2 — the scope-proposal formula
scope-proposal-2026-10-18.md:40(stays under $4) and:254(a static $4 ceiling) now carry[superseded by COSTCAP-10, 2026-10-30], in the file's own[corrected 2026-10-18]style, plus a header item 3 recording the ruling. The date-stamped text is unedited; only the markers are new.Two paragraphs of this PR's description are therefore now stale: "Its two
$4mentions stay; editing it would falsify a date-stamped proposal" (annotated, not edited — same precedent the file already uses) and the Verify line listing the proposal among what a$4grep is allowed to leave. Both are superseded by the markers above; the description was not rewritten by this worker.Repo-wide derived-figure sweep
Searched
.md/.html/.json/.go/.sql/.yamlfor$80,$40,$160,$120,$200,$8,20-ticket,20 ×,× $N/N × $,hard cap, and an eyeball pass over every dollar amount indesign/:07:1116already had the correct $200 treatment;workflows.html:182was the only other one.$80s are the two deliberate history pointers.07:1116's≈ $8–80expected range is measurement-derived (20 × the $0.4–4 list-equivalent per ticket), not ceiling-derived — left as the reviewer endorsed.$4s are COSTCAP-10 history pointers (07:1147,07:3831,next.html:115,next.html:266,after.html:31,runtime.html:218,decisions.html:84,decisions.html:213,workflows.html:289,measurement.md:386), the two now-marked proposal sites, or cost measurements ($4.08,$4.41,$0.95/$4/$0.19,$0.4–4).design/($8.85, $23.48, $27–42, $50–130, $125, $200 Claude-quota) are measurements, projections or subscription quota — none derived from the ceiling.CI
No CI is configured in
aaron/lab-director(no.forgejo/or other workflow dir; the PR's run list is empty), so there is nothing to wait on for this head. Merge ispi-landing's call, not this worker's.Verdict: APPROVED
model: omniroute/deepseek-flash
head:
8d3e04b844Round 2. Head
8d3e04bGET-confirmed (pulls/27->head.sha) before review. The delta fromec11790(review 1340) is one commit, 4 files, all underdesign/— no.go,.sql,.yaml,.sh,.ts,.svelte, nodeploy/**, no.forgejo/**. Verified by diffing the two head trees directly, not by trusting the commit message.Blocker from 1340 — fixed
design/layered-fleet/workflows.html:182now reads$200 · Hard cap · the 20-ticket sample (20 × $10; was $80 at $4). 20 × $10 = $200: the arithmetic is right, and it uses the same two-fact treatment as07:1116(hard cap $200 PAYG (20 × the $10 ceiling; $80 under the old $4 ceiling)) instead of overwriting the history. The page no longer states a $80 aggregate ceiling, and the two figures that remain on the page ($10 per ticket, $200 for the sample) are consistent with each other. The declared change table did not need amending for this, since the commit is titled to the aggregate re-derivation.The two concerns — both handled, in the review's own terms
workflows.html:161(a "The After LD5 dollars" callout beside the caps table),07:1080(below the After-LD5 table),after.html:212(the 60/16/$8 bullet), andscope-proposal:316. Each says the$8was a raise over $4 and is a cut under $10, names HOMELAB-2134 as the open re-ruling, and picks no number — the right restraint. Consistent wording across all four, so a reader landing on any one page gets the same fact.scope-proposal-2026-10-18.mdsupersession markers, in the file's own precedent style. The header note now declares "the later supersessions marked [superseded by COSTCAP-10, 2026-10-30]" alongside the existing[corrected 2026-10-18]markers, and a numbered item 3 states the ruling id, date, ticket pair, the new$10, and that every$4ceiling statement below is superseded. Three inline markers were added (:40objection 10,:254running rules,:316the$8caps line — the last carrying the inversion note rather than a supersession, which is the correct distinction). I checked the header's claim against the file: every remaining$4ceiling statement below the header carries a marker. The date-stamped proposal is annotated, not rewritten; it stays the citable approved source.Independent sweep for derived aggregates (the class 1340 said the literal grep cannot catch)
I grepped the full head tree myself rather than accepting the fix worker's sweep, looking for ceiling-derived figures rather than the constant:
$80— two occurrences, both correct as history:07:1116andworkflows.html:182, each labelled as the old-ceiling figure.$20/$40/$160/$400— no occurrences anywhere underdesign/.$200sites above, and they agree.$200— 6 occurrences: the two sample-cap sites plus Claude subscription quota (~$125/mo, to $200) in07,decisions.html,layers.html— unrelated quantity, no collision.$4— history and measurements only: the COSTCAP-10 ruling blockquote inmeasurement.md:386("raised from $4"),07's "24 agents and $3 became 32 agents and $4" revision history plus its$4, not 24 and $3note which now carries "(Dollars later raised to $10 by COSTCAP-10, 2026-10-30.)", and list-price/measured figures (fleet-economics$4per-M,02's$4–15epic measurement,R2/C1research). Left as measured is the correct call, and it is declared in M0-R21.The sweep found nothing else. That was the exposed risk class and it is now closed.
Delta is docs-only and honest
Four files, four additive edits plus one number replacement, no deletions of substance, no unrelated edits riding along. Every added sentence states a fact already established by the ruling and names its ticket; nothing claims a capability the runtime has. M0-R21 still discloses what is not yet consistent (per-node token caps calibrated under $4, recalibration open on HOMELAB-2412/2414) — that honesty is preserved unchanged.
Reviewer limits respected: read-only. No file edits, commits or pushes; this verdict is the only write.
Verdict: APPROVED
model: omniroute/deepseek-flash
head:
8d3e04b844Round 2. Head
8d3e04bGET-confirmed (pulls/27->head.sha) before review. The delta fromec11790(review 1340) is one commit, 4 files, all underdesign/— no.go,.sql,.yaml,.sh,.ts,.svelte, nodeploy/**, no.forgejo/**. Verified by diffing the two head trees directly, not by trusting the commit message.Blocker from 1340 — fixed
design/layered-fleet/workflows.html:182now reads$200 · Hard cap · the 20-ticket sample (20 × $10; was $80 at $4). 20 × $10 = $200: the arithmetic is right, and it uses the same two-fact treatment as07:1116(hard cap $200 PAYG (20 × the $10 ceiling; $80 under the old $4 ceiling)) instead of overwriting the history. The page no longer states a $80 aggregate ceiling, and the two figures that remain on the page ($10 per ticket, $200 for the sample) are consistent with each other. The declared change table did not need amending for this, since the commit is titled to the aggregate re-derivation.The two concerns — both handled, in the review's own terms
workflows.html:161(a "The After LD5 dollars" callout beside the caps table),07:1080(below the After-LD5 table),after.html:212(the 60/16/$8 bullet), andscope-proposal:316. Each says the$8was a raise over $4 and is a cut under $10, names HOMELAB-2134 as the open re-ruling, and picks no number — the right restraint. Consistent wording across all four, so a reader landing on any one page gets the same fact.scope-proposal-2026-10-18.mdsupersession markers, in the file's own precedent style. The header note now declares "the later supersessions marked [superseded by COSTCAP-10, 2026-10-30]" alongside the existing[corrected 2026-10-18]markers, and a numbered item 3 states the ruling id, date, ticket pair, the new$10, and that every$4ceiling statement below is superseded. Three inline markers were added (:40objection 10,:254running rules,:316the$8caps line — the last carrying the inversion note rather than a supersession, which is the correct distinction). I checked the header's claim against the file: every remaining$4ceiling statement below the header carries a marker. The date-stamped proposal is annotated, not rewritten; it stays the citable approved source.Independent sweep for derived aggregates (the class 1340 said the literal grep cannot catch)
I grepped the full head tree myself rather than accepting the fix worker's sweep, looking for ceiling-derived figures rather than the constant:
$80— two occurrences, both correct as history:07:1116andworkflows.html:182, each labelled as the old-ceiling figure.$20/$40/$160/$400— no occurrences anywhere underdesign/.$200sites above, and they agree.$200— 6 occurrences: the two sample-cap sites plus Claude subscription quota (~$125/mo, to $200) in07,decisions.html,layers.html— unrelated quantity, no collision.$4— history and measurements only: the COSTCAP-10 ruling blockquote inmeasurement.md:386("raised from $4"),07's "24 agents and $3 became 32 agents and $4" revision history plus its$4, not 24 and $3note which now carries "(Dollars later raised to $10 by COSTCAP-10, 2026-10-30.)", and list-price/measured figures (fleet-economics$4per-M,02's$4–15epic measurement,R2/C1research). Left as measured is the correct call, and it is declared in M0-R21.The sweep found nothing else. That was the exposed risk class and it is now closed.
Delta is docs-only and honest
Four files, four additive edits plus one number replacement, no deletions of substance, no unrelated edits riding along. Every added sentence states a fact already established by the ruling and names its ticket; nothing claims a capability the runtime has. M0-R21 still discloses what is not yet consistent (per-node token caps calibrated under $4, recalibration open on HOMELAB-2412/2414) — that honesty is preserved unchanged.
Reviewer limits respected: read-only. No file edits, commits or pushes; this verdict is the only write.