feat(#85): IMP catalog builder invariant + VP runtime gate (u1~u7)
- u1: BuilderMissingError(FitError) — narrow exception aligned with pipeline catch - u2: load_frame_contracts catalog invariant + VP skip + CatalogInvariantError - u3a: audit CLI I1~I3 (partial existence / declared builder / registry membership) - u3b: audit CLI I4 (slot_payload refs vs declared/generated payload keys) - u4: lookup_v4_candidates VP filter (lookup_v4_all_judgments raw telemetry untouched) - u5: catalog invariant regression coverage + temp non-VP failure fixtures - u6: mdx04 VP routing fixture tests (sw_dependency_four_problems excluded from live) - u7: tests/conftest.py env isolation + mdx03/mdx04/mdx05 subprocess smoke Targeted 74 PASS (12.31s). Full regression 1063 PASS (87.70s). Audit CLI clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
17
tests/phase_z2/fixtures/catalog/missing_builder_non_vp.yaml
Normal file
17
tests/phase_z2/fixtures/catalog/missing_builder_non_vp.yaml
Normal file
@@ -0,0 +1,17 @@
|
||||
# IMP-#85 u5 fixture — non-VP contract whose payload.builder is absent from
|
||||
# `PAYLOAD_BUILDERS`. Drives the u2 boot invariant + audit I3 negative paths.
|
||||
#
|
||||
# Scope (Stage 2 lock): regression coverage only. Not a runtime catalog entry.
|
||||
# Frame id is in the 9999xxx range so any accidental cross-reference is obvious.
|
||||
|
||||
imp85_u5_missing_builder_frame:
|
||||
template_id: imp85_u5_missing_builder_frame
|
||||
frame_id: 9999001
|
||||
family: imp85_u5_fixture
|
||||
source_shape: top_bullets
|
||||
cardinality:
|
||||
strict: 3
|
||||
payload:
|
||||
title:
|
||||
source: section.title
|
||||
builder: definitely_not_a_registered_builder_imp85_u5
|
||||
@@ -0,0 +1,23 @@
|
||||
# IMP-#85 u5 fixture — non-VP contract whose `items_with_role` builder produces
|
||||
# a `slot_payload.<array_root>` key the partial never references. Drives the
|
||||
# audit I4 (generated-key-orphan) negative path.
|
||||
#
|
||||
# Scope (Stage 2 lock): regression coverage only. The corresponding partial is
|
||||
# written into a tmp dir by the test (it must NOT use `slot_payload[...]`
|
||||
# bracket access, otherwise I4 suppresses correctly and the assertion fails).
|
||||
|
||||
imp85_u5_undeclared_slot_frame:
|
||||
template_id: imp85_u5_undeclared_slot_frame
|
||||
frame_id: 9999002
|
||||
family: imp85_u5_fixture
|
||||
source_shape: top_bullets
|
||||
cardinality:
|
||||
strict: 3
|
||||
payload:
|
||||
title:
|
||||
source: section.title
|
||||
builder: items_with_role
|
||||
builder_options:
|
||||
item_parser: pillar_item
|
||||
array_root: orphan_array_root_imp85_u5
|
||||
role_field: color_class
|
||||
Reference in New Issue
Block a user