fix: ENG-2847 reconcile bv-flow with its inline-content contract
Phase 1+2 taught the agent to nest `<h3>` + `<ol>` inside `<bv-flow>`, but `bv-flow.allowedChildren === 'inline'` per three independent sources: - ELEMENT_REGISTRY['bv-flow'] (registry.ts:146) - src/agent/resources/tools/curate.txt:151-155 - src/agent/resources/prompts/system-prompt.yml:386-388 The same kickoff prompt that carried the new authoring hint ALSO told the LLM `bv-flow … children: inline`, so the agent received contradictory signals — the opposite of the Skill ↔ MCP parity goal. Downstream, html-renderer flattens bv-flow via `getInnerText`, so block markup inside it is dropped on read-back anyway. Fixes (PR #665 review): - Sectioned example: TDD-cycle now lives in a second `<bv-structure>` (block-content) with `<h3>` + `<ol>`. Add a one-line inline `<bv-flow>` to demo the correct inline shape and anchor the agent away from the prior wrong impulse. - Authoring hint for bv-flow: rewritten to `inline prose only; for multi-step procedures use bv-structure with <ol>`. Dropped the `<bv-structure>` angle brackets in the hint so the schema-slice "single mention per element" assumption stays intact (declaration-order drift guard). Test updates: - New `keeps the sectioned-example <bv-flow> inline` regression guard in brv-curate-tool.test.ts — matches `<bv-flow>[^<]*?</bv-flow>` so a future regression that re-nests block markup fails. - bv-flow hint assertion in curate-prompt-builder.test.ts now anchors on `inline prose only` rather than `open with <h3>`. - Extended `does NOT emit authoring hints for non-structural elements` to loop over bv-rule, bv-decision, bv-topic, bv-pattern, bv-bug, bv-fix — addresses reviewer nit that the prior test only checked one element vs the comment naming six. - Dropped the stale "current size ~3.1 KB" comment in the budget test; the slice grows with every element + hint, so the specific number rots fast. Out of scope (deferred): co-locating the Authoring-patterns block in SKILL.md / system-prompt.yml / curate.txt. The reviewer flagged this as non-blocking; left for a follow-up once we see whether the internal curate agent diverges in practice — splitting the source of truth without a forcing function risks re-creating the drift it would fix. Verified: tsc clean, eslint clean on touched files, full unit suite 8193/8193 pass (was 8192 + 1 new case).
C
Cuong committed
a75293018f65e1d3c1d81c7e49a0a398c7c9f623
Parent: ee46216