Orchestrata Ultimate › Plans › evidence › w5-spec105-classification
W5.1b — spec-105 domaingen classification (40 REQs: 34 stamp / 6 partial / 0 missing)
Source: plans/evidence/w5-spec105-classification.md at 8a2cb42ad · last changed 2026-07-27 · first committed 2026-07-06 · 32 lines.
Prose pending.
Plan text
W5.1b — spec-105 domaingen classification (40 REQs: 34 stamp / 6 partial / 0 missing)
Root cause: requirements enacted inside Jinja templates (.j2) or private helpers — invisible to AST-based check-traces. Fix = EXTEND the reqs=[...] list on the owning public symbol (parse_ontology, generate_code, render_ontology, models), not new decorators per helper.
Stamp targets (34 REQs consolidate onto these symbols)
- reader.py:159 parse_ontology <- REQ-105-012, 014, 015, 016, 017, 021, 023, 025 (+004 paired)
- reader.py:32 _local <- REQ-105-020
- reader.py:28 OntologyParseError <- REQ-105-024
- models.py:14 XSD_TO_PY <- REQ-105-018
- ttl.py:95 render_ontology <- REQ-105-004 (paired w/ parse_ontology), 011 (paired w/ generate_code)
- generator.py:78 generate_code <- REQ-105-007, 008, 009, 011, 028, 029, 030, 031, 032, 033, 034, 035, 036, 038, 039, 041, 044, 045, 046, 047
- generator.py:91/84 generate_code (module loop/_safe path) <- REQ-105-043
- generator.py:112 _safe <- REQ-105-048
PARTIAL (6 — real drift, filed as backlog)
- REQ-105-002: owl:maxCardinality never checked (only FunctionalProperty) — builder
- REQ-105-019: label/comment conflated into one Entity.doc field; no distinct human-name — builder/reviewer (test enshrines the conflation)
- REQ-105-022: single-Module only; no bounded-context splitting exists — builder
- REQ-105-027: rdfs:label not round-tripped (re-serialized as rdfs:comment); round-trip test never asserts doc/label — builder + test-writer
- REQ-105-010/037 (HIGHEST severity, SUSPECTED-UNCONFIRMED): generated as_of/current SPARQL (repository.py.j2:81-116) has no ORDER BY/LIMIT/NOT EXISTS; supersede() is insert-only so the superseded value's validTo=9999 annotation persists — a time-T query may match the STALE value alongside the new one. Needs live RDF-star store confirmation, then disambiguation (e.g. ORDER BY DESC(?tx) LIMIT 1 or later-tombstone exclusion). reviewer -> builder.
Test gaps noted: owl:inverseOf never exercised by any fixture; _OPEN_END
sentinel never asserted; relationship-name as_of/insert paths untested; path-traversal attempt on _safe untested.