Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion artifacts/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ check-all:
$(PYTHON) check_all.py --json

test:
cd .. && $(PYTHON) -m pytest -q unit_tests/test_artifacts_validation.py
cd .. && $(PYTHON) -m pytest -q unit_tests/test_artifacts_validation.py unit_tests/test_validate_board_ai_roadmap.py

# `check-all` already runs semantic validation and manifest verification.
all: manifest-check check-all test
75 changes: 55 additions & 20 deletions artifacts/README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,39 @@
# Governance Artifacts Usage Guide

This folder contains machine-readable assets for enterprise and regulator-facing AI governance workflows.
This folder contains machine-readable assets for enterprise and
regulator-facing AI governance workflows.

## Files

- `annex-iv-dossier-schema-v1.json`: JSON Schema for EU AI Act Annex IV dossier payloads.
- `control-catalog-v1.json`: control inventory with ownership, cadence, severity, and framework mappings.
- `annex-iv-dossier-schema-v1.json`: JSON Schema for EU AI Act Annex IV
dossier payloads.
- `control-catalog-v1.json`: control inventory with ownership, cadence,
severity, and framework mappings.
- `roadmap-2026-2030.yaml`: phased implementation and milestone plan.
- `regulator-report-template.xml`: regulator-ready report skeleton.
- `enterprise-civilizational-agi-asi-blueprint-2026-2030.md`: implementation blueprint narrative.
- `examples/annex-iv-dossier-example.json`: sample payload conforming to Annex IV schema.
- `manifest-targets-v1.json`: canonical tracked-file list used by manifest build and validation.
- `schemas/manifest-targets-schema-v1.json`: JSON Schema for manifest-target metadata.
- `schemas/artifact-manifest-schema-v1.json`: JSON Schema for produced checksum manifests.
- `schemas/check-all-result-schema-v1.json`: JSON Schema for unified check JSON output.
- `artifact-manifest-v1.json`: SHA-256 checksum manifest for tamper-evident packaging.
- `validate_artifacts.py`: parser + semantic validation utility.
- `enterprise-civilizational-agi-asi-blueprint-2026-2030.md`:
implementation blueprint narrative.
- `examples/annex-iv-dossier-example.json`: sample payload conforming to
Annex IV schema.
- `artifact-manifest-v1.json`: SHA-256 checksum manifest for tamper-evident
packaging.
- `data/board-ai-roadmap-2026-2030.json`: board roadmap facts (financials,
domains, jurisdictions, stage gates).
- `schemas/board-ai-roadmap-schema-v1.json`: JSON Schema for board roadmap
artifact.
- `validate_board_ai_roadmap.py`: schema validator for board roadmap artifact.
- `manifest-targets-v1.json`: canonical tracked-file list used by manifest
build and validation.
- `schemas/manifest-targets-schema-v1.json`: JSON Schema for
manifest-target metadata.
- `schemas/artifact-manifest-schema-v1.json`: JSON Schema for produced
checksum manifests.
- `schemas/check-all-result-schema-v1.json`: JSON Schema for unified check
JSON output.
- `validate_artifacts.py`: parser and semantic validation utility.
- `build_manifest.py`: manifest regeneration utility.
- `requirements-artifacts.txt`: pinned runtime/test dependencies for artifact checks.
- `requirements-artifacts.txt`: pinned runtime/test dependencies for artifact
checks.
- `Makefile`: convenience targets for local artifact validation workflows.

## Validation
Expand All @@ -34,23 +50,36 @@ Machine-readable JSON mode:
python artifacts/validate_artifacts.py --json
```

Validate board roadmap artifact:

```bash
python artifacts/validate_board_ai_roadmap.py
```

Skip checksum validation (for local editing before manifest regeneration):

```bash
python artifacts/validate_artifacts.py --skip-manifest
```

On validation failure with `--json`, output is `{ "status": "error", "error": "..." }` and exit code is `1`.
On validation failure with `--json`, output is:

Exit behavior: all CLI tools return `0` on success and `1` on validation/check failure.
```json
{"status": "error", "error": "..."}
```

Exit behavior: all CLI tools return `0` on success and `1` on
validation/check failure.

The validator performs:

1. JSON/YAML/XML parse checks.
2. Required key checks for schema, roadmap, and controls.
3. Annex IV sample semantic checks (types, required fields, enum values, date format).
3. Annex IV sample semantic checks (types, required fields, enum values,
date format).
4. Control mapping cross-reference checks (no unknown control IDs).
5. Regulator XML required section checks.
6. Roadmap milestone date-range checks (20262030).
6. Roadmap milestone date-range checks (2026-2030).
7. Manifest checksum checks for all tracked artifacts.
8. Manifest coverage checks (no missing or unexpected files).

Expand Down Expand Up @@ -86,7 +115,8 @@ python artifacts/check_all.py
python artifacts/check_all.py --json
```

`check_all --json` includes `schema_version`, `checked_at` (UTC ISO-8601), `manifest_fresh`, `validation_ok`, and `errors`.
`check_all --json` includes `schema_version`, `checked_at`
(UTC ISO-8601), `manifest_fresh`, `validation_ok`, and `errors`.

