Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .nexus/anchors/close-entry-migration.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
concept: close-entry-migration
source_sha: b8d5deba61114fe14e2cbaab98a4df798e612f48
generated: 2026-07-31
source_sha: ca0553675f0bfb2cf1ce23679c10572f2e0467ce
generated: 2026-08-23
---

<!-- DERIVED — regenerated by /nxs.distill on every drain touching this concept.
Expand Down
4 changes: 2 additions & 2 deletions .nexus/anchors/distiller.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
concept: distiller
source_sha: 45f665a559cafcbb27daf99725ba4b1049fb116b
generated: 2026-08-11
source_sha: ca0553675f0bfb2cf1ce23679c10572f2e0467ce
generated: 2026-08-23
---

<!-- DERIVED — regenerated by /nxs.distill on every drain touching this concept.
Expand Down
4 changes: 2 additions & 2 deletions .nexus/anchors/issue-sourced-planning.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
concept: issue-sourced-planning
source_sha: bdd25eb7c69d668810e7c0a0e72722c96c257837
generated: 2026-07-28
source_sha: ca0553675f0bfb2cf1ce23679c10572f2e0467ce
generated: 2026-08-23
---

<!-- DERIVED — regenerated by /nxs.distill on every drain touching this concept.
Expand Down
7 changes: 4 additions & 3 deletions .nexus/anchors/nexus-setup-cli.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
concept: nexus-setup-cli
source_sha: 288906382ecb248dc469d5cb52af2868f97bd5fe
generated: 2026-07-24
source_sha: ca0553675f0bfb2cf1ce23679c10572f2e0467ce
generated: 2026-08-23
---

<!-- DERIVED — regenerated by /nxs.distill on every drain touching this concept.
Never hand-edit; stale anchors are rebuilt, not fixed. -->

# Code Anchors: Nexus Setup CLI

- `libs/portable-tools/src/nexus-cli.ts` — the single portable `nexus` entrypoint: verb dispatch (deploy, workspace init/status/docs-root/add-repo/github-defaults), the stdin prompter, and the read-only read-out paths over the resolver.
- `libs/portable-tools/src/nexus-cli.ts` — the single portable `nexus` entrypoint: verb dispatch (deploy, workspace init/status/docs-root/add-repo/github-defaults), the stdin prompter, and the read-only read-out paths over the resolver; since #247 this CLI's own verbs are entries in the same shared declarative registry the newly reachable capabilities also dispatch from.
- `libs/portable-tools/src/workspace-github-defaults.spec.ts` — covers the hub publishing-defaults read-out: the machine-readable payload, the empty result on a single-repo checkout, and the empty-result-plus-diagnostic split on a resolution failure.
- `libs/portable-tools/src/deploy-components.ts` — the component-deploy primitive: the overwrite-to-match mirror over the managed set, deleting only retired nxs-namespaced files and leaving user-owned files untouched.
- `libs/portable-tools/src/vendor-components.ts` — vendors the live `.claude/` component tree into the distributable and hashes the managed set for the fingerprint pin; defines the managed subtrees.
Expand All @@ -24,3 +24,4 @@ generated: 2026-07-24
- `libs/portable-tools/src/workspace-add-repo.spec.ts` — add-repo two-file mutation and collision rejection.
- `libs/portable-tools/src/workspace-status.spec.ts` — portable status across hub, member, and single-repo.
- `libs/workspace/src/write.spec.ts` — writer validation-before-write and structured append.
- `.claude/skills/nxs-workspace-status/scripts/workspace_status.ts` — the script form of the `status` verb; aligned in #247 to send its failure diagnostic to standard error, matching the verb form.
11 changes: 7 additions & 4 deletions .nexus/anchors/portable-tooling.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
concept: portable-tooling
source_sha: 1e368ef4eea9ca9337bbdf4c951ae5c6da70ac98
generated: 2026-07-20
source_sha: ca0553675f0bfb2cf1ce23679c10572f2e0467ce
generated: 2026-08-23
---

<!-- DERIVED — regenerated by /nxs.distill on every drain touching this concept.
Expand All @@ -10,8 +10,8 @@ generated: 2026-07-20
# Code Anchors: Portable Tooling

