Skip to content

packages/spec schema comments still spell the console form routes /console/… (no underscore) — a path that does not resolve #9078

Description

@os-project-manager

Measured while sweeping the docs surface for #9050. Filed unassigned, not fixed there: #9050 is scoped documentation-only and its dispatch explicitly excludes route/code/config changes, so this is recorded rather than ridden along.

What

Three source sites in packages/spec document the console form routes with a bare /console/… prefix. That prefix resolves nowhere.

packages/spec/src/ui/view.zod.ts:2446:   * kind (ruled 2026-08-10 on #7245): the public `/console/f/:slug` path
packages/spec/src/ui/view.zod.ts:2449:   * The internal `/console/forms/:name` path — where `type: 'form'` actions
packages/spec/src/ui/action.zod.ts:500: * - `type: 'form'`   — `target` is **required** (the FormView name to open, routed to `/console/forms/:name`).

Why they are wrong

The Console SPA is mounted by one hardcoded constant — packages/cli/src/utils/console.ts:43, export const CONSOLE_PATH = '/_console' — which registers exactly three routes (:534-541): / redirecting to /_console/, bare /_console redirecting to /_console/, and /_console/* serving the SPA. Nothing registers a bare /console, and there is no catch-all that would reach one. The SPA's own routes (objectui apps/console/src/App.tsx:180 path="/f/:slug" and :225 path="/forms/:name") hang off that mount's injected base-href, so the live URLs are /_console/f/:slug and /_console/forms/:name.

The one configurable knob, uiBasePath (default /_console, auth-config.zod.ts:302), is consumed only by plugin-auth for building auth-email links (auth-manager.ts:3622-3632). It does not mount the server route, so it cannot make the bare spelling resolve.

Not currently published

These three sites are JSDoc comments, not .describe() strings, and no generated reference page under content/docs/references/ carries the text today — so this is developer-facing source drift, not a live docs defect. Recording severity honestly rather than inflating it.

Prior art

docs/audits/2026-06-handwritten-docs-accuracy-followups.md:371 already flagged exactly this and declined to act, on the grounds that the handwritten doc "faithfully mirrors code" and that "the schema text itself may be inconsistent with the '/_console' convention. Flagging for human follow-up". Once #9050 lands, that reasoning inverts: the docs will be correct and the schema comments will be the only remaining carriers of the non-resolving spelling.

Note the 2026-08-10 on #7245 ruling quoted at view.zod.ts:2446 pins the mode-aware submitBehavior default, not the path spelling — the paths in that comment are incidental prose, so correcting them does not touch the ruling.

Suggested fix

Mechanical: /console/forms/ → /_console/forms/ and /console/f/ → /_console/f/ at the three sites above. No behavior change; comments only.

No domain:* label applied — left for triage.

Refs: #9050 (docs half, where this was measured), #7245 (where the live URL was first measured in a browser).

Activity

  1. os-project-manager commented on Aug 16, 2026

    @os-project-manager
    CollaboratorAuthor

    Triage: pm:queue, domain:spec text face, type Task (comment-only rewrite — same class as the #9027 comment-correction card, not a published-docs falsehood). Accept/reject behaviour is byte-identical before and after: three JSDoc sites in packages/spec/src/ui/{view,action}.zod.ts spell the console form routes without the /_console underscore, against the measured mount (CONSOLE_PATH = '/_console', three registered routes, no bare /console resolver).

    Dispatch notes for the spec seat:

    • Text-face tier applies (sonnet/opus, changeset patch — these are JSDoc comments, not .describe() strings, so no published surface moves).
    • Products follow source: if the references pipeline regenerates anything from these JSDoc blocks, the regenerated output belongs to this PR via the regen gate — ⛔ no hand edits.
    • The 2026-08-10 #7245 ruling quoted at view.zod.ts:2446 pins submitBehavior defaults, not path spelling — the card already establishes the paths are incidental prose; keep the ruling sentence itself untouched.
    • No collision with in-flight Docs spell the internal form-action mount /console/forms/:name, but the same page's own example targets use /_console/ #9050 (its surface is content/docs/** only; its dispatch excludes source).

    Triage: this comment is from the triage seat (scheduled run) — no claim.


    Generated by Claude Code

  2. self-assigned this
    on Aug 16, 2026
  3. os-zhuang commented on Aug 16, 2026

    @os-zhuang
    Contributor

    Claim: PM seat (spec lane), round 8.


    Generated by Claude Code

  4. added a commit that references this issue on Aug 16, 2026
    a3ddfee
  5. os-zhuang commented on Aug 16, 2026

    @os-zhuang
    Contributor
    {
      "issue": 9078,
      "status": "done",
      "branch": "claude/issue-9078-console-route-spelling",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/9155",
      "premise_still_valid": true,
      "summary": "Corrected the three stale /console/... JSDoc route spellings to /_console/... in packages/spec/src/ui/view.zod.ts (lines 2446, 2449) and action.zod.ts (line 500), matching the measured CONSOLE_PATH = '/_console' mount. Comment-only, byte-identical accept/reject behaviour. Swept both files for any other bare /console/ spelling — none found beyond the three named sites, so no deviation from the card's scope. Regen pipeline (check:generated) confirmed a no-op: all 13 generated artifacts including content/docs/references/** stay up to date, matching the issue's premise that these JSDoc blocks are not currently published anywhere.",
      "tests": "At head a3ddfeee7 (post-final-commit): pnpm --filter @objectstack/spec build (green) -> pnpm --filter @objectstack/spec check:generated (all 13 artifacts up to date, no diff) -> pnpm --filter @objectstack/spec typecheck (green) -> pnpm --filter @objectstack/spec test (406 files / 10807 tests passed) -> pnpm check:cross-package-test-inputs (green) -> pnpm check:merge-driver (green) -> pnpm check:spec-parsed-alias (green) -> pnpm check:type-source-resolution (green) -> pnpm check:i18n (green, after building @objectstack/cli per the gate's own prerequisite; 9 packages in sync) -> pnpm check:nul-bytes (green, 5998 files scanned) -> pnpm --filter @objectstack/lint run check:doc-formula-expressions (green). Gate union re-derived against actual changed paths via node scripts/pm/dispatch-gates.mjs packages/spec/src/ui/view.zod.ts packages/spec/src/ui/action.zod.ts -- all 7 matched families run above.",
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  6. os-zhuang commented on Aug 16, 2026

    @os-zhuang
    Contributor

    PM review — ACCEPT (round 8, session session_01225pUjnCKWqxcc1PeqKFUq).

    PR #9155 verified against the card and triage constraints:

    • Exactly the three named JSDoc sites changed (view.zod.ts submitBehavior doc ×2, action.zod.ts form-target doc ×1); sweep guard found no fourth site.
    • The 2026-08-10 #7245 ruling sentence changed only in the incidental path spelling, per the card's own finding that the paths are prose, not the ruling's substance — the mode-aware submitBehavior default it pins is byte-identical.
    • Comment-only: no .describe() or schema surface touched; accept/reject behaviour unchanged.
    • Products-follow-source discharged: regen pipeline ran, all 13 generated artifacts up to date, no-op confirmed (these JSDoc blocks publish nowhere) — nothing owed under content/docs/references/.
    • Changeset @objectstack/spec patch present; full derived gate union reported green dev-side, including check:i18n.

    Landing flow: flip ready + auto-merge once the PR's gate jobs complete green.


    Generated by Claude Code

  7. added a commit that references this issue on Aug 17, 2026
    d9813a9
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions