### Fixed - The sweep's `bootstrap` value crosses the `workflow_call` boundary as a declared input, explicitly passed by the caller — the one channel measured to work; the called workflow did not see the caller's event inputs as an implicit substitute on this instance (#215). - Before the bridge, `github.event.inputs` was empty inside the called workflow, so every dispatch-woken sweep bootstrapped: ~20 label upserts on each board event (#215). - The caller maps an empty top-level value to `no` explicitly, so a cron-woken sweep can never bootstrap; the declared input also defaults to `no`, so a consumer that passes nothing gets the safe path (#215). - The gate feeds the declared input to `labels-reconcile` unchanged, so an invalid value meets the action's own `yes|no` refusal instead of being silently coerced (#215). - `docs/CONSUMERS.md`'s published sweep stub carries the same pass-through — without it every consumer inherits the defect ceremony fixed for itself (#215). ### Added - `test/labels-bootstrap.test.sh` pins the bridge at every hop: the declared boundary, both gate sites as the identity, no expression reading `github.event.inputs`, and the caller and stub pass-throughs byte-exact (#215). - The same test drives the four value paths — schedule-empty, `no`, `yes`, invalid — through the shipped expressions into the action's real validator (#215). - The taxonomy bootstrap keys on the `BOOTSTRAP` input, never the event name. It tested `GITHUB_EVENT_NAME = workflow_dispatch` — correct while an operator's manual dispatch was the only dispatch there was, inert-by- construction from #209 on, when every machine wake became a dispatch event (#215). - The venue drill caught that: with the bridge delivering `no` perfectly, drill runs 16/17 still bootstrapped, because the script never read the input the whole chain existed to deliver (#215). - `test/labels-reconcile.test.sh` pins the regression pair exactly: a `workflow_dispatch` event with `BOOTSTRAP=no` (or unset) creates and deletes nothing; only `BOOTSTRAP=yes` bootstraps (#215).