Context
First CI run after the v13 release's post-publish sync: test/playwright/unit/apps/portal/view/news/discussions/Component.spec.mjs:193 fails deterministically (3/3 incl. retries) with ENOENT: resources/content/discussions/chunk-2/discussion-11891.md. Surfaced by the operator from the PR #12971 CI logs.
Release classification: post-release, fix-fast — it reds the unit suite for every PR until fixed (the suite was honest-green 53/0-class before the release sync landed).
The Problem
The test pins the markdown parser's timeline-HTML-escaping behavior by reading a LIVE synced-content file as its fixture (Component.spec.mjs:195). The v13 post-release sync (c6cd0bebf "chore: ticket sync") archived older discussions, which re-balanced the ordinal-100 chunk layout: discussion-11891.md moved chunk-2/ → chunk-1/ (verified via git ls-tree origin/dev). Any future sync can move it again — the coupling is brittle BY DESIGN of the chunk layout, not by accident.
The Architectural Reality
resources/content/** is sync-owned, churn-expected substrate (archive moves at every release; chunk ordinals re-balance). Tests asserting FROZEN behavior (parser semantics) must not read sync-mutable paths.
- The parser contract under test is content-independent: it needs A representative discussion markdown with timeline HTML, not THE live #11891 file.
The Fix
- Copy the needed markdown once into a committed test fixture (e.g.
test/playwright/unit/apps/portal/view/news/discussions/fixtures/discussion-timeline.md) and point the spec at it. The fixture freezes the parser-relevant shape; live-content drift becomes irrelevant.
- Sweep AC: audit the other specs reading
resources/content/** (grep hits include TreeList.spec, PortalContentIndexes.spec, TicketIndex.spec, check-chore-sync.spec etc.) — index/infra tests legitimately read the live tree; any OTHER spec pinning behavior on a SPECIFIC synced file gets the same fixture treatment.
Acceptance Criteria
Out of Scope
- The two memory-core flaky tests from the same CI run (sibling ticket).
Related
PR #12971 (the run that surfaced it), c6cd0bebf (the sync commit), #12696 (the release).
Sweep note: live latest-open sweep waived under the active GitHub API rate-limit exhaustion; defects born this hour, session-fresh knowledge confirms no duplicate.
Origin Session ID: e605ce21-3668-445c-bc00-45896aa9a092
Retrieval Hint: "discussions chunk fixture ENOENT sync-mutable path parser test"
Context
First CI run after the v13 release's post-publish sync:
test/playwright/unit/apps/portal/view/news/discussions/Component.spec.mjs:193fails deterministically (3/3 incl. retries) withENOENT: resources/content/discussions/chunk-2/discussion-11891.md. Surfaced by the operator from the PR #12971 CI logs.Release classification:post-release, fix-fast — it reds the unit suite for every PR until fixed (the suite was honest-green 53/0-class before the release sync landed).The Problem
The test pins the markdown parser's timeline-HTML-escaping behavior by reading a LIVE synced-content file as its fixture (
Component.spec.mjs:195). The v13 post-release sync (c6cd0bebf"chore: ticket sync") archived older discussions, which re-balanced the ordinal-100 chunk layout:discussion-11891.mdmovedchunk-2/→chunk-1/(verified viagit ls-tree origin/dev). Any future sync can move it again — the coupling is brittle BY DESIGN of the chunk layout, not by accident.The Architectural Reality
resources/content/**is sync-owned, churn-expected substrate (archive moves at every release; chunk ordinals re-balance). Tests asserting FROZEN behavior (parser semantics) must not read sync-mutable paths.The Fix
test/playwright/unit/apps/portal/view/news/discussions/fixtures/discussion-timeline.md) and point the spec at it. The fixture freezes the parser-relevant shape; live-content drift becomes irrelevant.resources/content/**(grep hits includeTreeList.spec,PortalContentIndexes.spec,TicketIndex.spec,check-chore-sync.specetc.) — index/infra tests legitimately read the live tree; any OTHER spec pinning behavior on a SPECIFIC synced file gets the same fixture treatment.Acceptance Criteria
Out of Scope
Related
PR #12971 (the run that surfaced it),
c6cd0bebf(the sync commit), #12696 (the release).Sweep note: live latest-open sweep waived under the active GitHub API rate-limit exhaustion; defects born this hour, session-fresh knowledge confirms no duplicate.
Origin Session ID: e605ce21-3668-445c-bc00-45896aa9a092
Retrieval Hint: "discussions chunk fixture ENOENT sync-mutable path parser test"