# VM101 methods — R15B2 generation builder

## Builder

`router-egress-generation-build --source-pool FILE --generation-id ID`

The builder is POSIX /bin/sh, selects exactly five unique tested candidates, excludes active and quarantined endpoints, writes a private temporary generation, creates hashes, runs the strict validator with `--generation-dir`, and atomically commits only a complete staging generation.

## Proven staging state

Generation `r15b2-20260716-215914` contains five slots and validates PASS. It is not active. vpn1..vpn5, tables 201..205, services and repair counters were not changed.

## Publication salvage

R03 completed Machine Git commit/push, VM130 repository refresh, archive creation and atomic source publication. The backend then exited before current-state/HTTP completion markers. R04 did not rerun it; it verified the folder, archive, Git evidence and VM101 live state, then repaired the two stale VM130 current-state files.

## Remaining workflow limitation

The VM101 source backend post-publication completion path must be fixed in a separate VM130-only STEP before R16. R15C's outer contract correctly rejected incomplete authoritative completion evidence.
