Skip to content

Commit e8388e9

Browse files
AdaWorldAPIclaude
andauthored
plan: v4.3 — units are binary throughout (the deferred decision, decided) (#72)
* plan: v4.3 — units are binary throughout (the deferred decision, decided) The v4.2 council BLOCKed the mixed convention and deferred it as a decision rather than a correction. Decided: binary (KiB/MiB/GiB) throughout section 14. Why it is the right default rather than a coin flip: every quantity in that section is N/8 bytes over a power-of-two row count and a power-of-three cell count. The decimal reading was only ever an artifact of writing 1.25 MB for 1,250,000 bytes in the same table that wrote 72 KB for 73,728. No byte count changed, only its name. The 10M column moves 1.25 / 11.25 / 33.75 MB to 1.19 / 10.73 / 32.19 MiB; the 65,536 column was already binary and is untouched. D-MRL-G2's worked example moves with it: 100 classes at 10M rows is 1.05 GiB against a headline of 10.73 MiB, the same ~100x it always was. The struck figures are quoted in the note rather than deleted. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DCfrD5y19cvFc4AoyydXYv * plan: finish the binary conversion — the claim outran the edit Codex P2 and CodeRabbit independently found the same defect: v4.3 declared units binary "throughout" section 14 and then converted only the figures in the tables I was editing. Five labels survived -- 8 KB at 470, 72 KB at 515, 72/48 KB at 595-596, 96 KB at 625 -- plus 72 KB on the board. All are binary quantities under N/8, so leaving the labels preserved the exact mixed convention the amendment says it resolved. Now KiB throughout; no numeric value changed. The one remaining KB is inside the strike note quoting the struck decimal figures, which must stay as the record of what was corrected. This is the THIRD instance today of one pattern, and it is worth naming rather than just fixing: - the v3 council BLOCKed model identifiers and rewrote section 8, while section 10 kept five of them shipped; - v4.2 corrected "the existing one" in a sentence's first half and left its tail asserting the same false existence; - v4.3 declared a convention and converted the lines in view. A verdict is discharged by a sweep across the artifact, never by editing the passage that prompted it. Stated in the plan already; violated by the same author on the same day, three times, which is the argument for a mechanical check over a remembered rule. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DCfrD5y19cvFc4AoyydXYv --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent e5d734b commit e8388e9

2 files changed

Lines changed: 21 additions & 12 deletions

File tree

‎.claude/board/STATUS_BOARD.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@ the membrane / Valhalla cheap addresses / everything else underneath).
1818
| D-LGJ-MMV-3 | Valhalla value-class promotions where the three-truths lab shows a measured facade-path win; each reversible | Queued (evidence-gated) |
1919
| D-LGJ-MMV-4 | Temporal read binding via `LanceVersion`/`VersionRange`/`TemporalPov` (contract vocabulary, never the Kanban-entangled types) | Queued (substrate-first per F6) |
2020
| D-MRL-2c | *proposed:* lower family-(1) agreement topology onto mask ops | **Proposed** — needs its own F-RLR-2 insufficiency argument; MUST NOT be conflated with family (3) |
21-
| D-MRL-G2 | **the blocking question §14's arithmetic owes** (v4.2 §17.3): what row space does a mask span, times how many classes, rebuilt how often? | **BLOCKING (2026-09-03).** KILL: if a cube is per-class over the GLOBAL row space, `C × 9 × N/8` at 10M rows × 100 classes ≈ **1.1 GB**, and §14.2's headline 11.25 MB is struck. Either the numbers are understated by the class count or the L8 strike is unfounded — both cannot hold. A pricing defect, NOT a novelty defect |
21+
| D-MRL-G2 | **the blocking question §14's arithmetic owes** (v4.2 §17.3): what row space does a mask span, times how many classes, rebuilt how often? | **BLOCKING (2026-09-03).** KILL: if a cube is per-class over the GLOBAL row space, `C × 9 × N/8` at 10M rows × 100 classes ≈ **1.05 GiB**, and §14.2's headline **10.73 MiB** is struck. Either the numbers are understated by the class count or the L8 strike is unfounded — both cannot hold. A pricing defect, NOT a novelty defect |
2222
| D-MRL-2a | mint `BELNAP_JOIN` at a core loco slot with a lowering table | **BLOCKED (2026-09-03, v4.1 §16.1)** — the carrier is deleted. `EpistemicBassin24`/`support_mask`/`refute_mask`: zero occurrences in lance-graph; the `0x87..0x8B` band was retracted 2026-09-02 *with the model it encoded* (`ogar-loco/src/lib.rs:596-599`). Unblocks only if a live carrier for the join semantics exists |
2323
| D-MRL-1a | `TERNLOG` + `TERNARY_MATCH` ops | **AMENDED (2026-09-03, v4.1 §16.2)** — no mint: consume `ogar_loco::TERNLOG` = `FnIndex(0x86)`, which ships with this op's description verbatim and **zero consumers**. Wave 1 becomes its first consumer, discharging the vacancy `E-A-RULED-HOME-NEEDS-A-FIRST-CONSUMER-OR-IT-IS-A-VACANCY-1` names |
2424
| ⊘ D-MRL-2c (SUPERSEDED by the row above, v4.2) | *proposed, not scheduled:* lower family-(1) agreement topology (`witness_fabric` — ⊘ the "119 scalar sites" here is the count v4.2 withdrew as unreproducible; kept per append-only, NOT a live figure) onto mask ops | **Proposed (2026-09-03, v4.1 §16.3)** — needs its own F-RLR-2 insufficiency argument. MUST NOT be conflated with family (3): the six-families ruling forbids the impersonation |
2525
| D-MRL-0f | **OSM voxel probe** (`mask-risc-lowering-v1.md` §15) — build the 3-state-per-tier voxel cube over a real OSM tile population addressed by `ogar_osm::GEO_V3_FACET`; measure the cardinality question **at the arity of the population actually probed** — ⊘ v4.2: 27-vs-8 is the CANONICAL THREE-TIER KEY; `GEO_V3_FACET` has FOUR tier rails, so the OSM case is **81 cells vs 16**. The struck text said 27-vs-8 unqualified, which would have measured the wrong population, primitive memory vs prediction, cull fraction per viewport | **Queued (2026-09-03, v4)** — falsifier of §14. KILL: the real stream needs patterns finer than the tier byte-pair ⇒ §3c.1's "OSM is the native case" is struck |
2626
| D-MRL-0g | **Frame-sequence probe** (§15.1b) — ordered viewport path against the horizontal rail cache under a real capacity bound; frame-to-frame overlap, hit COUNT, `cold − warm`, prefetch-resolvable fraction | **Queued (2026-09-03, v4)** — the most favourable honest stream for the trie. KILL: fails G9 here ⇒ Wave 1c dies and is not retried on a friendlier stream |
27-
| D-MRL-0..3 | `mask-risc-lowering-v1.md` — verbs → mask RISC → trie memo over immutable versions (photolithography). Waves: 0 probes (`DOWN[x]` falsifier, rail-group hit rate, cold build cost), 1 `lgj-abi` (TERNLOG/TERNARY_MATCH ops, survivor skip, trie, tier masks), 2 loco verbs with a lowering table, 3 Java glove | **v4.2 COUNCIL-CORRECTED (2026-09-03)** — 5+3 verification council (the review CodeRabbit/Bugbot could not give): 42 savant findings, 2 reviewer BLOCKs, 2 external P2s. 8 claims struck-and-regraded in place, incl. `witness_fabric` 379→**3,439 lines with its "landed after the council" excuse retracted**, `3¹²` 4.2 GB→**4.05 GiB**, blasgraph six→**seven** semirings, §7's D-MRL-2a row ⊘'d as a **live mint directive**, and five model identifiers §10 kept after the v3 BLOCK fixed only §8. New blocking row D-MRL-G2. Prior: **v4 AMENDED** — §14 voxelmasking (vertical axis enumerated, not cached: 9 primitives = 72 KB at 65,536 rows; strikes S5-Q4/L8/F7/F12/F10 on that axis only), §3c reuse map (OSM native; weather splits wind→voxel / humidity×13→blasgraph), §14.6 culling, §14.7 prefetch. Prior: **RATIFIED v3** — 5+3 council complete: 5 savants/40 findings → draft v2 (24 amendments) → 3 reviewers (2 BLOCK, 14 FIX) + 2 external Codex P1s → v3. Both BLOCKs resolved (model identifiers struck from the artifact; the cost ladder regraded `[E]` throughout). Waves QUEUED behind Wave 0, which now gates all of Wave 1 |
27+
| D-MRL-0..3 | `mask-risc-lowering-v1.md` — verbs → mask RISC → trie memo over immutable versions (photolithography). Waves: 0 probes (`DOWN[x]` falsifier, rail-group hit rate, cold build cost), 1 `lgj-abi` (TERNLOG/TERNARY_MATCH ops, survivor skip, trie, tier masks), 2 loco verbs with a lowering table, 3 Java glove | **v4.2 COUNCIL-CORRECTED (2026-09-03)** — 5+3 verification council (the review CodeRabbit/Bugbot could not give): 42 savant findings, 2 reviewer BLOCKs, 2 external P2s. 8 claims struck-and-regraded in place, incl. `witness_fabric` 379→**3,439 lines with its "landed after the council" excuse retracted**, `3¹²` 4.2 GB→**4.05 GiB**, blasgraph six→**seven** semirings, §7's D-MRL-2a row ⊘'d as a **live mint directive**, and five model identifiers §10 kept after the v3 BLOCK fixed only §8. New blocking row D-MRL-G2. Prior: **v4 AMENDED** — §14 voxelmasking (vertical axis enumerated, not cached: 9 primitives = 72 KiB at 65,536 rows; strikes S5-Q4/L8/F7/F12/F10 on that axis only), §3c reuse map (OSM native; weather splits wind→voxel / humidity×13→blasgraph), §14.6 culling, §14.7 prefetch. Prior: **RATIFIED v3** — 5+3 council complete: 5 savants/40 findings → draft v2 (24 amendments) → 3 reviewers (2 BLOCK, 14 FIX) + 2 external Codex P1s → v3. Both BLOCKs resolved (model identifiers struck from the artifact; the cost ladder regraded `[E]` throughout). Waves QUEUED behind Wave 0, which now gates all of Wave 1 |
2828

