Skip to content

distill: plain register (#634) and planning run folder (#638) - #649

Merged
sameera merged 4 commits into
mainfrom
distill/2026-09-17-plain-register-planning-scratch
Sep 18, 2026
Merged

sameera merged 4 commits into
mainfrom
distill/2026-09-17-plain-register-planning-scratch

Conversation

@sameera

@sameera sameera commented Sep 18, 2026

Copy link
Copy Markdown
Owner

Distillation: Plain register by example and by lint, not by a resident skill (#634); Planning Drafts Live in the Repository's Scratch Folder (#638)

Drained queue entries: .nexus/tmp/epic-634, .nexus/tmp/epic-638 (provenance: #634, #638) — 2 epic

prose-translation — update

  • What changed: The Summary and Key Invariant 6 now describe the current mechanism: the six form rules sit in a short rule block written directly into each of the five drafting stages (epic, decision-record, discover, distill, teach), immediately above the step that writes a draft. No separate skill is loaded to carry them, and the five copies are pinned identical by a conformance test.
  • Why (Decision Log entry): "The style guide becomes an inline rule block" — the nxs-prose-style skill (a file loaded at the top of a stage) is deleted; a pointer at the drafting step would still be read too early to outweigh the surrounding prose, so the rule text itself moved to the point of use.
  • Provenance: Plain register by example and by lint, not by a resident skill #634 (Plain register by example and by lint, not by a resident skill #634)
  • Reciprocal edits: none

planning-run-folder — create

  • What changed: New concept page. A planning run now keeps its draft, source text, derived filing body, and any decomposition stubs inside one folder under the checkout's own gitignored scratch area, named once before the right-size gate. The folder sits one level deeper than the shape the drain recognises and carries no close record, so it is never mistaken for a drainable entry. The approval gate names its path beside the digest, and the run deletes its own folder only after a complete filing.
  • Why (Decision Log entry): "The draft moves from harness session scratch into the checkout's own scratch folder" — before this epic a draft lived outside the checkout, so a reviewer had no practical way to open a full story before deciding, and an abandoned draft died with the session. Refuted alternative: teach the distiller to skip planning drafts directly (rejected — it would give the drain a fourth case to keep in sync with a separate command).
  • Provenance: Planning Drafts Live in the Repository's Scratch Folder #638 (Planning Drafts Live in the Repository's Scratch Folder #638)
  • Reciprocal edits: epic-approval-gate, issue-sourced-planning, distiller

epic-approval-gate — update

issue-sourced-planning — update (reciprocal)

  • What changed: Added the planning-run-folder touch and integration bullet; no behavior of this concept changed.
  • Why (Decision Log entry): "Reciprocal link from planning-run-folder"
  • Provenance: Planning Drafts Live in the Repository's Scratch Folder #638
  • Reciprocal edits: n/a (this is a reciprocal target)

distiller — update (reciprocal)

  • What changed: Added the planning-run-folder touch and integration bullet (a planning draft is never listed, aged or drained); no behavior of this concept changed.
  • Why (Decision Log entry): "Reciprocal link from planning-run-folder"
  • Provenance: Planning Drafts Live in the Repository's Scratch Folder #638
  • Reciprocal edits: n/a (this is a reciprocal target)

Note on epic #634's range head

At preflight, close-record.md for .nexus/tmp/epic-634 stamped range.head: 2a4ba53..., a commit not reachable from main and unknown to GitHub (never pushed as a branch tip), with no merged PR to resolve it to either — so this distill proceeded under the Phase 0.4 not-merged waiver, branching from the current HEAD. Between that point and opening this PR, epics #634 and #638 both landed on main (as 1adcd30 and 13dbb43 respectively, via rebase merges that gave the same content new SHAs), and this branch was rebased onto the updated trunk with its anchors' source_sha re-stamped to those landed commits. The waiver's practical effect resolved itself: this PR now carries only the distillation, based cleanly on current main.

Taxonomy drift advisory

Not run — no domain registry present at docs/domains.md.

Anchors refreshed (derived, never hand-edited)

  • .nexus/anchors/prose-translation.md @ 1adcd30
  • .nexus/anchors/planning-run-folder.md @ 13dbb43
  • .nexus/anchors/epic-approval-gate.md @ 13dbb43
  • .nexus/anchors/issue-sourced-planning.md @ 13dbb43
  • .nexus/anchors/distiller.md @ 13dbb43

Atlas regenerated (derived)

  • docs/concepts.md

Consumed queue entries (removed by this PR)

This PR already removes the drained entries on the branch, so the merge deletes them from main atomically with the page writes — no manual post-merge step:

  • .nexus/tmp/epic-634: ephemeral entry; no committed scratch dir existed at .nexus/queue/epic-634/, so nothing else to remove. The tmp copy is machine-local and is cleaned, uncommitted, by the next drain run once this PR's provenance is on the trunk.
  • .nexus/tmp/epic-638: ephemeral entry; the committed removal is the epic's scratch dir .nexus/queue/epic-638/ (removed in this PR). The tmp copy is machine-local and is cleaned, uncommitted, by the next drain run once this PR's provenance is on the trunk.

Validator

PASS over 5 pages: 0 blocking findings, 5 advisories — two long-but-legal Integration Points
bullets on distiller, one on issue-sourced-planning, and high-degree-hub notices on
distiller (27 bullets) and epic-approval-gate (20 bullets). Advisories never block and are
not fixed to silence them. nexus generate-atlas --check reports the atlas in sync.

Both records were re-verified against the hash stamped at close before any page was written:
record #644 digest 81a01894… matches, record #646 digest dbcaee26… matches. Every anchored
path was checked to still exist at its entry's landed head.

Drain-SLO (unrelated to this PR)

Two committed queue entries remain undrained because they are not closed:

  • .nexus/queue/terminal-compose-panel-4c7f4e67 — age 73d — DRAIN-SLO BREACH
  • .nexus/queue/terminal-mount-3fb3a739 — age 55d — DRAIN-SLO BREACH

.nexus/queue/epic-218/ and .nexus/queue/epic-455/ hold per-user scratch only, with no
epic.md, so they are not queue entries and are not counted here.

sameera and others added 4 commits September 18, 2026 06:30
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The two entries' anchors carried the pre-merge feature-branch tips, which
the rebase merges rewrote away. Re-stamp each to the commit that actually
landed on the trunk: 1adcd30 for epic #634, 13dbb43 for epic #638.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@sameera
sameera merged commit a2e58ab into main Sep 18, 2026
@sameera
sameera deleted the distill/2026-09-17-plain-register-planning-scratch branch September 18, 2026 16:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant