Recorded re-scope from Epic 4's closure (2026-07-25, party-mode decision — see the epic 4 report and the correct-course record in _bmad-output/implementation-artifacts/).
Inherited by the UniFi connector epic as acceptance criteria:
- Run the 4.18 wire spec:
fixtures/scenario/wire/unifi-clients.json must be fed through the REAL parser (D35 layer B — raw bytes, no mocks) and produce the facts + observed_at of fixtures/scenario/wire/unifi-clients.expected.jsonl (ids/scope are harness context — the runner injects its own). The charter in fixtures/scenario/wire/README.md lists the NAMED HOLES (envelope, ip key, hostname source, OuiVendor empty-vs-absent, no Uplink) to confirm or bump deliberately at the first real capture.
- Implement 4.19b: the mutation GENERATOR (first use of MANIFEST's
generator field), the ~30 generated fixtures (field deleted / nulled / retyped / renamed) at fixtures/capture/mutations/, and their expected parse outcomes — deferred from Epic 4 because outcomes for an undefined error taxonomy would be written from belief (D45), and a generator has no test that reds without the parser it attacks.
- Binding constraints (4.19a's charter, committed in the wire README): a renamed field must yield an explicit error, never a silently empty collection;
#[serde(default)] is FORBIDDEN on any collection feeding presence; layer-A drift injection is theatre (D35).
🤖 Generated with Claude Code
Recorded re-scope from Epic 4's closure (2026-07-25, party-mode decision — see the epic 4 report and the correct-course record in
_bmad-output/implementation-artifacts/).Inherited by the UniFi connector epic as acceptance criteria:
fixtures/scenario/wire/unifi-clients.jsonmust be fed through the REAL parser (D35 layer B — raw bytes, no mocks) and produce the facts +observed_atoffixtures/scenario/wire/unifi-clients.expected.jsonl(ids/scope are harness context — the runner injects its own). The charter infixtures/scenario/wire/README.mdlists the NAMED HOLES (envelope,ipkey, hostnamesource, OuiVendor empty-vs-absent, no Uplink) to confirm or bump deliberately at the first real capture.generatorfield), the ~30 generated fixtures (field deleted / nulled / retyped / renamed) atfixtures/capture/mutations/, and their expected parse outcomes — deferred from Epic 4 because outcomes for an undefined error taxonomy would be written from belief (D45), and a generator has no test that reds without the parser it attacks.#[serde(default)]is FORBIDDEN on any collection feeding presence; layer-A drift injection is theatre (D35).🤖 Generated with Claude Code