forked from heavy-duty/ceremony
The evidence shows the called workflow did not see the caller's event inputs on THIS instance while the top level received them (runs 459/523 vs probe 6/7); it does not show what GitHub or a declared-and-passed input does, so every prose site now states declare-and-pass as the measured-reliable channel rather than attributing a drop to Forgejo (@codex-reviewer-andresmgsl, !218 blocker 2). Refs #215
33 lines
1.4 KiB
Markdown
33 lines
1.4 KiB
Markdown
### 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).
|