2929
W4.2 (the write seam) deliberately has NO row — blocked with GridLake
3030
(plan F5) and substrate-side by the F7 measurement; a row here would be

‎.claude/plans/mask-risc-lowering-v1.md‎

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -467,19 +467,28 @@ of them precomputed at version seal.
467467

468468
### §14.2 — The arithmetic (the whole argument)
469469

470-
A mask over `N` rows costs `N/8` bytes. At the fixture size `N = 65_536` that is **8 KB**.
470+
A mask over `N` rows costs `N/8` bytes. At the fixture size `N = 65_536` that is **8 KiB**.
471471

472472
| quantity | at N = 65,536 | at N = 10,000,000 |
473473
|---|---|---|
474-
| one mask | 8 KB | 1.25 MB |
475-
| **9 primitives** (3 tiers × 3 states) | **72 KB** | **11.25 MB** |
476-
| full 27-cell cube, if materialised | 216 KB | 33.75 MB |
474+
| one mask | 8 KiB | **1.19 MiB** |
475+
| **9 primitives** (3 tiers × 3 states) | **72 KiB** | **10.73 MiB** |
476+
| full 27-cell cube, if materialised | 216 KiB | **32.19 MiB** |
477477

478478
**Only the 9 primitives are built.** The other 18 cells are an AND of three primitives —
479479
the exact op `plan_eval` already composes (`exports.rs`, the existing chain: n ops, one
480480
crossing, monotone `V(k+1) ⊆ V(k)`). So the cube is a **9-entry array indexed by a base-3
481481
digit triple**, not a 27-entry store.
482482

