Skip to content

fix(coding-agent): clone sticky-viewport fixture instead of recapturing - #3358

Merged
Yeachan-Heo merged 1 commit into
devfrom
fix/dev-ci-sticky-viewport-fixture-isolation
Jul 28, 2026
Merged

fix(coding-agent): clone sticky-viewport fixture instead of recapturing#3358
Yeachan-Heo merged 1 commit into
devfrom
fix/dev-ci-sticky-viewport-fixture-isolation

Conversation

@Yeachan-Heo

Copy link
Copy Markdown
Owner

Dev CI shard-2 repair

Fixes the red post-merge dev at a551d8ee: sticky viewport production evidence verifier > fails closed for semantic evidence and provenance corruption timed out at 15000ms in run 30319457639 / job 90152948696.

Root cause — deterministic, not flaky

The test called capture() seven times. Each call spawns a capture-sticky-viewport-showcase.ts subprocess measured at ~2.2s locally (2.17 / 2.21 / 2.19s), so the body required ~15.4s of fixture setup alone against a 15s budget. It fails every run, not intermittently.

The ENOENT: no such file or directory, open '/tmp/sticky-viewport-showcase-.../manifest.json' in the CI log is a symptom, not the cause: when the test times out, the shared afterEach rm -rfs the temp roots while the body is still awaiting, so a later assertion reports a vanished fixture. Chasing that ENOENT leads away from the real problem.

Fix

Capture once, then clone per corruption case with fs.cp — the exact idiom the neighbouring table-driven test (rejects table-driven manifest, metadata, and review-input corruption) already uses.

Capture output is byte-identical across runs (verified with diff -r on two independent captures), so cloning preserves per-case isolation exactly. Each case still gets its own mutable root registered in roots for cleanup.

No timeout inflation, no retry masking, no rerun-only response, no assertion weakened. All seven corruption assertions are unchanged; the 15000ms budget is untouched. One test file changed, +17/-7.

Verification

Check Result
Focused test, 5 consecutive runs 5/5 pass, 2.79–2.87s (was 15008ms timeout)
Full sticky-viewport-showcase.test.ts 9/9 pass, 14.35s
Causality — revert the change, rerun reproduces the 15009ms timeout
Adjacent shard-2 files (gjc-ui-redesign, light-theme-compliance) 19/19 pass
bun --cwd=packages/coding-agent run check:types clean
biome check on the changed file clean

Causality is demonstrated in both directions: reverting reproduces the failure, applying fixes it.


[repo owner's gaebal-gajae (clawdbot) 🦞]

`fails closed for semantic evidence and provenance corruption` timed out
deterministically at its 15000ms budget on dev CI shard 2.

The test called `capture()` seven times. Each call spawns a
`capture-sticky-viewport-showcase.ts` subprocess measured at ~2.2s
locally, so the body needed ~15.4s of pure fixture setup against a 15s
budget. On timeout the shared `afterEach` rm -rf'd the temp roots while
the body was still awaiting, surfacing a misleading
`ENOENT: manifest.json` from a later assertion rather than the real
cause.

Capture once and clone the output per corruption case with `fs.cp`,
matching the idiom the neighbouring table-driven test already uses.
Capture output is byte-identical across runs (verified with `diff -r`),
so cloning preserves per-case isolation exactly.

No timeout inflation, no retry masking, no assertion weakened; all seven
corruption assertions are unchanged.

Verified: focused test 5/5 pass at ~2.8s (was 15008ms timeout); full
sticky-viewport file 9/9 pass; reverting the change reproduces the
timeout, confirming causality; `check:types` and biome clean.

—
*[repo owner's gaebal-gajae (clawdbot) 🦞]*
@Yeachan-Heo
Yeachan-Heo merged commit d5995cf into dev Jul 28, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant