fix(ci): guard the backplane editable install — adopt the already-fixed template - #73
Conversation
`Backplane Conformance / emit-reference-run` has failed on every recent branch
here (4 of 4 runs). It dies at
pip install -e .
ERROR: ... does not appear to be a Python project: neither 'setup.py' nor
'pyproject.toml' found.
This repo is deliberately not a distribution — 129 flat root modules, no build
backend — so an unconditional editable install cannot succeed. The job fails,
and `conformance` fails with it via `needs`, which turns the workflow's own
documented opt-in skip into a hard gate failure. The step that would have
skipped cleanly ("No emitter wired yet") was never reached.
DEDUP: not a new fix. stranske/Workflows#3201 already guarded this in
`templates/consumer-repo/.github/workflows/backplane-conformance.yml`. This
file is synced from that template (`.github/sync-manifest.yml`), and its entry
carries no `create_only`, so a future sync overwrites this copy wholesale. The
Orchestrator copy is simply stale: the open sync PR #54 was cut at 07:24, before
#3201 merged, and does not carry it.
So this adopts the upstream content rather than inventing a local variant — the
new file is byte-identical to the template (`cmp` clean), which makes the next
sync a no-op instead of a conflict.
Verified by executing the two shipped steps verbatim in this tree: no packaging
metadata -> "skipping editable install", no emitter -> "the conformance gate
will skip (opt-in)", exit 0. The old step reproduces the CI error exactly.
Scope, deliberately narrow. #3201 also guarded four sibling workflows
(agents-auto-label, agents-capability-check, agents-decompose, agents-dedup),
whose copies here are likewise stale and carry an unguarded
`pip install -e ".[langchain]"`. They are NOT touched: none has ever run in this
repo, so the defect is latent rather than active, and every workflow file
touched risks arming GitHub's suspicious-workflow hold — which costs an owner
click each. The pending sync delivers those guards without spending any.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 34 minutes Limit details: You’ve used the included review currently available. Your 74 included PR review attempts over the past 7 days set your current allowance at 1 review per hour. Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab. How can I continue?Wait for the limit to reset, then comment An organization admin can change what happens after included review limits in Billing. How do review limits work?CodeRabbit enforces per-developer PR review limits within each organization. For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (1)
Comment |
Workflow source neededPR #73 needs either a linked GitHub issue or one valid non-issue Workflow Source before PR metadata automation can manage it safely. Please do one of:
Once a valid source is present, this warning will not be reposted. |
Automated Status SummaryHead SHA: ffbc2dc
Updated automatically; will refresh on subsequent CI/Docker completions. Keepalive checklistScopeNo scope information available Tasks
Acceptance criteria
|
|
Workflow state fingerprint for Agents Gate Followups. Do not edit. |
Seventh floor union on this branch. main a247a55 records 410; the merge result MEASURES 411 with `pytest --collect-only -q` -- main's 410 plus this branch's one test. Measured, never derived: #56 made `collected` an EQUALITY, so an assumed number is a hard RED. #69 also flips CI coverage ON, so this branch's merge is the first to be measured under it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Two follow-ups to #60, found while independently verifying it. 1. The pin file #60 added cited docs/ci/LINT_BASELINE.md; the file it added is docs/CI_LINT_BASELINE.md. docs/ci/ is the Workflows repo layout and does not exist here. That paragraph is the only pointer telling a reader to re-measure the baseline before bumping a pin, so it pointed nowhere. 2. test_ci_gate_config.py read the pin file CONTENTS thoroughly and its PROSE not at all, which is where (1) lived. test_every_cited_repo_path_resolves requires every repo-relative docs/, scripts/ or tools/ path cited in the two config files this repo OWNS to resolve. Scoped to those two: pr-00-gate.yml adds six findings that are all correct as written (check_issue_consistency.py behind hashFiles(...) != %s with a named skip, ledger_validate.py behind a .agents check, docs/ci/WORKFLOWS.md upstream), and a test that cries wolf gets waived. The upstream marker is scoped per PARAGRAPH, not per line, because the prose wraps and docs/ci/WORKFLOWS.md is quoted three lines below the sentence naming whose doc it is. A third fix was DROPPED as redundant: this branch also carried the backplane-conformance.yml editable-install guard, and #73 landed byte-identical text from the same upstream template while this was open. Deliberate break -> revert: restoring the original citation failed with "autofix-versions.env paragraph at line 23 cites docs/ci/LINT_BASELINE.md"; reverting gave a cmp-clean file and 12 passed. Floor re-measured five times as the base moved under this one-line change (bd6da2e 402 -> ddb0928 402 -> fc1fd42 407 -> 0d661e3 407 -> 0593eeb 411, each +1), never carried forward. verify.py green on the 0d661e3 rebase: 408 passed, 0 failed, 0 skipped, 84/84 selftests, 5/5 gates; re-based onto 0593eeb with the fast checks re-run (12 passed, 412 collected, ruff and black clean) and the full suite left to CI. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The pin file #60 added cited docs/ci/LINT_BASELINE.md; the file it added is docs/CI_LINT_BASELINE.md. docs/ci/ is the Workflows repo layout and does not exist here, so the only pointer telling a reader to re-measure the baseline before bumping a pin led nowhere. test_ci_gate_config.py read that file CONTENTS thoroughly and its PROSE not at all, which is where the defect lived. test_every_cited_repo_path_resolves requires every repo-relative docs/, scripts/ or tools/ path cited in the two config files this repo OWNS to resolve. Scoped to those two: pr-00-gate.yml yields six findings that are all correct as written, and a test that cries wolf gets waived. The upstream marker is per PARAGRAPH, not per line, because the prose wraps. Deliberate break -> revert: restoring the original citation failed with "autofix-versions.env paragraph at line 23 cites docs/ci/LINT_BASELINE.md"; reverting gave a cmp-clean file and 12 passed. A third fix was dropped as redundant: #73 landed byte-identical backplane-conformance.yml text from the same upstream template while this was open. Floor re-measured six times as the base moved under this one-line change (402 -> 402 -> 407 -> 407 -> 411 -> 415, each +1). verify.py green on the 0d661e3 rebase: 408 passed, 0 failed, 0 skipped, 84/84 selftests, 5/5 gates; fast checks re-run on each later base (12 passed, 416 collected, ruff and black clean) with the full suite left to CI. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The pin file #60 added cited docs/ci/LINT_BASELINE.md; the file it added is docs/CI_LINT_BASELINE.md. docs/ci/ is the Workflows repo layout and does not exist here, so the only pointer telling a reader to re-measure the baseline before bumping a pin led nowhere. test_ci_gate_config.py read that file CONTENTS thoroughly and its PROSE not at all, which is where the defect lived. test_every_cited_repo_path_resolves requires every repo-relative docs/, scripts/ or tools/ path cited in the two config files this repo OWNS to resolve. Scoped to those two: pr-00-gate.yml yields six findings that are all correct as written, and a test that cries wolf gets waived. The upstream marker is per PARAGRAPH, not per line, because the prose wraps. Deliberate break -> revert: restoring the original citation failed with "autofix-versions.env paragraph at line 23 cites docs/ci/LINT_BASELINE.md"; reverting gave a cmp-clean file and 12 passed. A third fix was dropped as redundant: #73 landed byte-identical backplane-conformance.yml text from the same upstream template while this was open. Floor re-measured six times as the base moved under this one-line change (402 -> 402 -> 407 -> 407 -> 411 -> 415, each +1). verify.py green on the 0d661e3 rebase: 408 passed, 0 failed, 0 skipped, 84/84 selftests, 5/5 gates; fast checks re-run on each later base (12 passed, 416 collected, ruff and black clean) with the full suite left to CI. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
The failure
Backplane Conformance / emit-reference-runhas failed on every recent branch here — 4 of its last 4 runs, onclaude/orch-coverage-drain,claude/gracious-murdock-2d1379(×2) andclaude/profile-per-agent(×3). It dies at:This repo is deliberately not a distribution — 129 flat root modules, no build backend — so an unconditional editable install can never succeed here. The job fails, and
conformancefails with it throughneeds, which converts the workflow's own documented opt-in skip into a hard gate failure. The step that would have skipped cleanly ("No emitter wired yet; the conformance gate will skip (opt-in)") is never reached, because the install dies two steps earlier.Dedup: this is not a new fix
stranske/Workflows#3201 already guarded exactly this, in
templates/consumer-repo/.github/workflows/backplane-conformance.yml. This file is synced from that template (.github/sync-manifest.yml), and its manifest entry carries nocreate_only, so a future sync overwrites this copy wholesale.The Orchestrator's copy is simply stale: the open sync PR #54 was cut at 07:24, before #3201 merged, and does not carry it.
So this PR adopts the upstream content rather than inventing a local variant. The result is byte-identical to the template (
cmpclean), which makes the next sync a no-op instead of a conflict.Verified, not assumed
Executing the two shipped steps verbatim in this tree:
and the old step, for contrast, reproduces the CI error exactly. No packaging file exists here (
pyproject.toml/setup.py/setup.cfgall absent) and noscripts/emit_reference_run.sh, so the job becomes the clean opt-in no-op it was designed to be.Scope is deliberately narrow — and that is about your click budget
#3201 also guarded four siblings:
agents-auto-label,agents-capability-check,agents-decompose,agents-dedup. Their copies here are likewise stale and carry an unguardedpip install -e ".[langchain]" --quiet.They are not touched here, for two reasons:
The pending template sync delivers those four guards for free. If one of them starts firing before the sync lands, it should be fixed then.
🤖 Generated with Claude Code