- `libs/portable-tools/src/bundle.ts` — the shared bundling primitive: compiles one entry point into a self-contained Node-targeted bundle, inlining every non-builtin import; emits a constant `createRequire` banner so an inlined CJS dependency runs on a bare node, and pins the working dir so the bytes (and their hash) are cwd-independent.
- `libs/portable-tools/src/build-bundles.ts` — builds every entry point into self-contained bundles: the validator, atlas generator, hub diff-derivation tool, the `nexus` setup CLI, and now the drift advisory and the registry seeder.
- `libs/portable-tools/src/nexus-cli.ts` — the `nexus` CLI; carries the docs-root read-out verb, the portable vehicle that lets a docs-only hub's planning commands resolve their root offline through the same resolver selector the in-repo read-out uses.
- `libs/portable-tools/src/build-bundles.ts` — builds every entry point into self-contained bundles: the validator, atlas generator, hub diff-derivation tool, drift advisory, and registry seeder each through their own guard-free launcher, plus the one `nexus` executable carrying all ten newly reachable verbs.
- `libs/portable-tools/src/nexus-cli.ts` — the `nexus` CLI; the docs-root read-out verb, and — since #247 — the shared declarative verb registry ten more component-invoked capabilities dispatch from (see the verb-reachability anchors for the registry's own detail).
- `libs/portable-tools/src/domain-registry.ts` — the shared domain-registry grammar and parser; standalone (no imports), inlined into the consuming bundles.
- `libs/portable-tools/src/domain-registry.spec.ts` — parser coverage, bundled and parity-checked alongside the consuming tools.
- `libs/portable-tools/src/validate-concepts.ts` — the authoritative concept validator (concept pages and anchor sidecars), bundled for the hub; runs the registry structural pass and per-page domain resolution when a registry is present.
Expand All @@ -34,3 +34,6 @@ generated: 2026-07-20
- `libs/workspace/src/resolve.ts` — reports the hub's vendored portable-tools location as part of resolved context, and is the resolver the diff-derivation tool and atlas generator consult.
- `.claude/commands/nxs.distill.md` — the drain step that selects the hub bundle vs the in-repo invocation by workspace role.
- `docs/features/multi-repo-workspaces/hub-tooling-install.md` — the one-time hub placement guide for the vendored tooling.
- `libs/portable-tools/src/component-composition.ts` — the structural payload-boundary check: no vendored component file may import a workspace package, unless waived.
- `libs/portable-tools/src/component-composition-waivers.ts` — the shrink-only waiver register for legacy component scripts still awaiting the invocation rewrite.
- `libs/pr-acceptance/src/cli.ts` — the acceptance harness, relocated beside its own library, outside every vendored component subtree; excluded from the payload by the composition check, not by name.
4 changes: 2 additions & 2 deletions .nexus/anchors/pr-worktree.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
concept: pr-worktree
source_sha: eb0da38c84e2b0b1689797ba3eb4b3163fd6fb10
generated: 2026-08-01
source_sha: ca0553675f0bfb2cf1ce23679c10572f2e0467ce
generated: 2026-08-23
---

<!-- DERIVED — regenerated by /nxs.distill on every drain touching this concept.
Expand Down
4 changes: 2 additions & 2 deletions .nexus/anchors/record-digest.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
concept: record-digest
source_sha: b8d5deba61114fe14e2cbaab98a4df798e612f48
generated: 2026-07-31
source_sha: ca0553675f0bfb2cf1ce23679c10572f2e0467ce
generated: 2026-08-23
---

<!-- DERIVED — regenerated by /nxs.distill on every drain touching this concept.
Expand Down
30 changes: 30 additions & 0 deletions .nexus/anchors/verb-reachability.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
concept: verb-reachability
source_sha: ca0553675f0bfb2cf1ce23679c10572f2e0467ce
generated: 2026-08-23
---

<!-- DERIVED — regenerated by /nxs.distill on every drain touching this concept.
Never hand-edit; stale anchors are rebuilt, not fixed. -->

# Code Anchors: Verb Reachability

