LearnNewsExamplesServices
Frontmatter
id17108
titleBare unit runs could write synthetic fixtures into production Memory Core collections
stateClosed
labels
bugaiagent-os
assigneesneo-gpt
createdAtAug 14, 2026, 12:36 PM
updatedAtAug 14, 2026, 1:29 PM
githubUrlhttps://github.com/neomjs/neo/issues/17108
authorneo-opus-grace
commentsCount2
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtAug 14, 2026, 1:19 PM

Bare unit runs could write synthetic fixtures into production Memory Core collections

Closed Backlog/active-chunk-16 bugaiagent-os
neo-opus-grace
neo-opus-grace commented on Aug 14, 2026, 12:36 PM

Intake result — already fixed in canonical runners

The observed symptom was real: the deployed Memory Core corpus contains summaries whose source memories exactly match fixtures from test/playwright/unit/ai/services/memory-core/SessionService.spec.mjs, including sum_other. Those rows can distort query_summaries candidate sets.

The proposed current-code cause did not survive falsification.

At exact live dev 45570db8e75b327475d8230e28f52e293ab1ab2f, every repository-owned Playwright config imports test/playwright/configTemplateResolver.mjs. An exact child-process probe with UNIT_TEST_MODE and NEO_TEST_CONFIG_TEMPLATES initially absent resolved:

  • NEO_TEST_CONFIG_TEMPLATES=true;
  • engines.chroma.useTestDatabase=true;
  • Chroma host/port localhost:18180;
  • Chroma database selection neo-unit-test;
  • per-run test-memory-*, test-session-*, and test-temporal-summary-* collections.

The resolver boundary landed in #15134. The Chroma database and collection isolation landed in #15229 (fc5fe10a569) on 2026-07-16, before the observed August fixture rows. A standard bare npx playwright test therefore does not select production Chroma on current dev.

Correction to the prior intake

The earlier body claimed that a bare Playwright invocation set TEST_WORKER_INDEX without setting NEO_TEST_CONFIG_TEMPLATES. That is false for every canonical Playwright config in the repository: the resolver is imported before test dependencies and sets the boundary in both runner and worker processes.

Adding assertTestWriteIsolated() to CollectionProxy would not repair the observed historical path:

  • a stale checkout that predates the existing isolation also predates any new proxy guard;
  • current canonical runners are already isolated by construction;
  • no supported current runner that reaches production Chroma was reproduced.

The fixture rows therefore prove historical or noncanonical execution, not a missing current production invariant. Shipping a second guard without a reachable current failure would be defense-in-depth theater rather than a bug fix.

Preserved findings

  • Do not sort query_summaries by projected raw relevanceScore; StorageRouter intentionally orders by semantic score multiplied by the topology signal.
  • Do not filter timestamp:null; #17076/#17077 deliberately retain malformed rows and report malformedTimestamps.
  • Do not introduce a semantic substantivity classifier from these fixtures.
  • Raw-memory cron-poll attractors are a separate legitimate production-emission population and are outside this fixture-cleanup finding.

Resolution

No repository change is warranted. #15134 and #15229 already own the current prevention contract. Removing the exact historical rows from a live corpus is a bounded operator data-cleanup action, not a reusable code path; it must enumerate exact ids and requires explicit destructive-action authority. No heuristic or broad deletion is authorized by this ticket.

Origin Session ID: 471d17f2-777c-4676-a137-fa37a9ac834d

Retrieval Hint: #17108 configTemplateResolver Chroma neo-unit-test current runner already isolated