S01.1: Complete the semantic baseline
Ownership and readiness
Parent session: #148. Epic: #147. Status: Complete through PR #221; independently reviewed and qualified on merged main. Findings: CM-01, CM-15. Maintenance #209 and roadmap refresh #217 are complete; this is the first remaining architecture task.
Delivered baseline
#141 is closed and PR #145 is merged. v1.1.2 includes the sequence correction and singleton response normalization. Reuse test/unit/compiler-compositor-occurs.test.ts, the sequence-occurrence-wrappers.wsdl conformance fixture, test/integration/sequence-occurrence-transport.test.ts, test/helpers/occurrenceTransport.mjs and test/conformance/registry.ts.
These artifacts are starting evidence. Their presence does not complete the independent reference validation or broader semantic characterization required here. v1.1.3 and v1.1.4 are now published; their publication is separate from the original v1.1.2 fix.
Bounded case manifest
Read repository instructions, #141/#145/#210 and current compiler/client code. Pin the tested main revision; the October 9 planning observation is b633cd1561ccb2689134a7289cf48bb097b0d1f1. Link or extend the sanitized original reproduction instead of creating duplicate coverage.
Commit the minimal manifest before expanding the investigation. Cover these case families, reusing a fixture across families when it gives independent assertions:
- Repeated and optional wrapping sequences, including the exact original enclosing-sequence reproducer.
- Simple choices and their ordering boundaries.
- Wildcards and the limits of the current projection.
- Zero-occurrence particles with unbounded descendants.
- Required choices with one selection and with multiple selections.
- Empty alternatives and their observable value representation.
- Finite count gaps, including the 2-or-4 case.
For each valid schema, include an accepted instance and a targeted rejected instance where that family permits one. If a proposed schema is itself illegal, record the schema rejection and add a legal equivalent for the intended semantic question when possible. Do not confuse invalid schema construction with an implementation rejecting a valid instance.
Each manifest entry records a stable case ID, CM finding, fixture/provenance, schema legality, reference instance results, actual catalog/TypeScript/OpenAPI results, applicable SOAP/gateway evidence, intended semantics, and disposition with a downstream owning issue. Record unsupported projections explicitly instead of manufacturing passing expected output.
Reference runner and evidence boundaries
Select and pin an independent XSD 1.0 validator; document setup, exact version, offline inputs and a committed runner command. The runner reports schema compilation and instance validation separately. It must not fetch schemas from the network during a validation run.
Provide a small deterministic reference subset in a required CI lane and a full-manifest qualification command using the existing scripts/workflows. Record which command owns each lane and how its tool is provisioned. A missing validator or fixture fails a required reference lane; running ordinary characterization tests without the tool is not a passing reference result.
Keep current-output characterization and intended semantic assertions distinct. Separate contributor-reported production acceptance from independently reproduced evidence. Reference disagreements and implementation bugs get a reproducer and a triage record; they do not automatically expand this task into later architecture implementation.
Acceptance and tests
Close when the agreed evidence is reproducible and gaps are assigned. Fixing all observed semantic differences is not an acceptance requirement; any necessary focused evidence fix needs an explicit bounded disposition in #148.
Code quality and maintainability
Follow the code-quality contract. Keep the reference adapter test-only and small, reuse the existing registry and transport harness, and document the manifest format once. Avoid duplicating the public support matrix or introducing a generic validation framework.
Delivery
Provide commit/PR, manifest and fixture paths, commands/results/unrun checks, observed consumer impact and inputs for #167. Update #148's handoff. Public model redesign and release delivery belong to later work.
Delivered acceptance, October 9, 2026
PR #221 merged at b86c653dfa0672231ca9b7cbc56d15ef6ae18bae; its tree bf3d8e7caa18a12ac204b061ad0ccc6e8563c6fb matches tested head 94340c89b384831b411edce61c1e9994119b51d6. Source baseline: b633cd1561ccb2689134a7289cf48bb097b0d1f1, published v1.1.4. The manifest was committed before broad investigation at 26cb21e.
The manifest is test/conformance/semantic-baseline.json; registry-linked fixtures and instances are in test/conformance/fixtures/xsd/compositors/ and the reused sequence fixture. Runner: scripts/semantic-reference.mjs and test/conformance/reference/validate.py. Setup and reproduction: docs/content-model-baseline.md.
npm run reference:setup provisions lxml 6.0.2/libxml2 2.14.6, xmlschema 4.2.0 and elementpath 5.0.4. npm run test:reference passed six cases/15 instances; npm run test:reference:full passed 14 cases/40 primary instance checks, with 13 schema-accepted cases, one schema rejection and one explicit secondary oracle disagreement. Full reference was also executed on clean merged main; its report identifies the exact merged revision.
npm run ci passed on the clean PR head with Node 24.19.0, npm 11.9.0, TypeScript 6.0.3 and Vitest 5.0.3: 670 tests/55 files, all conformance stages, required reference subset, docs, pipeline smoke and installed-package consumers covering 73 TypeScript artifacts. Focused characterization/missing-tool tests and conformance scoped typechecking passed. Independent read-only review approved after findings were resolved. Hosted Node 24/26 and CodeQL passed on the final head; merged-main CI passed.
Known limits remain explicit: ancestor choice/all/disabled/wildcard boundaries, ordered group relationships, repeated choices, empty alternatives and count gaps. Manifest dispositions assign analysis, legality, matching, projection, encoding and HTTP validation to #178/#179/#180/#182/#188/#198. libxml2's disabled-row acceptance is independently contradicted by xmlschema; #181 owns CM-15 oracle follow-up. No production repair or support/default activation was introduced.
No required local checks were skipped. IDE inspections were unavailable; repository-local checks were used. Historical commits, private vendor production validation, package publication/release preflight and S02 feasibility probes were not rerun. #167 consumes this delivered evidence; #148 remains open until that follow-up and its combined gate pass.
Operational pin follow-up
PR #223 corrected the test-only lxml pin to 6.1.0 after CVE-2026-41066 surfaced, preserving libxml2 2.14.6, all case inputs and literal semantic expectations. Fresh final full CI/reference qualification and merged-main checks pass at 86089d73d02f39b04c0ae2eac8522efc2b3d47c8. Use the current setup documented in docs/content-model-baseline.md; the 6.0.2 results above remain the exact historical #166 delivery evidence.
S01.1: Complete the semantic baseline
Ownership and readiness
Parent session: #148. Epic: #147. Status: Complete through PR #221; independently reviewed and qualified on merged main. Findings: CM-01, CM-15. Maintenance #209 and roadmap refresh #217 are complete; this is the first remaining architecture task.
Delivered baseline
#141 is closed and PR #145 is merged. v1.1.2 includes the sequence correction and singleton response normalization. Reuse
test/unit/compiler-compositor-occurs.test.ts, thesequence-occurrence-wrappers.wsdlconformance fixture,test/integration/sequence-occurrence-transport.test.ts,test/helpers/occurrenceTransport.mjsandtest/conformance/registry.ts.These artifacts are starting evidence. Their presence does not complete the independent reference validation or broader semantic characterization required here. v1.1.3 and v1.1.4 are now published; their publication is separate from the original v1.1.2 fix.
Bounded case manifest
Read repository instructions, #141/#145/#210 and current compiler/client code. Pin the tested main revision; the October 9 planning observation is
b633cd1561ccb2689134a7289cf48bb097b0d1f1. Link or extend the sanitized original reproduction instead of creating duplicate coverage.Commit the minimal manifest before expanding the investigation. Cover these case families, reusing a fixture across families when it gives independent assertions:
For each valid schema, include an accepted instance and a targeted rejected instance where that family permits one. If a proposed schema is itself illegal, record the schema rejection and add a legal equivalent for the intended semantic question when possible. Do not confuse invalid schema construction with an implementation rejecting a valid instance.
Each manifest entry records a stable case ID, CM finding, fixture/provenance, schema legality, reference instance results, actual catalog/TypeScript/OpenAPI results, applicable SOAP/gateway evidence, intended semantics, and disposition with a downstream owning issue. Record unsupported projections explicitly instead of manufacturing passing expected output.
Reference runner and evidence boundaries
Select and pin an independent XSD 1.0 validator; document setup, exact version, offline inputs and a committed runner command. The runner reports schema compilation and instance validation separately. It must not fetch schemas from the network during a validation run.
Provide a small deterministic reference subset in a required CI lane and a full-manifest qualification command using the existing scripts/workflows. Record which command owns each lane and how its tool is provisioned. A missing validator or fixture fails a required reference lane; running ordinary characterization tests without the tool is not a passing reference result.
Keep current-output characterization and intended semantic assertions distinct. Separate contributor-reported production acceptance from independently reproduced evidence. Reference disagreements and implementation bugs get a reproducer and a triage record; they do not automatically expand this task into later architecture implementation.
Acceptance and tests
Close when the agreed evidence is reproducible and gaps are assigned. Fixing all observed semantic differences is not an acceptance requirement; any necessary focused evidence fix needs an explicit bounded disposition in #148.
Code quality and maintainability
Follow the code-quality contract. Keep the reference adapter test-only and small, reuse the existing registry and transport harness, and document the manifest format once. Avoid duplicating the public support matrix or introducing a generic validation framework.
Delivery
Provide commit/PR, manifest and fixture paths, commands/results/unrun checks, observed consumer impact and inputs for #167. Update #148's handoff. Public model redesign and release delivery belong to later work.
Delivered acceptance, October 9, 2026
PR #221 merged at
b86c653dfa0672231ca9b7cbc56d15ef6ae18bae; its treebf3d8e7caa18a12ac204b061ad0ccc6e8563c6fbmatches tested head94340c89b384831b411edce61c1e9994119b51d6. Source baseline:b633cd1561ccb2689134a7289cf48bb097b0d1f1, published v1.1.4. The manifest was committed before broad investigation at26cb21e.The manifest is
test/conformance/semantic-baseline.json; registry-linked fixtures and instances are intest/conformance/fixtures/xsd/compositors/and the reused sequence fixture. Runner:scripts/semantic-reference.mjsandtest/conformance/reference/validate.py. Setup and reproduction:docs/content-model-baseline.md.npm run reference:setupprovisions lxml 6.0.2/libxml2 2.14.6, xmlschema 4.2.0 and elementpath 5.0.4.npm run test:referencepassed six cases/15 instances;npm run test:reference:fullpassed 14 cases/40 primary instance checks, with 13 schema-accepted cases, one schema rejection and one explicit secondary oracle disagreement. Full reference was also executed on clean merged main; its report identifies the exact merged revision.npm run cipassed on the clean PR head with Node 24.19.0, npm 11.9.0, TypeScript 6.0.3 and Vitest 5.0.3: 670 tests/55 files, all conformance stages, required reference subset, docs, pipeline smoke and installed-package consumers covering 73 TypeScript artifacts. Focused characterization/missing-tool tests and conformance scoped typechecking passed. Independent read-only review approved after findings were resolved. Hosted Node 24/26 and CodeQL passed on the final head; merged-main CI passed.Known limits remain explicit: ancestor choice/all/disabled/wildcard boundaries, ordered group relationships, repeated choices, empty alternatives and count gaps. Manifest dispositions assign analysis, legality, matching, projection, encoding and HTTP validation to #178/#179/#180/#182/#188/#198. libxml2's disabled-row acceptance is independently contradicted by xmlschema; #181 owns CM-15 oracle follow-up. No production repair or support/default activation was introduced.
No required local checks were skipped. IDE inspections were unavailable; repository-local checks were used. Historical commits, private vendor production validation, package publication/release preflight and S02 feasibility probes were not rerun. #167 consumes this delivered evidence; #148 remains open until that follow-up and its combined gate pass.
Operational pin follow-up
PR #223 corrected the test-only lxml pin to 6.1.0 after CVE-2026-41066 surfaced, preserving libxml2 2.14.6, all case inputs and literal semantic expectations. Fresh final full CI/reference qualification and merged-main checks pass at
86089d73d02f39b04c0ae2eac8522efc2b3d47c8. Use the current setup documented indocs/content-model-baseline.md; the 6.0.2 results above remain the exact historical #166 delivery evidence.