Wire #81 nav-harness into CI blocking gate (browser-capable runner + workflow integration) #83
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
STATUS: ACTIVE — IN-SPRINT (2026-06-22 pivot)
Originally filed as deferred-v2-follow-up under sprint shape (a). Operator pivoted to (b) directly per the future-game-jam-substrate-readiness reasoning + bounded-pivot-cost (Shipwright ~5 min into build, harness logic transfers cleanly). #83 promoted from deferred → active in-sprint slice.
Lane split:
Coordination seam: synchronize on Playwright version + browser-binary path conventions.
Background
Filed 2026-06-22 during the #81 keyboard navigation-tree harness sprint, when Shipwright surfaced an infra fork: cellblock CI client job (.forgejo/workflows/test.yml) runs only
npm ci && npm test(=tsc) on the go-runner (python:3.13-slim, no browsers). A browser-based Playwright suite can't join the blocking CI gate without infra work.Context
#81 harness shipped under Option (a) shape: runnable script +
npm run test:navagainst host /srv/playwright (env-configurable path), runs locally / by-operator / pre-PR. Delivers full TDD value + anti-decay-via-completeness-meta-check when run, but NOT auto-gated by CI.The failure mode (a) carries: future PR-authors must remember to run the harness. Slow-decay, bounded by Shipwright + operator manual verification but not eliminated.
Proposed scope
Wire #81's nav-harness into the blocking CI gate by:
@playwright/test(or the runtime-onlyplaywrightpackage) to client/package.json — risk: browser-download postinstall could slow/break existingnpm ci. Mitigations: cache the browser binaries in the runner, OR useplaywright installas an explicit step gated on the package being needednpm run test:nav(or equivalent) as a blocking stepnpm ci && npm test(tsc) remains fast + green after the additionsTrigger to promote from deferred → active
Lane + size
QM lane primary for the runner-image / runner-config infra change. Shipwright lane for the workflow + npm script integration. Coordination at the seam.
Likely size/M (single substantive feature touching runner + workflow + client devDeps; not L because the harness itself already exists from #81 — this is just wire-into-CI).
Acceptance criteria
npm run test:navruns as part of the client CI jobnpm ci && npm test(tsc) remains green + reasonably fastCross-refs
Anchor
2026-06-22 cellblock next-sprint build, surfaced by Shipwright during #81 implementation. Captures the deferred CI-gate-integration as separable infra lift respecting the original M-scope ratification.
AC-tick pass — completing slice landed via PR #84 @
bd14396fe0(workflow integration + client-nav job). Umbrella substantively complete; closing manually since the PR body marked Part-of-not-Closes per Shipwrights deferral to conductor on umbrella call; close-keyword in merge message did not fire automatically.Slice attribution:
playwrightlabel; /ms-playwright/ contains chromium-1228 + firefox-1532 + webkit-2311.npm run test:navruns as part of client CI job ✓ — workflow client-nav step added in PR #84.npm ci && npm test(tsc) remains green + reasonably fast ✓ — confirmed CI green across all jobs.VERSION-PIN: @playwright/test@1.61.0 in client/package.json matches mcr.microsoft.com/playwright:v1.61.0-jammy image AND host /srv/playwright install (substrate-consistency: host smoke probes + CI tests + chamber-local-runs all use identical version).
DISCIPLINE-INSTANCE: end-to-end (b) integration empirically validated in ONE CI run — QMs runner-infra slice validated under first real workload by Shipwrights PR #84 CI execution. Same shape as Engineer #78 fail-closed-default activated by QMs wiring on #76 — separate slices that prove each other on first joint deploy.
Bonus substrate-care n=1 bus-resident (per promotion-threshold): container-image-registry pushes (especially upstream-fat-image-based-builds like Microsoft Playwright ~748MB browser layer) need nginx body-size headroom; 512m insufficient for playwright-base; 2g comfortable for most upstream-derived images.