Skip to content

docs(site): reconcile to merged #193/#183/#190 surface + fmt-guard config#199

Merged
rickylabs merged 4 commits into
mainfrom
docs/site-reconcile-merged
Jul 1, 2026
Merged

docs(site): reconcile to merged #193/#183/#190 surface + fmt-guard config#199
rickylabs merged 4 commits into
mainfrom
docs/site-reconcile-merged

Conversation

@rickylabs

Copy link
Copy Markdown
Owner

Summary

Brings the doc site current with the three PRs just merged for the next release cut — #193 (triggers oRPC), #183/#172 (two-tier plugin shape), #190 (fresh-ui AI primitives) — and hardens the standalone docs project config so deno fmt can never again reflow Vento markdown or split its {{ comp }} tags.

Content (12 pages)

Config

  • docs/site/deno.json gains an fmt block (proseWrap: preserve; excludes **/*.md, **/*.mdx, **/*.vto, _site/, _cache/) and a lint block, so the authored Markdown/Vento surface is out of scope for deno fmt. This is the durable fix for the reflow / comp-tag-breakage class of build failures.

Verification

  • deno task buildgreen, 306 files generated.
  • deno task check:linksgreen, 18456 internal links across 130 pages resolve.
  • check:caveats fails only under the linked-worktree layout (the tool can't walk up to .llm/harness/debt/arch-debt.md from this path); no new caveat refs were added, so it resolves on a normal PR checkout.

Docs-only — 13 files, +243/-80, all under docs/site/. No framework source touched.

🤖 Generated with Claude Code

…nfig

Brings the doc site current with the three just-merged PRs, and hardens the
standalone docs project config so `deno fmt` can never again reflow Vento
markdown or split its `{{ comp }}` tags.

Content (12 pages):
- #190 fresh-ui: document the AI/workspace primitive catalog (11 L2 primitives
  + command-palette/search) and the headless Combobox interactive namespace;
  extra `ui:add` examples. (customize-fresh-ui, capabilities/fresh-ui)
- #193 triggers-oRPC truth: triggers serve a typed v1 oRPC contract for
  introspection/management/SSE; only the webhook ingress endpoint
  (POST /api/v1/webhooks/:triggerId) stays a raw HMAC-verifying route by design.
  Corrected every stale "raw Hono, not oRPC" claim. (triggers, capabilities/index,
  contracts, architecture, glossary, deploy, storefront/05-shipping-webhook)
- #183/#172 two-tier plugin shape: `netscript plugin new <name>` emits a
  core engine package + thin connector; --kind feature|proxy (default proxy),
  --overwrite. (cli-reference, author-a-plugin, plugin-system)

Config:
- docs/site/deno.json gains an fmt block (proseWrap preserve; excludes
  **/*.md, **/*.mdx, **/*.vto, _site/, _cache/) and a lint block, so the
  authored Markdown/Vento surface is out of scope for `deno fmt`.

Verified: `deno task build` green (306 files); `check:links` green
(18456 internal links across 130 pages resolve). Docs-only; no framework source.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014gW4zfhMMQU6txC828ijct
@rickylabs

Copy link
Copy Markdown
Owner Author

@openhands-agent model=openrouter/qwen/qwen3.7-max output=pr-comment