483+
> **⊘ v4.3 — UNITS ARE BINARY (KiB / MiB / GiB) THROUGHOUT.** The v4.2 council
484+
> BLOCKed the mixed convention and deferred it as *"a decision, not a correction"*.
485+
> Decided here: **binary**, because every quantity in this section is `N/8` bytes over
486+
> a power-of-two row count and a power-of-three cell count — the decimal reading was
487+
> only ever an artifact of writing `1.25 MB` for `1,250,000` bytes while writing
488+
> `72 KB` for `73,728`. The struck decimal figures were **10M: 1.25 / 11.25 / 33.75 MB**;
489+
> the same bytes in binary are **1.19 / 10.73 / 32.19 MiB**. No byte count changed —
490+
> only its name. The 65,536 column was already binary and is unchanged.
491+
483492
### §14.3 — What this DELETES, and why that is the point
484493

485494
Five open items in v3 exist only because hit rate on the vertical axis was unmeasured. Under
@@ -503,8 +512,8 @@ Enumeration works **at tier granularity and nowhere else**.
503512

504513
| granularity | cells | primitive cost at N = 65,536 |
505514
|---|---|---|
506-
| 3 tiers | 3³ = 27 | 72 KB — **build it** |
507-
| 6 rails (`6×(u8:u8)`) | 3⁶ = 729 | 144 KB primitives; cube 5.7 MB — borderline |
515+
| 3 tiers | 3³ = 27 | 72 KiB — **build it** |
516+
| 6 rails (`6×(u8:u8)`) | 3⁶ = 729 | 144 KiB primitives; cube 5.70 MiB — borderline |
508517
| 12 facet bytes | 3¹² = **531,441** | cube = **4.05 GiB** (⊘ v4.2 §17: the struck text said *"≈ 4.2 GB"*, which is neither convention — 4.05 GiB / 4.35 GB) — **never** |
509518

