Repository navigation
T096: the contract family's tests read the composed farm where the run is composed (plan 038, T094's R2-INV-R9, CS) - #53
Conversation
…n is composed (plan 038; T094's map R2-INV-R9, CS) The four contracts-only files took Path(__file__).parents[2] as openxFactory's root. Composed, that is the directory above the checkout, so T094 measured all 74 of their nodes red composed (11, 13, 32 and 18). Where the run is composed, tests/conftest.py (T095) names the family's composed farm CONTRACTS_DIR. SCHEMAS, EXAMPLES and REGISTER_SCHEMA now read that farm, with the examples beside it, and SCRIPT is this leg's own validator, which reads the same farm. In a lone checkout CONTRACTS_DIR is None and every path is what it was, so each file still fails alone for its declared reason, openxfactory-contracts. One docstring's account of SCRIPT is brought up to date. Lane: openXfactory-3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reviewer's GuideThe four contract-family test modules now use T095’s File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The validator documentation is contradictory, and the branch depends on unmerged PR #46 to provide CONTRACTS_DIR.
Review effort: Balanced
Findings: 1
Open (1)
What changed in this PR
Updates contract-family tests to use the composed contracts farm while preserving standalone paths.
Changes:
- Select validator, schemas, and examples based on
CONTRACTS_DIR. - Update validator-location documentation.
| File | Description |
|---|---|
tests/test_project_action_contracts.py |
Resolves project contracts from the composed farm. |
tests/test_project_schema_election.py |
Resolves the register schema from the composed farm. |
tests/test_validate_ideation_dashboard_contracts.py |
Redirects validator assets and updates documentation. |
tests/test_wheel_action_contracts.py |
Resolves wheel contracts from the composed farm. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
…ce-tree case from the lone one (Copilot r4201041192) Run from this source tree, snapshot.find_validator() answers this checkout's scripts/validate-ideation-dashboard-contracts.py, which is the module's SCRIPT where the run is composed and not where it is lone. The docstring said "never SCRIPT", so it now states each case. Docstring only; no behaviour changes. Lane: openXfactory-3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Dependency PR #46 remains open, so CONTRACTS_DIR is currently unavailable and validation fails.
Review effort: Balanced
Findings: None
Resolved since last review (1)
|
Sorry @brettheap, you've used your own review budget of 250,000 diff characters for the last 7 days. You can request another review in 16 hours and 54 minutes by commenting |
|
|
READY (holder, manual landing) at 49dcb2f Lane: openxfactory-4 (openXfactory-4-openDox_extraction) Holder, at READY: T096 (lane openXfactory-3), the contract family's tests read the composed farm where the run is composed. Landing on Brett's word "land lane 3's PRs when green".
|
|
Lane: openxfactory-4 (openXfactory-4-openDox_extraction) LANDED — lane openxfactory-4, 2026-10-07T00:40:46Z, PR #53 → 34e1c1f (opensoft/openXdox-code main; plain gate) Landed on Brett's word "land lane 3's PRs when green". Copilot 4201833198 (a test comment's wheel-install claim) is an ACCEPTED LIMIT; lane 3 owes the comment fix. |
…'s contracts/ (#56) Lane: openxfactory-4 (openXfactory-4-openDox_extraction) Authored by lane openXfactory-3, delegated by lane openxfactory-4 (lane4-to-lane3.log 2026-10-07T00:40:52Z; Copilot 4201833198 accepted at #53's landing) Arc: neutral-product-standalone-operability ## T096 follow-on: the validator-root comment names the openxdox package's contracts/ When the holder landed #53 (T096) as 34e1c1f, it accepted Copilot `4201833198` and owed lane 3 a correction. This PR makes it. The docstring of `test_every_schema_the_consumer_validates_is_on_disk` (`tests/test_validate_ideation_dashboard_contracts.py`) said that in an install "its tree carries no `contracts/`". That is wrong: - The packaged validator is `openxdox/contracts/validate-ideation-dashboard-contracts.py`, and its `ROOT` (`parents[1]`) is the installed `openxdox` package. - So `ROOT / "contracts"` exists, and the three schemas are the packaged copies in it, each held to `copies.yaml`'s digest (`scripts/validate-ideation-dashboard-contracts.py:118`, `:138-145`, `:317-320`). - Only a source tree has no `contracts/` of its own. There the three come from the installed distribution's packaged copies, and that is what the test's last check asserts (`if not (module.ROOT / "contracts" / "schemas").is_dir()`). The docstring now says each case. **It is a docstring-only change: no code, test, assertion or behaviour moves.** It carries the `Arc:` line because it completes T096's realization PR, with that PR's own accepted review finding. **Files:** `tests/test_validate_ideation_dashboard_contracts.py`, docstring only (+7 / -3). **Ruled:** the holder's acceptance of Copilot `4201833198` at #53's landing, and the follow-on owed by lane 3 (lane4-to-lane3.log, 2026-10-07T00:40:52Z). There are no decisions of this PR's own. ## Measured at 0c268bd (`main` da73609 + this commit) - The file alone, composed, in T096's composed form (openxFactory `92010d3e` with its three submodules initialized recursively and `scripts/` on `PYTHONPATH`, openDox-code `84f8ed83`, and T022's placement): `33 passed`. - The file alone, lone: `1 failed, 1 passed, 31 errors`, the same shape as before, for its declared reason, `openxfactory-contracts`. `tests/test_declared_exclusion.py` lone reads `207 passed`. - The lone `validate.yml` form (`pip install -e ".[test]"`, openDox at the pyproject pin `dede32b4`): `1161 passed, 4 skipped, 1 deselected`, which is selected 1165 / passed 1161 / skipped 4, against floors 1099 / 1095 / 4. - No guard or behaviour is added, so there are no mutants to kill. ## CI and Copilot - CI at 0c268bd: `validate` success (run 37603206350: `1161 passed, 4 skipped, 1 deselected`), and SonarCloud Code Analysis success. - Copilot review 5440559691 at 0c268bd: Approval recommended, Findings None. 0 review threads. ## Not done Nothing else is owed by this follow-on. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Arc: neutral-product-standalone-operability Lane: openxfactory-4 (openXfactory-4-openDox_extraction) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Brings T101 (#48), T098 (#51), T103 (#49), T096 (#53), T100 (#54), T099 (#47), T021's follow-on (#55), T102 (#52), T022 (#41, landed as aefd109), T097 (#50) and T096's follow-on (#56). Conflicted: scripts/composed_placements.py and tests/test_composed_placements.py, both T022's files, which this branch carried from #41 through #44. Main's landed side is kept for both. tests/declared_exclusion.yaml merged clean (T101's entry edits beside T073's header and open_until). Lane: openXfactory-3 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>




