From f810048cfcb70fca37109fbe0a8ec2b1f6ce42ee Mon Sep 17 00:00:00 2001 From: Tim Stranske Date: Sun, 23 Aug 2026 14:05:50 -0500 Subject: [PATCH] =?UTF-8?q?fix(ci):=20guard=20the=20backplane=20editable?= =?UTF-8?q?=20install=20=E2=80=94=20adopt=20the=20fixed=20template?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `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 --- .github/workflows/backplane-conformance.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/backplane-conformance.yml b/.github/workflows/backplane-conformance.yml index 3898ec1..9476e67 100644 --- a/.github/workflows/backplane-conformance.yml +++ b/.github/workflows/backplane-conformance.yml @@ -32,7 +32,16 @@ jobs: - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7 with: python-version: '3.14' - - run: pip install -e . + # Guarded: a consumer need not be an installable package (the template ships + # no pyproject.toml). An unconditional editable install exits 1 on such a repo + # and fails this job, which fails `conformance` via `needs` - turning the + # documented opt-in skip above into a hard gate failure. + - run: | + if [ -f pyproject.toml ] || [ -f setup.py ] || [ -f setup.cfg ]; then + pip install -e . + else + echo "No packaging metadata; skipping editable install (opt-in stub not yet tuned)." + fi # Repo-specific: invoke the tool's reference run to emit run.json + manifest. # Replace the placeholder below with the repo's emitter once it exists, e.g.: # one-pdf-pilot --out artifacts/reference # Pension-Data