Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude/board/ISSUES.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

**Status:** OPEN. **Basis:** VERIFIED-IN-CODE; DECISION by operator 2026-10-10 (the V3 marker is a fossil; only `hotplug.rs` and the slab metadata envelope decide whether a slab is `Facet96` (32 + 96) or `Register128` (128, classid via SPOG/plug)). Record: `entries/2026-10-10-classid-layout-ruling.md`, plan `cross-glove-business-parity-v1.md` §C.9.3.

- `canonical_node::classid_read_mode(classid)` (`canonical_node.rs:1813`) reads `BUILTIN_READ_MODES` (`:1743`), keyed by the full classid, including the `*_V3` keys carrying classview `0x1000`.
- `canonical_node::classid_read_mode(classid)` (`canonical_node.rs:1850`, re-measured 2026-10-11 on `1116c120`; was `:1813`) reads `BUILTIN_READ_MODES` (`:1773`, was `:1743`), keyed by the full classid, including the `*_V3` keys carrying classview `0x1000`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep the issue ledger body append-only

Preserve this existing issue body and append the regrade separately. The governance in this file states that entries are never deleted and that only Status and Resolution are mutable (ISSUES.md:3943-3954, 3978-3986), but this change rewrites both the source citation and closure criterion in place. The line-count gate cannot detect this kind of same-length history rewrite, so the original audit record is no longer reconstructable from the ledger.

Useful? React with 👍 / 👎.

- Callers: `ocr.rs:105/124`, `aiwar.rs:119`, `nan_projection.rs:167`, `soa_graph.rs:204/457`.
- `hotplug.rs` states it is the ONE resolution path ("there is no second registry"); this table is a second one.
- **What closes it:** route those callers through `Activation::resolve_for_context`, keep the legacy keys readable for slabs already written with them (an explicit `SlabDeclaration` wins for existing data), then retire the `0x1000` keys on corpus proof that no row needs them.
- ⊘ **What closes it** (regraded 2026-10-11): the earlier text ended "then retire the `0x1000` keys on corpus proof that no row needs them". SUPERSEDED by the operator ruling of 2026-10-10 (*"1000 isn't hurting, just document and Mark it as deprecated. No need to force evict"*), recorded as rule 5 of plan `v3-mandatory-hotplug-reading-v1.md`. The legacy keys stay. The issue closes when (a) no NEW reading is selected through this table — every mint path takes its reading from an `Activation` or a `SlabDeclaration` (D-HPR-3), and (b) an unknown classid no longer falls back to `ReadMode::DEFAULT` (D-HPR-6b, operator decision). The table then survives only as the reader of stored legacy keys (D-HPR-5).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Require Activation for every new mint

Do not allow SlabDeclaration as an alternative source for a mint's reading. Activation::resolve_for_context first requires read_mode_for(concept) and then replaces only value_schema, retaining the activation's tail_variant; therefore a slab declaration cannot prevent a mint from continuing to select its tail through classid_read_mode. As written, this criterion could mark D-HPR-3 complete while the second resolution path remains active.

Useful? React with 👍 / 👎.


## ISS-EPI5-CODEBOOK-LACKS-P7A-CONJUNCTIONS — P7a certifications with no canonical EpistemicState5 code (2026-10-07)

