Problem
pact-plugin/tests/fixtures/userpromptsubmit_stdin_post_bootstrap.json is a synthetic placeholder fixture for the bootstrap_marker_writer.py writer's stdin shape. PR #671 (which closed #664) shipped this synthetic fixture per architect §8.7 with a TODO(#NNN) placeholder comment, deferring real-fixture capture to a follow-up.
The synthetic fixture matches the architect-documented platform schema and exercises the writer's parser correctly, but it cannot verify production-shape parity. The wake_lifecycle_emitter precedent (#612 / #638) is the cautionary tale: synthetic fixtures missed the real-world stdin shape divergence.
Capture procedure (architect §8.7)
- Cut a separate scratch branch off
main (capture-only — does not merge).
- Add a logging shim to
bootstrap_marker_writer.py source that writes stdin JSON to a fixture file before normal handling.
- Run a fresh-startup PACT session through bootstrap (Steps 1-4 + first real user prompt). The shim captures the actual UserPromptSubmit stdin shape.
- Save the captured JSON as
pact-plugin/tests/fixtures/userpromptsubmit_stdin_post_bootstrap.json, overwriting the synthetic placeholder.
- Remove the shim from the source.
- Open a small PR replacing the synthetic fixture with the captured one. Substitute the
TODO(#NNN) placeholder in the fixture's _comment field with this issue's number.
Why this matters
Acceptance
Out of scope: re-capturing on every plugin version bump (only re-capture when suite failure suggests stdin-shape drift, same as wake_lifecycle_emitter precedent).
Problem
pact-plugin/tests/fixtures/userpromptsubmit_stdin_post_bootstrap.jsonis a synthetic placeholder fixture for thebootstrap_marker_writer.pywriter's stdin shape. PR #671 (which closed #664) shipped this synthetic fixture per architect §8.7 with aTODO(#NNN)placeholder comment, deferring real-fixture capture to a follow-up.The synthetic fixture matches the architect-documented platform schema and exercises the writer's parser correctly, but it cannot verify production-shape parity. The
wake_lifecycle_emitterprecedent (#612 / #638) is the cautionary tale: synthetic fixtures missed the real-world stdin shape divergence.Capture procedure (architect §8.7)
main(capture-only — does not merge).bootstrap_marker_writer.pysource that writes stdin JSON to a fixture file before normal handling.pact-plugin/tests/fixtures/userpromptsubmit_stdin_post_bootstrap.json, overwriting the synthetic placeholder.TODO(#NNN)placeholder in the fixture's_commentfield with this issue's number.Why this matters
test_captured_fixture_exists+test_main_runs_cleanly_against_fixture) genuinely verify production parity rather than schema-self-consistency.Acceptance
TODO(#NNN)placeholder in fixture comment substituted with this issue number.Out of scope: re-capturing on every plugin version bump (only re-capture when suite failure suggests stdin-shape drift, same as
wake_lifecycle_emitterprecedent).