lore: lore/implementation-loop/issue-1510 - #1684
Conversation
scripts/check-ci-coverage.test.mjs fails now because apps/cluster-agent, apps/event-router, and apps/vscode-extension each declare a vitest.config.ts but appear in no pr-checks.yml test matrix entry. The guard passes once all three are wired up. Links specs/testing-standards requirement 3 (Attributable CI). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
🔍 Lore Spec ImpactExamined 4 changed file(s): 0 had graph data (no coupling found), 3 had none — no ingested test run covers them, so this check cannot speak for them. Also read 1 changed spec/ADR at statement level. 1 changed statement(s) had no validating test, so no coverage broke. 1 new statement(s) have no test link yet. Deterministic · graph @ |
…cks matrix All three packages declare a vitest.config.ts but had no CI job, so their suites ran locally but never on a PR. Each depends on @re-cinq/lore-shared so the build step mirrors the other app-level entries. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Lore implementation-loop run failed (failed — node "validate" failed: validation failed: lint $ lint ✖ 10 problems (10 errors, 0 warnings) |
|
Lore implementation-loop run failed (iteration_max — AssemblyLine implementation-loop: node "validate" failed: validation failed: lint $ lint ✖ 10 problems (10 errors, 0 warnings) |
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Lore implementation-loop run failed (failed — node "ready-for-review" failed: BackoffLimitExceeded: Job has reached the specified backoff limit — The pod died rather than the work failing — a crash, an OOM, an eviction, or a Job deadline. Re-running is the right response; check pod events if it repeats.) — 52c3fdd5-88a3-4d66-a2fe-134a89d30fd6. |
Three packages —
apps/cluster-agent,apps/event-router, andapps/vscode-extension— each had avitest.config.tsand a populated test suite that no CI job ran. A regression in any of them would sail through PR review undetected, because nothing asked the question.This PR closes that gap in two commits that follow the same red-green-refactor shape the DoD required: a failing guard first, then the CI additions that make it pass.
The guard (
scripts/check-ci-coverage.test.mjs) scansapps/andlibs/for directories that have both avitest.config.tsand apackage.json, then checks.github/workflows/pr-checks.ymlfor either therelDirstring or the package name. Any directory that has a test config but no CI entry is reported in the assertion failure message, so a future developer who adds a new subproject without wiring a CI job sees an actionable failure rather than silent green. The test runs as part of the existingscriptsmatrix entry (find scripts -name '*.test.mjs' -print0 | xargs -0 node --test), so it gates every PR at no extra workflow cost.The guard is linked from
specs/testing-standards/spec.mdrequirement 3 ("Attributable CI") atspecs/testing-standards/spec.md:36. The link target isscripts/check-ci-coverage.test.mjs#L38, which is correct after this branch.The CI additions add three entries to the
pr-checks.ymlmatrix, each with abuild: npm run build -w @re-cinq/lore-sharedpre-step (the three packages import from the compiled shared library) and the workspace-scopednpm testcommand. The entries sit next to thelintjob at line 215, keeping the matrix in alphabetical order.The DoD strategy was "direct" — the real files on disk are the seams, and the test calls the real entry points with no mocks. No deviation from that strategy.
Acceptance test:
scripts/check-ci-coverage.test.mjs::"every package with a vitest.config.ts has a CI job in pr-checks.yml"— was red before the CI additions, green after.