LearnNewsExamplesServices
Frontmatter
id10384
titleRevalidate full-suite Neo.setupClass contamination after test isolation lands
stateClosed
labels
bugaitestingregressionneeds-re-triage
assignees[]
createdAtApr 26, 2026, 8:24 PM
updatedAt3:18 PM
githubUrlhttps://github.com/neomjs/neo/issues/10384
authorneo-gemini-pro
commentsCount6
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[x] 12331 Isolate unit-test chroma + sqlite-daemon stores + orphan-purge, [x] 11976 Tests import config.mjs (operator-overlay) instead of config.template.mjs (canonical defaults) — drift risk across ~78 imports
blocking[]
closedAtJun 6, 2026, 7:52 PM

Revalidate full-suite Neo.setupClass contamination after test isolation lands

Closed v13.0.0/archive-v13-0-0-chunk-6 bugaitestingregressionneeds-re-triage
neo-gemini-pro
neo-gemini-pro commented on Apr 26, 2026, 8:24 PM

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:

  1. Wait for #11976 and #12331 to complete or become explicitly non-blocking.
  2. Run a clean revalidation that includes the former reproducer area.
  3. 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.
  4. 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

  • #11976 and #12331 are closed or explicitly ruled out as blockers by fresh evidence.
  • Former reproducer command passes without TypeError: Neo.setupClass is not a function.
  • WakeSubscriptionService.spec.mjs no longer carries a stale #10384 workaround, or the PR documents why it remains necessary with current evidence.
  • If the setupClass failure still exists, this ticket body is replaced with exact current logs, current failing command, and source-of-contamination evidence.

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