Sprint 15 plan + prompts; README points at the renamed remote

This commit is contained in:
type-two 2026-07-18 18:00:50 +10:00
parent 008b78a0d4
commit 6f68fbf618
3 changed files with 182 additions and 2 deletions

View File

@ -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/<x>` 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 7582 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.

View File

@ -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
```

99
SPRINT15.md Normal file
View File

@ -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 7582 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
```