4.3 KiB
4.3 KiB
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 vialayout.ts). No force-directed / nondeterministic layout, no motion-as- cognition. A golden-file layout test is required (mirrorDag/Dag.layout.golden.json). - No theater, no recompute. Render only the endpoint's fields.
Build
Alignment tab
- Add an Alignment tab to the existing
/logosTabBar. 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 existingDagconsumer). - Per-edge card / row (
LogosAlignmentRow):source_id·target_id·relation·weight·evidence_ids·target_pack_id· invalid-target warning wheninvalid_targetis true. - Surface the invalid targets honestly. LG-1 reports 5 undeclared
en-collapse-*anchors (breath/heart/holy/soul/time) asinvalid_targetingrc_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>, whereedge_idis the LG-1 deterministic id (sha256(source|target|relation)[:16], already onLogosAlignmentRow). - 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_count0 +missing_evidence(LG-2); Safety showsmissing_holonomy_refsunknown. LG-4's only holonomy work is a guard that no holonomy proof affordance leaks in — add a test asserting the/logossurface renders no holonomy success/proof element. (Real holonomy cards are the future W-Holonomy wave onceholonomy.jsonlexists.)
Acceptance / tests
- Golden-file layout test for the alignment DAG (deterministic node/edge
layout; mirror the
Dag.layout.golden.jsonpattern). - Invalid-target render test: an
invalid_targetedge shows the warning; a resolved edge does not. Assert the 5 undeclareden-collapse-*anchors warn. evidenceAddress.test.ts—logos_alignment_edgeround-trip.- Holonomy-absent guard: no proof/success element on the
/logossurface. routes.test.tsx/schemaDrift/enumCoveragestay green. No new engine schemas —NOT_YET_MIRROREDuntouched.pnpm buildclean.- Run the FULL
pnpm exec vitest runbefore push — it must pass AND exit. The CIworkbench-uijob 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.
- W-Holonomy / W-Forge — future waves (author
holonomy.jsonl; universalProposalArtifactenvelope + Patch Forge). Not this wave.