Revalidate full-suite Neo.setupClass contamination after test isolation lands
Current Verified State (2026-06-03)
Live V-B-A refreshed this issue against current source, related tickets, and prior triage:
- The original
TypeError: Neo.setupClass is not a function full-suite symptom is not currently reproducible from the last focused check; the observed failure shifted earlier to Chroma/test-config isolation.
- #11976 remains open and assigned. It owns the broader test-determinism problem where tests import mutable
config.mjs operator overlays instead of template/default fixtures.
- #12331 remains open and assigned. It owns unit-test Chroma + SQLite daemon store isolation / orphan-purge.
- PR #12336 and PR #12397 merged important #12331-related isolation work, but #12331 itself is still open, so the unified store-isolation lane is not complete.
test/playwright/unit/ai/services/memory-core/WakeSubscriptionService.spec.mjs still carries a local Neo.get stub with comments referencing #10384.
- Current source search found no direct successor PR closing #10384.
- Knowledge Base is currently unavailable; Memory Core search for this framing returned no prior mapping beyond the live issue comments.
Current Verdict
Keep this issue open, but narrow it. It is not currently a branchable root-cause ticket for Neo.setupClass contamination.
The current value is a post-isolation revalidation and cleanup gate:
- Wait for #11976 and #12331 to complete or become explicitly non-blocking.
- Run a clean revalidation that includes the former reproducer area.
- If the
Neo.setupClass symptom is gone, remove the stale workaround/comment and close this issue as resolved/superseded by the later test-stabilization work.
- If it still reproduces, replace this body with a fresh failure contract based on the new logs.
Contract Ledger
| Surface |
Contract |
| Upstream blockers |
#11976 and #12331 are the active upstream lanes. Do not claim #10384 until they are closed or explicitly ruled out by fresh evidence. |
| Revalidation command |
Run a focused former-reproducer set first: npm run test-unit -- test/playwright/unit/ai/services/ingestion/ConceptIngestor.spec.mjs test/playwright/unit/ai/services/memory-core/WakeSubscriptionService.spec.mjs. If that passes, run the relevant wider AI unit slice or full npm run test-unit only when the environment can safely support it. |
| Workaround audit |
Inspect WakeSubscriptionService.spec.mjs for the Neo.get workaround referencing #10384. Removal is allowed only after the former-reproducer set passes without it. |
| Failure classification |
If failures appear before Neo.setupClass, classify them under the active upstream test-config/store-isolation tickets, not this ticket. |
| Closure condition |
Close this issue only after either: (a) revalidation passes and the stale workaround is removed or explicitly proven harmless; or (b) a fresh ticket/PR supersedes the remaining concrete failure with exact logs. |
Acceptance Criteria
Out of Scope
- Solving config-overlay import determinism (#11976).
- Solving Chroma / SQLite test-store isolation (#12331).
- Broad production changes to
Neo.setupClass.
Origin Session ID: 09444f9b-9ae1-4d9a-81a4-02e885870417
Revalidate full-suite
Neo.setupClasscontamination after test isolation landsCurrent Verified State (2026-06-03)
Live V-B-A refreshed this issue against current source, related tickets, and prior triage:
TypeError: Neo.setupClass is not a functionfull-suite symptom is not currently reproducible from the last focused check; the observed failure shifted earlier to Chroma/test-config isolation.config.mjsoperator overlays instead of template/default fixtures.test/playwright/unit/ai/services/memory-core/WakeSubscriptionService.spec.mjsstill carries a localNeo.getstub with comments referencing #10384.Current Verdict
Keep this issue open, but narrow it. It is not currently a branchable root-cause ticket for
Neo.setupClasscontamination.The current value is a post-isolation revalidation and cleanup gate:
Neo.setupClasssymptom is gone, remove the stale workaround/comment and close this issue as resolved/superseded by the later test-stabilization work.Contract Ledger
npm run test-unit -- test/playwright/unit/ai/services/ingestion/ConceptIngestor.spec.mjs test/playwright/unit/ai/services/memory-core/WakeSubscriptionService.spec.mjs. If that passes, run the relevant wider AI unit slice or fullnpm run test-unitonly when the environment can safely support it.WakeSubscriptionService.spec.mjsfor theNeo.getworkaround referencing #10384. Removal is allowed only after the former-reproducer set passes without it.Neo.setupClass, classify them under the active upstream test-config/store-isolation tickets, not this ticket.Acceptance Criteria
TypeError: Neo.setupClass is not a function.WakeSubscriptionService.spec.mjsno longer carries a stale #10384 workaround, or the PR documents why it remains necessary with current evidence.Out of Scope
Neo.setupClass.Origin Session ID: 09444f9b-9ae1-4d9a-81a4-02e885870417