510519
So the two axes **split their mechanism**, which is the v4 correction to v3's single-cache
@@ -583,8 +592,8 @@ test of the trie, and a failure there is close to decisive against it.
583592

584593
Do real queries use **must-not-match** per tier, or only match / don't-care?
585594

586-
- with must-not-match: 3 states, 27 cells, **9 primitives (72 KB)**
587-
- without: 2 states, 8 cells, **6 primitives (48 KB)**
595+
- with must-not-match: 3 states, 27 cells, **9 primitives (72 KiB)**
596+
- without: 2 states, 8 cells, **6 primitives (48 KiB)**
588597

589598
This is not a design choice to make in a document — it is a **measurement on a real query
590599
stream**, and it is the primary output of D-MRL-0f below.
@@ -613,7 +622,7 @@ tiers (heel / hip / twig / leaf), each a `256×256` tile with x and y bound lite
613622
Note the honest discrepancy, recorded rather than smoothed: the canonical key carries **three**
614623
named tiers (HEEL/HIP/TWIG); the geo facet carries **four** rails as tiers (adding leaf). The
615624
cube is therefore `3³ = 27` on the key and `3⁴ = 81` on the geo facet (⊘ v4.2 §17: the struck text read "27 primitives-worth", a stale 3³ carry-over — it is 81 cells /
616-
addressing, still 12 primitives = 96 KB at N = 65,536). D-MRL-0f measures on the geo facet and
625+
addressing, still 12 primitives = 96 KiB at N = 65,536). D-MRL-0f measures on the geo facet and
617626
reports which arity the real stream uses.
618627

619628
### §3c.2 — Weather SPLITS, and the split is the finding
@@ -853,7 +862,7 @@ The council's sharpest finding, and it is **not** a novelty objection:
853862

854863
> **§14.2 prices ONE cube; §14.3's L8 strike asserts "a per-class array".** If a cube
855864
> is per-class over the global row space the cost is `C × 9 × N/8` — at 10M rows and
856-
> 100 classes ≈ **1.1 GB, not 11.25 MB**. Either the headline numbers are understated
865+
> 100 classes ≈ **1.05 GiB, not 10.73 MiB** (v4.3 binary units). Either the headline numbers are understated
857866
> by the class count, or the L8 strike is unfounded. **Both cannot hold.**
858867
859868
Three unstated premises underneath, in dependency order — **G2 is the root**:

0 commit comments

Comments
 (0)