Expand Down
14 changes: 7 additions & 7 deletions .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ Plan: `.claude/plans/v3-mandatory-hotplug-reading-v1.md`.
|---|---|---|---|
| **D-HPR-0** | Ruling + plan + caller inventory | Shipped (#1464) | — |
| **D-HPR-1** | Contract modules (`ocr`, `aiwar`, `nan_projection`, `soa_graph`) take the reading as a parameter | Shipped (#1464; 4 `_with`/`_plugged` forms, disable runs 4/4 red) | new form returns the handed reading even where `classid_read_mode` disagrees |
| **D-HPR-2** | Canon domain readings move into `OgarAuthority::concept_override` | In PR (5 concept arms; red with an arm removed) | `read_mode_for(concept)` == today's `classid_read_mode(<V3 classid>)` per domain |
| **D-HPR-3** | Consumers move (lance-graph, q2, MedCare); `classid_read_mode` deprecated | Queued | no production caller left |
| **D-HPR-4** | `0x1000` / render prefixes documented as deprecated, kept (no eviction) | Shipped (#1464; doc notes on `CLASSID_*_V3` + `classid_read_mode`) | — |
| **D-HPR-5** | Stored legacy keys keep resolving; a `SlabDeclaration` may override for its own data; no forced removal | Queued | — |
| **D-HPR-6** | No V1 default for an unknown classid; `guid-v3-tail` not a gate | Queued | unknown classid → `NoReadingFor` |
| **D-HPR-2** | Canon domain readings move into `OgarAuthority::concept_override` | Shipped (#1465; 5 concept arms, red with an arm removed; codex P1 fix: canon domains also activate through the public `activate` path) | `read_mode_for(concept)` == today's `classid_read_mode(<V3 classid>)` per domain |
| **D-HPR-3** | Consumers move (lance-graph, q2, MedCare); `classid_read_mode` deprecated | Queued (2026-10-11 census: MedCare has 0 callers; q2's are offline bake mints; deepnsm-v2 is blocked on a concept mint, not code) | no NEW reading selected through the table (rule 5 keeps stored keys readable) |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove the obsolete deprecation deliverable

Update the deliverable column along with the revised status. This row still instructs D-HPR-3 to deprecate classid_read_mode, while the same commit's W3 text explicitly strikes that action because rule 5 requires existing callers to remain usable under -D warnings. Leaving both instructions on the status board can send the queued implementation toward the forced migration the plan now forbids.

Useful? React with 👍 / 👎.

| **D-HPR-4** | `0x1000` / render prefixes documented as deprecated, kept (no eviction) | Shipped for `0x1000` (#1464; doc notes on `CLASSID_*_V3` + `classid_read_mode`); render prefixes, `NodeGuid::read_mode` and OGAR/q2 sites still carry no note | — |
| **D-HPR-5** | Stored legacy keys keep resolving; a `SlabDeclaration` may override for its own data; no forced removal | Holds today (status quo). Caveat: a `SlabDeclaration` overrides `value_schema` only, never the tail, so it cannot protect a V1/V2-tail slab (`hotplug.rs:231-257, 392`) | — |
| **D-HPR-6** | No V1 default for an unknown classid; `guid-v3-tail` not a gate | Queued — split: **6a** un-gate `guid-v3-tail` (default-on, and no fleet consumer disables it, so only `--no-default-features` builds change; there the 5 V3 fossils read `DEFAULT` today); **6b** unknown classid → error (behaviour change, operator) | unknown classid → `NoReadingFor` |

## D-XGP — Cross-glove business parity: Odoo × SAP over one Quack algebra (2026-10-10)

Expand All @@ -20,9 +20,9 @@ Plan: `plans/cross-glove-business-parity-v1.md`. Board entry: `entries/2026-10-1
|---|---|---|---|
| **D-XGP-0** | Read-only inventory across lance-graph, OGAR, ruff, odoo-rs, lgj, SIMAF | Shipped (analysis) | every row carries `file:line` at the pins in plan §0 |
| **D-XGP-1** | ~~`lance-graph-contract::glove` types + laws 1–5~~ ⊘ superseded (plan §C): CATS `impl Binder` (dir-sim `UserBinder` shape) + registry canonical-name front | Shipped (#1448; fixture URIs, superseded by the authority basis per plan §C.9) | probe Q1: canonical-name path gives the same `Col`s, `Program` and sums as `CatsQuery`; N-a..N-d |
| **D-XGP-2** | ~~`BILLABLE_WORK_ENTRY` basis v1 in `ogar-class-view`~~ ⊘ superseded: canonical attribute URIs for `0x0103` fields ⊘ superseded (§C.9, lockstep deprecated): SAP/Odoo `HotPlug` consts + native-field mapping onto OGAR's promoted `BillableWorkEntry` (13 `ClassView` positions) | In PR (`lance-graph-glove-parity::basis`: plugs refuse `NoCapabilitiesFor(0x0103)`, 9 claims all `Hypothesized`; open: temporal role, an OGAR change) | probe Q2: shared `entity_type_id` per field; one-sided fields resolve `None` on the other side |
| **D-XGP-2** | ~~`BILLABLE_WORK_ENTRY` basis v1 in `ogar-class-view`~~ ⊘ superseded: canonical attribute URIs for `0x0103` fields ⊘ superseded (§C.9, lockstep deprecated): SAP/Odoo `HotPlug` consts + native-field mapping onto OGAR's promoted `BillableWorkEntry` (13 `ClassView` positions) | Shipped (#1455; `lance-graph-glove-parity::basis`: plugs refuse `NoCapabilitiesFor(0x0103)`, 9 claims all `Hypothesized`; open: temporal role, an OGAR change) | probe Q2: shared `entity_type_id` per field; one-sided fields resolve `None` on the other side |
| **D-XGP-3** | `lance-graph-glove-parity` probe: P1–P4, N1–N7 ⊘ first rung (§C.9.2): SAP `billing_indicator` → `billable` Converted via derived lens `lance-graph-sap::bind::BILLABLE` | Shipped (#1459; first `Converted` claim). ⊘ "9/12 edge targets unminted" was a misreading: they lack only a SHARED codebook id; a classid is `domain(8)|appid(8)|concept(16)`: domain immutable, appid ≡ concept byte (`0xDDCC` = domain:appid), 64k handed out per domain:appid (§C.9.3); reversing `render_classid` audited and ruled out (§C.9.4). Next: anchor `performed_by`/`tenant`/`duration`/work date on WoA's own concepts | equal `Program`s for literal-free queries; N1/N2/N5/N6 red without the conversion |
| **D-XGP-8** | WoA anchors: `TimeSheet` claims `performed_by` / `duration` / `tenant` (§C.9.5) | In PR (all `Hypothesized`; finding: OGAR `WoaPort` pins `0x0103` on `TimesheetActivity`, the description row; `ogit.WorkOrder:TimeSheet`/`User`/`Tenant` are minted in OGIT but have no OGAR id or `WoaPort` alias; "Stundenzettel" is a DTO label of TimeSheet) | each glove claims each anchor once; two-sided WoaPort pin |
| **D-XGP-8** | WoA anchors: `TimeSheet` claims `performed_by` / `duration` / `tenant` (§C.9.5) | Shipped (#1460, OGIT correction #1462; all `Hypothesized`; finding: OGAR `WoaPort` pins `0x0103` on `TimesheetActivity`, the description row; `ogit.WorkOrder:TimeSheet`/`User`/`Tenant` are minted in OGIT but have no OGAR id or `WoaPort` alias; "Stundenzettel" is a DTO label of TimeSheet) | each glove claims each anchor once; two-sided WoaPort pin |
| **D-XGP-4** | Odoo analytic-line pivot + behavior classification (Odoo session) | Queued | pivot validates; mapping `unit_amount` as Exact is rejected |
| **D-XGP-5** | Report `Catalog` from `CanonicalBasis` | Queued | one report plan, identical cells over both lane views |
| **D-XGP-6** | lgj ↔ quack convergence cases for canonical-bound queries | Queued | `lowering_convergence.rs` byte-equality per case |
Expand Down
Loading
Loading