# W-Holonomy — author real holonomy cases + the Holonomy proof-card tab

**Date:** 2026-06-14
**Status:** forward brief (post read-only Studio, L1–L5 complete: LG-1 #737 /
LG-2 #738 / LG-3+LG-4 #739 all merged). Dispatch when prioritized.
**Predecessor doctrine:** `docs/workbench/core-logos-studio-plan.md` (Holonomy
tab §) — which the read-only wave deliberately rendered as `missing_evidence`
because no pack-level `holonomy.jsonl` exists yet. This wave fills that.

## Why this is the hard one (read before scoping)

Holonomy is the **crown proof** of the tri-language design: aligned canonical
clauses (Hebrew path, Greek path, English path) must produce *nearby holonomies
without flattening their distinctions*. The `HolonomyAlignmentCase` schema
already exists (`packs/schema.py`) and **test-level** proof cases exist
(`tests/test_alignment_graph.py`), but **no logos pack carries `holonomy.jsonl`**
and there is **no serving-path holonomy proof evaluator**.

Two hard constraints from CLAUDE.md bind this wave:

1. **No success state without proof.** A Holonomy proof card may render a
   "holds" verdict ONLY when a real proof was computed. Absent/failed proof
   renders as `missing_evidence` / `failed`, never green. (This is why the
   read-only wave showed count-0, not a fake card.)
2. **Schema-Defined Proof Obligations.** `HolonomyAlignmentCase` only becomes a
   *verified* property when an executing test **meaningfully fails** under a
   violated case — i.e. a case whose paths flatten a distinction, or whose
   holonomy exceeds tolerance, must make the evaluator return `failed` and a
   test must assert that. A proof evaluator that passes everything is decoration.

This is genuine field-algebra work, not data entry. Scope it as a multi-PR wave.

## Sequenced PRs

### WH-1 (engine) — deterministic holonomy proof evaluator
- New evaluator (e.g. `alignment/holonomy.py`) that, given a
  `HolonomyAlignmentCase` (source_refs across pack_ids, expected_relation,
  negative_source_refs, tolerance), composes the field-path holonomy over the
  aligned canonical clauses using the **owned algebra** (`algebra` /
  `versor_apply` / `cga_inner`) — never a re-implemented metric — and returns a
  typed verdict: `holds` / `flattened` / `exceeds_tolerance` / `missing_refs`.
- The `negative_source_refs` are the falsifier: a real case must distinguish the
  positive alignment from the negatives (no flattening). **Non-vacuous tests:**
  a known-good case returns `holds`; a case with a negative ref swapped in
  returns a non-`holds` verdict; a missing ref returns `missing_refs`. Seed the
  fixtures from the existing `tests/test_alignment_graph.py` proof shape.
- Pure/deterministic; respects `versor_condition < 1e-6` by construction (no
  hot-path repair). Off the serving path (no `generate.derivation` import).

### WH-2 (pack content) — author `holonomy.jsonl`
- Author real `HolonomyAlignmentCase` rows into the logos packs (start with
  `he_logos_micro_v1` + `grc_logos_micro_v1`, the curated micro packs), each
  with ≥2 source_refs across ≥2 pack_ids, an `expected_relation`,
  `negative_source_refs`, and a `tolerance`.
- Add a `holonomy_checksum` to each manifest pinned to the bytes written
  (`sha256(holonomy_path.read_bytes())`); compiler verifies it like the
  glosses dual-checksum. Deterministic row order.
- **Depends on WH-1** so authored cases are validated against a real evaluator
  (don't author cases no evaluator can check — that recreates the decoration
  risk). Reconcile collapse anchors first if a case touches them
  (`logos-collapse-anchor-reconciliation-2026-06-14.md`).

### WH-3 (reader) — surface cases + proof status
- Extend `workbench/logos.py`: populate `LogosPackContents.holonomy_cases`
  (currently `[]`) from `holonomy.jsonl`, and add a `LogosHolonomyCase` read
  model carrying the case fields **plus the WH-1 proof verdict** (computed
  read-only via the evaluator, or read from a persisted proof if WH-1 persists
  one — prefer persist-first if the computation is non-trivial, mirroring C3).
- Overview `holonomy_case_count` becomes real; Safety `missing_holonomy_refs`
  resolves from `unknown` once cases exist. Schema mirror + drift gate; the
  read model SHA-pinned if it asserts a proof metric.

### WH-4 (UI) — the Holonomy tab (proof cards)
- Add a **Holonomy** tab to `/logos` (between Alignment and Safety). Render each
  case as a proof card: the three paths (Hebrew ↘ / Greek ↗ / English),
  source_refs, expected_relation, tolerance, and the **proof verdict**.
- **Honesty gate (load-bearing):** render a "holds" affordance ONLY for
  `holds`; render `flattened` / `exceeds_tolerance` / `missing_refs` as their
  honest failed/absent state with no success styling. A test must assert that a
  non-`holds` case renders no success element.
- New `logos_holonomy_case` evidence subject
  (`logos_holonomy_case:<packId>/<caseId>`) + inspector projection + chain-rail
  derivation (the `replay` stage = the proof verdict). Mirror the LG-3/LG-4
  subject pattern.
- Full `pnpm exec vitest run` (pass AND exit) + golden-file layout test if the
  proof card uses the DAG primitive for the path diagram.

## Non-negotiables
- No success without computed proof; the evaluator must meaningfully fail.
- Engine math owned by `algebra` — never re-implemented in reader or UI.
- Read-only; no mutation. Off the serving path.
- Deterministic; `versor_condition` preserved by construction (no hot-path repair).

## Out of scope
- Patch Forge / proposal envelope (W-Forge).
- Cross-turn or session-level field-coherence trends.