- `libs/portable-tools/src/nexus-cli.ts` — the declarative `VerbEntry` registry (summary, usage, runnable) every reachable capability is registered in; eager static imports of all ten newly reachable capabilities; the composed usage text and the dispatcher lookup both read from the same registry object.
- `libs/portable-tools/src/nexus-cli.spec.ts` — verb dispatch coverage for every newly reachable capability.
- `libs/portable-tools/src/parity.spec.ts` — the migration axis: legacy form vs. verb, extended to capabilities already believed migrated (the workspace-status stream-divergence case), plus the five-facet effect comparison for capabilities driving external programs.
- `libs/portable-tools/src/build-bundles.ts` — `ENTRY_POINTS` now names each standalone artifact's launcher file, not the capability file directly, so the capability itself carries no process boundary.
- `libs/portable-tools/src/build-bundles.spec.ts` — pins the launcher-fronted `ENTRY_POINTS` mapping.
- `libs/portable-tools/src/generate-atlas-launcher.ts` — the guard-free capability's one remaining unconditional-invoke entry, for the standalone build only.
- `libs/portable-tools/src/validate-concepts-launcher.ts` — same role, for the validator's standalone build.
- `libs/portable-tools/src/derive-entry-diff-launcher.ts` — same role, for the diff-derivation tool's standalone build.
- `libs/portable-tools/src/drift-advisory-launcher.ts` — same role, for the drift advisory's standalone build.
- `libs/portable-tools/src/seed-registry-launcher.ts` — same role, for the registry seeder's standalone build.
- `libs/portable-tools/src/component-composition.ts` — the structural payload-boundary check: no vendored component file may import a workspace package, unless waived.
- `libs/portable-tools/src/component-composition-waivers.ts` — the shrink-only waiver register naming the legacy component scripts still awaiting the invocation rewrite.
- `libs/portable-tools/src/component-composition.spec.ts` — composition-check coverage.
- `libs/portable-tools/corpus/bin/gh` — the hermetic, PATH-shimmed `gh` stand-in the migration axis matches by argv shape, answering from committed fixtures.
- `libs/portable-tools/corpus/epic-resolve/success.json`, `libs/portable-tools/corpus/epic-resolve/not-found.json` — fixtures the `gh` stand-in answers from for the epic-resolve migration-axis cases.
- `libs/portable-tools/corpus/record-digest/approved.json`, `libs/portable-tools/corpus/record-digest/not-found.json`, `libs/portable-tools/corpus/record-digest/not-planned.json` — same, for the record-digest migration-axis cases.
- `libs/abs-doc-path/src/resolve.ts`, `libs/abs-doc-path/src/settings.ts`, `libs/abs-doc-path/src/repo-root.ts`, `libs/abs-doc-path/src/normalize.ts` — the documentation-path capability's own logic, lifted from its script into a library ahead of becoming a verb, keeping its hand-rolled manifest parser unchanged for parity.
- `libs/pr-acceptance/src/cli.ts` — the acceptance harness's entry point, relocated beside its own library, outside every vendored component subtree; gains no verb.
- `.claude/skills/nxs-pr-acceptance/SKILL.md` — deleted; the harness stops being agent-invocable.
9 changes: 7 additions & 2 deletions .nexus/concepts/close-entry-migration.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: "Close-Entry Migration"
aliases: ["queue-entry migration", "cross-repo close tail", "close range stamping", "hub queue migration", "migrate-verify-remove"]
touches: ["workspace-resolution", "committed-queue", "distiller", "remote-identity-normalization", "ephemeral-handoff-entry", "scratch-capture"]
last_updated_by: "#170"
touches: ["workspace-resolution", "committed-queue", "distiller", "remote-identity-normalization", "ephemeral-handoff-entry", "scratch-capture", "verb-reachability"]
last_updated_by: "#247"
status: active
verification: verified
---
Expand Down Expand Up @@ -35,6 +35,7 @@ At the closure checkpoint, in member mode, the move runs in a fixed order — mi
- [remote-identity-normalization](remote-identity-normalization.md) — canonicalizes the range's repo identity for a hub-side match.
- [ephemeral-handoff-entry](ephemeral-handoff-entry.md) — one of the two sources the union is drawn from.
- [scratch-capture](scratch-capture.md) — the committed half of that union, not stranded.
- [verb-reachability](verb-reachability.md) — this migration capability is now also reachable as a verb on the shared executable, under the same byte-identical parity guarantee as its script form.

## Decision Log

Expand All @@ -45,3 +46,7 @@ There is no cross-repo transaction, so the hub commit and the local removal cann
### 2026-07-31 — #170 — The migration's unit is the epic, not the directory it was handed

Once a member close began writing its artifacts to the ephemeral area, migrating only what sat in that directory stranded the epic's committed scratch in the member repo where nothing would ever delete it, and dropped it from the hub entry a drain would have cleaned up — so the unit became the epic, and the hub entry is the union of both sources. The same change separated two path derivations that had been one: reusing the destination-relative path for the code repo's tracked-file check read a same-named committed scratch directory as tracked, then tried to commit the removal of a path that was never deleted, failing after the irreversible hub commit had already landed. Copy order is fixed scratch-first so the entry's own artifacts win any collision and the byte-for-byte verify stays deterministic. Refuted alternative: hard-error on any colliding relative path — safer-looking, but scratch lives under per-user subdirectories so a collision is practically impossible, and the error would turn a cosmetic overlap into a blocked close.

### 2026-08-23 — #247 — Reciprocal link from verb-reachability

