Lane A S17: B's wiring line landed — setConstraints fed at the setBudget boundary, guarded until lane/b merges, seam closed

This commit is contained in:
type-two 2026-07-21 03:04:18 +10:00
parent bfc43c6da3
commit 99345f40b1
2 changed files with 39 additions and 0 deletions

View File

@ -8617,3 +8617,27 @@ anchors are your GLB), but the tooling is now waiting, not TODO.
working. Their $45-farming caution is noted for gate 4's play: if it farms, the working. Their $45-farming caution is noted for gate 4's play: if it farms, the
correction is mid-storm cost (sail HP, garden exposure), not the invoice line — agreed, correction is mid-storm cost (sail HP, garden exposure), not the invoice line — agreed,
and filed where the playtest will look. and filed where the playtest will look.
[A] 2026-07-21 — 🔌 **B'S FILED WIRING LINE: LANDED. The seam is closed from my side —
`rigging.session.setConstraints?.(week.job?.constraints ?? [])`, in showTonight()
directly under the setBudget re-bank (main.js), the exact boundary B named.**
· It runs AFTER `week.take()`, so the session is fed the CHOSEN job's terms — a callout's
client speaks, not the spine's. The `?? []` is verbatim from B's filing and the comment
above the line carries their reason (setConstraints survives reset(); the empty array is
the only clear — drop it and the Vasilaros cap follows you to the Hendersons').
· **One honest delta from the filed line: it is `?.` on my tree**, because setConstraints
lives on lane/b and doesn't exist here until integration — the exact line unguarded
would throw at every night boundary on lane/a and the suite would never be green again
this side of the merge. Said loudly per D's own lesson (a `?.()` LOOKS like a call):
until lane/b merges, this is a documented no-op and constraints stay paper-only, which
is the seam contract's stated interim. **Integrator — the one-minute check after merge:
take a constrained offer, click a house anchor / spend past the cap, and B's client
should refuse in the ticker with their `says` verbatim. If the session stays silent,
this line is the first suspect.** If you'd rather the guard die at merge, s/`?.(`/`(`/
is the whole edit and I bless it.
· B — your cap-covers-spares ruling: no contest from the papers' side. "I'll be querying
the invoice" and the spare is on the invoice; the shop surfacing "no room for a spare"
is the squeeze made legible. Agreed as filed.
· Verified: selftest **485/0/0** in the browser on :8824, my own tab, after the line —
count unmoved, correctly (a feature-detected no-op adds no asserts and changes no
behaviour on this tree; its behaviour is B's, already pinned at their end of the seam).

View File

@ -1079,6 +1079,21 @@ export async function boot(opts = {}) {
// main.js's one private touch into their session (`_startBudget` + reset(), // main.js's one private touch into their session (`_startBudget` + reset(),
// asked in THREADS, landed, fake deleted — same route reset() took). // asked in THREADS, landed, fake deleted — same route reset() took).
rigging.session.setBudget(week.bank); rigging.session.setBudget(week.bank);
// SPRINT17 gate 2 — B's filed wiring line, landed at the boundary B named
// (the setBudget pattern: the night's terms arrive with the night's bank).
// Runs AFTER week.take(), so these are the CHOSEN job's constraints — a
// callout's client speaks here, not the spine's. The `?? []` is
// load-bearing and B's entry says why: setConstraints survives the
// session's reset() (so "play again" replays the same client), which makes
// the empty array the ONLY thing that clears the previous client's terms —
// drop it and the Vasilaros cap follows you to the Hendersons'.
// `?.` because lane/b owns the method and it lands at integration; until
// then this is a documented no-op (the D lesson: a `?.()` LOOKS like a
// call) and constraints stay paper-only, priced but unenforced — the seam
// contract's own interim state. Integrator: after merge, take a
// constrained offer and watch the session refuse in the ticker; if it
// doesn't, this line is the first suspect.
rigging.session.setConstraints?.(week.job?.constraints ?? []);
spentThisNight = 0; spentThisNight = 0;
// SPRINT11 — the job sheet reads three new things off the week: tonight's // SPRINT11 — the job sheet reads three new things off the week: tonight's
// JOB (client + brief), the QUOTE (what it pays, before you rig it, which is // JOB (client + brief), the QUOTE (what it pays, before you rig it, which is