agentic-scorecard 0.1.0 → 0.3.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 (43) hide show
  1. package/AGENT_PROMPT.md +68 -34
  2. package/FEEDBACK.md +53 -0
  3. package/README.md +120 -39
  4. package/benchmark/v0.2/adapter-contract.md +25 -0
  5. package/benchmark/v0.2/agent-evidence-schema.json +52 -0
  6. package/benchmark/v0.2/attestation-schema.json +26 -0
  7. package/benchmark/v0.2/benchmark.yaml +127 -0
  8. package/benchmark/v0.2/controls/context.yaml +51 -0
  9. package/benchmark/v0.2/controls/environment.yaml +70 -0
  10. package/benchmark/v0.2/controls/governance.yaml +60 -0
  11. package/benchmark/v0.2/controls/learning.yaml +48 -0
  12. package/benchmark/v0.2/controls/observability.yaml +76 -0
  13. package/benchmark/v0.2/controls/resilience.yaml +60 -0
  14. package/benchmark/v0.2/controls/security.yaml +71 -0
  15. package/benchmark/v0.2/controls/specification.yaml +62 -0
  16. package/benchmark/v0.2/controls/testing.yaml +60 -0
  17. package/benchmark/v0.2/controls/tooling.yaml +58 -0
  18. package/benchmark/v0.2/report-schema.json +47 -0
  19. package/benchmark/v0.2/scoring-policy.md +71 -0
  20. package/benchmark/v0.3/adapter-contract.md +44 -0
  21. package/benchmark/v0.3/adapters/known-agent-harnesses.yaml +177 -0
  22. package/benchmark/v0.3/adapters/known-python-tooling.yaml +18 -0
  23. package/benchmark/v0.3/adapters/known-security-tools.yaml +6 -0
  24. package/benchmark/v0.3/agent-evidence-schema.json +67 -0
  25. package/benchmark/v0.3/attestation-schema.json +26 -0
  26. package/benchmark/v0.3/benchmark.yaml +127 -0
  27. package/benchmark/v0.3/controls/context.yaml +79 -0
  28. package/benchmark/v0.3/controls/environment.yaml +93 -0
  29. package/benchmark/v0.3/controls/governance.yaml +97 -0
  30. package/benchmark/v0.3/controls/learning.yaml +80 -0
  31. package/benchmark/v0.3/controls/observability.yaml +91 -0
  32. package/benchmark/v0.3/controls/resilience.yaml +107 -0
  33. package/benchmark/v0.3/controls/security.yaml +129 -0
  34. package/benchmark/v0.3/controls/specification.yaml +83 -0
  35. package/benchmark/v0.3/controls/testing.yaml +85 -0
  36. package/benchmark/v0.3/controls/tooling.yaml +69 -0
  37. package/benchmark/v0.3/report-schema.json +89 -0
  38. package/benchmark/v0.3/scoring-policy.md +100 -0
  39. package/dist/cli.js +1043 -111
  40. package/package.json +5 -3
  41. package/templates/agent-evidence.yaml +11 -0
  42. package/templates/attestations.yaml +4 -4
  43. package/templates/baseline.csv +1 -1
