From b4e13c4141fee3a4fb96746d83cdc2d4c2181a0a Mon Sep 17 00:00:00 2001 From: Shay Date: Sun, 14 Jun 2026 11:54:36 -0700 Subject: [PATCH 1/2] docs: add core-logos studio LG-3 and LG-4 dispatch briefs --- .../core-logos-studio-LG3-brief-2026-06-14.md | 72 +++++++++++++++++++ .../core-logos-studio-LG4-brief-2026-06-14.md | 72 +++++++++++++++++++ 2 files changed, 144 insertions(+) create mode 100644 docs/handoff/core-logos-studio-LG3-brief-2026-06-14.md create mode 100644 docs/handoff/core-logos-studio-LG4-brief-2026-06-14.md diff --git a/docs/handoff/core-logos-studio-LG3-brief-2026-06-14.md b/docs/handoff/core-logos-studio-LG3-brief-2026-06-14.md new file mode 100644 index 00000000..82569801 --- /dev/null +++ b/docs/handoff/core-logos-studio-LG3-brief-2026-06-14.md @@ -0,0 +1,72 @@ +# LG-3 — CORE-Logos Studio: Contents tabs (Lexicon / Glosses / Morphology) + +**Date:** 2026-06-14 +**Wave:** read-only CORE-Logos Studio (L1–L5). Parent pack: +`docs/handoff/core-logos-studio-readonly-briefs-2026-06-14.md`. Plan: +`docs/workbench/core-logos-studio-plan.md`. +**Depends on:** **LG-2 merged** (`/logos` route shell + the 10 `Logos*` TS +interfaces already mirrored + `NOT_YET_MIRRORED` shrunk). Rebase on it. May be +authored in parallel with LG-4, but **merges sequentially** with it (shared +train files: `routes.ts` / `App.tsx` / `api.ts` / `evidenceAddress.ts`) — +rebase-union + retest, Wave R/M discipline. +**Scope (hard):** the three **Contents** tabs only — Lexicon, Glosses, +Morphology. **No Alignment tab (LG-4). No mutation affordances.** Reads only +`GET /logos/packs/{id}/contents` (`LogosPackContents`). + +## Non-negotiables +- **No theater, no recompute.** Render only fields the `/logos/contents` + endpoint returns. Dangling-link flags **reuse** the LG-1 safety report's + `dangling_morphology_links` — never recompute link integrity in React. +- Read-only; determinism (no nondeterministic ordering); doctrine gates green. + +## Build + +Add three tabs to the existing `/logos` `TabBar` (pattern: +`src/app/packs/PacksRoute.tsx`). Each list uses the shared primitives: +`src/design/components/VirtualizedList`, `src/design/components/SearchInput`, +`src/design/hooks/useListNavigation.ts`, with selection tokens. + +### Lexicon (`LogosLexiconRow`) +Columns: `entry_id` · `surface` · `lemma` · `language` · `pos`/`part_of_speech` +· `semantic_domains` · `morphology_id` · `provenance_ids` · `epistemic_status`. +- Search over surface/lemma/domain; filter by `epistemic_status`; group by + semantic domain. +- Flag rows whose `morphology_id` appears in the safety report's + `dangling_morphology_links` (cross-reference, don't recompute). +- `speculative` is the expected default (ADR-0021) — label neutrally. + +### Glosses (`LogosGlossRow`) +Columns: `gloss_id` · `lemma` · `gloss` · `pos` · linked `entry_ids` · +`provenance_ids` · `epistemic_status`. Link each gloss to its lexicon entries +via `entry_ids`. Raw row available in a collapsible (`raw`). + +### Morphology (`LogosMorphologyRow`) +- Render the ordered operator chain **in schema order**: + `root → prefix_chain → stem → inflection → suffix_chain`. Ordering is + load-bearing (Semitic root / Koine grammar) — **never re-sort**. +- Link to the lexicon entry via `morphology_id`; flag dangling (same + cross-reference to the safety report). + +### Evidence subjects (`src/app/evidenceAddress.ts`) +Add three subject kinds + address grammar (alongside the LG-2 `logos_pack`): +- `logos_entry` → `logos::entry:` +- `logos_gloss` → `logos::gloss:` +- `logos_morphology` → `logos::morphology:` +Each: union member, equality, encode/parse, right-inspector projection, +copyable pointer, `?inspect=` sync, chain-rail derivation. Round-trip tests in +`evidenceAddress.test.ts`. + +## Acceptance / tests +- Render + filter + keyboard-nav tests for each tab against fixture + `LogosPackContents`. +- Dangling-link flag test: a row flagged in the safety report shows the flag; + others don't. +- Morphology order test: chain renders in schema order (assert against a known + Hebrew entry, e.g. `he-morph-008` suffix `ים`). +- `evidenceAddress.test.ts` — round-trip for all three new kinds. +- `routes.test.tsx` / `schemaDrift` / `enumCoverage` stay green. **No new + engine schemas** (LG-2 mirrored them) — `NOT_YET_MIRRORED` untouched. +- `pnpm build` clean. + +## Out of scope (separate brief) +- **LG-4** — Alignment tab + holonomy-absent confirmation. diff --git a/docs/handoff/core-logos-studio-LG4-brief-2026-06-14.md b/docs/handoff/core-logos-studio-LG4-brief-2026-06-14.md new file mode 100644 index 00000000..583daa12 --- /dev/null +++ b/docs/handoff/core-logos-studio-LG4-brief-2026-06-14.md @@ -0,0 +1,72 @@ +# LG-4 — CORE-Logos Studio: Alignment tab (centerpiece) + holonomy-absent + +**Date:** 2026-06-14 +**Wave:** read-only CORE-Logos Studio (L1–L5). Parent pack: +`docs/handoff/core-logos-studio-readonly-briefs-2026-06-14.md`. Plan: +`docs/workbench/core-logos-studio-plan.md`. +**Depends on:** **LG-2 merged** (`/logos` route shell + the 10 `Logos*` TS +interfaces mirrored). Rebase on it. May be authored in parallel with LG-3 but +**merges sequentially** with it (shared train files: `routes.ts` / `App.tsx` / +`api.ts` / `evidenceAddress.ts`) — rebase-union + retest. +**Scope (hard):** the **Alignment** tab (the wave centerpiece) + confirming the +honest holonomy-absent state. **No contents tabs (LG-3). No mutation.** Reads +only `GET /logos/packs/{id}/alignment` (`list[LogosAlignmentRow]`). + +## Non-negotiables +- **Determinism is the whole point.** Render with the existing **deterministic** + DAG primitive (`src/design/components/Dag/Dag.tsx`, layered longest-path via + `layout.ts`). **No force-directed / nondeterministic layout, no motion-as- + cognition.** A golden-file layout test is required (mirror + `Dag/Dag.layout.golden.json`). +- No theater, no recompute. Render only the endpoint's fields. + +## Build + +### Alignment tab +- Add an **Alignment** tab to the existing `/logos` `TabBar`. The trilingual + resonance graph (he → grc → en) is the strongest real data in the wave — make + it the centerpiece. Consumer pattern: `src/app/proposals/ProposalChainViewer.tsx` + (the existing `Dag` consumer). +- Per-edge card / row (`LogosAlignmentRow`): `source_id` · `target_id` · + `relation` · `weight` · `evidence_ids` · `target_pack_id` · **invalid-target + warning** when `invalid_target` is true. +- **Surface the invalid targets honestly.** LG-1 reports 5 undeclared + `en-collapse-*` anchors (`breath/heart/holy/soul/time`) as `invalid_target` in + `grc_logos_cognition_v1`; the declared 3 (`love/justice/peace`) resolve. Show + the warning — do **not** hide or smooth it. This is a reviewer-visible "the + geometry tells the truth" moment, not a defect to mask. +- Answer the plan's four questions in the tab: what does this Hebrew root align + with / what Greek relation carries the same pressure / what English surface + receives it / what evidence supports the edge (`evidence_ids`, e.g. + `John1:1` / `Gen1:1`). + +### Evidence subject (`src/app/evidenceAddress.ts`) +- Add `logos_alignment_edge` → `logos::alignment:`, where + `edge_id` is the LG-1 deterministic id + (`sha256(source|target|relation)[:16]`, already on `LogosAlignmentRow`). +- Union member, equality, encode/parse, right-inspector projection, copyable + pointer, `?inspect=` sync, chain-rail derivation. Round-trip test. + +### Holonomy — confirm absent-state (no new tab) +- **No Holonomy tab, no proof card, no success state.** Overview already shows + `holonomy_case_count` 0 + `missing_evidence` (LG-2); Safety shows + `missing_holonomy_refs` `unknown`. LG-4's only holonomy work is a guard that + **no holonomy proof affordance leaks in** — add a test asserting the `/logos` + surface renders no holonomy success/proof element. (Real holonomy cards are + the future W-Holonomy wave once `holonomy.jsonl` exists.) + +## Acceptance / tests +- **Golden-file layout test** for the alignment DAG (deterministic node/edge + layout; mirror the `Dag.layout.golden.json` pattern). +- Invalid-target render test: an `invalid_target` edge shows the warning; a + resolved edge does not. Assert the 5 undeclared `en-collapse-*` anchors warn. +- `evidenceAddress.test.ts` — `logos_alignment_edge` round-trip. +- Holonomy-absent guard: no proof/success element on the `/logos` surface. +- `routes.test.tsx` / `schemaDrift` / `enumCoverage` stay green. **No new engine + schemas** — `NOT_YET_MIRRORED` untouched. +- `pnpm build` clean. + +## Out of scope (separate brief) +- **LG-3** — Lexicon / Glosses / Morphology contents tabs. +- **W-Holonomy / W-Forge** — future waves (author `holonomy.jsonl`; universal + `ProposalArtifact` envelope + Patch Forge). Not this wave. From c9e273062b348596c3b750d3b3139e939bbdccde Mon Sep 17 00:00:00 2001 From: Shay Date: Sun, 14 Jun 2026 12:24:40 -0700 Subject: [PATCH 2/2] docs: require full vitest run before push in LG-3/LG-4 briefs (LG-2 CI lesson) --- docs/handoff/core-logos-studio-LG3-brief-2026-06-14.md | 4 ++++ docs/handoff/core-logos-studio-LG4-brief-2026-06-14.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/docs/handoff/core-logos-studio-LG3-brief-2026-06-14.md b/docs/handoff/core-logos-studio-LG3-brief-2026-06-14.md index 82569801..564d8168 100644 --- a/docs/handoff/core-logos-studio-LG3-brief-2026-06-14.md +++ b/docs/handoff/core-logos-studio-LG3-brief-2026-06-14.md @@ -67,6 +67,10 @@ copyable pointer, `?inspect=` sync, chain-rail derivation. Round-trip tests in - `routes.test.tsx` / `schemaDrift` / `enumCoverage` stay green. **No new engine schemas** (LG-2 mirrored them) — `NOT_YET_MIRRORED` untouched. - `pnpm build` clean. +- **Run the FULL `pnpm exec vitest run` before push — it must pass AND exit.** + The CI `workbench-ui` job gates on the whole suite; focused per-file runs miss + a PR's own new test files and cross-cutting tests (LG-2 lesson: stale + route-count assertions only surfaced in the full run, never the focused one). ## Out of scope (separate brief) - **LG-4** — Alignment tab + holonomy-absent confirmation. diff --git a/docs/handoff/core-logos-studio-LG4-brief-2026-06-14.md b/docs/handoff/core-logos-studio-LG4-brief-2026-06-14.md index 583daa12..fdd0d610 100644 --- a/docs/handoff/core-logos-studio-LG4-brief-2026-06-14.md +++ b/docs/handoff/core-logos-studio-LG4-brief-2026-06-14.md @@ -65,6 +65,10 @@ only `GET /logos/packs/{id}/alignment` (`list[LogosAlignmentRow]`). - `routes.test.tsx` / `schemaDrift` / `enumCoverage` stay green. **No new engine schemas** — `NOT_YET_MIRRORED` untouched. - `pnpm build` clean. +- **Run the FULL `pnpm exec vitest run` before push — it must pass AND exit.** + The CI `workbench-ui` job gates on the whole suite; focused per-file runs miss + a PR's own new test files and cross-cutting tests (LG-2 lesson: stale + route-count assertions only surfaced in the full run, never the focused one). ## Out of scope (separate brief) - **LG-3** — Lexicon / Glosses / Morphology contents tabs.