IMPL-EVAL this docs-only PR (#199). It reconciles the doc site to three just-merged PRs. Give a per-domain verdict (PASS / FAIL_FIX per domain), grounded against the actual merged code on main — not against the prose alone.

Domains to verify:

  1. Triggers oRPC truth (Plugin RE-ARCHITECTURE v2 — unified thin surface + greenfield-first (#184, issue #191) #193) — the docs must say triggers serve a typed v1 oRPC contract (introspection/management/SSE), and that ONLY the webhook ingress endpoint (POST /api/v1/webhooks/:triggerId, plus the legacy GET /api/v1/events) stays a raw HMAC-verifying route by design (HMAC-over-raw-bytes is incompatible with oRPC Zod parsing). Ground against plugins/triggers/services/src/** (the v1 router + createPluginService(router, { serveRpc: true }) and the rawRoutes webhook ingress). Confirm no remaining "raw Hono, not oRPC" claim survives in: capabilities/triggers.md, capabilities/index.md, explanation/contracts.md, explanation/architecture.md, glossary.md, how-to/deploy.md, tutorials/storefront/05-shipping-webhook.md. The webhook ingress must NEVER be described as oRPC.

  2. Two-tier plugin shape (feat(fresh): restore inline .withRouteContract shorthand + codegen page-module route binding (WI-12) #183/Re-architect plugin scaffold surface (#157): thin, typesafe, no plugin-source copy #172)netscript plugin new <name> emits a core engine package (packages/plugin-<name>-core/) + a thin connector (plugins/<name>/, contracts re-exported); flags --kind feature|proxy (default proxy), --overwrite. Ground against the CLI plugin new command source and the existing converged plugins. Files: cli-reference.md, how-to/author-a-plugin.md, explanation/plugin-system.md.

  3. fresh-ui AI catalog (feat(fresh-ui): AI/workspace surface primitives + token/layout/theme foundation #190) — the AI/workspace primitive catalog (the L2 primitives + command-palette/search .ns-cmdk/.ns-search) and the headless Combobox interactive namespace (from @netscript/fresh-ui/interactive). Ground against packages/fresh-ui/** public surface (deno doc). Confirm reference/fresh-ui/index.md (generated) was NOT hand-edited. Files: how-to/customize-fresh-ui.md, capabilities/fresh-ui.md.

Also run the docs gates from docs/site/:

deno task build
deno task check:links

Both must be green (expected: 306 files built; ~18456 internal links resolve). Note: check:caveats is not required here — it fails only under linked-worktree layout; on your normal checkout it should locate .llm/harness/debt/arch-debt.md and pass, but a caveat-ref failure unrelated to these 12 pages is not a blocker.

Constraints: docs-only PR — flag ANY change outside docs/site/. Do not commit lock churn or source changes. Report per-domain PASS/FAIL_FIX plus the raw build/link exit codes.

@rickylabs

rickylabs commented Jul 1, 2026

Copy link
Copy Markdown
Owner Author

OpenHands Agent — Completed

Model: openrouter/qwen/qwen3.7-max
Provider: OPENROUTER
Job status: success
Trace: .llm/tmp/run/openhands/pr-199/run-28485224548-1 (committed to the PR branch)
Artifact: openhands-agent-28485224548-1

IMPL-EVAL Summary — PR #199 (docs-only reconciliation)

Per-Domain Verdicts

Domain Verdict Rationale
1. Triggers oRPC truth (#193) PASS All 7 doc files correctly describe the typed v1 oRPC contract for introspection/management/SSE, and the deliberate webhook-ingress exception (POST /api/v1/webhooks/:triggerId, legacy GET /api/v1/events) as a raw HMAC-verifying route. Ground truth (plugins/triggers/services/src/main.tscreatePluginService(router, { serveRpc: true }) + rawRoutes) matches. No stale "raw Hono, not oRPC" claim survives; the two remaining "raw Hono router" mentions (triggers.md L370, storefront tutorial L170) correctly scope to the webhook ingress only.
2. Two-tier plugin shape (#183/#172) FAIL_FIX The two-tier topology description (core package + thin connector) is correct in all three files, but the CLI flag names are wrong in docs:
— Docs say `--kind feature
— Actual CLI source defines --feature (boolean→kind) and --force (boolean→overwrite)
Internal semantics match (kind: options.feature ? 'feature' : 'proxy', overwrite: options.force), but the flag spellings diverge. Fix: replace `--kind feature
3. fresh-ui AI catalog (#190) PASS capabilities/fresh-ui.md correctly catalogs all L2 primitives, Combobox+useCombobox, and .ns-cmdk/.ns-search. how-to/customize-fresh-ui.md correctly describes the headless Combobox seam. reference/fresh-ui/index.md was NOT modified by this PR (only initial-commit history) — confirmed no hand-editing. Note: the generated reference page omits Combobox from its interactive-namespace table (stale deno doc generation, pre-Combobox addition) — not an inaccuracy in the authored docs, but a regeneration is due.

Docs Gates

Gate Exit Code Result
deno task build 0 306 files generated ✓
deno task check:links 0 18456 internal links across 130 pages — all resolve ✓

Constraints Check

  • Docs-only scope: All 13 changed files are under docs/site/ — no changes outside docs/site/. ✓
  • No lock churn or source changes: Confirmed. ✓

Remaining Risks

  1. Domain 2 flag fix is required before merge — the CLI reference and how-to guide show flags that don't exist in the actual command, which would confuse any reader trying netscript plugin new billing --kind proxy (would fail; correct form is netscript plugin new billing or netscript plugin new billing --feature for a feature connector).
  2. Domain 3 stale reference: reference/fresh-ui/index.md is missing Combobox from the interactive namespaces table. A deno doc regeneration would fix this, but it's outside the authored-doc scope of this PR. Consider filing a follow-up tracked issue.

Run: https://github.com/rickylabs/netscript/actions/runs/28485224548

@augmentcode

augmentcode Bot commented Jul 1, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: Updates the docs site to match recently merged platform surface changes (triggers oRPC, two-tier plugin scaffolding, fresh-ui primitives) and hardens the docs project’s formatter config.

Changes:

  • Extend fresh-ui capability/how-to docs with registry grouping and expanded ui:add examples (AI/workspace primitives + command/search utilities).
  • Reconcile triggers documentation across capability pages, glossary, architecture, contracts, deploy, and the storefront tutorial to reflect the typed v1 oRPC contract plus raw HMAC-verified webhook ingress.
  • Document the two-tier plugin shape and netscript plugin new output (core engine package + thin connector).
  • Add docs/site/deno.json fmt/lint configuration to preserve prose wrapping and exclude authored Markdown/Vento from deno fmt.
Notes: Docs-only change under docs/site/; intended to prevent formatter reflow from breaking Vento markdown/component tags.

🤖 Was this summary useful? React with 👍 or 👎

@augmentcode augmentcode Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. 2 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

previewing a schedule, enabling/disabling a trigger, and subscribing to an SSE event stream. The one
deliberate exception is the <strong>webhook ingress endpoint</strong> itself
(<code>POST /api/v1/webhooks/:triggerId</code>, plus a legacy <code>GET /api/v1/events</code>): it stays
a <strong>raw, signature-verifying route</strong>, not an oRPC procedure, because it must verify an HMAC

@augmentcode augmentcode Bot Jul 1, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

docs/site/capabilities/triggers.md:38: GET /api/v1/events is a legacy raw route, but it isn’t signature-verifying like the webhook ingress. Grouping it inside the “raw, signature-verifying route” exception could mislead readers about the behavior/security properties of that legacy endpoint.

Severity: medium

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

## Step 4 — Route shape (raw webhook ingress)

The triggers service serves a typed v1 oRPC contract for trigger and event introspection plus
management, but the **webhook ingress endpoint** is deliberately a **raw route**, not an oRPC

@augmentcode augmentcode Bot Jul 1, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

docs/site/tutorials/storefront/05-shipping-webhook.md:170: In Hono, a :triggerId param won’t capture across /, so /api/v1/webhooks/shipping/status is effectively handled via the .../:triggerId/* route and path normalization. The current wording implies :triggerId itself becomes shipping/status, which isn’t how the router pattern matches.

Severity: low

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

openhands-agent and others added 2 commits July 1, 2026 00:45
…FAIL_FIX)

The two-tier topology prose was correct, but the CLI flag spellings were
invented. Ground truth (packages/cli/.../new/new-plugin-command.ts):
- boolean `--feature` (default proxy) → kind: feature|proxy
- boolean `--force` → overwrite
- `--project-root <path>`

There is no `--kind feature|proxy` flag and no `--overwrite` flag. Running
`netscript plugin new billing --kind proxy` would fail. Corrected the two docs
that showed the wrong flags:
- cli-reference.md: example → `netscript plugin new billing` (proxy default);
  desc → `--feature` / `--force`.
- how-to/author-a-plugin.md: example → `netscript plugin new notifier`;
  options prose → `--feature` (route-backed feature connector vs default proxy),
  `--force` (overwrite), `--project-root <path>`.

Verified: `deno task build` green (306 files); `check:links` green
(18456 internal links across 130 pages resolve). Docs-only.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014gW4zfhMMQU6txC828ijct
@rickylabs

Copy link
Copy Markdown
Owner Author

@openhands-agent model=openrouter/qwen/qwen3.7-max output=pr-comment

RE-IMPL-EVAL (cycle 2) for PR #199Domain 2 only. Your cycle-1 verdict was Domain 1 PASS, Domain 3 PASS, Domain 2 FAIL_FIX on the plugin new CLI flag names. The prescribed fix has been applied in commit 24556e8f.

Verify only that Domain 2 is now correct, grounded against the actual CLI source (packages/cli/src/public/features/plugins/new/new-plugin-command.ts):

  • The command defines boolean --feature (default falsekind: options.feature ? 'feature' : 'proxy'), boolean --force (default falseoverwrite), and --project-root <path>.
  • There is no --kind feature|proxy flag and no --overwrite flag.

Confirm both docs now match:

  • docs/site/cli-reference.md — the netscript plugin new row: example netscript plugin new billing (proxy default); desc uses --feature / --force.
  • docs/site/how-to/author-a-plugin.md — example netscript plugin new notifier; options prose uses --feature (route-backed feature connector vs default proxy), --force (overwrite), --project-root <path>.
  • No stray --kind / --overwrite mention survives anywhere describing plugin new.

Also re-run the two docs gates from docs/site/ and report raw exit codes:

deno task build
deno task check:links

Expected: build exit 0 (306 files); check:links exit 0 (18456 internal links across 130 pages resolve).

Constraints: docs-only PR — flag ANY change outside docs/site/. Do not commit lock churn or source changes. Report the Domain 2 verdict (PASS / FAIL_FIX) plus the raw build/link exit codes. If Domain 2 is now PASS, state the overall PR verdict is PASS (Domains 1+3 already passed in cycle 1).

@rickylabs

rickylabs commented Jul 1, 2026

Copy link
Copy Markdown
Owner Author

OpenHands Agent — Completed

Model: openrouter/qwen/qwen3.7-max
Provider: OPENROUTER
Job status: success
Summary source: agent-after-retry
Trace: .llm/tmp/run/openhands/pr-199/run-28486223232-1 (committed to the PR branch)
Artifact: openhands-agent-28486223232-1

RE-IMPL-EVAL (cycle 2) — PR #199 Domain 2

Summary

Cycle-2 verification of commit 24556e8f ("docs(site): correct plugin new flag names (IMPL-EVAL #199 Domain 2 FAIL_FIX)") against the CLI source truth in packages/cli/src/public/features/plugins/new/new-plugin-command.ts. Verifying only Domain 2 (Domains 1 + 3 already passed in cycle 1).

Changes

The prescribed fix in commit 24556e8f touches only docs:

  • docs/site/cli-reference.md (1 insertion, 1 deletion)
  • docs/site/how-to/author-a-plugin.md (7 insertions, 5 deletions)

No changes outside docs/site/. No lock churn, no source churn.

Validation

CLI source truth (ground truth)

packages/cli/src/public/features/plugins/new/new-plugin-command.ts defines:

  • --feature: boolean, default falsekind: options.feature ? 'feature' : 'proxy' (line 43, 53)
  • --force: boolean, default falseoverwrite: options.force ?? false (line 44, 54)
  • --project-root <path:string>: string (line 42)
  • No --kind feature|proxy flag
  • No --overwrite flag

Doc 1: docs/site/cli-reference.md (line 134)

✅ Example: netscript plugin new billing (proxy default)
✅ Description uses --feature (route-backed feature connector) and --force (overwrite)
✅ No --kind or --overwrite mentions

Doc 2: docs/site/how-to/author-a-plugin.md (lines 64-74)

✅ Example: netscript plugin new notifier (line 65)
✅ Options prose (lines 68-70):

  • --feature — route-backed feature connector vs default proxy
  • --force — overwrite existing files
  • --project-root <path> — target alternative project root
    ✅ No --kind or --overwrite mentions

Stray flag search

grep -rn "\-\-kind" docs/site/ → exit 1 (no matches)
grep -rn "\-\-overwrite" docs/site/ → exit 1 (no matches)
grep -rn broader check for kind: / overwrite → only legitimate non-flag usages remain (scaffold.plugin.json provider.kind, job kind fields, saga routing kind), all unrelated to plugin new CLI flags.

Docs gates (from docs/site/)

deno task build: exit 0 (306 files generated in 5.08 seconds)
deno task check:links: exit 0 (18456 internal links across 130 pages — all resolve)

Both match the expected figures from the task specification.

Remaining risks

None. Domain 2 verification complete. All three domains (1, 2, 3) now PASS.

Overall PR verdict: PASS

Run: https://github.com/rickylabs/netscript/actions/runs/28486223232

@rickylabs
rickylabs merged commit 9b9d883 into main Jul 1, 2026
7 of 8 checks passed
@rickylabs
rickylabs deleted the docs/site-reconcile-merged branch July 1, 2026 01:30
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.

2 participants