Filed unassigned by the dev agent on #8351, whose declared file surface was the gate script only (vitest configs read, never edited). This is the remediation half; the gate half is the PR on #8351.
What is wrong
Each config below aliases @objectstack/core to core/src/index.ts and aliases bare @objectstack/spec to a FILE, with per-subpath entries above it — but no entry for the subpath that @objectstack/core's own source reaches. An alias list matches by PREFIX, so the bare @objectstack/spec entry wins and yields the nonsensical spec/src/index.ts/qa.
Measured with a throwaway probe through the real vitest pipeline in packages/drivers/driver-memory:
Error: ENOTDIR: not a directory, open '.../packages/spec/src/index.ts/qa'
Why the suites are green anyway
packages/core/src/index.ts really does export * as QA from './qa/index.js' at run time, and core/src/qa/{adapter,runner,http-adapter}.ts each write import * as QA from '@objectstack/spec/qa'. Every QA. use in those three files is a TYPE position (action: QA.TestAction, as QA.TestAction), so esbuild elides the import exactly as if it were import type — the specifier never reaches the resolver.
So this is latent, not currently-red: the same "green by luck of coverage, not by resolution" shape #8351 describes. The first value use of anything from @objectstack/spec/qa inside @objectstack/core — one Zod schema — kills every test file in all six packages at load, the way #7378 did for /shared.
The list (each is one alias entry)
| config | missing entry |
|---|
packages/metadata | @objectstack/spec/qa |
packages/runtime | @objectstack/spec/qa |
packages/drivers/driver-memory | @objectstack/spec/qa |
packages/plugins/plugin-dev | @objectstack/spec/qa |
packages/plugins/plugin-hono-server | @objectstack/spec/qa |
packages/plugins/knowledge-memory | @objectstack/spec/qa, @objectstack/spec/api |
Each fix is the same one-liner already used for /shared, placed ABOVE the bare @objectstack/spec entry (adjust the ../ depth per package — two levels for the nested ones, one for packages/metadata and packages/runtime):
'@objectstack/spec/qa': path.resolve(__dirname,'../../spec/src/qa/index.ts'),
Note the affected set is NOT #8351's five: knowledge-ragflow is clean on this axis, while packages/metadata and packages/runtime are affected and were not previously named.
Sequencing
The #8351 gate PR reports exactly these seven as rule-5 failures, so it cannot land green until they are fixed. #8351 remains open and is not addressed by this card; the two are companion halves and want to land together or back-to-back.
Verify with node scripts/check-test-source-alias.mjs on the #8351 branch.
Filed unassigned by the dev agent on #8351, whose declared file surface was the gate script only (vitest configs read, never edited). This is the remediation half; the gate half is the PR on #8351.
What is wrong
Each config below aliases
@objectstack/coretocore/src/index.tsand aliases bare@objectstack/specto a FILE, with per-subpath entries above it — but no entry for the subpath that@objectstack/core's own source reaches. An alias list matches by PREFIX, so the bare@objectstack/specentry wins and yields the nonsensicalspec/src/index.ts/qa.Measured with a throwaway probe through the real vitest pipeline in
packages/drivers/driver-memory:Why the suites are green anyway
packages/core/src/index.tsreally doesexport * as QA from './qa/index.js'at run time, andcore/src/qa/{adapter,runner,http-adapter}.tseach writeimport * as QA from '@objectstack/spec/qa'. EveryQA.use in those three files is a TYPE position (action: QA.TestAction,as QA.TestAction), so esbuild elides the import exactly as if it wereimport type— the specifier never reaches the resolver.So this is latent, not currently-red: the same "green by luck of coverage, not by resolution" shape #8351 describes. The first value use of anything from
@objectstack/spec/qainside@objectstack/core— one Zod schema — kills every test file in all six packages at load, the way #7378 did for/shared.The list (each is one alias entry)
packages/metadata@objectstack/spec/qapackages/runtime@objectstack/spec/qapackages/drivers/driver-memory@objectstack/spec/qapackages/plugins/plugin-dev@objectstack/spec/qapackages/plugins/plugin-hono-server@objectstack/spec/qapackages/plugins/knowledge-memory@objectstack/spec/qa,@objectstack/spec/apiEach fix is the same one-liner already used for
/shared, placed ABOVE the bare@objectstack/specentry (adjust the../depth per package — two levels for the nested ones, one forpackages/metadataandpackages/runtime):Note the affected set is NOT #8351's five:
knowledge-ragflowis clean on this axis, whilepackages/metadataandpackages/runtimeare affected and were not previously named.Sequencing
The #8351 gate PR reports exactly these seven as rule-5 failures, so it cannot land green until they are fixed. #8351 remains open and is not addressed by this card; the two are companion halves and want to land together or back-to-back.
Verify with
node scripts/check-test-source-alias.mjson the #8351 branch.