[FIX] Normalization tested at its single point; the dry run had bypassed it (PENDING-149)
The jurist's pre-25th condition: confirm lowercasing happens at exactly one point and is unit-tested against a known uppercase input. Single point confirmed at derive_fool.py:79 — the only .lower()/.upper()/ casefold in the file. Four checks added, including a negative control proving the test can fail. Selftest 16/16. Checking it found the defect the condition was aimed at, in my own work: the 2026-08-22 dry run lowercased the value OUTSIDE the code and passed it in already normalized, so the single normalization point was never exercised on uppercase input in the only end-to-end run. The test's subject was the pipeline; it excluded the step under scrutiny. Re-run with the raw uppercase value through the real path reproduces the same seed. Binding procedure added: on the 25th the outputValue is passed exactly as served. Jurist ruling on the URL correction recorded verbatim — no veto, with the reasoning, since it will be read later. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JQKeKY9T9d95KpvHwwok8T
This commit is contained in:
co-authored by
Claude Opus 5
parent
acfbb9fc0e
commit
1e40b01d70
+27
@@ -3926,3 +3926,30 @@ Hooks already wired, for §13.6 planning: `SessionStart` ×2 (wake digest lives
|
||||
**§15b — action owed:** say explicitly in PENDING-89 that the buddy contributes zero by construction, and open the v1 Chamber archive read as its own `[PROPOSAL]`.
|
||||
|
||||
**Awaiting:** (1) §6b provenance-commit disposition — **time-critical**; (2) `<DATE FILED>`; (3) unambiguous §5 ratification.
|
||||
|
||||
### AMENDMENT 2 — 2026-08-22 — §4 steps 1–4 filed and pushed; the jurist's normalization condition discharged
|
||||
|
||||
**Commit `acfbb9f`, pushed to both remotes (github + gitea), three days ahead of the beacon.**
|
||||
|
||||
**⚖ JURIST RULING on §2a(b), 2026-08-22: NO VETO — the URL correction stands.** Reasons recorded verbatim in `seed/FOOL-SEED-RULE.md` §2a: the UNAVAILABILITY clause forbids substituting a different *timestamp, beacon, or source*, and none of the three changed — only the address at which the identical object is retrieved. The settling test: **could the correction have moved the outcome?** No; the pulse does not exist yet and does not depend on the URL. A substitution rule exists to prevent redraws, and a correction that cannot affect the draw is not one.
|
||||
|
||||
**⚠ The uppercase finding is ruled the more serious of the two, and the assessment is adopted.** A silent seed divergence would have run clean, produced bones, and left nobody able to say afterwards which normalization had been applied. The URL failure at least announced itself. **Both were caught by the TESTING clause's historical dry run — the clause justified itself twice on its first use**, and that is now recorded in the rule rather than left to inference.
|
||||
|
||||
### ✅ The pre-25th condition — DISCHARGED, and checking it found a defect in my own test
|
||||
|
||||
Jurist: *"Confirm that lowercasing is applied at exactly one point in the code and is unit-tested against a known uppercase input. A normalization rule stated in prose and applied in two places is how the two diverge later."*
|
||||
|
||||
**Single point confirmed:** `derive_fool.py:79`, the only `.lower()` / `.upper()` / `casefold` in the file. **Unit-tested**, four new checks including a **negative control** proving the test can fail. Selftest now **16/16**, no network, synthetic vectors plus one known uppercase vector.
|
||||
|
||||
⚠ **The check found that the 2026-08-22 dry run had bypassed the step it was meant to verify.** The run lowercased outside the code and passed the value in already normalized, so the single normalization point was **never exercised on uppercase input in the only end-to-end run**. The test's subject was *the pipeline*; it silently excluded *the step under scrutiny*. Same wrong-subject shape as the `find`-vs-`glob` error and the three-store negative — **third instance this week, and the first found by another party naming the condition rather than by the executor re-checking.**
|
||||
|
||||
**Re-run with the RAW uppercase value through the real path** (2024 pulse): seed `d8e5e74def52c7cd…`, identical to the pre-lowercased run. **Binding procedure added to the rule:** on the 25th the fetched `outputValue` is passed to `derive_fool.py` exactly as served — never normalized by any wrapper, shell step or hand edit before it reaches `derive()`.
|
||||
|
||||
### Owed after the 25th, non-blocking, both accepted
|
||||
|
||||
- **`[FIX]` 'abandonment' → 'retirement'** throughout the fool's doctrine — one word, one meaning; *abandonment* stays owned by §6 of the trial design. Deliberately deferred past the beacon so no edit touches the filed rule before it fires.
|
||||
- **The mumble-hook answer** — clock-governed, event-checked, residual burst sensitivity declared rather than claimed away; the daemon alternative **costed, not dismissed**. Build decision, not governance.
|
||||
|
||||
**Still NOT done:** target pulse not fetched, no bones, no soul, `~/CLAUDE.md` untouched (PENDING-150), nothing built of §8/§8a/§9.
|
||||
|
||||
**Awaiting:** nothing blocking. The next act is the beacon at 2026-08-25T12:00:00Z.
|
||||
|
||||
Reference in New Issue
Block a user