Mechanical reciprocity fan-out: the verb-reachability page names this migration capability as one of the ten now reachable as a verb on the shared executable, under the same byte-identical parity guarantee as its script form.
9 changes: 7 additions & 2 deletions .nexus/concepts/distiller.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: "Distiller"
aliases: ["System B", "distillation engine", "concept distiller", "the drain"]
touches: ["concept-store", "committed-queue", "distillation-pr", "code-anchors", "scratch-capture", "portable-tooling", "close-entry-migration", "taxonomy-filing-gate", "drift-advisory", "pr-driven-flow", "issue-sourced-planning", "decision-record", "record-digest", "ephemeral-handoff-entry", "durable-close-record", "concept-page-capacity", "finding-severity", "pre-epic-discovery"]
last_updated_by: "#228"
touches: ["concept-store", "committed-queue", "distillation-pr", "code-anchors", "scratch-capture", "portable-tooling", "close-entry-migration", "taxonomy-filing-gate", "drift-advisory", "pr-driven-flow", "issue-sourced-planning", "decision-record", "record-digest", "ephemeral-handoff-entry", "durable-close-record", "concept-page-capacity", "finding-severity", "pre-epic-discovery", "verb-reachability"]
last_updated_by: "#247"
status: active
verification: verified
---
Expand Down Expand Up @@ -45,6 +45,7 @@ It runs after merges, scanning unconsumed entries in the committed queue and the
- [concept-page-capacity](concept-page-capacity.md) — the cap it applies, and the only condition under which it splits a page.
- [finding-severity](finding-severity.md) — the two-class validation result it gates on by exit status alone.
- [pre-epic-discovery](pre-epic-discovery.md) — the ungated store its behavioral diff excludes, alongside the queue.
- [verb-reachability](verb-reachability.md) — its atlas, validator, entry-diff, drift-advisory and registry-seeding steps are now also reachable as verbs on the shared executable, alongside their standalone forms through the duplication window.

## Decision Log

Expand Down Expand Up @@ -115,3 +116,7 @@ Every surface that once let the cap justify losing an edge was rewritten. The re
### 2026-08-11 — #228 — The behavioral diff excludes the discovery store

A discovery folder is committed, and it holds in-flight reasoning that no human gate has passed. One branch can carry that reasoning alongside the code it was reasoning about, so the drain's diff now excludes the discovery store in both single-repo and hub derivation, exactly as it already excludes the queue. Without the exclusion, ungated prose would reach concept-delta synthesis. The exclusion is load-bearing rather than tidiness: it is one of the two properties that make a committed discovery store acceptable, the other being that the store sits outside the queue where no scan can reach it. Refuted alternative: place the discovery store inside the queue, which would inherit this exclusion with no change at all — rejected because it contradicts the queue's contract that it holds only closed, drainable entries, and because the drain's scan already walks the whole queue tree.

### 2026-08-23 — #247 — Reciprocal link from verb-reachability

Mechanical reciprocity fan-out: the verb-reachability page names this drain's atlas, validator, entry-diff, drift-advisory and registry-seeding steps as now also reachable as verbs on the shared executable, alongside their standalone forms through the duplication window.
9 changes: 7 additions & 2 deletions .nexus/concepts/issue-sourced-planning.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: "Issue-Sourced Planning"
aliases: ["issues as source of truth", "epic resolver", "materialized epic", "resolve from issue number", "no-commit planning", "epic-meta round-trip"]
touches: ["nexus-pipeline", "committed-queue", "epic-approval-gate", "distiller", "workspace-resolution", "decision-record", "story-identity", "backlog-stub"]
last_updated_by: "manual"
touches: ["nexus-pipeline", "committed-queue", "epic-approval-gate", "distiller", "workspace-resolution", "decision-record", "story-identity", "backlog-stub", "verb-reachability"]
last_updated_by: "#247"
status: active
verification: verified
---
Expand Down Expand Up @@ -35,6 +35,7 @@ At approval the epic stage files the epic issue and its story sub-issues as chil
- [decision-record](decision-record.md) — the record sub-issue classified record-positively and reported beside the stories.
- [story-identity](story-identity.md) — the per-story naming and withdrawal rules this resolver renders.
- [backlog-stub](backlog-stub.md) — the unplanned epic this resolver refuses by name, rather than emitting one whose story set is empty.
- [verb-reachability](verb-reachability.md) — this resolver is now also reachable as a verb on the shared executable, matched byte-for-byte against its script form.

## Decision Log

Expand All @@ -54,3 +55,7 @@ story's issue-number identity and drops a withdrawn one from the materialized ep
### 2026-08-06 — manual — Reciprocal link from backlog-stub

Mechanical reciprocity fan-out: the backlog-stub page names this resolver's refusal — an epic carrying the unplanned label is rejected by name rather than reconstructed into an epic that plans nothing. Declared by hand because both epics involved had already drained; the edge was dropped at distillation only because a reciprocal bullet did not fit under the pre-#220 body cap.

### 2026-08-23 — #247 — Reciprocal link from verb-reachability

Mechanical reciprocity fan-out: the verb-reachability page names this resolver as now also reachable as a verb on the shared executable, matched byte-for-byte against its script form.
Loading