ν.β C2 — Cross-module reference resolution pattern — CLOSED 2026-05-04
Outcome: outcome-VALIDATED
Kill condition: NOT-MET (all 4 patterns produce 0-error codegen; P4-hybrid recommended)
Core empirical findings
Benchmark: 147 subprocess-isolated measurements (7 schemas × 3 generators × 7 trials); 0 errors; all patterns gen-pydantic + gen-json-schema + gen-shacl succeed.
SHACL: 6/6 boundary tests pass (pySHACL 0.31.0). P1-closed REJECTS partner-ext triples. P2/P4-open ACCEPT all.
Critical discovery: gen-shacl DEFAULT = --closed. Every INHERIT v2 CI pipeline MUST use --non-closed explicitly. Without it, all partner-extension triples are rejected silently. This extends ν.α A2 open-shape finding.
4-Pattern matrix
| Pattern | Codegen | SHACL default | Catala | Partner ext | Score |
|---|---|---|---|---|---|
| P1-Monorepo | OK | sh:closed true | FULL | BLOCKED | 2/5 |
| P2-Pip-module | OK | sh:closed true (→ —non-closed) | PARTIAL | OK | 4/5 |
| P3-IRI-only | OK | sh:closed false | NONE | OK | 3/5 |
| P4-Hybrid | OK | sh:closed true (→ —non-closed) | STRUCTURED | OK | 5/5 |
Recommended Phase-1 posture
P4-Hybrid: base module defines InheritEntity + Person + CrossModuleRef (target_iri + target_type + target_module); domain modules import base only; CI gen-shacl MUST use —non-closed.
A-21 CI gate candidate
G-SHACL-OPEN-FLAG-ENFORCED: verify —non-closed flag in CI gen-shacl invocation. Pre-staged, not yet A-N registered.
Files
- T-file:
~/off-github/library/projects/inherit/T-spike-nu-beta-C2-cross-module-reference-resolution-2026-05-04.md - Q-NU-007:
~/testatetech/docs-strategy/docs/superpowers/specs/2026-04-29-multi-phase-audit/current-questions/Q-NU-007-cross-module-reference-resolution-pattern.md - Scratch:
/tmp/spike-nu-beta-C2/(benchmark.py, benchmark-results.txt, shacl-boundary-test.py, shacl-results.txt, catala-results.txt, prior-evidence.md)
Forward traceability
- ζ-Q12 formal ask → Q-NU-007 graduates to Q-012
- Phase-1 Sprint S1 schema commit → P4-Hybrid implemented
- A-21 CI gate extension → G-SHACL-OPEN-FLAG-ENFORCED