One green repository is not a completed change.
CrossRepoRepair is a working Switch-coordinated repair workflow: a coding assistant takes two repository roles, an independent deterministic verifier checks the combined behaviour, and a person reviews the exact tested bundle. A chat claim cannot replace runner evidence; changed source, artifacts or browser evidence cannot inherit an old approval.
Built for Flip the Switch 2026 — Best Business Workflow. This repository is a public development snapshot, not a submitted entry or production deployment.
- Real Switch room, coding-session transport and WebSocket verifier—not a mocked chat screen.
- Both Swagger SDK/UI patches, with the original failing baseline retained.
- 12 independent source acceptance checks, 3 actual HTTP cases, 173 selected upstream tests and 41 own unit tests passing in the recorded run.
- 20 real Chrome matrix outcomes: neither fixed, SDK-only, UI-only, both fixed. Five outcomes deliberately reproduce broken states; only both-fixed satisfies all five candidate scenarios.
- Canonical/selected upstream Jest use pinned non-root, read-only, no-network containers, with actual source/dependency/host/environment canaries and no host fallback. Full repair-worker/build/browser isolation is not claimed.
- A genuine local human approval was accepted on November 4. A real coding-agent approval attempt was denied. Source drift invalidated that receipt; exact restoration recovered it. The revised November 5 runtime/checker bundle is reviewable but not human-approved; that earlier receipt is historical only. Execution-profile drift is also rejected.
Actor attribution: one existing AI coding session performed the two repository roles sequentially. The verifier is deterministic, not another model. Separate Codex CLI attempts failed and made no edits. There is no claim of independent model-worker success or a measured multi-agent advantage.
| Component | Base | Revision |
|---|---|---|
| swagger-client | 3.34.2 | 5a4f9a335b7fd56a58f00339d6f689fcfa78d700 |
| swagger-ui | 5.20.0 | 55dca4c69d4192c8b4616513afdc087f40364048 |
The SDK must decode JSON array text under array-capable schemas without coercing string-only values. The UI must reject invalid array input visibly instead of leaving a loader running. Actual browser testing also exposed a nullable-array editor validation gap, covered by the additional UI patch.
Original upstream fixes already exist: SDK #3826, UI #10713. This is an adapted historical replay, not a current open bug, accepted upstream contribution, original WideSWE environment or broad benchmark result.
Tested on macOS/Apple silicon, Node 22.14.0, with already-installed Chrome 156.0.8078.80. Node 22+, Git, npm, POSIX tools, local Docker and the explicitly installed Linux/ARM64 Node 24.10.0 image in isolation.json are required. Jest runs in that container; the coordinator/build/browser control remain host processes. Checks never auto-pull an image; x86/Windows support is not established. See docs/EXECUTION.md. The browser command does not download Chrome; set CHROME_PATH for another installed executable. Cross-platform/cross-browser support is not established.
Allow several minutes for public dependency installation and builds. Bootstrap refuses to continue below 8 GiB free. It disables lifecycle scripts and incidental Cypress downloads, and does not start Switch or models.
# Start your local Docker engine. On a fresh compatible ARM64 host, explicitly install:
docker pull node@sha256:b8d2197aff9129d16c801a3e3e1b2a873c4946480f5a310f38056df2268c38d9
npm ci --ignore-scripts --no-audit --no-fund
npm run bootstrap
npm test
npm run isolation:probe
# Clean original state: success means the expected bugs were reproduced.
npm run baseline
npm run link-sdk
npm run http:baseline
# Apply both recorded source repairs, retaining original lockfiles.
git -C reference-repos/swagger-client apply ../../patches/swagger-client.patch
git -C reference-repos/swagger-ui apply ../../patches/swagger-ui.patch
npm run verify
npm run link-sdk
npm run http:verify
npm run regressions
npm run browser:build
npm run browser:verify
npm run readinessThe last command should produce a new local reviewable bundle, not an approved one. Original private keys/reviewer policy are intentionally absent. Source/artifact/build/checker identities are local to your run; do not reuse a recorded approval as authority for your checkout.
Targeted upstream tests are not the complete upstream inventories. One inherited UI assertion was tightened for OAS3 while preserving Swagger 2, and a nullable-array regression was added. Original acceptance file hashes remain pinned in case.json.
A fresh exported checkout completed this updated sequence on 5 November 2026, 22:09 UTC: all 16 steps passed, including the first-run isolation probe, with npm-cache/existing-image reuse, no private keys/policy copied and an unapproved new local bundle. See evidence/recorded/clean-reproduction.json; its input-file hash identifies the tested code/configuration. The earlier 15-step November 4 receipt remains in clean-reproduction-20261104.json. This is same-host reproduction, not a fresh OS or independently reprovisioned Switch installation.
Use your own compatible Switch deployment (recorded: Console 0.40.1, native server 0.31.0, Mattermost 11.9.0).
- Create your local room and registration key in the owner's Console.
- Copy
switch.local.example.jsonto ignoredswitch.local.json; use your actual URL/room ID. - Set
SWITCH_URLandSWITCH_REGISTRATION_KEY, then runnpm run switch:registerandnpm run session:register. Invite both agents to the room through the owner Console. Keep generated credentials private. - Configure addressing for the owner and owner's agents in that room. Run
npm run switch:listenonce; do not start competing verifier clients. - Give your existing coding assistant these room tools:
npm run session:context
printf '%s\n' '@crossrepo-verifier check' | npm run session:postThe actual check request drives isolated-runtime canaries, SDK build/linking, independent source acceptance, HTTP capture, upstream regressions, browser build/matrix and readiness. status checks freshness without calling a model. Literal commands never become shell input.
For human review, the trusted operator explicitly enrolls an actual confirmed person's server-origin opaque sender, room and authorised contract hashes in ignored .secrets/review-policy.json, following review-policy.example.json. Do not auto-enroll by display name or a message claiming to be human. Missing policy denies review. The enrolled person—not a bot—may send @crossrepo-verifier approve <full-current-bundle-hash> after reviewing it. The receipt grants local bundle review only, never deployment, publication, spending or submission.
Watch/download the narrated demo (about 96 seconds) · Direct MP4 · Script-based captions
The entrant supplied and approved the narration. Actual Switch/browser views were recorded on November 6; the earlier human approval is explicitly historical, and the revised checker was still awaiting review when recorded. Video publication is not deployment or event submission. The public MP4 was downloaded anonymously and byte-verified after upload. No raw voice recording, signed-in profile or private policy is published.
evidence/recorded/ contains selected sanitised historical receipts and actual browser screenshots. Its manifest lists original and published digests. These records are not current runtime inputs; a fresh run writes its own evidence/runs/. Redactions may change JSON bytes, so original embedded digest relationships must not be presented as verification of redacted files.
See docs/BROWSER.md, docs/ACCEPTANCE.md, docs/REFERENCE_CASE.md, docs/REPRODUCTION.md, docs/EXECUTION.md and docs/SECURITY.md.
The release includes the actual narrated MP4, captions, poster and checksums. Source is runnable locally; no hosted interactive deployment is claimed.
- No production/customer data, live customer system or funds.
- No auto-merge, deployment or hackathon submission actuator.
- Jest execution is isolated; complete repair-worker/build/browser isolation and immutable dependency environments are not implemented. Current receipts trust the Switch server and local verifier/storage; they do not secure a privileged/compromised host. The historical repair was not retroactively sandboxed.
- Browser coverage is the declared desktop scenarios, not arbitrary schema unions. Seven seconds of observed loading is not proof of infinite duration.
- No invented customers, saved-hours metrics, broad benchmark improvement or winning odds. Pact/PactFlow and other multi-repo tools already exist; the contribution here is the demonstrated Switch workflow and exact-bundle evidence, not invention of those categories.
Original CrossRepoRepair code has no additional project-wide license selected yet; public visibility alone is not a new permissive license grant. Swagger-derived patches/source context are Apache-2.0; full notices are retained under LICENSES/ and NOTICE.md. Dependencies are installed separately under their own licenses. A project-wide license decision remains for the owner before final distribution/submission preparation.