docs(submitqueue): provider example configuration and landing runbook - #548
Conversation
91fc4e0 to
36df886
Compare
36df886 to
c18856d
Compare
c18856d to
616b8c9
Compare
3b40469 to
b3b074d
Compare
b3b074d to
f5249b5
Compare
f5249b5 to
41d19a9
Compare
41d19a9 to
495a066
Compare
495a066 to
4013409
Compare
4013409 to
48dc38e
Compare
48dc38e to
2d8e539
Compare
af91522 to
ed2d22e
Compare
05d8a16 to
ed2d22e
Compare
ed2d22e to
38d8eba
Compare
|
In analyzer: {type: fileoverlap}But PR #545 defines the valid types as |
AI review comment ^... if it works then I'm fine with it. but probably double check. |
38d8eba to
5957263
Compare
5957263 to
0d02d22
Compare
|
Double-checked, and the AI comment is correct — fixed in
It would not have degraded gracefully. Fixed as Verified the file still parses and needs no reformatting under Worth flagging separately: nothing tests that the shipped example configs actually load, which is why this got through. Happy to add that as a follow-up if you want it. |
b192add to
09eab16
Compare
|
Updated to Note the value is spelled Semantics, for the record: |
## Summary ### Why? Every piece needed to land a change against a live provider was in place, but nothing said how to point the stack at one — and the pieces that vary by provider were scattered across environment variables and two config files with no worked example. ### What? Which provider a deployment targets becomes a bind-mounted directory: `make local-provider-start PROVIDER=github` mounts `example/provider/<name>/` into the orchestrator and Runway. Because the choice is a mount rather than a build input, switching providers needs no rebuild, and adding one is a directory plus the extension implementations behind it — no compose, Makefile, or image change. The compose overlay names no provider at all. It requires the token rather than defaulting it: falling back to the fake integrations would let the stack report a change as landed without having gone near the provider, which is a far worse failure than not starting. `example/provider/README.md` carries the complete touchpoint list for adding a provider, and — more usefully — what is *not* on it: the merger's apply and push paths, the head-branch update, the pipeline, the wire contract, and the hermetic git E2E are all provider-independent. The runbook covers the two first-run traps that are easy to misdiagnose. Branch protection on the target rejects the merger's push like anyone else's. And a change that lands but stays open is either a fork (expected and permanent — its head branch lives in another repository) or head-branch protection blocking the update; Runway's logs distinguish them. ## Test Plan ✅ `docker compose -f docker-compose.yml -f docker-compose.provider.yml config` validates, and fails fast with `required variable GITHUB_TOKEN is missing a value` when the token is unset. ✅ `make help` lists `land`, `local-provider-start`, and `local-provider-stop`. Landing against a live provider is manual by nature — it needs a scratch repository and a token, so it is not automated in CI. The runbook is the procedure. # Conflicts: # service/submitqueue/demo/provider/README.md # service/submitqueue/demo/provider/github/merge.yaml # service/submitqueue/demo/provider/github/profiles.yaml
`fileoverlap` was renamed to `pathoverlap` with a `by: file | directory` granularity in #575, and the orchestrator's config loader rejects an unrecognised analyzer type outright — `unknown analyzer type %q` in `normalizeAndValidate` — so the demo profile would have failed at startup rather than quietly falling back to a default. Picks `by: directory` rather than the `by: file` that matches the old name. The demo spreads each change over a sharded file tree, so keying on the immediate parent directory gives the queue real dependency chains to show while still landing changes in different folders in parallel. Directory overlap is strictly coarser than file overlap: every file overlap is also a directory overlap, and files at the repository root all share one key.
09eab16 to
a9eb749
Compare
Summary
Why?
Every piece needed to land a change against a live provider was in place, but nothing said how to point the stack at one — and the pieces that vary by provider were scattered across environment variables and two config files with no worked example.
What?
Which provider a deployment targets becomes a bind-mounted directory:
make local-provider-start PROVIDER=githubmountsexample/provider/<name>/into the orchestrator and Runway. Because the choice is a mount rather than a build input, switching providers needs no rebuild, and adding one is a directory plus the extension implementations behind it — no compose, Makefile, or image change.The compose overlay names no provider at all. It requires the token rather than defaulting it: falling back to the fake integrations would let the stack report a change as landed without having gone near the provider, which is a far worse failure than not starting.
example/provider/README.mdcarries the complete touchpoint list for adding a provider, and — more usefully — what is not on it: the merger's apply and push paths, the head-branch update, the pipeline, the wire contract, and the hermetic git E2E are all provider-independent.The runbook covers the two first-run traps that are easy to misdiagnose. Branch protection on the target rejects the merger's push like anyone else's. And a change that lands but stays open is either a fork (expected and permanent — its head branch lives in another repository) or head-branch protection blocking the update; Runway's logs distinguish them.
Test Plan
✅
docker compose -f docker-compose.yml -f docker-compose.provider.yml configvalidates, and fails fast withrequired variable GITHUB_TOKEN is missing a valuewhen the token is unset.✅
make helplistsland,local-provider-start, andlocal-provider-stop.Landing against a live provider is manual by nature — it needs a scratch repository and a token, so it is not automated in CI. The runbook is the procedure.
Issues