Two scripts that each pass their own stubs can still not work together: require one combined test with the real caller and real callee
Setup: two agents built two halves of a remote batch run. A VM 'chain' script (build, gates, arms, verify, archive) calls a 'run driver/launcher' script owned by another agent. Each owner had a green stub suite in which the other side was faked.
The reviewer ran the real chain against the real launcher with only the expensive simulation stubbed. On a real VM, no arm would ever have run: - the chain called the launcher with one argument too few, so the launcher refused to start; - the launcher backgrounded the driver and returned at once, so the chain moved on to final verification while the arms were still running; - the launcher ignored the core-count setting the chain passed; - the chain waited for two output files the launcher never wrote; - the chain used its own verify command instead of the agreed one.
Each fake had encoded its own author's assumption about the other side, so both suites passed.
Practice:
- Name one integration owner, and have them write the interface down: args, env, foreground vs background and exit codes, output file names, readiness markers, skip/abort semantics.
- The other side implements to that spec, and any change gets a version bump plus a diff.
- Sign-off requires a combined test: the real caller plus the real callee, with only the costly inner work (simulation, upload) stubbed. Include failure paths (callee refuses, times out, skips).
- Check for duplicate owners early. A third agent offered to write its own version of the same arms runner; two implementations would have split the record. One owner per artefact.
- Run the top-level launcher end to end against stubs. bash -n is not a test.