@@ -0,0 +1,60 @@
1
+ dimension: testing
2
+ controls:
3
+ - id: ADRB-TST-001
4
+ level: 1
5
+ title: Automated tests exist
6
+ outcome: The tracked repository contains executable tests for at least one important behavior.
7
+ risk: Agent changes rely on plausibility or manual inspection alone.
8
+ evidence:
9
+ - type: path_any
10
+ scope: repository
11
+ patterns: ['**/*.test.*', '**/*.spec.*', tests/**, test/**]
12
+ remediation: Add a fast automated test for a critical behavior and document how to run it.
13
+ - id: ADRB-TST-002
14
+ level: 2
15
+ title: Verification layers and canonical commands are documented
16
+ outcome: Contributors can identify applicable test layers and the canonical verification path.
17
+ risk: Agents run a convenient subset and overstate confidence in the result.
18
+ evidence:
19
+ - type: content_terms
20
+ scope: repository
21
+ files: [README.md, CONTRIBUTING.md, AGENTS.md, docs/testing/**, package.json, Makefile]
22
+ terms: [unit test, integration test, end-to-end, e2e, typecheck, lint, test]
23
+ min_terms: 2
24
+ remediation: Define the test taxonomy and one canonical command that matches CI.
25
+ - id: ADRB-TST-003
26
+ level: 3
27
+ title: CI executes the required verification layers
28
+ outcome: Repository automation runs appropriate tests and static checks from a clean state.
29
+ risk: Documented verification can be omitted from automation or run in an unrepresentative environment.
30
+ evidence:
31
+ - type: content_terms
32
+ scope: repository
33
+ files: [.github/workflows/**, .gitlab-ci.yml, Jenkinsfile, azure-pipelines.yml]
34
+ terms: [test, typecheck, lint, coverage, e2e, integration]
35
+ min_terms: 2
36
+ remediation: Configure CI to run the applicable verification layers from a clean environment.
37
+ - id: ADRB-TST-005
38
+ level: 3
39
+ title: Verification is enforced before merge
40
+ outcome: Merge policy requires the applicable CI checks and restricts bypasses.
41
+ risk: Healthy CI configuration remains optional under delivery pressure.
42
+ allow_attestation: true
43
+ allow_agent_evidence: true
44
+ evidence:
45
+ - type: manual
46
+ scope: platform
47
+ prompt: Show required status checks or equivalent merge gates, covered branches, bypass actors, and exception controls.
48
+ remediation: Make appropriate CI checks required merge gates and restrict, record, and review bypasses.
49
+ - id: ADRB-TST-004
50
+ level: 4
51
+ title: Verification effectiveness drives improvement
52
+ outcome: Escaped defects, flakiness, and other signal-quality outcomes are trended and improve testing.
53
+ risk: Test count and coverage rise while meaningful defects still escape.
54
+ allow_attestation: true
55
+ allow_agent_evidence: true
56
+ evidence:
57
+ - type: manual
58
+ scope: outcome
59
+ prompt: Provide verification outcome trends by task class and a recent test-strategy improvement driven by them.
60
+ remediation: Trend escaped defects and signal quality, then invest in the weakest verification layers.
@@ -0,0 +1,58 @@
1
+ dimension: tooling
2
+ controls:
3
+ - id: ADRB-TOL-001
4
+ level: 1
5
+ title: Supported agent tools are declared
6
+ outcome: The tracked repository identifies supported agent interfaces or tool configuration.
7
+ risk: Agents discover tools opportunistically and use unsupported or unsafe paths.
8
+ evidence:
9
+ - type: path_any
10
+ scope: repository
11
+ patterns:
12
+ [
13
+ .codex/**,
14
+ .claude/**,
15
+ .agents/**,
16
+ .cursor/**,
17
+ .github/copilot-instructions.md,
18
+ mcp.json,
19
+ .mcp.json,
20
+ ]
21
+ remediation: Commit a non-empty declaration of supported agent surfaces and their intended use.
22
+ - id: ADRB-TOL-002
23
+ level: 2
24
+ title: Tool scope and failure behavior are documented
25
+ outcome: Tool guidance defines authority, validation, success signals, failure handling, and approved fallback.
26
+ risk: Agents bypass failures, widen scope, or mistake partial results for success.
27
+ evidence:
28
+ - type: content_terms
29
+ scope: repository
30
+ files:
31
+ [AGENTS.md, CLAUDE.md, .agents/**/*.md, .claude/**/*.md, docs/agentic/**, docs/tools/**]
32
+ terms: [authority, permission, read-only, validation, failure, fallback, approval]
33
+ min_terms: 3
34
+ remediation: Document each high-impact tool's authority, inputs, validation, failure mode, and fallback.
35
+ - id: ADRB-TOL-003
36
+ level: 3
37
+ title: High-impact tool authority is technically bounded and audited
38
+ outcome: High-impact tools enforce least privilege, authorization, structured validation, and audit records.
39
+ risk: Prompt instructions become the only barrier between an agent and an irreversible action.
40
+ allow_attestation: true
41
+ allow_agent_evidence: true
42
+ evidence:
43
+ - type: manual
44
+ scope: platform
45
+ prompt: Show technical least-privilege enforcement, authorization tests, validation, audit records, and fail-closed behavior for high-impact tools.
46
+ remediation: Enforce scoped credentials, authorization, schema validation, audit logging, and deny-by-default behavior.
47
+ - id: ADRB-TOL-004
48
+ level: 4
49
+ title: Tool reliability drives improvement
50
+ outcome: Tool success, partial failure, denial, latency, and unsafe-fallback attempts are trended and improved.
51
+ risk: Tooling quality and risky workarounds remain anecdotal until an incident occurs.
52
+ allow_attestation: true
53
+ allow_agent_evidence: true
54
+ evidence:
55
+ - type: manual
56
+ scope: outcome
57
+ prompt: Provide tool reliability trends and a recent tool or fallback improvement driven by them.
58
+ remediation: Trend tool outcomes by task and risk class and improve weak or bypassed interfaces.
@@ -0,0 +1,47 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://agentic-readiness.dev/schema/v0.2/report.json",
4
+ "title": "ADRB v0.2 assessment report",
5
+ "type": "object",
6
+ "required": [
7
+ "schema_version",
8
+ "benchmark",
9
+ "target",
10
+ "assessed_at",
11
+ "score",
12
+ "evidence_summary",
13
+ "dimensions",
14
+ "controls",
15
+ "profiles",
16
+ "readiness",
17
+ "limitations"
18
+ ],
19
+ "properties": {
20
+ "schema_version": { "const": "0.2.0" },
21
+ "benchmark": {
22
+ "type": "object",
23
+ "required": ["id", "version"],
24
+ "properties": { "version": { "const": "0.2.0" } }
25
+ },
26
+ "target": {
27
+ "type": "object",
28
+ "required": [
29
+ "repository",
30
+ "profile",
31
+ "scope",
32
+ "git_head",
33
+ "git_remote",
34
+ "working_tree_dirty"
35
+ ],
36
+ "properties": { "scope": { "enum": ["tracked", "workspace"] } }
37
+ },
38
+ "assessed_at": { "type": "string", "format": "date-time" },
39
+ "score": { "type": "object" },
40
+ "evidence_summary": { "type": "object" },
41
+ "dimensions": { "type": "array", "minItems": 10, "maxItems": 10 },
42
+ "controls": { "type": "array" },
43
+ "profiles": { "type": "array" },
44
+ "readiness": { "type": "object" },
45
+ "limitations": { "type": "array", "items": { "type": "string" } }
46
+ }
47
+ }
@@ -0,0 +1,71 @@
1
+ # v0.2 scoring policy
2
+
3
+ This document is normative for benchmark version 0.2.0.
4
+
5
+ ## Unit and assessment scope
6
+
7
+ The unit is one repository plus explicitly supplied external and organizational evidence bound to
8
+ that repository. The default `tracked` mode considers only Git-tracked paths, using their current
9
+ working-tree contents. Reports record the commit, remote, and dirty state. `workspace` mode is
10
+ available for provisional assessment and is not directly comparable with tracked-mode reports.
11
+
12
+ Generated reports, attestations, evidence requests, and imported evidence bundles never qualify as
13
+ repository evidence. An assessment must be idempotent: adding its own generated artifacts cannot
14
+ change its score.
15
+
16
+ ## Dimension scores
17
+
18
+ Each dimension earns level `n` only when every applicable control at that level and every lower
19
+ level is met. More than one control may exist at a level when separate observable outcomes are
20
+ required. Controls met above the first gap are reported but do not increase the dimension score.
21
+
22
+ The overall score is the sum of ten dimension scores, with a maximum of 40. The percentage is
23
+ display-only and does not determine readiness.
24
+
25
+ ## Readiness decisions
26
+
27
+ Each autonomy profile defines a floor for every dimension. A profile passes only if every floor is
28
+ met. Strength in one dimension cannot compensate for a security, testing, governance, or recovery
29
+ gap elsewhere. No profile grants deployment or production authority.
30
+
31
+ ## Evidence scopes and provenance
32
+
33
+ - `repository-detected`: a deterministic collector found qualifying evidence in the selected path
34
+ scope. It proves the reported artifact match, not consistent human behavior or external
35
+ enforcement.
36
+ - `agent-collected`: an authorized agent supplied a structured, source-backed external claim. It may
37
+ satisfy controls explicitly eligible for external evidence but is never independently verified.
38
+ - `attested`: an accountable person supplied a dated, expiring claim and durable reference.
39
+ - `unknown`: evidence is unavailable, expired, mismatched, unauthorized, or inconclusive.
40
+
41
+ Repository controls use non-empty files and control-specific, co-located term thresholds. External
42
+ platform, organization, and outcome controls cannot be inferred from repository keywords.
43
+ Human attestations and agent evidence may satisfy only controls explicitly eligible for those
44
+ classes; v0.2 repository-artifact controls are not overridable by declaration.
45
+
46
+ Level 4 requires time-series or outcome evidence and an improvement decision influenced by it. The
47
+ existence of a dashboard is insufficient.
48
+
49
+ ## Agent evidence bundles
50
+
51
+ An agent evidence bundle is version-bound and target-bound. Claims record scope, status, collector,
52
+ collection and expiry times, a privacy-safe derivation summary, and durable references. The core
53
+ scanner makes no network calls; the agent obtains explicit authorization and uses read-only tools to
54
+ create the bundle. An error is distinct from a negative result and cannot pass a control.
55
+
56
+ Agent evidence can satisfy only controls with `allow_agent_evidence: true`. It cannot override a
57
+ failed repository artifact control.
58
+
59
+ ## Changes and comparability
60
+
61
+ v0.1 remains immutable. v0.1 and v0.2 scores are not directly comparable because evidence and
62
+ control semantics changed. Reports are comparable only when benchmark version, target profile,
63
+ repository scope, evidence policy, and assessment mode match.
64
+
65
+ ## Claims
66
+
67
+ Allowed: “We self-assessed repository X against ADRB v0.2.0 on DATE; N controls were
68
+ repository-detected, M agent-collected, and P human-attested.”
69
+
70
+ Not allowed: “Certified,” “compliant,” “safe,” “secure,” or “independently verified” based only on
71
+ this self-assessment.
@@ -0,0 +1,44 @@
1
+ # v0.3 adapter contracts
2
+
3
+ ## Repository detector adapters
4
+
5
+ Portable controls define outcomes and generic repository conventions. Files in `adapters/*.yaml`
6
+ may extend one control evidence check with recognized harness-specific `patterns`, `files`, `terms`,
7
+ or `required_any_terms`. An extension names the control and zero-based evidence index and adds
8
+ exactly one of those fields. It cannot remove or weaken a threshold, change a control level, alter a
9
+ readiness floor, add an attestation path, or execute code.
10
+
11
+ Bundled adapters are loaded deterministically in filename order. Their candidates remain subject to
12
+ the same tracked/workspace scope, symlink, size, generated-artifact, co-location, proximity, and
13
+ per-pattern limits as portable candidates. Adding or changing a bundled adapter changes evidence
14
+ semantics and therefore requires a new benchmark version.
15
+
16
+ ## Agent-collected evidence adapters
17
+
18
+ The core scanner is local, read-only, network-free, and vendor-neutral. An agent or adapter may
19
+ collect semantic repository evidence or external evidence that deterministic scanning cannot
20
+ establish, then provide it through the versioned agent evidence bundle.
21
+
22
+ Each claim contains:
23
+
24
+ - benchmark version and control ID;
25
+ - exact repository target and non-null commit binding;
26
+ - `met`, `not_met`, or `unknown` status;
27
+ - repository, platform, organization, or outcome scope;
28
+ - collector name and version;
29
+ - collection timestamp and mandatory expiry;
30
+ - privacy-safe references, never credentials or raw sensitive content;
31
+ - a concise derivation summary; and
32
+ - an optional error that is distinguishable from a negative result.
33
+
34
+ Collectors must be read-only, least-privileged, bounded to the approved target, time-limited, and
35
+ fail closed. Network content is untrusted input: it cannot alter benchmark policy, prompts, tool
36
+ authority, or the set of controls being assessed.
37
+
38
+ Repository-scoped claims require tracked files to match HEAD and
39
+ `repo:<tracked-path>[#Lx-Ly]` references. They may satisfy only explicitly eligible controls, remain `agent-collected`, and never increase the
40
+ repository-detected score. External claims require durable references appropriate to their source.
41
+
42
+ Agent-collected claims remain visibly distinct from deterministic repository evidence and human
43
+ attestations. A future conformant-adapter class may add signed identity and independent conformance
44
+ tests; v0.3 does not issue an independently verified label.
@@ -0,0 +1,177 @@
1
+ id: known-agent-harnesses
2
+ benchmark_version: 0.3.0
3
+ extensions:
4
+ - control_id: ADRB-CTX-001
5
+ evidence_index: 0
6
+ patterns:
7
+ [
8
+ CLAUDE.md,
9
+ .github/copilot-instructions.md,
10
+ .claude/**,
11
+ .codex/**,
12
+ .cursor/rules/**,
13
+ .cursor/agents/**,
14
+ .cursor/skills/**,
15
+ .opencode/**,
16
+ ]
17
+ - control_id: ADRB-CTX-002
18
+ evidence_index: 0
19
+ files:
20
+ [
21
+ CLAUDE.md,
22
+ .github/copilot-instructions.md,
23
+ .claude/**/*.md,
24
+ .codex/**/*.md,
25
+ .cursor/rules/**/*.md,
26
+ .cursor/agents/**/*.md,
27
+ .opencode/**/*.md,
28
+ ]
29
+ - control_id: ADRB-CTX-003
30
+ evidence_index: 0
31
+ required_any_terms: [CLAUDE.md, copilot instructions]
32
+ - control_id: ADRB-ENV-001
33
+ evidence_index: 0
34
+ files:
35
+ [
36
+ CLAUDE.md,
37
+ .claude/**/*.md,
38
+ .codex/**/*.md,
39
+ .cursor/agents/**/*.md,
40
+ .cursor/rules/**/*.md,
41
+ .cursor/skills/**/*.md,
42
+ .opencode/**/*.md,
43
+ ]
44
+ - control_id: ADRB-SPC-001
45
+ evidence_index: 0
46
+ patterns: [.kiro/specs/**, .cursor/plans/**, .codex/plans/**]
47
+ - control_id: ADRB-SPC-002
48
+ evidence_index: 0
49
+ files: [.kiro/specs/**, .cursor/plans/**, .codex/plans/**]
50
+ - control_id: ADRB-TOL-001
51
+ evidence_index: 0
52
+ patterns:
53
+ [
54
+ .claude/**,
55
+ .codex/**,
56
+ .cursor/**,
57
+ .opencode/**,
58
+ .github/copilot-instructions.md,
59
+ opencode.json,
60
+ ]
61
+ - control_id: ADRB-TOL-002
62
+ evidence_index: 0
63
+ files:
64
+ [
65
+ CLAUDE.md,
66
+ .claude/**/*.md,
67
+ .codex/**/*.md,
68
+ .cursor/agents/**/*.md,
69
+ .cursor/rules/**/*.md,
70
+ .cursor/skills/**/*.md,
71
+ .opencode/**/*.md,
72
+ ]
73
+ - control_id: ADRB-SEC-001
74
+ evidence_index: 0
75
+ files:
76
+ [
77
+ CLAUDE.md,
78
+ .claude/**/*.md,
79
+ .codex/**/*.md,
80
+ .cursor/agents/**/*.md,
81
+ .cursor/rules/**/*.md,
82
+ .cursor/skills/**/*.md,
83
+ .opencode/**/*.md,
84
+ ]
85
+ - control_id: ADRB-SEC-002
86
+ evidence_index: 0
87
+ files:
88
+ [
89
+ CLAUDE.md,
90
+ .claude/**/*.md,
91
+ .codex/**/*.md,
92
+ .cursor/agents/**/*.md,
93
+ .cursor/rules/**/*.md,
94
+ .cursor/skills/**/*.md,
95
+ .opencode/**/*.md,
96
+ ]
97
+ - control_id: ADRB-TST-002
98
+ evidence_index: 0
99
+ files:
100
+ [
101
+ CLAUDE.md,
102
+ .claude/**/*.md,
103
+ .codex/**/*.md,
104
+ .cursor/agents/**/*.md,
105
+ .cursor/rules/**/*.md,
106
+ .cursor/skills/**/*.md,
107
+ .opencode/**/*.md,
108
+ ]
109
+ - control_id: ADRB-GOV-001
110
+ evidence_index: 0
111
+ files:
112
+ [
113
+ CLAUDE.md,
114
+ .claude/**/*.md,
115
+ .codex/**/*.md,
116
+ .cursor/agents/**/*.md,
117
+ .cursor/rules/**/*.md,
118
+ .cursor/skills/**/*.md,
119
+ .opencode/**/*.md,
120
+ ]
121
+ - control_id: ADRB-GOV-002
122
+ evidence_index: 1
123
+ files:
124
+ [
125
+ CLAUDE.md,
126
+ .claude/**/*.md,
127
+ .codex/**/*.md,
128
+ .cursor/agents/**/*.md,
129
+ .cursor/rules/**/*.md,
130
+ .cursor/skills/**/*.md,
131
+ .opencode/**/*.md,
132
+ ]
133
+ - control_id: ADRB-LRN-001
134
+ evidence_index: 0
135
+ patterns: [.claude/memory/**, .codex/memory/**, .cursor/memory/**, .opencode/memory/**]
136
+ - control_id: ADRB-LRN-002
137
+ evidence_index: 0
138
+ files:
139
+ [
140
+ CLAUDE.md,
141
+ .claude/**/*.md,
142
+ .codex/**/*.md,
143
+ .cursor/agents/**/*.md,
144
+ .cursor/rules/**/*.md,
145
+ .cursor/skills/**/*.md,
146
+ .opencode/**/*.md,
147
+ ]
148
+ - control_id: ADRB-OBS-001
149
+ evidence_index: 0
150
+ files: [.cursor/runs/README*, .codex/runs/README*, .claude/runs/README*]
151
+ - control_id: ADRB-OBS-002
152
+ evidence_index: 0
153
+ files: [.cursor/runs/README*, .codex/runs/README*, .claude/runs/README*]
154
+ - control_id: ADRB-RES-001
155
+ evidence_index: 0
156
+ files:
157
+ [
158
+ CLAUDE.md,
159
+ .claude/**/*.md,
160
+ .codex/**/*.md,
161
+ .cursor/agents/**/*.md,
162
+ .cursor/rules/**/*.md,
163
+ .cursor/skills/**/*.md,
164
+ .opencode/**/*.md,
165
+ ]
166
+ - control_id: ADRB-RES-002
167
+ evidence_index: 0
168
+ files:
169
+ [
170
+ CLAUDE.md,
171
+ .claude/**/*.md,
172
+ .codex/**/*.md,
173
+ .cursor/agents/**/*.md,
174
+ .cursor/rules/**/*.md,
175
+ .cursor/skills/**/*.md,
176
+ .opencode/**/*.md,
177
+ ]
@@ -0,0 +1,18 @@
1
+ id: known-python-tooling
2
+ benchmark_version: 0.3.0
3
+ extensions:
4
+ - control_id: ADRB-ENV-001
5
+ evidence_index: 0
6
+ files: [pyproject.toml]
7
+ - control_id: ADRB-ENV-001
8
+ evidence_index: 0
9
+ terms: [requires-python, uv sync, python]
10
+ - control_id: ADRB-TST-002
11
+ evidence_index: 0
12
+ files: [run_quality_checks.sh, scripts/**/quality*.sh, tox.ini, noxfile.py]
13
+ - control_id: ADRB-TST-002
14
+ evidence_index: 0
15
+ terms: [pytest, mypy, flake8, ruff, pyright, tox, nox]
16
+ - control_id: ADRB-TST-003
17
+ evidence_index: 0
18
+ terms: [pytest, mypy, flake8, ruff, pyright, tox, nox, pytest-cov]
@@ -0,0 +1,6 @@
1
+ id: known-security-tools
2
+ benchmark_version: 0.3.0
3
+ extensions:
4
+ - control_id: ADRB-SEC-003
5
+ evidence_index: 0
6
+ terms: [gitleaks, trufflehog]
@@ -0,0 +1,67 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://agentic-readiness.dev/schema/v0.3/agent-evidence.json",
4
+ "title": "ADRB v0.3 agent-collected evidence bundle",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schema_version", "benchmark_version", "target", "collector", "claims"],
8
+ "properties": {
9
+ "schema_version": { "const": "0.3.0" },
10
+ "benchmark_version": { "const": "0.3.0" },
11
+ "target": {
12
+ "type": "object",
13
+ "additionalProperties": false,
14
+ "required": ["repository", "git_head"],
15
+ "properties": {
16
+ "repository": { "type": "string", "minLength": 1 },
17
+ "git_head": { "type": "string", "minLength": 1 }
18
+ }
19
+ },
20
+ "collector": {
21
+ "type": "object",
22
+ "additionalProperties": false,
23
+ "required": ["name", "version"],
24
+ "properties": {
25
+ "name": { "type": "string", "minLength": 1 },
26
+ "version": { "type": "string", "minLength": 1 }
27
+ }
28
+ },
29
+ "claims": {
30
+ "type": "object",
31
+ "propertyNames": { "pattern": "^ADRB-[A-Z]{3}-[0-9]{3}$" },
32
+ "additionalProperties": {
33
+ "type": "object",
34
+ "additionalProperties": false,
35
+ "required": ["status", "scope", "summary", "references", "collected_at", "expires_at"],
36
+ "properties": {
37
+ "status": { "enum": ["met", "not_met", "unknown"] },
38
+ "scope": { "enum": ["repository", "platform", "organization", "outcome"] },
39
+ "summary": { "type": "string", "minLength": 1 },
40
+ "references": {
41
+ "type": "array",
42
+ "minItems": 1,
43
+ "items": { "type": "string", "minLength": 1 }
44
+ },
45
+ "collected_at": { "type": "string", "format": "date-time" },
46
+ "expires_at": { "type": "string", "format": "date-time" },
47
+ "error": { "type": ["string", "null"], "minLength": 1 }
48
+ },
49
+ "allOf": [
50
+ {
51
+ "if": { "properties": { "scope": { "const": "repository" } } },
52
+ "then": {
53
+ "properties": {
54
+ "references": {
55
+ "items": {
56
+ "type": "string",
57
+ "pattern": "^repo:(?!/)(?!\\.{1,2}(?:/|#|$))(?!.*\\/\\.{1,2}(?:/|#|$))(?!.*\\\\)[^#]+(?:#L[1-9][0-9]*(?:-L?[1-9][0-9]*)?)?$"
58
+ }
59
+ }
60
+ }
61
+ }
62
+ }
63
+ ]
64
+ }
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://agentic-readiness.dev/schema/v0.3/attestations.json",
4
+ "title": "ADRB v0.3 human attestation file",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["benchmark_version", "attestations"],
8
+ "properties": {
9
+ "benchmark_version": { "const": "0.3.0" },
10
+ "attestations": {
11
+ "type": "object",
12
+ "additionalProperties": {
13
+ "type": "object",
14
+ "additionalProperties": false,
15
+ "required": ["status", "evidence", "owner", "reviewed_at", "expires_at"],
16
+ "properties": {
17
+ "status": { "enum": ["met", "not_met", "not_applicable", "unknown"] },
18
+ "evidence": { "type": "string", "minLength": 1 },
19
+ "owner": { "type": "string", "minLength": 1 },
20
+ "reviewed_at": { "type": "string", "format": "date" },
21
+ "expires_at": { "type": "string", "format": "date" }
22
+ }
23
+ }
24
+ }
25
+ }
26
+ }