runward 0.14.1 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +9 -3
  2. package/dist/cli.js +27 -2
  3. package/dist/commands/check.js +72 -21
  4. package/dist/commands/compliance.js +20 -8
  5. package/dist/commands/doctor.js +6 -1
  6. package/dist/commands/init.js +9 -2
  7. package/dist/commands/manifest.js +72 -0
  8. package/dist/commands/rules.js +76 -0
  9. package/dist/commands/update.js +5 -1
  10. package/dist/lib/compliance.js +40 -50
  11. package/dist/lib/conformance.js +61 -15
  12. package/dist/lib/constants.js +1 -1
  13. package/dist/lib/evidence.js +222 -0
  14. package/dist/lib/manifest-sync.js +111 -0
  15. package/dist/lib/paths.js +2 -0
  16. package/dist/lib/regimes.js +32 -0
  17. package/dist/lib/rules.js +44 -0
  18. package/dist/lib/tools.js +1 -1
  19. package/dist/lib/verify-findings.js +24 -0
  20. package/examples/request-triage/code/README.md +74 -0
  21. package/examples/request-triage/code/package.json +19 -0
  22. package/examples/request-triage/code/src/adapters/hardcoded-account-registry.adapter.ts +23 -0
  23. package/examples/request-triage/code/src/adapters/in-memory-routing.adapter.ts +79 -0
  24. package/examples/request-triage/code/src/adapters/in-memory-triage-log.adapter.ts +42 -0
  25. package/examples/request-triage/code/src/adapters/keyword-model.adapter.ts +57 -0
  26. package/examples/request-triage/code/src/core/application/triage-request.usecase.ts +195 -0
  27. package/examples/request-triage/code/src/core/domain/guard.ts +121 -0
  28. package/examples/request-triage/code/src/core/domain/triage.ts +88 -0
  29. package/examples/request-triage/code/src/core/ports/account-registry.port.ts +15 -0
  30. package/examples/request-triage/code/src/core/ports/model-provider.port.ts +26 -0
  31. package/examples/request-triage/code/src/core/ports/routing.port.ts +32 -0
  32. package/examples/request-triage/code/src/core/ports/triage-log.port.ts +33 -0
  33. package/examples/request-triage/code/src/demo.ts +80 -0
  34. package/examples/request-triage/code/test/triage.test.ts +243 -0
  35. package/examples/request-triage/code/tsconfig.json +14 -0
  36. package/examples/request-triage/runward/adr/ADR-0003-port-placement-and-sovereignty.md +44 -0
  37. package/examples/request-triage/runward/architecture.md +4 -3
  38. package/examples/request-triage/runward/decision-matrix.md +1 -1
  39. package/examples/request-triage/runward/execution-topology.md +3 -3
  40. package/examples/request-triage/runward/floor.md +4 -4
  41. package/package.json +20 -8
  42. package/regimes/eu-ai-act@2024-1689.json +31 -0
  43. package/regimes/iso-42001@2023.json +22 -0
  44. package/regimes/nist-ai-rmf@1.0.json +19 -0
  45. package/templates/adapters/README.md +4 -0
  46. package/templates/adapters/gitlab-ci.yml +18 -0
  47. package/templates/mission/architecture.md +2 -0
  48. package/templates/mission/execution-topology.md +2 -0
  49. package/templates/mission/floor.md +2 -0
  50. package/templates/mission/threat-model.md +2 -0
  51. package/templates/rules/frontier-deterministic-boundary.md +1 -0
  52. package/templates/targets/AGENTS.md +1 -1
  53. package/templates/workflows/floor.md +1 -1
  54. package/templates/workflows/verify.md +2 -2
  55. package/examples/request-triage/runward/compliance/eu-ai-act-readiness.md +0 -89
  56. package/examples/request-triage/runward/compliance/oscal-component-definition.json +0 -209
@@ -21,7 +21,7 @@ Use this workflow once the architecture is fixed and building must start: "what
21
21
 
22
22
  **Start from the reference floor, not a blank page.** The starting point is the reference floor (`floor-ts/` in the Runward repository): a clonable hexagonal scaffold that already carries the pure domain, the ports, the adapters, and the middleware chain, with a principle-to-code table mapping each principle to where it lives in the code. Clone it, implement the project's concrete adapters behind the ports fixed in `architect`, and leave intact the structure that keeps the domain testable without the model. Do not reinvent the skeleton; populate it.
