|
| 1 | +## 2026-05-31 — OD-GATES RATIFIED (spec owner) for odoo-classes-bitmask-render-v1 (#440): DOLCE-from-cache (dissolves the 6-vs-4), ClassId u16 reuse-existing, kind+class_id both DTO-views, askama |
| 2 | + |
| 3 | +**Status:** RATIFICATION (spec owner = user, 2026-05-31). Unblocks the plan's Wave-0 pre-conditions, WITH the review-verdict P0 corrections folded in. Two answers reframe the plan, not just answer it. |
| 4 | + |
| 5 | +- **OD-TEMPLATE-ENGINE → askama** (compile-time, classes.md:72 lean). Per-class `.html.j2` compiled into the new excluded render crate. RATIFIED as-planned. |
| 6 | +- **OD-CLASSID-WIDTH → ClassId(u16), REUSE the existing accessor.** Wrap/align `lance-graph-contract::soa_view::class_id() -> &[u16]` (N1 hook, #437) — do NOT mint a colliding 2nd newtype (the brutal-tester P0-2). Discriminator stays OUTSIDE the CAM content-hash layer (I-VSA-IDENTITIES; never hashed-as-content). RATIFIED with the reconciliation constraint. |
| 7 | +- **OD-DOLCE-CANONICAL → DISSOLVED: "use the ontology cache."** The spec owner's ruling reframes it: DolceCategory is NOT a new canonical contract enum to pick among 4 — it is a **resolved attribute of the OGIT class in the ontology cache** (`OntologyRegistry` MappingRow). The 6-vs-4 variant mismatch (the brutal-tester P0-3) EVAPORATES: there is no enum beauty contest; the cache resolves class_id → DOLCE category as one more field. The 4 duplicate enums become CONSUMERS of the cache's answer, not competitors. D-CLS-1 changes from "pick canonical + 4-way From-map" to "the cache is the source; the local enums read from it." (Honors classes.md:39 "the meta-DTO resolves; it does not store" + classes.md:2 "CAM, not ANN" identity-resolution.) |
| 8 | +- **OD-CLASSID-VS-ENTITYKIND → DISSOLVED: "it's a DTO; Odoo becomes a custom view."** The spec owner's ruling: class_id and kind are NOT competing discriminators to reconcile — the **meta-DTO RESOLVES both as views over the same row**. Odoo's `kind {Model,Transient,Abstract}` is just one more projected field; class_id is another. So they COEXIST not by compromise but because neither is special — both are DTO-resolved views (classes.md thesis: "Odoo becomes a custom view"). No replace-vs-coexist tradeoff; the DTO subsumes the question. |
| 9 | + |
| 10 | +**Unifying principle (both rulings):** the meta-DTO RESOLVES (logic), it does not STORE (state) — classes.md:39. DOLCE-from-cache and kind-as-view are the same move: resolve attributes over the row via the ontology cache, don't bake competing canonical enums/discriminators into the bytes. |
| 11 | + |
| 12 | +**Wave-0 status:** all 4 OD gates resolved. Still BLOCKING on the review-verdict P0 fixes BEFORE agent spawn: (P0-1) 381 entities not 66 — scope decision; (P0-2) reuse soa_view::class_id (now ratified); (P0-3) DOLCE-from-cache (now dissolves it); (P1) D-CLS-3 → deterministic group-by-on-structural-hash not aerial-cluster (aerial mines rules); (AP2) FieldPositionTable freeze-append-only-on-first-emit. With these folded in, Wave-1 (D-CLS-2 audit / D-CLS-4 render skeleton / D-CLS-5 ClassId-reuse) is spawnable. |
| 13 | + |
| 14 | +**Cross-ref:** #440 plan §2 (OD gates) + §4 (D-CLS); the 2026-05-31 REVIEW VERDICT (P0 errors); `soa_view.rs:61` (existing class_id, reuse); `lance-graph-ontology/registry.rs` (OntologyRegistry = the DOLCE-resolving cache); classes.md:39 (resolve-not-store) / :13 (one class_id keys three things). |
1 | 15 | ## 2026-05-31 — REVIEW VERDICT (council+brutal) of odoo-classes-bitmask-render-v1 (#440): HOLD — 3 P0 factual errors + 1 vaporware deliverable; plan must NOT spawn agents as-written |
2 | 16 |
|
3 | 17 | **Status:** FINDING / plan-correction (5-savant-council + 3-brutal review the plan's §2 + user requested, 2026-05-31). The merged plan #440 is sound in DOCTRINE (classes.md §"Jinja=classes+presence bitmask" verbatim) but has load-bearing factual errors vs on-disk source. Corrections required before Wave-1 spawn. Plan file is append-only governance — these corrections are dated board entries, NOT edits to the plan. |
|
0 commit comments