From 6f68fbf61895886318e01b429744f4387d4dc28b Mon Sep 17 00:00:00 2001 From: type-two Date: Sat, 18 Jul 2026 18:00:50 +1000 Subject: [PATCH] Sprint 15 plan + prompts; README points at the renamed remote --- LANE_PROMPTS.md | 81 ++++++++++++++++++++++++++++++++++++++++ README.md | 4 +- SPRINT15.md | 99 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 182 insertions(+), 2 deletions(-) create mode 100644 SPRINT15.md diff --git a/LANE_PROMPTS.md b/LANE_PROMPTS.md index 6a05f82..8e90fb6 100644 --- a/LANE_PROMPTS.md +++ b/LANE_PROMPTS.md @@ -832,3 +832,84 @@ byte-identical JSON out) even though its UI needn't be. > number, a wreck where priceable, negative-control asserts (your bike > discipline — build the wrong one on purpose and watch it go red). Flag D > in THREADS the moment the palette is ready — their cold yard waits on it. + +--- + +# SPRINT 15 prompts (the posts tell the truth, the editor stops being batch) + +Same rules: own clone, own branch, `git fetch origin && git reset --hard +origin/lane/` on a clean tree first. **The remote was RENAMED mid-Sprint-14 +— it is `monster/hardyards.git` now, not `monster/shades`. All six checkouts +are already repointed; if a push ever 404s, check for a rename before assuming +loss.** Read docs/MANUAL.md, THREADS' last [I], then SPRINT15.md. Ports: A +8824, B 8825, C 8826, D 8827, E 8828. Baseline **406/0/0**. + +## Lane A — Sprint 15 +> You are Lane A on SHADES 3D (the game is HARD YARDS, public at +> partly.party/hardyards), Sprint 15. Rebase onto main, read docs/MANUAL.md, +> THREADS' last [I], then SPRINT15.md. **Gate 1 ruling is yours and comes +> FIRST, before anyone measures**: the factory bakes `rating_hint = 0.9` on +> sail_post's top_anchor, but JSON-declared posts never run adoptAnchor and +> default to 1.00, so every honest post in the shipped game is 10% stronger +> than designed. Rule 0.90 (design intent reaches the sim) or 1.00 (the +> shipped, balanced-against value becomes canon and E corrects the bake) — +> both defensible, and every played verdict in THREADS measured 1.00. Then +> fix the MECHANISM either way: a baked hint must never again fail to reach a +> JSON-declared anchor silently. Gate 3 is also yours: Enter commits number +> fields, out-of-bounds placement must stop reading VALID, zoom beyond the +> wheel, and the separation-field question with B. Do NOT start +> reputation/site_03/heatwave — gate 4 is John's. + +## Lane B — Sprint 15 +> You are Lane B on SHADES 3D, Sprint 15. Rebase onto main, read +> docs/MANUAL.md, THREADS' last [I], then SPRINT15.md. Gate 2 is yours: D's +> verdict is that your 75–82 s fully-blocked SCORE IT "made the editor batch, +> not iterative — I scored once and shipped that run rather than tuning." +> Fix it in D's priority order: a progress tick that actually paints first +> (D thinks that matters more than raw speed), then yielding so the page stays +> responsive, then speed (cost scales like C(n,4) in candidate quads — a +> coarse ranking pass before flying is likely worth more than micro-optimising +> the sim). **Pin the current site_02 and site_03 scores before you start and +> reproduce them exactly after** — a faster score that moved a number is a +> regression. Also with C: one storm picker, not two independently-defaulted +> ones. Gate 1.3: re-measure both yards once A rules the post hint, post the +> deltas as a table, propose retunes with evidence. + +## Lane C — Sprint 15 +> You are Lane C on SHADES 3D, Sprint 15. Rebase onto main, read +> docs/MANUAL.md, THREADS' last [I], then SPRINT15.md. Lighter sprint for you +> by design — gate 1 is a post-rating ruling and gate 2 is B's performance +> work. Yours: (1) with B, collapse the two independently-defaulted storm +> pickers into one shared selection (D scored the wildnight while viewing the +> southerly — two harnesses disagreeing inside a single page, which is the +> exact class of bug this repo keeps paying for). (2) Second-harness B's +> re-measure once A rules the post hint: if every post moves 10%, the storm +> side should predict the same shift your envelope tool would. (3) Your call +> on anything the wind panel revealed that you filed and didn't land — D +> called it "the best surface on the page", so if there's polish you wanted, +> this is the sprint with room for it. + +## Lane D — Sprint 15 +> You are Lane D on SHADES 3D, Sprint 15. Rebase onto main, read +> docs/MANUAL.md, THREADS' last [I], then SPRINT15.md. Two judgements, both +> yours alone. (1) Gate 1.4: once A rules the post hint and B re-measures, +> re-play the affected nights and say whether the change is FELT — if 0.90 +> makes the honest line stop holding, that is a design change wearing a +> bugfix's clothes and you are the one who says so. (2) Gate 2.3: re-author or +> re-tune a yard with B's faster score loop and say whether it changed how you +> work — your "batch, not iterative" line is what bought this sprint, so you +> are the acceptance test for the fix. Your `site_03_swing_lawn` stays inert +> until gate 4 picks the more-sites branch; don't wire it to a night. + +## Lane E — Sprint 15 +> You are Lane E on SHADES 3D, Sprint 15. Rebase onto main, read +> docs/MANUAL.md, THREADS' last [I], then SPRINT15.md. Gate 1.2 is yours and +> it's short: once A rules the sail_post hint (0.90 or 1.00), make the factory +> agree, and PIN it — an assert that a JSON-declared anchor of a type the +> factory rates carries that rating at runtime. This is the third member of +> the family your Sprint 14 audit started (no silent anchors, no unpriced +> collateral, and now no baked hint that never arrives), and it is the general +> fix for the bug class that shipped both the free carport and the perfect +> posts. With the sprint's spare room: your call on palette gaps D hit while +> authoring cold — read their gate-3.2 entry and propose what the next yard +> needs, with reasoning baked beside the numbers as always. diff --git a/README.md b/README.md index ad07813..6a6c05c 100644 --- a/README.md +++ b/README.md @@ -62,9 +62,9 @@ Host gitea.partly.party Then: ``` -git clone git@gitea.partly.party:monster/shades.git ~/Documents/shades +git clone git@gitea.partly.party:monster/hardyards.git ~/Documents/shades for L in A B C D E; do - git clone git@gitea.partly.party:monster/shades.git ~/Documents/shades-lane$L + git clone git@gitea.partly.party:monster/hardyards.git ~/Documents/shades-lane$L git -C ~/Documents/shades-lane$L checkout -B lane/$(echo $L | tr 'A-Z' 'a-z') origin/lane/$(echo $L | tr 'A-Z' 'a-z') done ``` diff --git a/SPRINT15.md b/SPRINT15.md new file mode 100644 index 0000000..e3dfc68 --- /dev/null +++ b/SPRINT15.md @@ -0,0 +1,99 @@ +# SPRINT 15 — THE POSTS TELL THE TRUTH, AND THE EDITOR STOPS BEING BATCH + +*Sprint 14 built the yard editor and it immediately earned itself: nine bugs +found before anyone authored a yard with it, three of them live on the public +URL. D then authored a complete third yard cold — no JSON, no console — and +it scored winnable-but-mean and played that way. 406/0/0, live at +partly.party/hardyards, editor included.* + +*What it also found is a shipped balance bug we deliberately did not patch, +because half the repo's measured numbers are standing on it. That's gate 1.* + +Read THREADS from the last [I] entry. Baseline **406/0/0**; keep it green, +mutation-check anything you'd call coverage. + +## Gate 1 — THE POSTS TELL THE TRUTH (A rules · E supplies · B re-measures · D re-plays) + +The factory bakes `rating_hint = 0.9` on `sail_post`'s `top_anchor`. Every +post in every shipped site is a plain JSON entry with **no `node`**, so +`adoptAnchor` never runs and they all default to **1.00**. Every honest post +in the game is 10% stronger than E designed it, and always has been. + +This is a gate and not a patch because A's `separation` block pins measured hp +through the real chain, B's audit tables predict against it, and D's played +verdicts sit on it. Move the number and all three move together, in order: + +1. **A rules FIRST, before anyone measures:** is the honest post 0.90 (E's + design intent reaches the sim) or 1.00 (the shipped value becomes canon and + E's baked hint is corrected to match)? Both are defensible — 1.00 is what + every played verdict in THREADS actually measured, and "the value we shipped + and balanced against is the real one" is a legitimate ruling. What is NOT + defensible is leaving the factory and the sim disagreeing. **Whichever way + it goes, the mechanism must be fixed so a baked hint can never again fail to + reach a JSON-declared anchor silently** — that's the actual bug, and it will + bite the next asset the same way (`tie_off`, `collateral`, anything). +2. **E:** make the factory agree with the ruling and pin it — an assert that a + JSON-declared anchor of a type the factory rates carries that rating at + runtime. Your S14 audit rules (no silent anchors, no unpriced collateral) + are the model; this is the third of that family. +3. **B:** re-measure everything that moved. If the ruling is 0.90 every post + line in both shipped yards gets weaker — expect the separation pin, the + winnable-lines tables, and the night-4/5 affordability story to shift, and + post the deltas as a table. Propose retunes with evidence; A rules. +4. **D:** re-play the affected nights and say whether the change is FELT. If + 0.90 makes the honest line stop holding, that's a design change wearing a + bugfix's clothes and you're the one who says so. + +## Gate 2 — THE EDITOR STOPS BEING BATCH (B owns; D judges) + +D's verdict: the 75–82 s fully-blocked score "made the editor batch, not +iterative — I scored once and shipped that run rather than tuning." That is +the difference between a tool you author WITH and a tool you check work AGAINST. +1. **B:** make the score interruptible and legible. In priority order — a + progress tick that actually paints (D says this may matter more than raw + speed), then yielding so the page stays responsive, then speed itself + (the cost scales like C(n,4) in candidate quads — a coarse pass that ranks + before it flies is likely worth more than micro-optimising the sim). + Whatever you do, the numbers must not change: pin the current site_02 and + site_03 scores before you start and reproduce them after. +2. **B + C:** one storm picker, not two independently-defaulted ones (D scored + the wildnight while viewing the southerly — the exact class of + two-harnesses-disagreeing this repo keeps paying for, now inside one page). +3. **D:** re-author or re-tune a yard with the faster loop and say whether it + changed how you work. That's the acceptance test, same as gate 3.2 was. + +## Gate 3 — THE EDITOR'S HONEST EDGES (A owns, mostly) + +D's friction list, by owner, all seen in anger: +1. **A:** number fields commit on blur only — Enter does nothing, and a house + sat on the garden bed while the panel read the new value. Commit on Enter. +2. **A:** objects place outside the fence silently and the yard still reads + VALID. Either validate the yard bounds or draw the boundary — a yard that + lies about being valid is the one thing this editor must never do. +3. **A:** zoom is wheel-only (no keyboard, no pinch). +4. **A+B:** no `separation` field exists in the editor, while B's score card + says a shipping site should pin one. Either add it to the SITE panel or + rule that separation is an integration-time concern and say so on the card. +5. **A:** honour `tie_off: false` at the palette layer if you offer anchors by + name from GLB nodes (E's flag; the runtime half is already honoured). + +## Gate 4 — JOHN PLAYS, THEN CHOOSES (nine sprints) + +partly.party/hardyards — five nights, three sentences in THREADS. Then the +branch, which the editor has now repriced: +- **More sites** — D's `site_03_swing_lawn` is authored, scored and played, + sitting inert waiting for a NIGHTS entry. This branch is now nearly free. +- **Reputation / warranty** — DESIGN.md's consequence loop; the invoice exists + to hang it off. Unchanged in cost. +- **Heatwave days** — the slow-pressure half of the design, sun-arc coverage, + a genuinely different puzzle. Unchanged in cost. +Nobody builds any of the three this sprint. + +``` +gate 1: the post hint ruled, the mechanism fixed so a baked hint cannot + silently fail to reach a JSON anchor, both yards re-measured, D re-plays +gate 2: the score paints progress and stays responsive; numbers reproduce + exactly; one storm picker; D says the loop changed +gate 3: Enter commits, out-of-bounds stops reading VALID, the friction list empty +gate 4: John's three sentences + the branch, in writing +```