-
Notifications
You must be signed in to change notification settings - Fork 6
Document the Passage compatibility boundary #1341
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -125,6 +125,46 @@ def test_installed_package_contract_validates_without_a_sibling_checkout() -> No | |
| assert len(package["families"]) == len(declaration["families"]) == 25 | ||
|
|
||
|
|
||
| def test_existing_passage_contract_is_truthfully_declared_before_f4b() -> None: | ||
| """Pin the current-family declaration separately from the future 0.4 migration.""" | ||
|
|
||
| assert INSTALLED_PACKAGE_VERSION == "0.3.1" | ||
|
Owner
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The adoption interval is not actually executable — only the point version is. The PR body says it "freezes the reviewed released interval |
||
| installed = tuple(int(component) for component in INSTALLED_PACKAGE_VERSION.split(".")) | ||
| # b123d-recognisers#184 and Draftwright #1337/#1245 must be accepted before this | ||
| # upper bound moves: 0.4 changes both the capability model and rendered ownership. | ||
| assert (0, 2, 6) <= installed < (0, 4, 0) | ||
| package = _families(recognition.capability_manifest()) | ||
| declaration = _families(consumer_capability_declaration()) | ||
| passage_package = package["passages"] | ||
| passage_consumer = declaration["passages"] | ||
|
|
||
| assert passage_package["introduced_in"] == "0.2.6" | ||
| assert len(passage_package["records"]) == 1 | ||
| passage_record = passage_package["records"][0] | ||
| assert passage_record["name"] == "Passage" | ||
| assert passage_record["role"] == "output" | ||
| assert passage_record["schema_version"] == 1 | ||
| assert passage_record["aggregate_membership"] == ["RecognitionResult.passages"] | ||
| assert passage_consumer["record_schemas"] == {"Passage": [1]} | ||
| assert passage_consumer["disposition"] == "unsupported" | ||
| assert passage_consumer["tracking"] == "https://github.com/pzfreo/draftwright/issues/1245" | ||
| assert { | ||
| passage_consumer[name]["state"] | ||
| for name in ( | ||
| "ir_adapter", | ||
| "dsl_declaration", | ||
| "generated_code", | ||
| "drawing_consumer", | ||
| ) | ||
| } == {"unsupported"} | ||
| assert passage_consumer["completeness"]["state"] == "deferred" | ||
|
Owner
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Minor: the unsupported lowering emits a sixth boundary this test doesn't pin — |
||
| assert passage_consumer["documentation"] == { | ||
| "state": "supported", | ||
| "evidence": ["docs/reference/recogniser-capabilities.md"], | ||
| } | ||
| assert "passages" not in pending_family_declarations() | ||
|
|
||
|
|
||
| def test_runtime_adapter_inventory_is_derived_independently_and_exhaustive() -> None: | ||
| runtime = _runtime_emitted_records() | ||
| tiers = [ | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The paper model omits the one consumer-visible consequence of the 0.4 migration, and the crossing condition doesn't mention #1245. Under the revised #184, a principal split-junction void whose walls contain a Slot group flips ownership at 0.4: today the legacy finder never sees it, so the Slot is the accepted, counted, rendered claim (
slotsis fully supported); post-0.4 the rich passage wins (SLOT_SUPERSEDED_BY_PASSAGE) and the claim moves to a family this page declares Draftwright does not draw. As specified, crossing 0.4 would silently replace a rendered slot callout with nothing. Since this section is the consumer-side boundary statement, it should say so: add a bullet that adoption changes which family claims Slot-superseding split-junction voids, and condition the pin crossing 0.4 not only on the capability-contract representation but on #1245 resolving what a passage draws (or an explicit decision to accept the callout loss).