SIGN IN SIGN UP

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