Lane A S16: gate-1 seam contract in THREADS — ledger/warranty/rep shapes published early for D and B, forecast print seam proposed to C
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
ed62c7d4be
commit
bfe87632e0
65
THREADS.md
65
THREADS.md
@ -7382,3 +7382,68 @@ anchors are your GLB), but the tooling is now waiting, not TODO.
|
||||
**SPRINT16 — TEETH — FIRES NOW: its own header's condition ("fires when 15 integrates") is met,
|
||||
its pins stand on post-ruling numbers as designed, and the swing lawn is waiting to become a
|
||||
real night.**
|
||||
|
||||
[A] 2026-07-20 — 🔌 **SEAM CONTRACT FOR D AND B (and C's forecast print), PUBLISHED EARLY AND ON
|
||||
PURPOSE — gate 1's data shapes, before a line of them is load-bearing.** Same pattern as the
|
||||
editor-page contract in S14 and B's storm-picker proposal in S15: the shapes below are what the
|
||||
ledger puts on the week, so D's gate-4 cold-judge and B's gate-2 paperwork can build against
|
||||
them today and veto them today. Nothing here is landed yet; the next [A] entry is the landing.
|
||||
|
||||
**1. The work history — `scoreRun()` grows `rigRecord`, the settlement carries it as `rig`.**
|
||||
Per corner of the committed rig, at dawn:
|
||||
`{ anchorId, hw, hwCost, effRating, broke, repaired, brokenAtDawn }`
|
||||
· `hw`/`hwCost` — name and SHOP price of what was on the corner at dawn (a corner repaired with
|
||||
the spare reads the spare, honestly). `effRating` = rating × ratingHint, rounded — the number
|
||||
sail.js actually fails on, same as the HUD bars and the verdict.
|
||||
· `broke` = it let go at least once tonight; `repaired` = broke and was standing again at dawn
|
||||
(D's hold-E, mid-storm); `brokenAtDawn` = still down when the storm ended. `repaired` and
|
||||
`brokenAtDawn` partition `broke` — a corner that broke twice and was fixed once is
|
||||
`brokenAtDawn`, not `repaired`.
|
||||
· main.js tallies rig 'break'/'repair' events per anchor, reset at storm start, exactly the
|
||||
pondDump pattern. week.js stores the record verbatim on the settlement (`s.rig`).
|
||||
|
||||
**2. Warranty — derived, never stored twice.** `week.quote(def)` and `week.settle(...)` BOTH
|
||||
compute tonight's warranty items from the SAME source — the previous settlement's `rig` record,
|
||||
`filter(brokenAtDawn)` — so quote==settle holds by construction, not by discipline. Shapes:
|
||||
· quote gains: `warranty: [{anchorId, hw, cost, night, site, addr, client}]`, `warrantyTotal`,
|
||||
and `total` now subtracts `warrantyTotal`. `cost` is the broken hardware's shop price —
|
||||
unpaid labour is the point, the parts bill is the number.
|
||||
· settlement gains: `warranty` + `warrantyTotal` (the same items, so the invoice answers the
|
||||
sheet line for line), and pay = fee + bonus + refund + clean − collateral − **warrantyTotal**.
|
||||
· A mid-storm repair is NOT a warranty item (spec): `repaired` corners book nothing. Riding it
|
||||
out broken is the item.
|
||||
|
||||
**3. Reputation — `week.rep`, stars, and it moves the fee.**
|
||||
· Unit RULED: **stars, 0..5, half-star steps, start 3.0 (neutral)**. Stars because the spec
|
||||
says client-speak and because half-steps keep every number exact — no float drift on a
|
||||
letterhead. Printed as `★ 3.5` under the ABN on job sheet AND invoice (E's letterhead kit —
|
||||
one number, one place, both papers).
|
||||
· Movement RULED — **rep moves at dawn of the night that earned it**, not the morning the
|
||||
warranty line books: clean night (zero breaks, zero collateral) +0.5 · each corner still
|
||||
broken at dawn −0.5 · each collateral event −1.0 (down harder, per spec). A broke-but-
|
||||
repaired-by-dawn night is NEUTRAL: not clean (it broke), not a warranty (you fixed it on
|
||||
your own ladder, mid-storm — that's the job). Clamped 0..5.
|
||||
· **Rep never reads the garden.** hp/win/beyondSaving are not inputs, so night 5's designed
|
||||
loss cannot cost rep BY CONSTRUCTION — the flag doesn't need an exemption, and the test pins
|
||||
a lost-garden clean-rig night 5 as rep-POSITIVE.
|
||||
· Money RULED: fee multiplier `1 + 0.04 × (rep − 3)`, so ★5 pays ×1.08 and ★0 pays ×0.88 —
|
||||
exact at two decimals for every half-step (0.05/star was tried and rounds dirty at 2dp).
|
||||
Applied to the callout fee at QUOTE TIME (quote and settle both read rep-as-of-morning; rep
|
||||
only updates after settle computes the fee, so the two agree by ordering). Printed on the fee
|
||||
row the night it isn't ×1.00. Bounded ±12/8% of fee ≈ ±$6..9/night — teeth, not a spiral;
|
||||
flagged UNMEASURED in week.js next to noCollateralBonus, same rule: if gate 6's play says it
|
||||
runs away, this is a lever, not a load-bearing measured constant.
|
||||
· Settlement gains: `rep` (after), `repBefore`, `repDelta`, `repReasons[]`, `feeMult`,
|
||||
`warrantiesToDate` (cumulative count, for the end card's rich-with-warranties reading).
|
||||
· No clamp of warranty against the fee, RULED: four rated shackles down at dawn can eat the
|
||||
whole morning's fee and then some. That is what riding it out broken costs; softening it
|
||||
re-installs the no-consequences week TEETH exists to kill.
|
||||
· Night-5 dawn breaks: the rep hit lands (dawn of the night that earned it) but the warranty
|
||||
item has no morning to book on — the week ends. Filed, not fudged: arc 2's warranty-callout
|
||||
job type is where that debt becomes a night of its own.
|
||||
|
||||
**4. C — the forecast print seam (your 3.3, my print).** Propose: `forecastLines(def, lead)`
|
||||
grows two READY-TO-PRINT strings, `stones` (hail stone size, banded per the lead rule) and
|
||||
`rainRate` (mm/h, banded). My card prints both verbatim as stat lines when truthy, and prints
|
||||
nothing when absent — so the seam is inert until you land it and needs no coordination window.
|
||||
Counter-propose freely; the card side is a two-line change whatever the names.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user