Skip to content

test(mcp-skill): pin declared-field alias-bomb retype vector - #361

Merged
bug-ops merged 1 commit into
masterfrom
fix/359-alias-bomb-field-retype-test
Jul 27, 2026
Merged

test(mcp-skill): pin declared-field alias-bomb retype vector#361
bug-ops merged 1 commit into
masterfrom
fix/359-alias-bomb-field-retype-test

Conversation

@bug-ops

@bug-ops bug-ops commented Jul 27, 2026

Copy link
Copy Markdown
Owner

Summary

  • Adds regression coverage for the second alias-bomb resistance vector on RawFrontmatter: retyping an already-declared field (e.g. description) from Option<String> to a buffering type, distinct from the flatten/unknown-key vector covered by the prior regression test.
  • Two canary tests pin serde_norway's own buffering behavior directly: a Value-typed retype (compile-blocked in production today, kept as a mechanism baseline) and a deserialize_with retype (not compile-blocked — the realistic silent-regression case).
  • A fourth, production-coupled test confirms today's real extract_skill_metadata + RawFrontmatter does not hit the repetition-limit path, and will fail loudly if RawFrontmatter is ever retyped to a buffering shape.
  • Adds an ADR-341 addendum (§10) recording the vector and correcting the attribution of its timing figures (issue add regression coverage for RawFrontmatter field-retype alias-bomb vector #359, not the ADR's own §3.3 measurement, which is explicitly scoped to the undeclared-key/flatten vector).
  • CHANGELOG entry under [Unreleased] > Testing.

Went through two rounds of adversarial critique (first verdict: significant — no coupling to production code, covered the compile-blocked variant instead of the silent one, an overly loose is_err() assertion; second verdict: minor — wording/doc-order nits plus adopting the production-coupled 4th test). All findings addressed and re-verified.

Closes #359

Test plan

  • cargo nextest run -p mcp-execution-skill -E 'test(alias_bomb)' — 4/4 pass
  • cargo nextest run --workspace --all-features --lib --bins — 987/987 pass
  • cargo test --doc --all-features --workspace — 40/40 pass
  • cargo +nightly fmt --check — clean
  • cargo clippy --all-targets --all-features --workspace -- -D warnings — clean

…rontmatter

Add regression coverage for the second alias-bomb resistance vector: retyping
an already-declared field (e.g. description) to a buffering type, distinct
from the flatten/unknown-key vector covered previously. Adds two canary tests
pinning serde_norway's own buffering behavior (Value-typed retype, which is
compile-blocked in production, and a deserialize_with retype, which is not)
plus a production-coupled test confirming RawFrontmatter does not hit this
path today. Corrects ADR-341 with an addendum recording the vector and its
timing figures' original source.

Closes #359
@github-actions github-actions Bot added type: documentation Documentation changes (*.md, docs/, comments) breaking change Contains breaking API changes (requires major version bump) release Release preparation (changelog, version bumps) labels Jul 27, 2026
@bug-ops
bug-ops merged commit 3cf043b into master Jul 27, 2026
18 checks passed
@bug-ops
bug-ops deleted the fix/359-alias-bomb-field-retype-test branch July 27, 2026 15:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking change Contains breaking API changes (requires major version bump) release Release preparation (changelog, version bumps) type: documentation Documentation changes (*.md, docs/, comments)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

add regression coverage for RawFrontmatter field-retype alias-bomb vector

1 participant