23
23
 
24
- **Confront the floor's craft rules at the point of building.** Before writing each piece, open the CRITICAL/HIGH rules mapped to the floor phase — `runward/rules/`, frontmatter `phases: [floor]`: the deterministic frontier guard, the model port and its keyless fallback, provider auto-detection, secrets boundary, prompt-injection defense, the hexagonal architecture and adapter pattern, the event-sourced journal, tool-scope atomicity. Do not work from their names — read them. Account for each in the `Rule conformance` manifest of the floor note: `applied` with a `file:line` or test, `deviated` with an ADR, or `n/a` with a reason. `runward check --strict` verifies that manifest is complete and well-formed (it checks that a decision was traced, never the quality of the code — you judge that at the gate).
24
+ **Confront the floor's craft rules at the point of building.** Before writing each piece, open the CRITICAL/HIGH rules mapped to the floor phase — `runward/rules/`, frontmatter `phases: [floor]`: the deterministic frontier guard, the model port and its keyless fallback, provider auto-detection, secrets boundary, prompt-injection defense, the hexagonal architecture and adapter pattern, the event-sourced journal, tool-scope atomicity. Do not work from their names — read them. Account for each in the `Rule conformance` manifest of the floor note: `applied` with a `file:line` or test, `deviated` with an ADR, or `n/a` with a reason. Prefer **typed pointers** — `file:PATH[:LINE][#SYMBOL]`, `test:PATH[::NAME]`, `adr:NNNN`, several per cell separated by `;` — the gate verifies them deterministically: resolution, non-empty content, symbol/test-name presence, and the rule's `signature:` when it declares one (ADR-0019/0020). `runward check --strict` verifies that manifest is complete and well-formed (it checks that a decision was traced and points at something real, never the quality of the code — you judge that at the gate).
25
25
 
26
26
  **Build exactly these six pieces, and nothing more.**
27
27
 
@@ -17,12 +17,12 @@ It is **advisory**. It produces findings, never a verdict that gates. `runward c
17
17
 
18
18
  **Return a finding per row**: `confirmed` (the code applies the rule), `cited-not-applied` (the row claims applied but the code does not carry the rule), or `uncertain` (needs a human look). Deduplicate overlapping findings; group them by severity.
19
19
 
20
- **Hand the findings to the operator.** They are input to the operator's gate decision, not a gate of their own. A `cited-not-applied` finding is a prompt to fix the code (or downgrade the row to `deviated`/`n/a`) and re-run `check --strict` — never a silent override of the deterministic gate.
20
+ **Write the findings, then hand them to the operator.** Record the pass in `runward/governance/verify-findings.md`: a dated header (date, model used, manifests reviewed) and one line per `applied` row — `rule · finding · pointer · one-line reason`. A green `check --strict` surfaces this artifact's presence and freshness (stale once a gated manifest changes); it never reads a verdict out of it. The findings are input to the operator's gate decision, not a gate of their own. A `cited-not-applied` finding is a prompt to fix the code (or downgrade the row to `deviated`/`n/a`) and re-run `check --strict` — never a silent override of the deterministic gate.
21
21
 
22
22
  ## Definition of Done
23
23
 
24
24
  - Every `applied` row reviewed, with a confirmed / cited-not-applied / uncertain finding.
25
- - Findings handed to the operator; no exit code produced, no gate blocked.
25
+ - Findings written to `runward/governance/verify-findings.md` (dated) and handed to the operator; no exit code produced, no gate blocked.
26
26
  - Any `cited-not-applied` finding routed back to the code and re-checked deterministically.
27
27
 
28
28
  ## Anti-patterns
@@ -1,89 +0,0 @@
1
- # EU AI Act — Annex IV technical documentation — assessment-readiness draft
2
-
3
- > **Draft, incomplete — not a conformity assessment.** Assembled by `runward compliance eu-ai-act` on 2026-07-13,
4
- > deterministically from ratified engineering artifacts (no model call). High-risk obligations bind from
5
- > **2 August 2026** (Annex III). This populates Annex IV Point 2 (design & validation) and the design-rationale
6
- > history; it does **not** satisfy art. 12 runtime logging, and it is not a signed declaration of conformity.
7
- > Verify against the Official Journal text before filing.
8
-
9
- ## Annex IV coverage map
10
-
11
- | Annex IV point | runward supplies | Required from the provider |
12
- |---|---|---|
13
- | 1. General description | UI, HW/SW/firmware notes | intended purpose, provider, versioning, distribution |
14
- | 2. Elements & development | **architecture, validation procedures + metrics, cybersecurity (manifest + rubric + threat model); design choices, alternatives, assumptions, pre-determined changes = the ADR journal** | third-party sourcing/licensing, sign-off on test logs |
15
- | 3. Monitoring & control | accuracy characterization, input-data specs, oversight tooling | fundamental-rights / discrimination risk sourcing |
16
- | 4. Performance metrics | metric-choice justification (rubric) | — |
17
- | 5. Risk management (art. 9) | technical inputs (threat model, testing) | **risk acceptance / RMS governance** |
18
- | 6. Lifecycle changes | engineering change record (ADR journal) | release/change-management governance |
19
- | 7. Harmonised standards | technical notes | **standards selection** (compliance strategy) |
20
- | 8. Declaration of conformity | — | **signed legal act (art. 47)** |
21
- | 9. Post-market monitoring | telemetry/logging backbone | **post-market monitoring plan (art. 72)** |
22
-
23
- ## Point 2 — design decisions (ADR journal, near-verbatim to the Annex IV requirement)
24
-
25
- | ADR | Status |
26
- |---|---|
27
- | ADR-0001: single orchestrator, sequential triage (`ADR-0001-single-orchestrator.md`) | accepted |
28
- | ADR-0002: deterministic guard on model-extracted fields (`ADR-0002-deterministic-guard-on-extracted-fields.md`) | accepted |
29
-
30
- ## Agentic-risk coverage (OWASP ASI → Point 2 cybersecurity / Point 5 risk)
31
-
32
- | ASI | Risk | Rules addressing it |
33
- |---|---|---|
34
- | ASI01 | Agent Goal Hijack | `frontier-deterministic-boundary`, `hexa-move-deterministic-out`, `security-prompt-injection` |
35
- | ASI02 | Tool Misuse & Exploitation | `checklist-pre-production-security`, `hexa-move-deterministic-out`, `resilience-fail-open`, `security-code-execution-sandbox`, `security-tool-change-reapproval`, `tools-registry-pattern`, `tools-scope-atomicity` |
36
- | ASI03 | Identity & Privilege Abuse | `checklist-pre-production-security`, `config-secrets-boundary`, `tools-registry-pattern` |
37
- | ASI04 | Agentic Supply Chain Vulnerabilities | `contracts-governance`, `resilience-multi-provider-fallback`, `security-mcp-server-pinning`, `security-tool-change-reapproval` |
38
- | ASI05 | Unexpected Code Execution | `security-code-execution-sandbox` |
39
- | ASI06 | Memory & Context Poisoning | `checklist-pre-production-security`, `data-memory-provenance`, `patterns-memory-router-tiered`, `security-prompt-injection`, `state-event-sourcing` |
40
- | ASI07 | Insecure Inter-Agent Communication | `contracts-governance` |
41
- | ASI08 | Cascading Failures | `async-job-guardrails`, `checklist-pre-production-resilience`, `eval-loop`, `resilience-fail-open`, `resilience-multi-provider-fallback`, `resilience-retry-backoff`, `scaling-distributed-rate-limiting` |
42
- | ASI09 | Human-Agent Trust Exploitation | `security-human-agent-trust` |
43
- | ASI10 | Rogue Agents | `config-secrets-boundary`, `scaling-distributed-rate-limiting`, `security-mcp-server-pinning` |
44
-
45
- ## Control-implementation status (feeds Point 2 validation)
46
-
47
- | Rule | Status | Evidence | Phase |
48
- |---|---|---|---|
49
- | `contracts-governance` | applied | §3 TriageRecord v1.0 — versioned, additive, tolerant reader, fail-closed; contracts/ | Architect |
50
- | `hexa-architecture` | applied | §2 pure triage domain, four ports; code/src/core/ | Architect |
51
- | `hexa-adapter-pattern` | applied | §3 every dependency behind a port; code/src/adapters/ | Architect |
52
- | `hexa-typescript-native` | n/a | language deliberately left open at this note (§5); locked at floor kickoff (ADR-0003 pending) | Architect |
53
- | `process-adr-and-journal` | applied | adr/ADR-0001, adr/ADR-0002 — dated decisions with reevaluation triggers | Architect |
54
- | `security-mcp-server-pinning` | n/a | the floor consumes no MCP or external tool server; tools are in-process and deterministic | Architect |
55
- | `topology-port-placement-mapped` | applied | §2 map — all four ports placed; the two non-in-app placements (ModelPort → managed vendor runtime under an approved deployment, RoutingPort → existing ticketing infra) are recorded in architecture.md §2 and the legacy-integration note | Topology |
56
- | `topology-sovereignty-by-data-class` | applied | §2 map — a data class and a sovereignty level per port; request text is bound to the approved model deployment (residency), the TriageRecord is kept internal | Topology |
57
- | `topology-trace-export-decision` | n/a | the floor exports no execution traces to a third party; observability is in-app structured logs per governance/observability-schema.md | Topology |
58
- | `topology-usage-registry-present` | applied | §3 usage registry — the single prod deployment with its risk class, data classes, action scopes and owner | Topology |
59
- | `frontier-deterministic-boundary` | applied | code/src/core/domain/guard.ts — every action-bearing field recomputed/verified (ADR-0002), fail-closed | Floor |
60
- | `hexa-move-deterministic-out` | applied | code/src/core/domain/guard.ts + keyword classifier — classification and validation are deterministic | Floor |
61
- | `config-secrets-boundary` | n/a | the illustrative floor runs the deterministic keyword classifier; no provider secret is read in this example code | Floor |
62
- | `provider-llm-auto-detection` | n/a | only the deterministic keyword adapter ships here; no real provider to auto-detect | Floor |
63
- | `security-prompt-injection` | applied | threat-model §3 + ADR-0002 — model-proposed values never act; request text is data, not instruction | Floor |
64
- | `hexa-architecture` | applied | code/src/core/ pure domain behind four ports | Floor |
65
- | `hexa-adapter-pattern` | applied | code/src/adapters/ — mailbox/web, keyword-model, routing, log behind ports | Floor |
66
- | `provider-no-crash-missing-env` | applied | code/src/adapters/keyword-model.adapter.ts — deterministic fallback runs with no key | Floor |
67
- | `state-event-sourcing` | applied | code/src/adapters/in-memory-triage-log.adapter.ts — append-only, keyed by request ID | Floor |
68
- | `tools-scope-atomicity` | applied | architecture §2 middleware chain + approval on RoutingPort for compliance records | Floor |
69
- | `eval-loop` | applied | evaluation-rubric.md — abstention scenarios, guard-escalation rate watched off the hot path | Govern |
70
- | `security-prompt-injection` | applied | §3 guardrails — untrusted request text is data; deterministic guard before RoutingPort (ADR-0002) | Govern |
71
- | `config-secrets-boundary` | n/a | the illustrative floor reads no provider secret (deterministic keyword classifier) | Govern |
72
- | `resilience-fail-open` | applied | §3 — sensitive routing fails closed; the guard rejects on doubt (ADR-0002) | Govern |
73
- | `resilience-multi-provider-fallback` | n/a | single deterministic classifier; no second provider in this floor | Govern |
74
- | `resilience-retry-backoff` | n/a | in-memory adapters; no external call to retry in the shipped floor | Govern |
75
- | `async-job-guardrails` | n/a | synchronous request triage; no background jobs at the floor | Govern |
76
- | `security-mcp-server-pinning` | n/a | no MCP or external tool server consumed at the floor | Govern |
77
- | `security-tool-change-reapproval` | n/a | tools are in-process and deterministic; no signed external tool to re-approve | Govern |
78
- | `data-memory-provenance` | n/a | no persistent memory; each request is triaged independently (named deferral) | Govern |
79
- | `security-code-execution-sandbox` | n/a | the floor runs no model-generated or tool-invoked code; the classifier is deterministic in-process code and RoutingPort calls a typed ticketing API, not code | Govern |
80
- | `security-human-agent-trust` | applied | §3 — each TriageRecord field carries a provenance marker (computed / verified / model-proposed); RoutingPort approval on a compliance-flagged record shows provenance before the human decides (ADR-0002) | Govern |
81
-
82
- ## Required from the provider (runward cannot produce this)
83
-
84
- - **Point 1** general description (intended purpose, provider, versioning) · **Point 5** RMS governance & risk acceptance (art. 9).
85
- - **Point 7** harmonised-standards selection · **Point 8** the signed **EU declaration of conformity** (art. 47) · **Point 9** the **post-market monitoring plan** (art. 72).
86
- - **Art. 12 runtime event logs** — produced by the running system, not by runward.
87
-
88
- _Engineering framing, not legal advice; Annex IV wording moves — confirm against the Official Journal (Reg. (EU) 2024/1689) before filing._
89
-
@@ -1,209 +0,0 @@
1
- {
2
- "component-definition": {
3
- "uuid": "748fac1c-a21c-5282-8140-b77323a0e7da",
4
- "metadata": {
5
- "title": "runward — agentic-security control evidence (request-triage)",
6
- "last-modified": "2026-07-13T00:00:00Z",
7
- "version": "2026-07-13",
8
- "oscal-version": "1.1.2",
9
- "remarks": "Assessment-readiness DRAFT, assembled deterministically by runward from ratified engineering artifacts (rule to OWASP ASI mapping, conformance manifest, ADR journal). Supporting evidence only — NOT a compliance claim, NOT a certification, NOT a conformity assessment. Applicability, risk acceptance and management sign-off are the operator's."
10
- },
11
- "components": [
12
- {
13
- "uuid": "78f7623e-fce0-5c98-a040-96a5f5a97e1f",
14
- "type": "software",
15
- "title": "request-triage",
16
- "description": "The agentic system governed by this runward mission.",
17
- "control-implementations": [
18
- {
19
- "uuid": "f8f94d50-a2a4-575a-a0cb-d993e50693ca",
20
- "source": "https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/",
21
- "description": "OWASP Top 10 for Agentic Applications (ASI01–ASI10) coverage, derived from the mission's craft-rule mapping and conformance manifest.",
22
- "implemented-requirements": [
23
- {
24
- "uuid": "10e10f8e-4f67-5a34-94df-7efaa113769f",
25
- "control-id": "asi-01",
26
- "description": "ASI01 Agent Goal Hijack. Addressed by rules: frontier-deterministic-boundary, hexa-move-deterministic-out, security-prompt-injection.",
27
- "props": [
28
- {
29
- "name": "implementation-status",
30
- "value": "implemented"
31
- }
32
- ],
33
- "links": [
34
- {
35
- "href": "./iso-42001-readiness.md",
36
- "rel": "reference",
37
- "text": "runward assessment-readiness draft"
38
- }
39
- ]
40
- },
41
- {
42
- "uuid": "bb043f31-d856-50d7-8e07-6f7ab9b517e4",
43
- "control-id": "asi-02",
44
- "description": "ASI02 Tool Misuse & Exploitation. Addressed by rules: checklist-pre-production-security, hexa-move-deterministic-out, resilience-fail-open, security-code-execution-sandbox, security-tool-change-reapproval, tools-registry-pattern, tools-scope-atomicity.",
45
- "props": [
46
- {
47
- "name": "implementation-status",
48
- "value": "partial"
49
- }
50
- ],
51
- "links": [
52
- {
53
- "href": "./iso-42001-readiness.md",
54
- "rel": "reference",
55
- "text": "runward assessment-readiness draft"
56
- }
57
- ]
58
- },
59
- {
60
- "uuid": "bfb244c6-c14d-54d8-b2a7-9efc5fa9b8aa",
61
- "control-id": "asi-03",
62
- "description": "ASI03 Identity & Privilege Abuse. Addressed by rules: checklist-pre-production-security, config-secrets-boundary, tools-registry-pattern.",
63
- "props": [
64
- {
65
- "name": "implementation-status",
66
- "value": "partial"
67
- }
68
- ],
69
- "links": [
70
- {
71
- "href": "./iso-42001-readiness.md",
72
- "rel": "reference",
73
- "text": "runward assessment-readiness draft"
74
- }
75
- ]
76
- },
77
- {
78
- "uuid": "ba1a82be-4b49-5b9f-a017-2d9a1c7ba34a",
79
- "control-id": "asi-04",
80
- "description": "ASI04 Agentic Supply Chain Vulnerabilities. Addressed by rules: contracts-governance, resilience-multi-provider-fallback, security-mcp-server-pinning, security-tool-change-reapproval.",
81
- "props": [
82
- {
83
- "name": "implementation-status",
84
- "value": "partial"
85
- }
86
- ],
87
- "links": [
88
- {
89
- "href": "./iso-42001-readiness.md",
90
- "rel": "reference",
91
- "text": "runward assessment-readiness draft"
92
- }
93
- ]
94
- },
95
- {
96
- "uuid": "c3876a6c-d8fe-51ca-b1f6-cff5da50c134",
97
- "control-id": "asi-05",
98
- "description": "ASI05 Unexpected Code Execution. Addressed by rules: security-code-execution-sandbox.",
99
- "props": [
100
- {
101
- "name": "implementation-status",
102
- "value": "partial"
103
- }
104
- ],
105
- "links": [
106
- {
107
- "href": "./iso-42001-readiness.md",
108
- "rel": "reference",
109
- "text": "runward assessment-readiness draft"
110
- }
111
- ]
112
- },
113
- {
114
- "uuid": "02c247e9-35be-5009-bc90-406e39c97f01",
115
- "control-id": "asi-06",
116
- "description": "ASI06 Memory & Context Poisoning. Addressed by rules: checklist-pre-production-security, data-memory-provenance, patterns-memory-router-tiered, security-prompt-injection, state-event-sourcing.",
117
- "props": [
118
- {
119
- "name": "implementation-status",
120
- "value": "partial"
121
- }
122
- ],
123
- "links": [
124
- {
125
- "href": "./iso-42001-readiness.md",
126
- "rel": "reference",
127
- "text": "runward assessment-readiness draft"
128
- }
129
- ]
130
- },
131
- {
132
- "uuid": "d1714857-8222-50ed-8fe4-4c106d904621",
133
- "control-id": "asi-07",
134
- "description": "ASI07 Insecure Inter-Agent Communication. Addressed by rules: contracts-governance.",
135
- "props": [
136
- {
137
- "name": "implementation-status",
138
- "value": "implemented"
139
- }
140
- ],
141
- "links": [
142
- {
143
- "href": "./iso-42001-readiness.md",
144
- "rel": "reference",
145
- "text": "runward assessment-readiness draft"
146
- }
147
- ]
148
- },
149
- {
150
- "uuid": "eb4325d7-8950-5078-b536-30a62da4006b",
151
- "control-id": "asi-08",
152
- "description": "ASI08 Cascading Failures. Addressed by rules: async-job-guardrails, checklist-pre-production-resilience, eval-loop, resilience-fail-open, resilience-multi-provider-fallback, resilience-retry-backoff, scaling-distributed-rate-limiting.",
153
- "props": [
154
- {
155
- "name": "implementation-status",
156
- "value": "partial"
157
- }
158
- ],
159
- "links": [
160
- {
161
- "href": "./iso-42001-readiness.md",
162
- "rel": "reference",
163
- "text": "runward assessment-readiness draft"
164
- }
165
- ]
166
- },
167
- {
168
- "uuid": "56e6885a-fd37-599f-b5dc-5cfd4c6cf582",
169
- "control-id": "asi-09",
170
- "description": "ASI09 Human-Agent Trust Exploitation. Addressed by rules: security-human-agent-trust.",
171
- "props": [
172
- {
173
- "name": "implementation-status",
174
- "value": "implemented"
175
- }
176
- ],
177
- "links": [
178
- {
179
- "href": "./iso-42001-readiness.md",
180
- "rel": "reference",
181
- "text": "runward assessment-readiness draft"
182
- }
183
- ]
184
- },
185
- {
186
- "uuid": "7a1bdaf4-ea39-5b53-b2a6-2b90660c38be",
187
- "control-id": "asi-10",
188
- "description": "ASI10 Rogue Agents. Addressed by rules: config-secrets-boundary, scaling-distributed-rate-limiting, security-mcp-server-pinning.",
189
- "props": [
190
- {
191
- "name": "implementation-status",
192
- "value": "partial"
193
- }
194
- ],
195
- "links": [
196
- {
197
- "href": "./iso-42001-readiness.md",
198
- "rel": "reference",
199
- "text": "runward assessment-readiness draft"
200
- }
201
- ]
202
- }
203
- ]
204
- }
205
- ]
206
- }
207
- ]
208
- }
209
- }