Skip to content

fix(ci): guard the backplane editable install — adopt the already-fixed template - #73

Merged
stranske merged 1 commit into
mainfrom
claude/backplane-pip-guard
Aug 23, 2026
Merged

fix(ci): guard the backplane editable install — adopt the already-fixed template#73
stranske merged 1 commit into
mainfrom
claude/backplane-pip-guard

Conversation

@stranske

Copy link
Copy Markdown
Owner

The failure

Backplane Conformance / emit-reference-run has failed on every recent branch here — 4 of its last 4 runs, on claude/orch-coverage-drain, claude/gracious-murdock-2d1379 (×2) and claude/profile-per-agent (×3). 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 can never succeed here. The job fails, and conformance fails with it through needs, 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 no create_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 (cmp clean), which makes the next sync a no-op instead of a conflict.

Verified, not assumed

Executing the two shipped steps verbatim in this tree:

No packaging metadata; skipping editable install (opt-in stub not yet tuned).
No emitter wired yet; the conformance gate will skip (opt-in).
exit=0

and the old step, for contrast, reproduces the CI error exactly. No packaging file exists here (pyproject.toml / setup.py / setup.cfg all absent) and no scripts/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 unguarded pip install -e ".[langchain]" --quiet.

They are not touched here, for two reasons:

  1. The defect is latent, not active. None of those four has ever run in this repo — no runs at all, versus 4/4 failures for backplane. Only backplane is actually red.
  2. Every workflow file touched risks arming GitHub's suspicious-workflow hold, which costs one owner click each before that workflow can be observed. Touching five files to fix one live failure would spend up to five clicks.

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

`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>
@coderabbitai

coderabbitai Bot commented Aug 23, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your current included review allowance is based on your included PR review attempts over the past 7 days.

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 @coderabbitai review or push new commits to the PR.

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 configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 95738ed4-906d-4671-a195-101ab13106bd

📥 Commits

Reviewing files that changed from the base of the PR and between fc1fd42 and f810048.

📒 Files selected for processing (1)
  • .github/workflows/backplane-conformance.yml

Comment @coderabbitai help to get the list of available commands.

@stranske
stranske temporarily deployed to agent-high-privilege August 23, 2026 19:06 — with GitHub Actions Inactive
@stranske-keepalive

Copy link
Copy Markdown

Workflow source needed

PR #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:

  • Add <!-- meta:issue:123 --> or a normal Closes #123 / Related to #123 line.
  • Check one Workflow Source option in the PR body.
  • Add a hidden marker such as <!-- workflow-source:local_request -->, <!-- workflow-source:manual_remote -->, <!-- workflow-source:review_followup -->, <!-- workflow-source:sync_campaign -->, or <!-- workflow-source:dependabot -->.
  • Add a workflow source label such as workflow:source-direct-pr, workflow:source-local-request, workflow:source-review-followup, workflow:source-sync, or workflow:no-automation.

Once a valid source is present, this warning will not be reposted.

@stranske-keepalive

Copy link
Copy Markdown

Automated Status Summary

Head SHA: ffbc2dc
Latest Runs: ⏳ pending — Gate
Required: core tests (3.12): ⏳ pending, core tests (3.13): ⏳ pending, docker smoke: ⏳ pending, gate: ⏳ pending

Workflow / Job Result Logs
(no jobs reported) ⏳ pending

Updated automatically; will refresh on subsequent CI/Docker completions.


Keepalive checklist

Scope

No scope information available

Tasks

  • No tasks defined

Acceptance criteria

  • No acceptance criteria defined

@github-actions

Copy link
Copy Markdown
Contributor

Workflow state fingerprint for Agents Gate Followups. Do not edit.

@stranske
stranske merged commit b246702 into main Aug 23, 2026
26 checks passed
@stranske
stranske deleted the claude/backplane-pip-guard branch August 23, 2026 19:08
stranske pushed a commit that referenced this pull request Aug 23, 2026
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>
stranske added a commit that referenced this pull request Aug 23, 2026
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>
stranske added a commit that referenced this pull request Aug 23, 2026
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>
stranske added a commit that referenced this pull request Aug 23, 2026
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant