evoQ-kpi-shapes.shapes
SHACL Shapes (13)
| Shape | Label | Target class | Properties |
|---|---|---|---|
| evoQ:ChangeLinkRatioShape | Change-link-ratio shape (canonical) | --- | 3 |
| evoQ:ConnectorIngestResultShape | Connector-ingest-result shape (AC-W1.4) | --- | 4 |
| evoQ:ControlGapResultShape | Control-gap result shape (canonical) | --- | 6 |
| evoQ:DemoReadinessShape | Demo-readiness shape (RQ3 dogfood gate) | --- | 2 |
| evoQ:DogfoodFreshnessResultShape | Dogfood-freshness result shape (RQ3) | --- | 2 |
| evoQ:GroundingResultShape | Grounding-result shape (RQ2) | --- | 4 |
| evoQ:OnboardingLatencyShape | Onboarding-latency shape (H-UX-04 gate) | --- | 3 |
| evoQ:PackBundleShape | Pack-bundle structural shape | --- | 4 |
| evoQ:PackExportLatencyShape | Pack-export-latency shape | --- | 4 |
| evoQ:RogueCommitDetectionShape | Rogue-commit-detection shape (D19 cascade) | --- | 3 |
| evoQ:TimeToRationaleSampleShape | Time-to-rationale sample shape | --- | 3 |
| evoQ:TraceabilityCompletenessResultShape | Traceability-completeness result shape (RQ1) | --- | 4 |
| evoQ:VerifiabilityLatencyResultShape | Verifiability-latency result shape (RQ4) | --- | 2 |
Change-link-ratio shape (canonical)
Validates % changes linked to ticket + informing decision — PRD §6.2 KPI + D08 v0.7 dogfood gate ≥ 0.80 on bra0_meta corpus. Canonical name per Nael Concern 1; evoQ:LinkRatioShape is the deprecated alias.
Target class: ---
| Property path | Constraint | Cardinality | Validation message |
|---|---|---|---|
| evoQ:linkedCount | xsd:integer · 1 | 1..linkedCount MUST be a non-negative xsd:integer. | |
| evoQ:ratio | xsd:decimal · 1 | 1..ratio MUST be xsd:decimal in [0.0, 1.0]; D08 v0.7 gate passes only at ratio ≥ 0.80 on bra0_meta corpus. | |
| evoQ:totalCount | xsd:integer · 1 | 1..totalCount MUST be a non-negative xsd:integer. |
Connector-ingest-result shape (AC-W1.4)
Validates per-ingest-run result per PRD cross-cutting AC-W1.4. One row per connector invocation.
Target class: ---
| Property path | Constraint | Cardinality | Validation message |
|---|---|---|---|
| evoQ:connectorName | xsd:string · 1 | 1..connectorName MUST be xsd:string (e.g. 'git-adr', 'jira', 'test-automation'). | |
| evoQ:failedCount | xsd:nonNegativeInteger · 1 | 1..failedCount MUST be xsd:nonNegativeInteger. | |
| evoQ:ingestedCount | xsd:nonNegativeInteger · 1 | 1..ingestedCount MUST be xsd:nonNegativeInteger. | |
| evoQ:policyViolations | xsd:nonNegativeInteger · 1 | 1..policyViolations MUST be xsd:nonNegativeInteger. |
Control-gap result shape (canonical)
Validates a row in the 'controls without evidence' query result — PRD §6.2 row 3 + §4.3 W3 MUST gap detector. Canonical name per Nael Concern 1; evoQ:GapDetectorResultShape is the deprecated alias. Includes rogue-commit + AC-less variants (arch-delta §3.3 gap-detector family).
Target class: ---
| Property path | Constraint | Cardinality | Validation message |
|---|---|---|---|
| evoQ:control | sh:IRI · 1 | 1..control MUST be an IRI (the control with a gap). | |
| evoQ:detectionLatencyMillis | xsd:nonNegativeInteger · 0 | 1..detectionLatencyMillis is optional; measures Q7 budget (≤500ms on 100k-quad graph). | |
| evoQ:framework | sh:IRI · 0 | framework IRI is optional (per-framework variant filter)...* | |
| evoQ:gapKind | xsd:string · 1 | 1..gapKind MUST be one of 'no-evidence'|'rogue-commit'|'ac-less'|'framework-binding' per arch-delta §3.3 gap-detector family. | |
| evoQ:severityTier | xsd:string · 0 | 1..severityTier is optional; if present MUST be 'critical'|'major'|'minor' (Q1 W05 may widen to controlled-vocabulary IRI per Nael Concern 4). | |
| evoQ:wallLabel | xsd:string · 1 | 1..wallLabel MUST be one of the 4 walls per H-UX-07 labelling rule. |
Demo-readiness shape (RQ3 dogfood gate)
Validates demo-readiness result — RQ3 §4.5 dogfood-rate = 1.0 CI gate per release. D08 v0.7 / v0.8 + D21 v0.9 release-demo cross-epic.
Target class: ---
| Property path | Constraint | Cardinality | Validation message |
|---|---|---|---|
| prov:generatedAtTime | xsd:dateTime · 1 | 1..PROV-O generation timestamp mandatory. | |
| evoQ:ratio | xsd:decimal · 1 | 1..dogfood-rate MUST be xsd:decimal in [0.0, 1.0]; CI gate passes only at 1.0 per D08/D21. |
Dogfood-freshness result shape (RQ3)
Validates dogfood-corpus freshness in days since last snapshot pin. RQ3 §4.5 — distinct from DemoReadinessShape; tracks whether the dogfood snapshot lags reality.
Target class: ---
| Property path | Constraint | Cardinality | Validation message |
|---|---|---|---|
| prov:generatedAtTime | xsd:dateTime · 1 | 1..PROV-O generation timestamp mandatory. | |
| evoQ:freshDays | xsd:integer · 1 | 1..freshDays MUST be xsd:integer ≥ 0 (days since last snapshot pin). |
Grounding-result shape (RQ2)
Validates grounding-protocol output row — RQ2 §3.5 + PRD §6.2 (ship-blocking hard gate per Noam Finding 2). Every W4 answer carries PROV-O OR refusal artifact.
Target class: ---
| Property path | Constraint | Cardinality | Validation message |
|---|---|---|---|
| evoQ:entity | sh:IRI · 1 | entity MUST be an IRI (the evidence-graph entity the agent accessed or refused to claim against)...* | |
| evoQ:grounded | xsd:boolean · 1 | 1..grounded MUST be xsd:boolean. True = PROV-O trace present; False = RefusalArtifact emitted (see evo:Evidence + dcterms:type 'RefusalArtifact' per Nael Q-γ). | |
| evoQ:invocation | 1 · 1 | evo:AmbientAgentInvocation..invocation MUST be an evo:AmbientAgentInvocation (arch-delta v0.1.4 §3.2.2). | |
| evoQ:policyViolations | xsd:nonNegativeInteger · 1 | 1..policyViolations MUST be xsd:nonNegativeInteger (count of ODRL prohibitions triggered; must be 0 for a grounded answer). |
Onboarding-latency shape (H-UX-04 gate)
Validates `topo connect → ask → pack` end-to-end wallclock per Kokoro H-UX-04 ≤10-min gate. Held at v0.7 ship per D-α 2026-04-17 (seed templates).
Target class: ---
| Property path | Constraint | Cardinality | Validation message |
|---|---|---|---|
| evoQ:latencyMillis | xsd:nonNegativeInteger · 1 | 1..latencyMillis MUST be xsd:nonNegativeInteger (wallclock ms; gate passes at ≤ 600000 = 10 min). | |
| evoQ:windowEnd | xsd:dateTime · 1 | 1..windowEnd MUST be xsd:dateTime (topo pack completion). | |
| evoQ:windowStart | xsd:dateTime · 1 | 1..windowStart MUST be xsd:dateTime (topo connect invocation). |
Pack-bundle structural shape
Validates the structural integrity of an E8 pack bundle per PRD §4.5 AC-W5.1. Distinct from evoQ:PackExportLatencyShape (latency distribution) — Nael Concern 1 keeps both.
Target class: ---
| Property path | Constraint | Cardinality | Validation message |
|---|---|---|---|
| evoQ:bundleHash | bundleHash MUST be a 64-char lowercase hex (SHA-256 content hash — tamper-detect). · 1 | 1..^[0-9a-f]{64}$ | |
| evoQ:framework | sh:IRI · 1 | framework MUST be ≥1 IRI (NIS2/DORA/ISO 27001/HDS/EHDS target framework)...* | |
| evoQ:jsonldArtifact | sh:IRI · 1 | 1..jsonldArtifact MUST be the IRI of the JSON-LD W3C artifact in the bundle. | |
| evoQ:pdfArtifact | sh:IRI · 1 | 1..pdfArtifact MUST be the IRI of the ISO 32000 PDF artifact in the bundle. |
Pack-export-latency shape
Validates time-to-prepare-audit latency samples (wallclock frame 1 → bundle-ready). PRD §6.2 row 4; storyboard-audit-pack 4:51 live-measured post-W29 per Athena Finding 3.
Target class: ---
| Property path | Constraint | Cardinality | Validation message |
|---|---|---|---|
| evoQ:framework | sh:IRI · 1 | 1..framework IRI MUST identify the framework pack measured. | |
| evoQ:latencyMillis | xsd:nonNegativeInteger · 1 | 1..latencyMillis MUST be xsd:nonNegativeInteger (wallclock ms). | |
| evoQ:windowEnd | xsd:dateTime · 1 | 1..windowEnd MUST be xsd:dateTime (bundle-ready wallclock). | |
| evoQ:windowStart | xsd:dateTime · 1 | 1..windowStart MUST be xsd:dateTime (frame 1 wallclock). |
Rogue-commit-detection shape (D19 cascade)
Validates rogue-commit detector output (commits without prov:wasInformedBy ADR linkage). Relocated to E4 per Nael Finding 6 — arch-delta §3.3 Data Plane gap-detector authority.
Target class: ---
| Property path | Constraint | Cardinality | Validation message |
|---|---|---|---|
| prov:generatedAtTime | xsd:dateTime · 1 | 1..PROV-O generation timestamp mandatory (when the detector surfaced the rogue commit). | |
| evoQ:commit | 1 · 1 | evo:Commit..commit MUST be an evo:Commit instance (the rogue commit). | |
| evoQ:detectionLatencyMillis | xsd:nonNegativeInteger · 1 | 1..detectionLatencyMillis MUST be xsd:nonNegativeInteger (Q7 budget ≤500ms / 100k-quad). |
Time-to-rationale sample shape
Validates a single wallclock sample for time-to-rationale KPI (indexed ADR opened → trail entry visible) per PRD §6.2 row 1.
Target class: ---
| Property path | Constraint | Cardinality | Validation message |
|---|---|---|---|
| prov:generatedAtTime | xsd:dateTime · 1 | 1..PROV-O generation timestamp is mandatory. | |
| evoQ:decisionIri | sh:IRI · 1 | 1..decisionIri MUST be an IRI (the indexed ADR sampled). | |
| evoQ:latencyMillis | xsd:nonNegativeInteger · 1 | 1..latencyMillis MUST be xsd:nonNegativeInteger (wallclock ms). |
Traceability-completeness result shape (RQ1)
Validates the SPARQL result row of the Trust Coverage (traceability-completeness) query per RQ1 §2.4 + §2.5 + PRD §6.1.
Target class: ---
| Property path | Constraint | Cardinality | Validation message |
|---|---|---|---|
| evoQ:completenessRatio | xsd:decimal · 1 | 1..completenessRatio MUST be xsd:decimal in [0.0, 1.0] (withEvidence / demandingEvidence). | |
| evoQ:demandingEvidence | xsd:integer · 1 | 1..demandingEvidence MUST be a non-negative xsd:integer (total controls under evidence demand). | |
| evoQ:thresholdMode | xsd:string · 1 | 1..thresholdMode MUST be 'strict' (θ) or 'relaxed' (θ') per RQ1 §2.3. | |
| evoQ:withEvidence | xsd:integer · 1 | 1..withEvidence MUST be a non-negative xsd:integer (count of controls with ≥1 evidence binding). |
Verifiability-latency result shape (RQ4)
RQ4 §5.5 — time for a third party to verify an answer against the exported pack bundle. Hybrid vs baseline latency comparison.
Target class: ---
| Property path | Constraint | Cardinality | Validation message |
|---|---|---|---|
| evoQ:bundleHash | xsd:string · 1 | 1..bundleHash MUST be xsd:string (SHA-256 hex of the verified bundle). | |
| evoQ:latencyMillis | xsd:nonNegativeInteger · 1 | 1..latencyMillis MUST be xsd:nonNegativeInteger. |
SPARQL example
# List all shapes and their target classes PREFIX sh: <http://www.w3.org/ns/shacl#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?shape ?label ?target WHERE { ?shape a sh:NodeShape ; rdfs:label ?label . OPTIONAL { ?shape sh:targetClass ?target } } ORDER BY ?label