You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The reference tree does not cover the publish set, and the gate that is supposed to enforce coverage
has never run against it and would demand paths the site does not use. Twenty-two package READMEs —
including packages/sdk/README.md, which is the JSR landing page — have not been touched since a
single bulk commit and still teach the query dialect the scaffold does not emit. Seven public CLI
verbs are documented nowhere, one documented claim about deploy docker/compose is the inverse of
the code, and the root README hardcodes a scaffold file count that the quickstart explicitly says not
to trust. Individually these are small; together they are the reason a reader who leaves the golden
path cannot get back on it.
Missing reference pages.docs/site/reference/ has 32 package directories. plugin-ai-core and plugin-auth-core have pages; plugin-sagas-core, plugin-streams-core, plugin-triggers-core, plugin-workers-core do not. All four declare an object-valued publish key in deno.json (packages/plugin-sagas-core/deno.json:39, plugin-streams-core:20, plugin-triggers-core:32, plugin-workers-core:42), i.e. they are
publishable — contrast packages/bench/deno.json:33"publish": false, which correctly has no
page. The omission is inconsistent, not policy.
Gate vs IA disagreement..llm/tools/release/publish-readiness.ts:302-306 requires docs/site/reference/${packageSegment(member.name)}/index.md, where packageSegment is the part
after @netscript/ (:411-415). The site documents @netscript/plugin-sagas at docs/site/reference/sagas/index.md (its front matter reads title: "@netscript/plugin-sagas"),
and the same for streams, triggers, workers. A first publish under the current rule would
demand /reference/plugin-sagas/.
The gate has never checked the existing tree. It runs only over newPackages, computed as
members with no registry versions (publish-readiness.ts:158-180), through auditFirstPublish
(:179).
Root README.README.md:41 asserts "The scaffold reports 183 files, 44 directories",
directly contradicted by docs/site/quickstart.vto:51 ("treat the printed result—not a static
number in this guide—as the authority"); the counts vary with --db/--service/--editor. README.md:35 prints the literal jsr:@netscript/cli@<version> while the site derives the
specifier automatically (docs/site/_data.ts:30-33).
Undocumented verbs (grep over docs/site returns zero files for each): netscript agent drift, netscript deploy desktop, netscript deploy package-cli, netscript deploy list, netscript config list. netscript plugin ai appears only in docs/site/reference/plugin-ai/index.md, never as a CLI verb in the command reference. All exist
in the public tree (packages/cli/src/public/features/agent/agent-group.ts:44-51, .../deploy/deploy-group.ts:25-97, .../config/config-group.ts:13-29, .../plugins/plugins-group.ts:33-151).
Inverted claim.docs/site/cli-reference.md:246-249 states "netscript deploy docker and deploy compose exist as command groups but are not wired — they only print help." Both are
implemented by AspireComposeDeployTarget, whose operation list is plan · up · down · status · logs
(packages/cli/src/kernel/adapters/aspire/aspire-compose-deploy-target.ts:65-70,92,109-117).
Fabricated aliases.@contracts (web-layer/query.md:143, services-sdk/sdk.md:100, tutorials/live-dashboard/02-contract-to-service.md:112, .../03-sdk-cache-first-query.md:55)
and @/lib/api-clients.ts (services-sdk/sdk.md:189,194,199) are never generated; the scaffold
emits only '@app/' -> './' and '@<projectName>/contracts'
(packages/cli/src/kernel/adapters/templates/app/generate-app-deno-json.ts:62-63,125-130).
Maintainer version.netscript-dev reports a hardcoded version('1.0.0')
(packages/cli/src/maintainer/features/root/maintainer-command-tree.ts:32) against the real CLI_PACKAGE_VERSION train.
Current surface
32 reference pages for a larger publish set; a first-publish-only docs gate keyed to a path
convention the IA does not follow; 26 READMEs frozen at 2026-07-18, one of which is the SDK's JSR
landing page teaching a non-canonical dialect; a root README with a hardcoded file count and a
literal version placeholder; seven verbs with no prose; one reference claim that is the inverse of
the code.
Target contract
Coverage. Every package whose deno.jsonpublish key is not false has a docs/site/reference/<segment>/index.md, generated or hand-written, listed in the site nav.
One path convention, written down. Either the gate's packageSegment rule is relaxed to a
declared alias map (@netscript/plugin-sagas → sagas), or the IA moves to the gate's rule. The
decision is recorded in the reference index; the gate and the IA agree afterwards.
The gate runs over the whole publish set, not only first-publish packages, so a new package
without a page and an existing package without a page fail the same way.
Root README truth. The file count becomes "the scaffold prints its own count" and the install
snippet derives its specifier the way the site does, or states explicitly that the reader should
substitute the current release.
Verb coverage.docs/site/reference/cli/commands.md documents agent drift, plugin ai, deploy desktop, deploy package-cli, deploy list, config list, and corrects the
docker/compose row and the "three-verb lifecycle" claim.
Aliases. Every sample uses the two aliases the scaffold generates.
Acceptance
Every package with a non-falsepublish key has a reference page.
plugin-sagas-core, plugin-streams-core, plugin-triggers-core, plugin-workers-core have
reference pages.
The reference path convention is stated once and the publish gate matches it.
Evidence: PR #1586 S1/S3 gate evidence — four aliases are recorded in the reference index and exercised by the release audit.
The docs-reference check runs over the full publish set, not only first-publish packages.
Evidence: PR #1586 S1/S3 gate evidence — the independent row audits publishSet.effective before registry-dependent first-publish checks.
packages/sdk/README.md leads with createQueryFactories.
README.md carries no hardcoded scaffold file or directory count.
README.md's install snippet resolves to a real specifier or states the substitution.
agent drift, plugin ai, deploy desktop, deploy package-cli, deploy list, and config list are documented in the CLI reference.
The docker/compose "not wired" claim is replaced by the real five-verb surface.
@contracts and @/lib/... appear in zero code samples.
Negative test: adding a publishable package without a reference page fails the docs gate.
Negative test: a CLI command group present in the public tree but absent from the command
reference fails a check derived from the command tree, not from a literal list.
Evidence: PR #1586 raw negative controls — the executable correction audits tree-derived direct subcommands; removing netscript deploy uninstall produced raw exit 1 and a 90/91 diagnostic.
Not a goal: authoring per-package tutorials, or renaming published packages.
Docs/consumer proof
deno task publish:dry-run and the release readiness check agree with the site tree for every
publishable member. A reader running netscript --help can find prose for every group it prints.
The JSR pages for @netscript/sdk and the four plugin-*-core packages link to a reference page
that exists.
Provenance
Seed run plan-fable5-remediation-roadmap--seed, PR #1347, 2026-08-08. README staleness re-measured
with git log -1 --format=%ad per file in this pass (22/30 packages and 4/6 plugins at 2026-07-18);
the corpus figure of 21/30 is superseded by this measurement.
Filed from planning seed PR #1347 · source Draft-ID T5-05 · live issue #1377.
Summary
The reference tree does not cover the publish set, and the gate that is supposed to enforce coverage
has never run against it and would demand paths the site does not use. Twenty-two package READMEs —
including
packages/sdk/README.md, which is the JSR landing page — have not been touched since asingle bulk commit and still teach the query dialect the scaffold does not emit. Seven public CLI
verbs are documented nowhere, one documented claim about
deploy docker/composeis the inverse ofthe code, and the root README hardcodes a scaffold file count that the quickstart explicitly says not
to trust. Individually these are small; together they are the reason a reader who leaves the golden
path cannot get back on it.
Evidence
Corpus:
research/repo-audit/docs-quickstart.md§2.6, §2.7, §2.9, §2.10, §4 Tier 2;research/repo-audit/mcp-cli.md§2.1, §4.5 C3;SYNTHESIS.md§4 T5.Verified in the worktree at
fac9e339042c:docs/site/reference/has 32 package directories.plugin-ai-coreandplugin-auth-corehave pages;plugin-sagas-core,plugin-streams-core,plugin-triggers-core,plugin-workers-coredo not. All four declare an object-valuedpublishkey indeno.json(packages/plugin-sagas-core/deno.json:39,plugin-streams-core:20,plugin-triggers-core:32,plugin-workers-core:42), i.e. they arepublishable — contrast
packages/bench/deno.json:33"publish": false, which correctly has nopage. The omission is inconsistent, not policy.
.llm/tools/release/publish-readiness.ts:302-306requiresdocs/site/reference/${packageSegment(member.name)}/index.md, wherepackageSegmentis the partafter
@netscript/(:411-415). The site documents@netscript/plugin-sagasatdocs/site/reference/sagas/index.md(its front matter readstitle: "@netscript/plugin-sagas"),and the same for
streams,triggers,workers. A first publish under the current rule woulddemand
/reference/plugin-sagas/.newPackages, computed asmembers with no registry versions (
publish-readiness.ts:158-180), throughauditFirstPublish(
:179).git log -1per file). 22 of 30packages/*/README.mdand 4 of6
plugins/*/README.mdwere last touched 2026-07-18, includingpackages/sdk/README.md.jsr-package-settings.json:6setsreadmeSource: "readme", so that file is the JSR landingpage.
packages/sdk/README.md:32-33front-loadscreateServiceQueryUtilsas the TanStack story —the dialect fix(docs/sdk): the golden path names three different client modules and two incompatible query APIs, and the file the quickstart points at is a CSS entry #1373 demotes.
README.md:41asserts "The scaffold reports 183 files, 44 directories",directly contradicted by
docs/site/quickstart.vto:51("treat the printed result—not a staticnumber in this guide—as the authority"); the counts vary with
--db/--service/--editor.README.md:35prints the literaljsr:@netscript/cli@<version>while the site derives thespecifier automatically (
docs/site/_data.ts:30-33).docs/sitereturns zero files for each):netscript agent drift,netscript deploy desktop,netscript deploy package-cli,netscript deploy list,netscript config list.netscript plugin aiappears only indocs/site/reference/plugin-ai/index.md, never as a CLI verb in the command reference. All existin the public tree (
packages/cli/src/public/features/agent/agent-group.ts:44-51,.../deploy/deploy-group.ts:25-97,.../config/config-group.ts:13-29,.../plugins/plugins-group.ts:33-151).docs/site/cli-reference.md:246-249states "netscript deploy dockeranddeploy composeexist as command groups but are not wired — they only print help." Both areimplemented by
AspireComposeDeployTarget, whose operation list isplan · up · down · status · logs(
packages/cli/src/kernel/adapters/aspire/aspire-compose-deploy-target.ts:65-70,92,109-117).@contracts(web-layer/query.md:143,services-sdk/sdk.md:100,tutorials/live-dashboard/02-contract-to-service.md:112,.../03-sdk-cache-first-query.md:55)and
@/lib/api-clients.ts(services-sdk/sdk.md:189,194,199) are never generated; the scaffoldemits only
'@app/' -> './'and'@<projectName>/contracts'(
packages/cli/src/kernel/adapters/templates/app/generate-app-deno-json.ts:62-63,125-130).netscript-devreports a hardcodedversion('1.0.0')(
packages/cli/src/maintainer/features/root/maintainer-command-tree.ts:32) against the realCLI_PACKAGE_VERSIONtrain.Current surface
32 reference pages for a larger publish set; a first-publish-only docs gate keyed to a path
convention the IA does not follow; 26 READMEs frozen at 2026-07-18, one of which is the SDK's JSR
landing page teaching a non-canonical dialect; a root README with a hardcoded file count and a
literal version placeholder; seven verbs with no prose; one reference claim that is the inverse of
the code.
Target contract
deno.jsonpublishkey is notfalsehas adocs/site/reference/<segment>/index.md, generated or hand-written, listed in the site nav.packageSegmentrule is relaxed to adeclared alias map (
@netscript/plugin-sagas→sagas), or the IA moves to the gate's rule. Thedecision is recorded in the reference index; the gate and the IA agree afterwards.
without a page and an existing package without a page fail the same way.
packages/sdk/README.mdleads withcreateQueryFactoriesper fix(docs/sdk): the golden path names three different client modules and two incompatible query APIs, and the file the quickstart points at is a CSS entry #1373; every package README's code blocks are covered by test(docs): docs:accuracy is a fixed-string needle checker — no docs/site code block is ever compiled, and a CLI change never revalidates the site #1374'scompile gate;
docs:readme:checkstaleness is quality(docs): docs:readme:check is a dead gate — checker/template/house-style three-way divergence #767's problem and is not re-litigated here.snippet derives its specifier the way the site does, or states explicitly that the reader should
substitute the current release.
docs/site/reference/cli/commands.mddocumentsagent drift,plugin ai,deploy desktop,deploy package-cli,deploy list,config list, and corrects thedocker/compose row and the "three-verb lifecycle" claim.
Acceptance
falsepublishkey has a reference page.plugin-sagas-core,plugin-streams-core,plugin-triggers-core,plugin-workers-corehavereference pages.
publishSet.effectivebefore registry-dependent first-publish checks.packages/sdk/README.mdleads withcreateQueryFactories.README.mdcarries no hardcoded scaffold file or directory count.README.md's install snippet resolves to a real specifier or states the substitution.agent drift,plugin ai,deploy desktop,deploy package-cli,deploy list, andconfig listare documented in the CLI reference.@contractsand@/lib/...appear in zero code samples.@netscript/publishedand its resolved missing path.reference fails a check derived from the command tree, not from a literal list.
netscript deploy uninstallproduced raw exit 1 and a 90/91 diagnostic.@netscript/sdkshows the canonical dialect.Routed to verify(sdk): confirm the published @netscript/sdk JSR landing page shows the canonical query dialect #1606 — observational, verifiable only against a published artifact, so no PR
can close it (verify(wave-five): does the shipped agent surface actually change agent behaviour? #1090 pattern). The source work merged in docs(reference): reference IA completeness, README truth, and CLI verb coverage #1541; verify(sdk): confirm the published @netscript/sdk JSR landing page shows the canonical query dialect #1606 carries the observation.
Boundaries
correctness of reference pages and the expansion of
check-exports-drift. This issue ownsexistence, path convention, and gate scope; do not re-file docs(tooling): verify generated package references against live export maps #1108's export verification here.
docs:readme:checkbeing a dead gate (checker/template/house-style divergence). Thisissue fixes README content, not the README standard checker.
Fixing
packages/sdk/README.mdhere does not decide what ships in the corpus.conceptual pages here — reference and README truth only.
Docs/consumer proof
deno task publish:dry-runand the release readiness check agree with the site tree for everypublishable member. A reader running
netscript --helpcan find prose for every group it prints.The JSR pages for
@netscript/sdkand the fourplugin-*-corepackages link to a reference pagethat exists.
Provenance
Seed run
plan-fable5-remediation-roadmap--seed, PR #1347, 2026-08-08. README staleness re-measuredwith
git log -1 --format=%adper file in this pass (22/30 packages and 4/6 plugins at 2026-07-18);the corpus figure of 21/30 is superseded by this measurement.
Filed from planning seed PR #1347 · source Draft-ID T5-05 · live issue #1377.