Lane: openxfactory-4 (openXfactory-4-openDox_extraction)
Authored by lane openXfactory-3, delegated by lane openxfactory-4 (#656 6021862323)
Arc: neutral-product-standalone-operability
T096: the contract family's tests (plan 038; T094's map R2-INV-R9, means CS)
Realizes (no
tasks.mdentry yet; the contract is the slice outline row of R2-INV-R9 plus the holder's rulings6021830531): requirement 9's declared composed tests, toward T073's composed step 5a (F9.1). This is the CS constants half for the four contracts-only files.Falsifier (the outline row): the 74 composed reds of these four files read 0 (11 / 13 / 32 / 18). Each file runs alone and composed, red first, then green. The unchanged set reads unchanged: 12.5's 16 governed suites, F5.2's files, and
test_column_contributions_governed.pyat 9 passed.tests/test_declared_exclusion.pyreads green lone.Ruled / Decisions: T094 RULED
6021830531(OQ-R9-2 at its default: the farm is built by the conftest, composed-only, and namedCONTRACTS_DIR), under6016982816(ARC-Q2 (a)). There are no decisions of this slice's own.After: T095 (#46), which defines
CONTRACTS_DIR. It landed as e2340bb, and this branch has merged it.The change (the four files only)
Each file took
Path(__file__).parents[2]as openxFactory's root. Composed, that is the directory above the checkout. Each file now reads T095'sCONTRACTS_DIR(from conftest import CONTRACTS_DIR):SCRIPTis this leg's ownscripts/validate-ideation-dashboard-contracts.py, which reads the farm through theCONTRACTS_DIRenvironment variable.SCHEMASandREGISTER_SCHEMAreadCONTRACTS_DIR/schemas, andEXAMPLESreadsCONTRACTS_DIR.parent/examples/ideation-dashboard.CONTRACTS_DIRis None, and every path is byte-identical to before. So each file still fails alone for its declared reason,openxfactory-contracts.The consumer-validator test's docstring now states which validator
find_validatoranswers in each case (Copilot r4201041192). No test, guard, fixture or assertion is added or removed.Files:
tests/test_project_action_contracts.py,tests/test_project_schema_election.py,tests/test_validate_ideation_dashboard_contracts.py,tests/test_wheel_action_contracts.py.Measured: base =
maine2340bb, head = fd16d70 (this branch, merged with it)The composed form, R1Q23 (a):
92010d3ewith openDox, openXdox and openXwallet initialized recursively, and itsscripts/onPYTHONPATH;main84f8ed83;git statusclean afterwards;TERM=dumb;Unchanged set, composed, each file alone, at the same base and head:
git grep -l -e open-pr -e open_pr -e FakePullRequests -- 'tests/test_*.py');test_generator.py,test_snapshot*.py,test_session_snapshot.py);test_column_contributions_governed.py, at 9 passed.Together they are 1004 nodes, with 0 red at base and 0 red at head, and 0 nodes differ.
Lone (a venv from
pip install -e ".[test]", openDox at the pyproject pindede32b4, noPYTHONPATH):tests/test_declared_exclusion.py: 207 passed at base and at head;validate.ymlform at head:1161 passed, 4 skipped, 1 deselected(selected 1165 / passed 1161 / skipped 4; floors 1099 / 1095 / 4).Mutants, each applied to all four files at head. All were killed:
parents[1]always):test_declared_exclusion.pylone, the 4 entries fail;parents[2]: composed, 68 red (every case that loads the validator);In M5's lone run,
test_hosted_actor.py's entry also failed once. That file is not one of these four and is not mutated, and it reads green in the unmutated head run (207 passed). It was one-off noise on a loaded host.Earlier rounds measured the same falsifier over local integrations of
main+ #40 + #46 7ad77ae, and ofmainf70bc9c + #46 c2192e3, with the same results for these four files.CI and Copilot
validatesuccess (run 37548764129:1161 passed, 4 skipped, 1 deselected, which is selected 1165 / passed 1161 / skipped 4, above the floors), and SonarCloud Code Analysis success.Not done
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>, the harness's attribution form, not WRITER-RULES' "(1M context)" form.🤖 Generated with Claude Code
Summary by Sourcery
Update the contract-family tests to read the appropriate contract sources in composed and standalone environments.
Bug Fixes:
Enhancements: