Summary
workflow-interface-registry.yml and 8 of the 9 files in workflow-templates/ pin Quantum-L9/l9-ci-core at @v1 and describe a 9-kernel workflow set (pr-pipeline.yml, release-publish.yml, nightly.yml, pre-commit-ci.yml, trio-governance.yml, security.yml, scorecard.yml, sbom.yml, l9-self-ci.yml). None of this exists in l9-ci-core anymore.
Verified facts
l9-ci-core has exactly one git tag: v0.1.0. There is no v1 tag/ref of any kind (checked git tag + git api .../git/refs).
l9-ci-core's main branch is on v2.0.0 (per its README.md), a "thin control plane" rewrite. Its current .github/workflows/ contains governance-ci.yml, normalize-semgrep-report.yml, profile-normalize-semgrep.yml, publish-analysis.yml, release-validation.yml, sdk-contract-check.yml, self-ci.yml — none of which match the 9 kernel files the registry describes.
- The registry's
current_sha (2b330a5aab90cd7781bef08f14c5e7904b61bc56) is a real historical commit in l9-ci-core, and at that commit the 9 kernel files (pr-pipeline.yml etc.) did exist. So the registry was accurate once, but was never updated after the v2 rewrite retired that layout.
- Affected starter templates (all reference
Quantum-L9/l9-ci-core/.github/workflows/<file>.yml@v1):
workflow-templates/l9-pr-pipeline.yml
workflow-templates/l9-release.yml
workflow-templates/l9-nightly.yml
workflow-templates/l9-pre-commit.yml
workflow-templates/l9-governance.yml
workflow-templates/l9-security.yml
workflow-templates/l9-scorecard.yml
workflow-templates/l9-sbom.yml
workflow-templates/l9-node-ts-monorepo.yml (its security/scorecard sub-jobs use the same broken refs)
Impact
Any repo that clicks "Set up this workflow" on one of these 9 starters today gets a workflow that fails immediately (workflow was not found) the first time it runs, because GitHub cannot resolve l9-ci-core/.github/workflows/<file>.yml@v1.
Why this wasn't caught
Quantum-L9/.github has no CI of its own (no .github/workflows/ in this repo), so ops/validate-starters.sh only runs when someone remembers to invoke it manually. Even then, it only validates structural things (matching .properties.json, required fields, no @main references) — it never actually resolves whether the pinned ref/file exists in the target repo. A drift like this (target repo rewritten, ref abandoned) is invisible to it by design.
Suggested fix
- Decide the org's actual posture toward
l9-ci-core v2:
- If v2's phase-scoped model (
profile-normalize-semgrep.yml, publish-analysis.yml, etc.) is the intended replacement, rewrite the affected starter templates to call the correct v2 workflow names/inputs, or retire the ones with no v2 equivalent (pr-pipeline, release-publish, nightly, pre-commit-ci, trio-governance, scorecard, sbom, l9-self-ci currently have no v2 counterpart at all per l9-ci-core's own docs/consumer-lint-test.md, which explicitly moved generic lint/test to a copy-in template pattern instead of a reusable workflow).
- If
l9-ci-core should still expose a v1-compatible surface, cut an actual v1 tag at (or forward-ported from) the last commit where the 9 kernels existed, and keep it alive alongside v2.
- Update
current_ref/current_sha and the kernels: list in workflow-interface-registry.yml to match whatever is decided.
- Consider adding a scheduled CI check in
Quantum-L9/.github (there is currently none) that resolves each starter's uses: target and fails if the file/ref doesn't exist in the target repo — ops/validate-starters.sh as it stands cannot catch this class of drift.
Related
Related to the org-defaults gap tracked in #6 (missing local LICENSE/ISSUE_TEMPLATE cascade) — same root cause of org-level config drifting without a feedback loop back from consumer repos.
Summary
workflow-interface-registry.ymland 8 of the 9 files inworkflow-templates/pinQuantum-L9/l9-ci-coreat@v1and describe a 9-kernel workflow set (pr-pipeline.yml,release-publish.yml,nightly.yml,pre-commit-ci.yml,trio-governance.yml,security.yml,scorecard.yml,sbom.yml,l9-self-ci.yml). None of this exists inl9-ci-coreanymore.Verified facts
l9-ci-corehas exactly one git tag:v0.1.0. There is nov1tag/ref of any kind (checkedgit tag+git api .../git/refs).l9-ci-core'smainbranch is on v2.0.0 (per itsREADME.md), a "thin control plane" rewrite. Its current.github/workflows/containsgovernance-ci.yml,normalize-semgrep-report.yml,profile-normalize-semgrep.yml,publish-analysis.yml,release-validation.yml,sdk-contract-check.yml,self-ci.yml— none of which match the 9 kernel files the registry describes.current_sha(2b330a5aab90cd7781bef08f14c5e7904b61bc56) is a real historical commit inl9-ci-core, and at that commit the 9 kernel files (pr-pipeline.ymletc.) did exist. So the registry was accurate once, but was never updated after the v2 rewrite retired that layout.Quantum-L9/l9-ci-core/.github/workflows/<file>.yml@v1):workflow-templates/l9-pr-pipeline.ymlworkflow-templates/l9-release.ymlworkflow-templates/l9-nightly.ymlworkflow-templates/l9-pre-commit.ymlworkflow-templates/l9-governance.ymlworkflow-templates/l9-security.ymlworkflow-templates/l9-scorecard.ymlworkflow-templates/l9-sbom.ymlworkflow-templates/l9-node-ts-monorepo.yml(itssecurity/scorecardsub-jobs use the same broken refs)Impact
Any repo that clicks "Set up this workflow" on one of these 9 starters today gets a workflow that fails immediately (
workflow was not found) the first time it runs, because GitHub cannot resolvel9-ci-core/.github/workflows/<file>.yml@v1.Why this wasn't caught
Quantum-L9/.githubhas no CI of its own (no.github/workflows/in this repo), soops/validate-starters.shonly runs when someone remembers to invoke it manually. Even then, it only validates structural things (matching.properties.json, required fields, no@mainreferences) — it never actually resolves whether the pinned ref/file exists in the target repo. A drift like this (target repo rewritten, ref abandoned) is invisible to it by design.Suggested fix
l9-ci-corev2:profile-normalize-semgrep.yml,publish-analysis.yml, etc.) is the intended replacement, rewrite the affected starter templates to call the correct v2 workflow names/inputs, or retire the ones with no v2 equivalent (pr-pipeline,release-publish,nightly,pre-commit-ci,trio-governance,scorecard,sbom,l9-self-cicurrently have no v2 counterpart at all perl9-ci-core's owndocs/consumer-lint-test.md, which explicitly moved generic lint/test to a copy-in template pattern instead of a reusable workflow).l9-ci-coreshould still expose av1-compatible surface, cut an actualv1tag at (or forward-ported from) the last commit where the 9 kernels existed, and keep it alive alongside v2.current_ref/current_shaand thekernels:list inworkflow-interface-registry.ymlto match whatever is decided.Quantum-L9/.github(there is currently none) that resolves each starter'suses:target and fails if the file/ref doesn't exist in the target repo —ops/validate-starters.shas it stands cannot catch this class of drift.Related
Related to the org-defaults gap tracked in #6 (missing local
LICENSE/ISSUE_TEMPLATEcascade) — same root cause of org-level config drifting without a feedback loop back from consumer repos.