docs: add core-logos studio LG-3 and LG-4 dispatch briefs
This commit is contained in:
parent
bfd665bf08
commit
b4e13c4141
2 changed files with 144 additions and 0 deletions
72
docs/handoff/core-logos-studio-LG3-brief-2026-06-14.md
Normal file
72
docs/handoff/core-logos-studio-LG3-brief-2026-06-14.md
Normal file
|
|
@ -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:<pack_id>:entry:<entry_id>`
|
||||||
|
- `logos_gloss` → `logos:<pack_id>:gloss:<gloss_id>`
|
||||||
|
- `logos_morphology` → `logos:<pack_id>:morphology:<morphology_id>`
|
||||||
|
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.
|
||||||
72
docs/handoff/core-logos-studio-LG4-brief-2026-06-14.md
Normal file
72
docs/handoff/core-logos-studio-LG4-brief-2026-06-14.md
Normal file
|
|
@ -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:<pack_id>:alignment:<edge_id>`, 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.
|
||||||
Loading…
Reference in a new issue