diff --git a/PENDING.md b/PENDING.md index f66b73a..f2a6de8 100644 --- a/PENDING.md +++ b/PENDING.md @@ -1375,3 +1375,13 @@ Disposition (verbatim capture + executor action-list: `chamber-library/docs/libr **Recommendation:** Option 1 — the only one that makes the directive structural. The one real design question: *how graduation learns the source's location.* The `source:` frontmatter names the original filename but not its path; a small convention is needed — likely a `pending-graduation/` staging area (mirroring the existing `Chamber Sources/pending-graduation/`) the gate resolves from. **Files affected:** `scripts/graduate_to_canonical.py`, the graduation gate (`scripts/verify_graduation.py` or the `graduation-spec.yaml` gate list), `_curation/graduation-spec.yaml` (the new precondition), `_curation/conversion-runbook.yaml` (currency). No change to the verbatim guarantee or the fidelity relation. **Awaiting:** Steward authorization + jurist review (it touches the graduation gate — the chamber's governed boundary). + +**JURIST-RULED + STEWARD-AUTHORIZED + BUILT 2026-07-09 → REVIEWED-52.** Design closed through a 4-document jurist exchange (mechanism draft → repo-evidence ruling → final reconciliation); the executor's repo-evidence *replaced* the original filename-lookup design once the staging area's real shape surfaced (its own `pending-manifest.json`; the staging slug is **author-first** while canonical is **title-first**). Steward authorized; built + tested same session. +- **Resolution:** via `pending-manifest.json`'s **`canonical_slug`** field (matched per-candidate, **never** bulk-copied from the staging `slug` nor the note's "intended canonical slug" language — jurist's sharpened constraint; the 14 legacy entries untouched until each comes up). +- **`archive_sources.py`:** `resolve_pending_source` + `manifest_has`; `--add` idempotency — no-op on sha match, `ARCHIVE CONFLICT` (exit 2) on same-slug/different content (jurist §4). +- **`graduate_to_canonical.py`:** `source_gate()` = gate zero — archive-first, verify-the-entry-landed (don't trust the return, §3.3), refuse otherwise; the old NOT-WIRED warning is now the wired confirmation. +- **`graduation-spec.yaml`:** declarative `preconditions: source_archived`. +- Tests 68→**73/73**; dry-run clean. Chamber commit **`4be2265`** (local; Gitea push steward's call). +- **Parked separately (jurist §3, not folded in):** is the graduated corpus uniformly title-first or genuinely mixed? Per-candidate resolution is robust either way. +- **Full FIX for graduate_to_canonical's follow-on line:** `body_word_conservation` (the 3rd declared gate, still "tracked as follow-on, not yet enforced") is untouched here — out of PENDING-52 scope. +**Awaiting only:** steward placement of **REVIEWED-52** (the authorization record).