Skip to content

fix(devx): add missing @objectstack/spec/qa (and /api) alias entries - #8416

Merged
qq9340100 merged 1 commit into
mainfrom
claude/issue-8391-spec-qa-alias-entries
Aug 13, 2026
Merged

fix(devx): add missing @objectstack/spec/qa (and /api) alias entries#8416
qq9340100 merged 1 commit into
mainfrom
claude/issue-8391-spec-qa-alias-entries

Conversation

@qq9340100

Copy link
Copy Markdown
Collaborator

Fixes#8391

What

Adds the seven missing @objectstack/spec/qa (and, for knowledge-memory, /api)
alias entries across the six vitest configs listed in the issue's table, each placed
ABOVE the bare @objectstack/spec key — the same /shared idiom these configs
already use:

configadded entry/entries
packages/metadata/vitest.config.ts@objectstack/spec/qa
packages/runtime/vitest.config.ts@objectstack/spec/qa (array form, matching the file's existing regex-anchored style)
packages/drivers/driver-memory/vitest.config.ts@objectstack/spec/qa
packages/plugins/plugin-dev/vitest.config.ts@objectstack/spec/qa
packages/plugins/plugin-hono-server/vitest.config.ts@objectstack/spec/qa
packages/plugins/knowledge-memory/vitest.config.ts@objectstack/spec/qa, @objectstack/spec/api

No other lines in these six files changed — no reordering, no reformatting, no new
keys beyond the seven entries.

Why

Each of these configs aliases @objectstack/core to core/src/index.ts and aliases
the bare @objectstack/spec to a FILE, without a subpath entry for /qa (and, in
knowledge-memory, /api) — the subpath @objectstack/core's own source reaches at
those import sites. Since alias resolution matches by PREFIX, the bare
@objectstack/spec entry wins for these subpaths and yields the nonsensical
spec/src/index.ts/qa (ENOTDIR at run time). This is currently latent — every use
inside @objectstack/core's qa adapters is in a TYPE position, so esbuild elides
the import — but the first value use kills every test file in all six packages at
load, the way #7378 did for /shared.

Sequencing

This lands first. Companion gate-hardening PR #8392 (from #8351) reports exactly
these seven findings as rule-5 failures on its sharpened
check-test-source-alias.mjs; once this PR merges, #8392 flips ready and goes green
with zero further edits.

Scope

The six touched files span four lanes (metadata, runtime/plugin-dev/
plugin-hono-server, driver-memory, knowledge-memory) under the triage-designated
cross-domain exception path recorded on #8391 (domain:devx owns the sequencing with
the companion gate card). driver-memory is a frozen-investment family; this change
is test-infra resolution repair only — one alias line, no other edits.

Verification

  • Baseline (pre-edit, on this branch): the sharpened gate from
    origin/claude/issue-8351-alias-walk-cross-package's
    scripts/check-test-source-alias.mjs reported exactly the 7 findings from the
    issue's table (6 × /qa, knowledge-memory × /api).
  • Post-edit: the same sharpened gate reports 0 findings
    (check-test-source-alias OK — 72 packages with tests scanned; 61 registered as still resolving a workspace dep through dist/.).
  • The CURRENT main gate (node scripts/check-test-source-alias.mjs) stays green
    after the edits — the new entries don't disturb its ledger or rules.
  • Live-probe: a throwaway test in driver-memory doing
    await import('@objectstack/spec/qa') loaded successfully under the patched
    config (no ENOTDIR); the probe file was deleted before committing
    (git status clean of it).
  • pnpm --filter (package-dependency-closure form, e.g.
    --filter '@objectstack/metadata^...') build run for the dependency
    closures of all six touched packages before testing.
  • Each touched package's pnpm test run (scoped, --maxWorkers=2,
    --workspace-concurrency=2) — see report for pass/fail counts.
  • pnpm check:nul-bytes — OK.
  • Named gate families re-derived via node scripts/pm/dispatch-gates.mjs (the six
    changed paths as arguments):
    check:changeset-gate-self-tests, check:docs-audit-scope,
    check:driver-conformance, check:test-source-alias,
    check:type-source-resolution all green;
    node scripts/check-dev-prereqs.mjs reports the fresh worktree's dist/ as
    unbuilt for packages outside this PR's scope — a pre-existing property of an
    unbuilt worktree, not a regression from this change, since it's a workspace-wide
    build-state check unrelated to the six vitest configs touched here.