## Makefile shortcuts

Expand All @@ -99,6 +129,7 @@ make -C artifacts all
```

Other useful shortcuts:

- `make manifest-check`
- `make validate`
- `make check-all`
Expand All @@ -107,9 +138,13 @@ Other useful shortcuts:
## Test

```bash
python -m pytest -q unit_tests/test_artifacts_validation.py
python -m pytest -q unit_tests/test_artifacts_validation.py \
unit_tests/test_validate_board_ai_roadmap.py
# or from artifacts/: make test
```


CI note: `.github/workflows/artifact-validation.yml` supports `workflow_dispatch` for on-demand re-validation, runs `make -C artifacts all` as the canonical validation entrypoint, and triggers on changes to `artifacts/**`, `unit_tests/**`, `pytest.ini`, and the workflow file itself.
CI note: `.github/workflows/artifact-validation.yml` supports
`workflow_dispatch` for on-demand re-validation, runs
`make -C artifacts all` as the canonical validation entrypoint, and triggers
on changes to `artifacts/**`, `unit_tests/**`, `pytest.ini`, and the
workflow file.
7 changes: 5 additions & 2 deletions artifacts/artifact-manifest-v1.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,14 @@
"files": {
"annex-iv-dossier-schema-v1.json": "191c3442f4b372e8fb400640648841fb4d63aecdfb791d0b1b230a65a384ffe1",
"control-catalog-v1.json": "56328ecaed2af4d832e993accb3b85d63d69f93eece4f10de08f0c82f71729d8",
"data/board-ai-roadmap-2026-2030.json": "47ce2ce17cfc41f525b96a33c4969370d6cdbf0af37cb4a452fb5792de66843d",
"enterprise-civilizational-agi-asi-blueprint-2026-2030.md": "12684e460b4f33a49d74e66eaa1400aab85e4dd6879e262e06ac932be7c3f3e3",
"examples/annex-iv-dossier-example.json": "fd914a07bf2691d9de262907953890ba353b23fe159d07a8b53eee1e6d16b1e2",
"regulator-report-template.xml": "62c55a96b60bbc4592f0ad273ee1cca6e25eac6a437fb047dfb08bdf5baeab2d",
"roadmap-2026-2030.yaml": "2297c95faefe22ff03cb9aa7d104be232fa0269b831cb231f5b7f0ab0ed86369"
"roadmap-2026-2030.yaml": "2297c95faefe22ff03cb9aa7d104be232fa0269b831cb231f5b7f0ab0ed86369",
"schemas/board-ai-roadmap-schema-v1.json": "bff5e947f78ec5d4d8bb49e8414e077a5d4b8144962272e9720598ddb63ba4dc",
"validate_board_ai_roadmap.py": "e2f685259f72771dfcbd48609965f98bbadf219934825518833b9e59c3613954"
},
"generated_at": "2026-04-26T03:26:37+00:00",
"generated_at": "2026-04-29T05:06:47+00:00",
"version": "1.1"
}
75 changes: 75 additions & 0 deletions artifacts/data/board-ai-roadmap-2026-2030.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
{
"schema_version": "board-ai-roadmap-v1",
"program": {
"name": "G-SIB AI Transformation",
"period": "2026-2030",
"investment_usd_billion": 2.8,
"value_target_usd_billion": 4.2,
"irr_hurdle_percent": 18,
"discount_rate_percent": 10
},
"financials": {
"illustrative_net_cash_flows_usd_billion": {
"2026": -0.8,
"2027": -0.7,
"2028": 0.5,
"2029": 1.05,
"2030": 1.35
},
"npv_usd_billion": 0.63,
"payback_years": 4.2
},
"domains": [
"governance",
"infrastructure",
"risk_controls",
"customer_experience",
"operations",
"trading_markets"
],
"jurisdictions": {
"US": [
"SR 11-7",
"OCC",
"CFPB"
],
"EU": [
"EU AI Act",
"GDPR",
"EBA guidance"
],
"UK": [
"PRA",
"FCA",
"SM&CR",
"Operational resilience"
],
"APAC": [
"MAS FEAT",
"HKMA",
"Cross-border data governance"
]
},
"stage_gates": [
{
"gate": "Gate 1",
"target": "2026-Q2",
"focus": "Foundation readiness"
},
{
"gate": "Gate 2",
"target": "2027-Q2",
"focus": "Controlled customer deployment"
},
{
"gate": "Gate 3",
"target": "2028-Q4",
"focus": "Industrialized compliance"
},
{
"gate": "Gate 4",
"target": "2029-Q4",
"focus": "High-impact scale"
}
]
}
5 changes: 4 additions & 1 deletion artifacts/manifest-targets-v1.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
"roadmap-2026-2030.yaml",
"regulator-report-template.xml",
"enterprise-civilizational-agi-asi-blueprint-2026-2030.md",
"examples/annex-iv-dossier-example.json"
"examples/annex-iv-dossier-example.json",
"data/board-ai-roadmap-2026-2030.json",
"schemas/board-ai-roadmap-schema-v1.json",
"validate_board_ai_roadmap.py"
]
}
1 change: 1 addition & 0 deletions artifacts/requirements-artifacts.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
pyyaml==6.0.2
pytest==9.0.3
jsonschema==4.25.1
103 changes: 103 additions & 0 deletions artifacts/schemas/board-ai-roadmap-schema-v1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.com/schemas/board-ai-roadmap-schema-v1.json",
"title": "Board AI Roadmap Schema v1",
"type": "object",
"required": [
"schema_version",
"program",
"financials",
"domains",
"jurisdictions",
"stage_gates"
],
"properties": {
"schema_version": {
"type": "string",
"const": "board-ai-roadmap-v1"
},
"program": {
"type": "object",
"required": [
"name",
"period",
"investment_usd_billion",
"value_target_usd_billion",
"irr_hurdle_percent",
"discount_rate_percent"
],
"properties": {
"name": {"type": "string", "minLength": 1},
"period": {"type": "string", "pattern": "^\\d{4}-\\d{4}$"},
"investment_usd_billion": {"type": "number", "minimum": 0},
"value_target_usd_billion": {"type": "number", "minimum": 0},
"irr_hurdle_percent": {"type": "number", "minimum": 0},
"discount_rate_percent": {"type": "number", "minimum": 0}
},
"additionalProperties": false
},
"financials": {
"type": "object",
"required": [
"illustrative_net_cash_flows_usd_billion",
"npv_usd_billion",
"payback_years"
],
"properties": {
"illustrative_net_cash_flows_usd_billion": {
"type": "object",
"required": ["2026", "2027", "2028", "2029", "2030"],
"additionalProperties": false,
"properties": {
"2026": {"type": "number"},
"2027": {"type": "number"},
"2028": {"type": "number"},
"2029": {"type": "number"},
"2030": {"type": "number"}
}
},
"npv_usd_billion": {"type": "number"},
"payback_years": {"type": "number", "minimum": 0}
},
"additionalProperties": false
},
"domains": {
"type": "array",
"minItems": 1,
"items": {"type": "string", "minLength": 1}
},
"jurisdictions": {
"type": "object",
"required": ["US", "EU", "UK", "APAC"],
"additionalProperties": false,
"properties": {
"US": {"$ref": "#/$defs/nonEmptyStringArray"},
"EU": {"$ref": "#/$defs/nonEmptyStringArray"},
"UK": {"$ref": "#/$defs/nonEmptyStringArray"},
"APAC": {"$ref": "#/$defs/nonEmptyStringArray"}
}
},
"stage_gates": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["gate", "target", "focus"],
"properties": {
"gate": {"type": "string", "minLength": 1},
"target": {"type": "string", "pattern": "^\\d{4}-Q[1-4]$"},
"focus": {"type": "string", "minLength": 1}
},
"additionalProperties": false
}
}
},
"$defs": {
"nonEmptyStringArray": {
"type": "array",
"minItems": 1,
"items": {"type": "string", "minLength": 1}
}
},
"additionalProperties": false
}
7 changes: 7 additions & 0 deletions artifacts/validate_artifacts.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,10 @@

if __package__ in (None, ""):
from manifest_utils import load_manifest_targets_from_dir, sha256_file
from validate_board_ai_roadmap import validate as validate_board_ai_roadmap
else:
from .manifest_utils import load_manifest_targets_from_dir, sha256_file
from .validate_board_ai_roadmap import validate as validate_board_ai_roadmap
REQUIRED_REPORT_SECTION_IDS = {
"scope",
"obligations",
Expand Down Expand Up @@ -59,7 +61,7 @@
def load_json(path: Path) -> dict:
try:
with path.open("r", encoding="utf-8") as f:
return json.load(f)

Check warning on line 64 in artifacts/validate_artifacts.py

View check run for this annotation

Precaution / Precaution Basic

PY009: Deserialization of Untrusted Data

Potential unsafe usage of 'json.load' that can allow instantiation of arbitrary objects.
except FileNotFoundError as exc:
raise ValidationError(f"required artifact file missing: {display_artifact_path(path)}") from exc
except json.JSONDecodeError as exc:
Expand Down Expand Up @@ -209,13 +211,18 @@
validate_control_catalog(controls)
validate_roadmap(roadmap)
validate_report_template(ARTIFACTS_DIR / "regulator-report-template.xml")
validate_board_ai_roadmap(
ARTIFACTS_DIR / "schemas" / "board-ai-roadmap-schema-v1.json",
ARTIFACTS_DIR / "data" / "board-ai-roadmap-2026-2030.json",
)
Comment thread
OneFineStarstuff marked this conversation as resolved.

checks = {
"schema_documents": "pass",
"annex_iv_example": "pass",
"control_catalog": "pass",
"roadmap": "pass",
"report_template": "pass",
"board_ai_roadmap": "pass",
"manifest": "skipped",
}

Expand Down
Loading
Loading