Repository navigation
refactor(contracts): move runtime-fact exports into their own manifest - #1428
Merged
Merged
Conversation
This was referenced Oct 9, 2026
doublewhy
marked this pull request as ready for review
October 9, 2026 15:37
Contributor
Author
The facade manifest _exports.py is at 499 of 500 lines. Move the contiguous runtime-fact binding-plane family into _runtime_fact_exports.py and spread it in place, so PUBLIC_EXPORTS keeps identical order and membership and the next contract family fits under the cap.
Specification-coverage release 71.0.0 and formal-validation release 72.0.0 bind the current implementation digest; outcomes and claim limits are unchanged.
doublewhy
force-pushed
the
1418-runtime-fact-exports
branch
from
October 11, 2026 07:03
1acb97a to
cf93eb4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
implementations/python/packages/raes_contracts/contracts/_exports.pyis 499 lines. Package files are capped at 500 lines, and the oversized-file allowlist is empty. Publishing the #1366 inject-trigger contracts through theraes_contracts.contractsfacade adds a manifest import and a spread entry, which would push the file over the cap. This PR moves the contiguous runtime-fact binding-plane family (18 names) into_runtime_fact_exports.pyand spreads it where the names were.PUBLIC_EXPORTSkeeps the same membership and order, and_exports.pydrops to 483 lines.Any
.pychange underimplementations/python/packageschanges the implementation digest that the research-evidence captures pin. This PR therefore also republishes both captures against this source, as #1404 did. Outcomes and claim limits are unchanged.Requirement UIDs
Related Issues
Closes #1418
ADR Impact
Changes
raes_contracts/contracts/_runtime_fact_exports.py: newRUNTIME_FACT_EXPORTSlist with the same 18 names in the same order, following_mixed_composition_exports.py.raes_contracts/contracts/_exports.py: importsRUNTIME_FACT_EXPORTSand spreads it in place of the 18 literal names.contract-modelsdigests. Their revision pins advance intools/check_specification_coverage.py,tools/formal_semantic_validation/, the three evidence test modules and both research indexes, and the stale "through 66.0.0" historical-validation message in_releases.pyis corrected to 71.0.0 (dev's historical retest set already ends at 70.0.0). As ondev, the formal current-release assertion expects no deviations, because nothing changed compiled output.Test Plan
_exports.pyimports, andcanonical / coverage-reduceruns in CI.PUBLIC_EXPORTSbuilt fromorigin/dev's_exports.pyand from this branch are identical in order and membership (570 names), andraes_contracts.contracts.__all__ == PUBLIC_EXPORTS.This branch is rebased onto
devc474c26. #1485 published specification-coverage releases 69.0.0 and 70.0.0 and formal-validation releases 70.0.0 and 71.0.0, so the refactor commit was reapplied unchanged (same diff) and both captures were regenerated at the next free releases.Before the republish, at 665bcc6,
tools/check_specification_coverage.pyreportedresearch-evidence-source-stateand a stalecontract-modelsdigest, andtools/check_formal_semantic_validation.pyreportedresearch-evidence-source-state. After it, both checkers pass.pytestovertest_specification_coverage.py,test_formal_semantic_validation.py,test_issue_989_versioned_evidence.py,test_contracts_facade_exports.pyandtest_conformance_facade_parity.pypassed: 214 passed and 19 deselected in the default selection, and 19 passed and 214 deselected with-m integration.test_conformance_facade_parity.pycovers the separateraes_conformance.conformancefacade and is unrelated to this change.nox -s contracts -- --base-rev origin/devpassed all 14 stages, including schema publication, generated-schema drift, specification coverage, formal semantic validation and JSON artifact validation.nox -s lintandmake policypassed.nox -s verify-fast-feedback -- --base-rev origin/devpassed every stage it ran. It skipped YAML syntax because no YAML changed, and requirement governance because the branch carries no requirement UID.Ground Control Checks
make policypassed locally, with requirement governance skipped as described in the Test Plan.Traceability
test_contracts_facade_exports.pychecks thatPUBLIC_EXPORTSnames are unique and resolve on the facade, but no test pins the manifest's order or that the 18 moved names stay in it. Order and membership were compared once againstorigin/dev(570 names), as the Test Plan records, not by a test)Checklist
ruff formatandruff checkpass on both modulestools/check_generated_schemas.pypassesrefactorbecause nothing user-visible changesautomodule, not the facade's__all__Documentation
Updated: the specification-coverage and formal-validation research indexes record the new releases.