Repository navigation
fix(ci): repair the workflow that has failed every run since 2026-08-23 - #1
Merged
Merged
Conversation
apps/console had no tests at all. Its `test` script delegated to scripts/run-node-tests.mjs, which printed "No compiled tests found; skipping." and exited 0, so CI stayed green with zero coverage on the console app. The new tests boot the real HTTP server on an ephemeral port and exercise the public routes end to end, with no mocks: GET /health, GET /, an unknown route (404) and the POST /run SSE stream. 5 new tests. Verified: pnpm build && pnpm test && pnpm typecheck all green on Node 22.23.2.
The evidence-native quality gate only means something if "no tests" is a
failure. run-node-tests.mjs exited 0 whenever dist/test was missing or held no
*.test.js, which is how apps/console shipped with zero tests while CI looked
healthy — contradicting the gate semantics documented in the jp-si workflow
("the gate FAILS if zero tests run").
Now it exits 1 with an actionable message.
Verified: a directory without dist/test exits 1; every workspace package still
passes (packages/core 64, apps/cli 10, runtimes/cli 6, apps/console 5,
runtimes/fake 4, runtimes/deepseek 3 — 92 tests, 3 skipped without Docker).
`if: ${{ secrets.OPENCODE_GO_API_KEY != '' }}` is not valid in a job-level
condition: GitHub only exposes github/needs/vars/inputs to jobs.<job_id>.if.
The whole workflow file therefore failed schema validation, and all 7 runs of
this workflow failed before creating a single job (the Actions API reports
total_count 0 for each). CI has been dead since 2026-08-23.
Gate the opt-in Pi job on the repository variable TAKUMI_PI_INTEGRATION and keep
passing the secret to the step through env (env, not secrets, is what step-level
conditions may read).
Verified with act 0.2.89: `act -l` now lists the workflow jobs instead of
"Actions YAML Schema Validation Error".
…heckout
runtimes/pi is deliberately not a pnpm workspace member (it depends on the
unpublished @earendil-works/pi-coding-agent SDK), so `pnpm install` and
`pnpm build` at the repo root never produce runtimes/pi/dist. Even with the gate
fixed, `node scripts/pi-smoke.mjs` cannot resolve
../runtimes/pi/dist/index.js on a CI checkout:
Error [ERR_MODULE_NOT_FOUND]: Cannot find module
'/.../runtimes/pi/dist/index.js' imported from scripts/pi-smoke.mjs
Removing the job rather than leaving a permanently broken one, and documenting
how to run the Pi integration check locally in its place.
Two public-metadata fixes: * LICENSE started with "# Takumi", which broke GitHub's license detection: the repository API reported `spdx_id: NOASSERTION` (i.e. no license) while the README badge claimed MIT. Licensee detects the file once the first line is "MIT License"; the rest of the text was already stock MIT. * Neither README carried a CI badge, so seven consecutive red runs went unnoticed for three weeks. The badge now makes build status visible.
The Japanese SI V-model workflow shipped Chinese prompts mixed into otherwise Japanese text, in both copies of jp-si-standard/workflow.yaml (steps requirements, basic_design, detailed_design, unit_test, integration_test, evidence, delivery), plus a fully Chinese requirements list in the minimal-vmodel example. For a Japanese SI deliverable flow this is not cosmetic: the prompt language drives the language of the generated requirements/design/test artifacts. All seven prompts and the requirements list are now Japanese, consistent with the rest of the workflow.
manager-loop.ts and acceptance-gates-core.test.ts carried Chinese fragments in otherwise English comments. Comments belong to the English-only policy for code.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Every CI run of this repository has failed since 2026-08-23: 7 runs, all with zero jobs created (
gh run listreports0sfor each, and the runs API returnstotal_count: 0for jobs).Root cause — the job-level condition below is not valid:
GitHub only exposes
github,needs,varsandinputstojobs.<job_id>.if, so the whole workflow file failed schema validation before any job could be created.What changed (7 commits)
test(console)—apps/consolehad no tests at all. 5 new tests boot the real HTTP server on an ephemeral port and exerciseGET /health,GET /, an unknown route (404) and thePOST /runSSE stream. No mocks.fix(test)—scripts/run-node-tests.mjsreported a green run for a package with zero tests ("No compiled tests found; skipping." + exit 0), which contradicts the gate semantics this project documents ("the gate FAILS if zero tests run"). It now exits 1.fix(ci)— make the workflow parse: gate the opt-in Pi job on theTAKUMI_PI_INTEGRATIONrepository variable and keep passing the secret through stepenv.chore(ci)— drop thepi-integrationjob.runtimes/piis deliberately not a pnpm workspace member (it depends on the unpublished@earendil-works/pi-coding-agentSDK), sopnpm install/pnpm buildnever produceruntimes/pi/distandnode scripts/pi-smoke.mjsfails withERR_MODULE_NOT_FOUNDon any clean checkout. How to run it locally is documented in the workflow file.docs—LICENSEstarted with# Takumi, which broke GitHub's license detection (spdx_id: NOASSERTION— i.e. "no license") while the README badge claimed MIT; first line is nowMIT License. Also added a CI status badge to both READMEs so a red build is visible from the front page.docs(i18n)— the Japanese SI V-model workflow shipped Chinese prompts (7 of them, in both copies ofjp-si-standard/workflow.yaml) plus a Chinese requirements list in theminimal-vmodelexample. Prompt language drives the language of the generated requirements/design/test artifacts, so these are now Japanese.chore— Chinese fragments in comments inpackages/core(manager-loop.ts,acceptance-gates-core.test.ts) replaced with English.Verification (clean checkout of this branch, Node 22.23.2 / pnpm 10.34.5)
Test count went from 87 → 92 (
apps/consolefrom 0 → 5).Notes
push: branches: [main, dev]still listsmain, which does not exist in this repository — left as is; say the word and I will drop it.[20, 22]; bumping to[22, 24](plusengines/badge) is a separate follow-up.checkout@v4,setup-node@v4,pnpm/action-setup@v4) and workflow hardening (permissions,concurrency,timeout-minutes) are intentionally out of scope for this PR.