Epic: Portable Nexus Tooling
Description
In a multi-repo workspace the hub is a docs repo: it holds the concept store and drains the
committed queue with /nxs.distill. The hub is not a code project — it carries no node package,
no node_modules, no pnpm setup. But two of distillation's deterministic steps are today wired to
that missing toolchain: the concept validator and the atlas generator are TypeScript scripts run
through tsx, which only exists after a full workspace install. Run in a bare hub, those steps
cannot start, and distillation stalls at the gate that is supposed to block a failing concept page
from shipping.
This epic makes that deterministic tooling portable: it runs in the hub on a plain Node.js runtime,
with no workspace install and no tsx. The concept store the hub owns gets validated and its atlas
regenerated exactly as they are in a single code repo today — same findings, same output — so the
hub is a first-class place to distill from. Nothing about single-repo distillation changes.
The distributable this produces is also the foundation two later multi-repo epics build on
(workspace-setup-cli shares it; distill-multi-repo depends on it), so the packaging vehicle is
designed to grow — to carry additional deterministic tools later, including ones with real npm
dependencies — even though this epic only ships the validator and the atlas generator through it.
Success Metrics
- Distilling in a hub repo that carries no node project completes its deterministic steps — atlas
regeneration, atlas sync-check, and concept validation — with zero manual toolchain setup (no
pnpm/npm install, no tsx).
- Across the concept corpus, the packaged tooling and the in-repo scripts produce identical
validator findings and byte-identical atlas output — zero diffs — and any divergence fails an
automated check.
- Single-repo distillation is unchanged: the existing invocation still runs the deterministic steps
and passes, with no regression.
Personas
Per docs/product/context.md. The primary engineer persona runs the full pipeline — including
/nxs.distill — and in a multi-repo product runs it from the hub docs repo.
Assumptions
- The hub machine has a Node.js runtime available — the engineer already runs Prime and the Nexus
toolchain on it. "No local node tooling of its own" means the hub repo carries no node project
(no package.json, node_modules, pnpm, or tsx), not that the machine lacks a node binary.
- The hub is a git repository (it holds the committed queue and concept store), so the
git CLI the
validator's --base append-only check shells out to is present.
- The in-repo scripts remain the authoritative source. Portability tracks that source rather than
forking a second implementation, which is what makes the parity guarantee meaningful.
- The distributable is the shared vehicle later multi-repo tooling joins, so its packaging mechanism
must be able to carry bundled npm dependencies even though the validator and atlas generator need
none today.
Out of Scope
- The workspace resolver and its status read-out (
@nexus/workspace, the nxs-workspace-status
skill) and its yaml npm dependency — the heavy portability case, claimed by workspace-setup-cli
and consumed by distill-multi-repo. This epic only ensures the distributable can host it later;
packaging it is deferred to those epics.
- The GitHub-issue scripts (
nxs_gh_create_epic.py, create_gh_issues.py) — already node-free
(python stdlib) and run in code repos, not the hub. No portability gap.
- The absolute-doc-path helper (
get_abs_doc_path.ts) — runs in member code repos, which have the
node toolchain; it does not run in the bare hub.
- The reciprocity fan-out and code-anchor refresh — these are model-driven prose steps in
/nxs.distill, not scripts, so there is nothing to package.
- Reimplementing the tooling in another language, and publishing to a public package registry —
neither is required by the runtime contract; both are HLD's call if chosen at all.
Open Questions
Epic: Portable Nexus Tooling
Description
In a multi-repo workspace the hub is a docs repo: it holds the concept store and drains the
committed queue with
/nxs.distill. The hub is not a code project — it carries no node package,no
node_modules, no pnpm setup. But two of distillation's deterministic steps are today wired tothat missing toolchain: the concept validator and the atlas generator are TypeScript scripts run
through
tsx, which only exists after a full workspace install. Run in a bare hub, those stepscannot start, and distillation stalls at the gate that is supposed to block a failing concept page
from shipping.
This epic makes that deterministic tooling portable: it runs in the hub on a plain Node.js runtime,
with no workspace install and no
tsx. The concept store the hub owns gets validated and its atlasregenerated exactly as they are in a single code repo today — same findings, same output — so the
hub is a first-class place to distill from. Nothing about single-repo distillation changes.
The distributable this produces is also the foundation two later multi-repo epics build on
(
workspace-setup-clishares it;distill-multi-repodepends on it), so the packaging vehicle isdesigned to grow — to carry additional deterministic tools later, including ones with real npm
dependencies — even though this epic only ships the validator and the atlas generator through it.
Success Metrics
regeneration, atlas sync-check, and concept validation — with zero manual toolchain setup (no
pnpm/npm install, notsx).validator findings and byte-identical atlas output — zero diffs — and any divergence fails an
automated check.
and passes, with no regression.
Personas
Per
docs/product/context.md. The primary engineer persona runs the full pipeline — including/nxs.distill— and in a multi-repo product runs it from the hub docs repo.Assumptions
toolchain on it. "No local node tooling of its own" means the hub repo carries no node project
(no
package.json,node_modules, pnpm, ortsx), not that the machine lacks anodebinary.gitCLI thevalidator's
--baseappend-only check shells out to is present.forking a second implementation, which is what makes the parity guarantee meaningful.
must be able to carry bundled npm dependencies even though the validator and atlas generator need
none today.
Out of Scope
@nexus/workspace, thenxs-workspace-statusskill) and its
yamlnpm dependency — the heavy portability case, claimed byworkspace-setup-cliand consumed by
distill-multi-repo. This epic only ensures the distributable can host it later;packaging it is deferred to those epics.
nxs_gh_create_epic.py,create_gh_issues.py) — already node-free(python stdlib) and run in code repos, not the hub. No portability gap.
get_abs_doc_path.ts) — runs in member code repos, which have thenode toolchain; it does not run in the bare hub.
/nxs.distill, not scripts, so there is nothing to package.neither is required by the runtime contract; both are HLD's call if chosen at all.
Open Questions