Skip to content

docs(ogar): calcify Northstar plan + fix(ogar-class-view): codex P2 stable order#79

Merged
AdaWorldAPI merged 1 commit into
mainfrom
claude/ogar-northstar-plan-and-codex-p2
Jun 19, 2026
Merged

docs(ogar): calcify Northstar plan + fix(ogar-class-view): codex P2 stable order#79
AdaWorldAPI merged 1 commit into
mainfrom
claude/ogar-northstar-plan-and-codex-p2

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

What

Two follow-ups landing on top of the just-merged #77:

1. fix(ogar-class-view) — codex P2 stable order

known_class_ids() was borrowing HashMap's randomized iteration. Downstream bulk emitters using it for generated artifacts / drift snapshots would reorder across process runs without any schema change. Now iterates ogar_vocab::class_ids::ALL in codebook order; a regression test pins both stability and a second-call-equals-first invariant.

Replies the codex review on #77.

2. docs — calcify the Northstar plan

Rewrites docs/integration/CLASSVIEW-MATERIALIZATION-PLAN.md (125 → 486 LOC) to capture every architectural insight from this sprint so a future session does not drift. The plan is now the calcified single source of truth for this lane.

Section What
§0 Picture — two-pipeline diagram, one codebook
§1 Six invariants — codebook calcified / N3 / Class-types vs ClassView-labels / ClassId == canonical_concept_id / ≤64 / mass-mail templates
§2 The two pipelines in detail (build-time codegen via &Class, run-time projection via ClassView), the muscle-memory loop, the UnifiedBridge layer above them
§3 The +5+5 follow-on PRs — T1–T5 askama templates + C1–C5 consumer wirings, each with three calibration gates
§4 Seven anti-patterns — drifts already explored and rejected, with the "why wrong" for each (the bicycle, bifurcation, template blowup, A2UI-in-now, codebook-skip, HashMap, unescaped keywords)
§5 Seven epiphanies captured verbatim (Rails words die / JSON PostgreSQL grind / class carries types / mass-mail templates / SoA knows its classview / dynamic doesn't go static at compile time / askama IS jinja-rs)
§6 Prior art lineage — WoA-rs (live antecedent), A2UI (roadmap T6), DUSK_Solution + MUIBridge (lineage only)
§7 Roadmap T6–T10 (A2UI, calibration aggregator, DOLCE wiring, 0x03XX+ promotions, commerce-arm convergence)
§8 Open PR map + status
§9 Pointer to convergence artifacts (redmine-canon / op-canon snapshots)

Sections 1, 4, 5 are mandatory reading before any future work in this lane.

Why this matters

The sprint surfaced architectural calls that took several round-trips to settle (e.g. the bicycle anti-pattern around typed_rows on ClassView; the bifurcation question; the binding-struct-is-just-a-bag insight). Calcifying them now stops a future session from re-deriving — or worse, drifting onto a rejected path.

Tests

cargo test -p ogar-class-view 9/9; workspace check + workspace test green.

Pair

PR #78 (ogar-render-askama) was force-rebased onto the new main (carries the codex P1 keyword-escape fix + this PR's Cargo.toml workspace member entry conflict-resolved cleanly).

…tar plan

Two follow-ups landing on top of merged #77.

1. fix(ogar-class-view): codex P2 — stable order on known_class_ids()
   The previous shape borrowed HashMap's randomized iteration; downstream
   bulk emitters using it for generated artifacts / drift snapshots would
   reorder across process runs. Now iterates `ogar_vocab::class_ids::ALL`
   in codebook order; a regression test pins both stability and a
   second-call-equals-first invariant.

2. docs: calcify the Northstar plan
   Rewrites docs/integration/CLASSVIEW-MATERIALIZATION-PLAN.md (was 125 LOC,
   now 486 LOC) to capture EVERY architectural insight from the sprint
   that landed #77/#78 so a future session does not drift:

   §0  picture (two-pipeline diagram, one codebook)
   §1  six invariants (codebook calcified / N3 / Class-types vs ClassView-
       labels / ClassId==canonical_concept_id / ≤64 / mass-mail templates)
   §2  the two pipelines in detail (build-time codegen via &Class,
       run-time projection via ClassView), the muscle-memory loop, and
       the UnifiedBridge layer above them
   §3  +5+5 follow-on PRs (T1-T5 askama templates + C1-C5 consumer wirings),
       each with three calibration gates
   §4  SEVEN anti-patterns — drifts already explored and rejected, with
       the "why wrong" for each. Includes:
       - the bicycle (don't bolt typed_rows onto ClassView)
       - bifurcating templates static-vs-dynamic
       - one-template-per-(class×target) blowup
       - A2UI in-now coupling
       - HashMap random-order surfaces (codex P2 trigger)
       - unescaped Rust keyword field names (codex P1 on #78)
   §5  SEVEN epiphanies captured verbatim (Rails words die / JSON
       PostgreSQL grind / class carries types / mass-mail templates / SoA
       knows its classview / dynamic at compile-time doesn't go static /
       askama IS jinja-rs)
   §6  Prior art lineage — WoA-rs (structural antecedent, live), A2UI
       (roadmap T6), DUSK_Solution + MUIBridge (design lineage only)
   §7  Roadmap T6-T10 (A2UI, calibration aggregator, DOLCE live wiring,
       0x03XX+ promotions for OP-only concepts, commerce-arm convergence)
   §8  Open PR map + status
   §9  Pointer to convergence artifacts on redmine-rs + nexgen-rs

The plan is the calcified single source of truth for the lane.
Sections 1, 4, 5 are mandatory reading before any future work in it.

cargo test 9/9 (ogar-class-view), workspace check green.
@AdaWorldAPI AdaWorldAPI merged commit 6e7011f into main Jun 19, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants