feat: rule Q58 and close Q57; §4 lists all six areas; docs/03's checklist cites §4 instead of restating it
Build and deploy / build-and-deploy (push) Failing after 4s
Build and deploy / build-and-deploy (push) Failing after 4s
Four rulings from Pouya, plus what implementing them turned up. Q58 — RULED, and he attributed the ambiguity to his own document: "3.5 was meant as the TOTAL time committed, of which 2 is preparation — leaving 1.5 hours in the room. Your arithmetic caught it: if prep sat inside, 3.5 and 7 wouldn't be exactly 2x, because preparation doesn't scale with session length." The card now reads: half day up to 3 hours of session, fee includes up to 2 hours of preparation, $2,000; full day up to 6 hours, up to 3 hours of preparation, $4,000. docs/07's own research table corroborates 3 and 6 — Patey and Zuber both publish those hours, and ADR Chambers' roster rate counts preparation separately from "up to three hours of mediation". One provenance note under R14: he recalled "all or part of 3 hours" as their wording; the committed extract carries the hours but not the phrase, so docs/07 cites the hours and attributes the phrase to nobody. Two things fell out of the ruling that the instruction did not name, and both were defects. docs/07 §All parameters confirmed was itself prescribing the flat "including 2 hours of preparation" — the sentence /for-parties/ was built against, so the spec was generating the defect. And the cap had to reach the copy: "including up to 2 hours". FEES.mediation.*.hours is corrected 3.5 -> 3 and 7 -> 6; it had no consumer in src/ while the question was open, which is the only reason no page was ever wrong. /fees/ is unblocked for step 9 on the question Q58 asked. Q57 — CLOSED with no seventh undertaking. "A reader assumes the outcome, and the obvious undertaking adds nothing a reader doesn't already infer." The TODO(pouya) is replaced by the ruling where the question was; src/ now carries zero live TODO(pouya) markers. §4's mediation row lists all six published areas. Q56's ruling had named five, which was four areas plus the word "commercial" — a scope descriptor, not a seventh area. The hedge is struck on his instruction; the clause saying the six are not the authorised subject-matter list is restored, because his ruling supplied a correct value and did not close Q35(c)'s class. Split-stamped. docs/03's compliance checklist now names what to look for on a page and which §4 row decides it, never the bar's own wording. 12 items before, 12 after — a structural fix, not a coverage change. Thirteen review findings across two rounds, all applied, none declined. Three were mine to own. The capped-form rule was written and then applied to one surface: /mediation/ shipped an uncapped form in words no barred-string grep could reach, site.ts quoted a docs/07 sentence Q58 had just deleted, and §9's Q15/Q16/Q17 row prescribed the flat form — which is what a later implementer building /fees/ reads. A derived fee term was asserted as applied fact in the document that is the authority on money: "overtime begins after 3 h and 6 h" is in no ruling. Struck, and opened as Q59. And round 2 caught the arithmetic in round 1's own fix. The full-day route is flat $4,000 until hour 6, so generalising it as 500n+1000 for all n>=3 was valid only from 6 h, and "cheaper by $500 at every length" was wrong across the whole 3-6 h band. The real spread is $2,000 at three hours narrowing to $500 from six on — up to four times larger, and largest exactly where a half-day booking overruns. Written into docs/07 §Recorded dissent and §12's R5 row, which is where the 12-month fee review will read it. Round 1's fix for the missing consequence also published the overtime rate on a page that now states an unambiguous cap, defining the trigger by adjacency with no other quantity for it to attach to; the rate came off the page. R11 at the step 6 -> 7 boundary: 13 of 14 pins current. §7's TypeScript hold named one gate and there are two — typescript-eslint requires <6.1.0, tighter than @astrojs/check, so the recorded removal trigger was unreachable. Both are now named. Verified: check 0 errors, lint 0, build 0 (14 pages), check:claims 0, npm audit 0, minifier tripwire clean, zero JS shipped, all copy present with JavaScript disabled. Lighthouse not run — tool unavailable until step 7. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Md3GndFqWPzK78xAoebsg5
This commit is contained in:
co-authored by
Claude Opus 5
parent
13b97841b9
commit
6cfe69033f
@@ -253,14 +253,24 @@ anything you pass as flags, and re-check any result whose shape is "uniformly
|
||||
bad".
|
||||
|
||||
**And re-check "uniformly GOOD" too — that is the dangerous half.** *Added
|
||||
2026-08-30.* The same `set -- $pair` loop recurred while confirming nine restored
|
||||
files matched a saved copy, and this time it printed **`same` on all nine**:
|
||||
`shasum` was handed both filenames as one argument, errored, and left both
|
||||
variables empty, so `"" = ""` passed. **The `DIFFER` version announces itself
|
||||
because it is alarming; a false pass is the answer you wanted and it ends the
|
||||
check.** A comparison must **assert that both things it compares exist** before
|
||||
comparing them, and `git grep` silently misses untracked files — so a clean sweep
|
||||
across new work means nothing until the files are staged.
|
||||
2026-08-30; sharpened on Pouya's instruction 2026-08-31, as "the sharpest
|
||||
instrument finding yet".* The same `set -- $pair` loop recurred while confirming
|
||||
nine restored files matched a saved copy, and this time it printed **`same` on
|
||||
all nine**: `shasum` was handed both filenames as one argument, errored, and left
|
||||
both variables empty, so `"" = ""` passed.
|
||||
|
||||
**The distinguishing property, and it is the whole rule: a broken verification
|
||||
that fails loudly is safe; one that passes uniformly is not.** `DIFFER` on every
|
||||
row announces itself — it is alarming, so it starts an investigation, and the
|
||||
investigation finds the broken loop. A uniform pass is **the result you were
|
||||
hoping for, so it ends the check** instead of starting one. The two failures come
|
||||
from the identical bug and only one of them is survivable.
|
||||
|
||||
So a comparison must **assert that both things it compares exist** before
|
||||
comparing them — that is the assertion the shell loop skipped, and it is what
|
||||
turns this class of bug back into the loud kind. Note the same hole in `git grep`:
|
||||
it silently misses untracked files, so a clean sweep across new work means
|
||||
nothing until the files are staged.
|
||||
|
||||
**A parent cannot style a child component's root element.** Astro does not pass
|
||||
a parent's scope attribute down, so `<Button class="header-cta" />` compiles the
|
||||
|
||||
Reference in New Issue
Block a user