Notes for reviewers

  • No .changeset/*.md — this is a test-config-only change (vitest alias entries),
    no user-visible behavior change. skip-changeset label applied.

Generated by Claude Code


Generated by Claude Code

Six vitest configs alias the bare @objectstack/spec key to a FILE without a
subpath entry for /qa (and, in knowledge-memory, /api) — the subpath
@objectstack/core's own source reaches through its own src alias in these
configs. An alias list matches by PREFIX, so the bare @objectstack/spec entry
wins and yields the nonsensical spec/src/index.ts/qa (ENOTDIR at run time).
This was latent rather than currently-red: every use inside @objectstack/core's
qa adapters is in a TYPE position, so esbuild elides the import and the
specifier never reaches the resolver — until the first value use.
Adds the seven entries from #8391's table, each placed ABOVE the bare
@objectstack/spec key using the same idiom the existing /shared entries in
these configs use.
Fixes#8391
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jqe56GnYFddggeAyfkZFVz
@vercel

vercelBot commented Aug 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
ProjectDeploymentActionsUpdated (UTC)
objectstackIgnoredIgnoredAug 13, 2026 12:15pm

Request Review

@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 6 package(s): @objectstack/driver-memory, @objectstack/metadata, @objectstack/knowledge-memory, @objectstack/plugin-dev, @objectstack/plugin-hono-server, @objectstack/runtime.

28 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/ai/knowledge-rag.mdx(via @objectstack/knowledge-memory)
  • content/docs/api/client-sdk.mdx(via packages/runtime)
  • content/docs/api/index.mdx(via @objectstack/runtime)
  • content/docs/api/wire-format.mdx(via @objectstack/runtime)
  • content/docs/automation/hook-bodies.mdx(via @objectstack/runtime)
  • content/docs/concepts/metadata-lifecycle.mdx(via @objectstack/metadata, @objectstack/runtime)
  • content/docs/concepts/north-star.mdx(via packages/runtime)
  • content/docs/data-modeling/drivers.mdx(via @objectstack/driver-memory, @objectstack/runtime)
  • content/docs/deployment/index.mdx(via @objectstack/runtime)
  • content/docs/deployment/production-readiness.mdx(via @objectstack/runtime)
  • content/docs/deployment/single-project-mode.mdx(via @objectstack/runtime)
  • content/docs/deployment/vercel.mdx(via @objectstack/driver-memory, @objectstack/runtime)
  • content/docs/getting-started/glossary.mdx(via @objectstack/driver-memory)
  • content/docs/getting-started/your-first-project.mdx(via @objectstack/plugin-hono-server, @objectstack/runtime)
  • content/docs/kernel/cluster.mdx(via packages/metadata, @objectstack/runtime)
  • content/docs/kernel/services-checklist.mdx(via @objectstack/driver-memory, @objectstack/metadata)
  • content/docs/kernel/services.mdx(via @objectstack/plugin-dev)
  • content/docs/permissions/authentication.mdx(via @objectstack/driver-memory, @objectstack/plugin-hono-server, @objectstack/runtime)
  • content/docs/permissions/authorization.mdx(via packages/runtime)
  • content/docs/permissions/system-context.mdx(via packages/runtime)
  • content/docs/plugins/index.mdx(via @objectstack/driver-memory, @objectstack/plugin-hono-server)
  • content/docs/plugins/packages.mdx(via @objectstack/driver-memory, @objectstack/metadata, @objectstack/plugin-dev, @objectstack/plugin-hono-server, @objectstack/runtime)
  • content/docs/protocol/kernel/http-protocol.mdx(via @objectstack/metadata, @objectstack/plugin-hono-server, @objectstack/runtime)
  • content/docs/protocol/kernel/index.mdx(via @objectstack/runtime)
  • content/docs/protocol/kernel/lifecycle.mdx(via @objectstack/runtime)
  • content/docs/protocol/kernel/metadata-service.mdx(via @objectstack/metadata)
  • content/docs/protocol/knowledge.mdx(via @objectstack/knowledge-memory)
  • content/docs/protocol/objectql/query-syntax.mdx(via @objectstack/driver-memory)

5 release-owned page(s) also reference the affected code. These are read-only:

  • content/docs/releases/implementation-status.mdx(via @objectstack/driver-memory, @objectstack/plugin-hono-server, @objectstack/runtime)
  • content/docs/releases/v12.mdx(via @objectstack/metadata)
  • content/docs/releases/v16.mdx(via @objectstack/plugin-hono-server)
  • content/docs/releases/v17.mdx(via @objectstack/plugin-dev, @objectstack/runtime)
  • content/docs/releases/v9.mdx(via @objectstack/metadata)

content/docs/releases/ is RELEASE-OWNED (AGENTS.md "Documentation Guardrails"): release
notes are written centrally at release time, and a code PR that edits them is the exact PR
that guardrail exists to stop. They are still audited — read-only. If one of them is actually
wrong, file an issue or open a dedicated docs-only PR; do not edit it here.

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

@qq9340100qq9340100 added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Aug 13, 2026 — with Claude
@qq9340100
qq9340100 marked this pull request as ready for review August 13, 2026 12:31
@qq9340100
qq9340100 added this pull request to the merge queueAug 13, 2026
Merged via the queue into main with commit 2befe60Aug 13, 2026
29 checks passed
@qq9340100
qq9340100 deleted the claude/issue-8391-spec-qa-alias-entries branch August 13, 2026 12:49
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xsskip-changesetPR has no user-facing published change; bypasses the changeset gatetests

Projects

None yet

2 participants

@qq9340100@claude