agentic-scorecard 0.3.1 → 0.4.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 (31) hide show
  1. package/AGENT_PROMPT.md +11 -11
  2. package/README.md +35 -29
  3. package/benchmark/v0.4/adapter-contract.md +129 -0
  4. package/benchmark/v0.4/adapters/known-agent-harnesses.yaml +266 -0
  5. package/benchmark/v0.4/adapters/known-ci-providers.yaml +57 -0
  6. package/benchmark/v0.4/adapters/known-command-wrappers.yaml +37 -0
  7. package/benchmark/v0.4/adapters/known-environment-tooling.yaml +17 -0
  8. package/benchmark/v0.4/adapters/known-github-conventions.yaml +27 -0
  9. package/benchmark/v0.4/adapters/known-python-tooling.yaml +15 -0
  10. package/benchmark/v0.4/adapters/known-security-tools.yaml +45 -0
  11. package/benchmark/v0.4/adapters/known-verification-tools.yaml +65 -0
  12. package/benchmark/v0.4/agent-evidence-schema.json +74 -0
  13. package/benchmark/v0.4/attestation-schema.json +35 -0
  14. package/benchmark/v0.4/benchmark.yaml +127 -0
  15. package/benchmark/v0.4/calibration-matrix.md +60 -0
  16. package/benchmark/v0.4/controls/context.yaml +75 -0
  17. package/benchmark/v0.4/controls/environment.yaml +93 -0
  18. package/benchmark/v0.4/controls/governance.yaml +132 -0
  19. package/benchmark/v0.4/controls/learning.yaml +78 -0
  20. package/benchmark/v0.4/controls/observability.yaml +91 -0
  21. package/benchmark/v0.4/controls/resilience.yaml +170 -0
  22. package/benchmark/v0.4/controls/security.yaml +143 -0
  23. package/benchmark/v0.4/controls/specification.yaml +65 -0
  24. package/benchmark/v0.4/controls/testing.yaml +82 -0
  25. package/benchmark/v0.4/controls/tooling.yaml +69 -0
  26. package/benchmark/v0.4/report-schema.json +89 -0
  27. package/benchmark/v0.4/scoring-policy.md +175 -0
  28. package/dist/cli.js +2287 -162
  29. package/package.json +3 -2
  30. package/templates/agent-evidence.yaml +2 -2
  31. package/templates/attestations.yaml +3 -1
@@ -0,0 +1,57 @@
1
+ id: known-ci-providers
2
+ benchmark_version: 0.4.0
3
+ extensions:
4
+ - control_id: ADRB-ENV-003
5
+ evidence_index: 0
6
+ ci_providers:
7
+ - id: github-actions
8
+ files: [.github/workflows/*.yml, .github/workflows/*.yaml]
9
+ - id: gitlab-ci
10
+ files: [.gitlab-ci.yml]
11
+ - id: azure-pipelines
12
+ files: [azure-pipelines.yml, azure-pipelines.yaml]
13
+ - control_id: ADRB-LRN-003
14
+ evidence_index: 0
15
+ ci_providers:
16
+ - id: github-actions
17
+ files: [.github/workflows/*.yml, .github/workflows/*.yaml]
18
+ - id: gitlab-ci
19
+ files: [.gitlab-ci.yml]
20
+ - id: azure-pipelines
21
+ files: [azure-pipelines.yml, azure-pipelines.yaml]
22
+ - control_id: ADRB-SPC-003
23
+ evidence_index: 0
24
+ ci_providers:
25
+ - id: github-actions
26
+ files: [.github/workflows/*.yml, .github/workflows/*.yaml]
27
+ - id: gitlab-ci
28
+ files: [.gitlab-ci.yml]
29
+ - id: azure-pipelines
30
+ files: [azure-pipelines.yml, azure-pipelines.yaml]
31
+ - control_id: ADRB-CTX-003
32
+ evidence_index: 0
33
+ ci_providers:
34
+ - id: github-actions
35
+ files: [.github/workflows/*.yml, .github/workflows/*.yaml]
36
+ - id: gitlab-ci
37
+ files: [.gitlab-ci.yml]
38
+ - id: azure-pipelines
39
+ files: [azure-pipelines.yml, azure-pipelines.yaml]
40
+ - control_id: ADRB-SEC-003
41
+ evidence_index: 0
42
+ ci_providers:
43
+ - id: github-actions
44
+ files: [.github/workflows/*.yml, .github/workflows/*.yaml]
45
+ - id: gitlab-ci
46
+ files: [.gitlab-ci.yml]
47
+ - id: azure-pipelines
48
+ files: [azure-pipelines.yml, azure-pipelines.yaml]
49
+ - control_id: ADRB-TST-003
50
+ evidence_index: 0
51
+ ci_providers:
52
+ - id: github-actions
53
+ files: [.github/workflows/*.yml, .github/workflows/*.yaml]
54
+ - id: gitlab-ci
55
+ files: [.gitlab-ci.yml]
56
+ - id: azure-pipelines
57
+ files: [azure-pipelines.yml, azure-pipelines.yaml]
@@ -0,0 +1,37 @@
1
+ id: known-command-wrappers
2
+ benchmark_version: 0.4.0
3
+ ci_invocation_grammar:
4
+ wrapper_options_with_values:
5
+ - --cache
6
+ - --call
7
+ - --chdir
8
+ - --chroot
9
+ - --close-from
10
+ - --command-timeout
11
+ - --from
12
+ - --group
13
+ - --host
14
+ - --node-options
15
+ - --package
16
+ - --prompt
17
+ - --python
18
+ - --user
19
+ - --with
20
+ - -c
21
+ - -d
22
+ - -g
23
+ - -h
24
+ - -p
25
+ - -r
26
+ - -t
27
+ - -u
28
+ wrappers:
29
+ - executable_patterns: ['^(?:bunx|npx|sudo|uvx)$']
30
+ command_prefixes: [[]]
31
+ - executable_patterns: ['^(?:uv|pipx)$']
32
+ command_prefixes: [[run]]
33
+ - executable_patterns: ['^(?:bun|npm|pnpm|yarn)$']
34
+ command_prefixes: [[dlx], [exec], [x]]
35
+ - executable_patterns: ['^python(?:3(?:\.\d+)?)?$']
36
+ command_prefixes: [[-m]]
37
+ extensions: []
@@ -0,0 +1,17 @@
1
+ id: known-environment-tooling
2
+ benchmark_version: 0.4.0
3
+ extensions:
4
+ - control_id: ADRB-ENV-003
5
+ evidence_index: 0
6
+ ci_tools:
7
+ - id: locked-install
8
+ prohibited_arguments: [--dry-run]
9
+ commands:
10
+ - executables: [npm]
11
+ argument_groups: [[ci]]
12
+ - executables: [pnpm, yarn, bun]
13
+ argument_groups: [[install], [--frozen-lockfile, --immutable]]
14
+ - executables: [uv]
15
+ argument_groups: [[sync], [--frozen, --locked]]
16
+ - executables: [cargo]
17
+ argument_groups: [[fetch], [--locked]]
@@ -0,0 +1,27 @@
1
+ id: known-github-conventions
2
+ benchmark_version: 0.4.0
3
+ extensions:
4
+ - control_id: ADRB-GOV-001
5
+ evidence_index: 0
6
+ files: [.github/pull_request_template.md, .github/PULL_REQUEST_TEMPLATE/**]
7
+ - control_id: ADRB-GOV-002
8
+ evidence_index: 0
9
+ patterns: [.github/CODEOWNERS, .github/OWNERS, docs/CODEOWNERS]
10
+ - control_id: ADRB-GOV-002
11
+ evidence_index: 1
12
+ files: [.github/pull_request_template.md]
13
+ - control_id: ADRB-RES-001
14
+ evidence_index: 0
15
+ files: [.github/SECURITY.md]
16
+ - control_id: ADRB-SEC-001
17
+ evidence_index: 0
18
+ files: [.github/SECURITY.md]
19
+ - control_id: ADRB-SEC-006
20
+ evidence_index: 0
21
+ files: [.github/SECURITY.md]
22
+ - control_id: ADRB-SPC-001
23
+ evidence_index: 0
24
+ patterns: [.github/ISSUE_TEMPLATE/**]
25
+ - control_id: ADRB-SPC-002
26
+ evidence_index: 0
27
+ files: [.github/ISSUE_TEMPLATE/**]
@@ -0,0 +1,15 @@
1
+ id: known-python-tooling
2
+ benchmark_version: 0.4.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]
@@ -0,0 +1,45 @@
1
+ id: known-security-tools
2
+ benchmark_version: 0.4.0
3
+ extensions:
4
+ - control_id: ADRB-SEC-003
5
+ evidence_index: 0
6
+ ci_tools:
7
+ - id: gitleaks
8
+ requires_final_exit_status: true
9
+ commands:
10
+ - executables: [gitleaks]
11
+ argument_groups: [[detect]]
12
+ prohibited_arguments: [--exit-code, --log-opts, --source]
13
+ actions: [gitleaks/gitleaks-action]
14
+ - id: trufflehog
15
+ requires_final_exit_status: true
16
+ commands:
17
+ - executables: [trufflehog]
18
+ argument_groups:
19
+ - [git, filesystem]
20
+ - [--fail]
21
+ required_argument_prefixes:
22
+ - [git, '.']
23
+ - [git, ./]
24
+ - [git, 'file://.']
25
+ - [git, 'file://./']
26
+ - [git, '$GITHUB_WORKSPACE']
27
+ - [git, '${GITHUB_WORKSPACE}']
28
+ - [git, '$CI_PROJECT_DIR']
29
+ - [git, '${CI_PROJECT_DIR}']
30
+ - [git, '$(Build.SourcesDirectory)']
31
+ - [filesystem, '.']
32
+ - [filesystem, ./]
33
+ - [filesystem, '$GITHUB_WORKSPACE']
34
+ - [filesystem, '${GITHUB_WORKSPACE}']
35
+ - [filesystem, '$CI_PROJECT_DIR']
36
+ - [filesystem, '${CI_PROJECT_DIR}']
37
+ - [filesystem, '$(Build.SourcesDirectory)']
38
+ prohibited_arguments: [--fail=false]
39
+ prohibited_argument_sequences: [[--fail, 'false']]
40
+ - id: git-secrets
41
+ requires_final_exit_status: true
42
+ commands:
43
+ - executables: [git-secrets]
44
+ argument_groups: [[--scan, --scan-history]]
45
+ max_arguments: 1
@@ -0,0 +1,65 @@
1
+ id: known-verification-tools
2
+ benchmark_version: 0.4.0
3
+ extensions:
4
+ - control_id: ADRB-ENV-003
5
+ evidence_index: 0
6
+ ci_tools:
7
+ - id: tests
8
+ prohibited_arguments:
9
+ [--dry-run, --fixtures, --fixtures-per-test, --list-sessions, --markers, --no-run]
10
+ commands:
11
+ - executables: [npm, pnpm, yarn, bun, turbo, nx]
12
+ argument_groups:
13
+ - [test, test:unit, test:integration, test:e2e, unit-test, integration-test, e2e]
14
+ - executables: [cargo, go, dotnet, mvn, gradle, bazel]
15
+ repository_executables: [mvnw, gradlew]
16
+ argument_groups: [[test]]
17
+ standalone_executables: [pytest, pytest-cov, jest, vitest]
18
+ - id: static-analysis
19
+ commands:
20
+ - executables: [npm, pnpm, yarn, bun, turbo, nx]
21
+ argument_groups: [[lint, typecheck, type-check, check:types, check-types, check]]
22
+ - executables: [cargo]
23
+ argument_groups: [[clippy, check]]
24
+ - executables: [go]
25
+ argument_groups: [[vet]]
26
+ - executables: [mvn]
27
+ repository_executables: [mvnw]
28
+ argument_groups: [[checkstyle:check, spotbugs:check, pmd:check]]
29
+ - executables: [gradle]
30
+ repository_executables: [gradlew]
31
+ argument_groups: [[check]]
32
+ - executables: [ruff]
33
+ argument_groups: [[check]]
34
+ standalone_executables: [eslint, tsc, mypy, flake8, pyright, golangci-lint]
35
+ - control_id: ADRB-TST-003
36
+ evidence_index: 0
37
+ ci_tools:
38
+ - id: tests
39
+ prohibited_arguments:
40
+ [--dry-run, --fixtures, --fixtures-per-test, --list-sessions, --markers, --no-run]
41
+ commands:
42
+ - executables: [npm, pnpm, yarn, bun, turbo, nx]
43
+ argument_groups:
44
+ - [test, test:unit, test:integration, test:e2e, unit-test, integration-test, e2e]
45
+ - executables: [cargo, go, dotnet, mvn, gradle, bazel]
46
+ repository_executables: [mvnw, gradlew]
47
+ argument_groups: [[test]]
48
+ standalone_executables: [pytest, pytest-cov, jest, vitest]
49
+ - id: static-analysis
50
+ commands:
51
+ - executables: [npm, pnpm, yarn, bun, turbo, nx]
52
+ argument_groups: [[lint, typecheck, type-check, check:types, check-types, check]]
53
+ - executables: [cargo]
54
+ argument_groups: [[clippy, check]]
55
+ - executables: [go]
56
+ argument_groups: [[vet]]
57
+ - executables: [mvn]
58
+ repository_executables: [mvnw]
59
+ argument_groups: [[checkstyle:check, spotbugs:check, pmd:check]]
60
+ - executables: [gradle]
61
+ repository_executables: [gradlew]
62
+ argument_groups: [[check]]
63
+ - executables: [ruff]
64
+ argument_groups: [[check]]
65
+ standalone_executables: [eslint, tsc, mypy, flake8, pyright, golangci-lint]
@@ -0,0 +1,74 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://agentic-readiness.dev/schema/v0.4/agent-evidence.json",
4
+ "title": "ADRB v0.4 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.4.0" },
10
+ "benchmark_version": { "const": "0.4.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": {
52
+ "required": ["error"],
53
+ "properties": { "error": { "type": "string" } }
54
+ },
55
+ "then": { "properties": { "status": { "const": "unknown" } } }
56
+ },
57
+ {
58
+ "if": { "properties": { "scope": { "const": "repository" } } },
59
+ "then": {
60
+ "properties": {
61
+ "references": {
62
+ "items": {
63
+ "type": "string",
64
+ "pattern": "^repo:(?!/)(?!\\.{1,2}(?:/|#|$))(?!.*\\/\\.{1,2}(?:/|#|$))(?!.*\\\\)[^#]+(?:#L[1-9][0-9]*(?:-L?[1-9][0-9]*)?)?$"
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
70
+ ]
71
+ }
72
+ }
73
+ }
74
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://agentic-readiness.dev/schema/v0.4/attestations.json",
4
+ "title": "ADRB v0.4 human attestation file",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["benchmark_version", "target", "attestations"],
8
+ "properties": {
9
+ "benchmark_version": { "const": "0.4.0" },
10
+ "target": {
11
+ "type": "object",
12
+ "additionalProperties": false,
13
+ "required": ["repository"],
14
+ "properties": {
15
+ "repository": { "type": "string", "minLength": 1 }
16
+ }
17
+ },
18
+ "attestations": {
19
+ "type": "object",
20
+ "propertyNames": { "pattern": "^ADRB-[A-Z]{3}-[0-9]{3}$" },
21
+ "additionalProperties": {
22
+ "type": "object",
23
+ "additionalProperties": false,
24
+ "required": ["status", "evidence", "owner", "reviewed_at", "expires_at"],
25
+ "properties": {
26
+ "status": { "enum": ["met", "not_met", "not_applicable", "unknown"] },
27
+ "evidence": { "type": "string", "minLength": 1 },
28
+ "owner": { "type": "string", "minLength": 1 },
29
+ "reviewed_at": { "type": "string", "format": "date" },
30
+ "expires_at": { "type": "string", "format": "date" }
31
+ }
32
+ }
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,127 @@
1
+ id: agentic-development-readiness
2
+ version: 0.4.0
3
+ title: Agentic Development Readiness Benchmark
4
+ description: >-
5
+ A vendor-neutral, evidence-backed assessment of the engineering harness that surrounds AI agents.
6
+ It measures whether a repository and its operating controls can safely support increasing levels
7
+ of delegated software work.
8
+
9
+ maturity_levels:
10
+ 0: Absent
11
+ 1: Ad hoc
12
+ 2: Documented
13
+ 3: Enforced
14
+ 4: Measured and improving
15
+
16
+ dimensions:
17
+ - id: context
18
+ title: Context and knowledge
19
+ description: Agents can discover authoritative, scoped, current instructions without guesswork.
20
+ - id: environment
21
+ title: Reproducible environment
22
+ description: Agents can establish and verify a faithful development environment.
23
+ - id: specification
24
+ title: Specification and planning
25
+ description: Work starts from testable outcomes, constraints, and explicit acceptance criteria.
26
+ - id: tooling
27
+ title: Tooling and interfaces
28
+ description: Agent tools are discoverable, least-privileged, observable, and fail safely.
29
+ - id: security
30
+ title: Security and data governance
31
+ description: Credentials, data, autonomy, and untrusted content have explicit boundaries.
32
+ - id: testing
33
+ title: Verification and testing
34
+ description: Changes are checked at the right layers with trustworthy, reproducible signals.
35
+ - id: governance
36
+ title: Review and change governance
37
+ description: Human accountability, change scope, and merge authority remain explicit.
38
+ - id: learning
39
+ title: Learning and knowledge maintenance
40
+ description: Corrections compound into maintained instructions instead of being rediscovered.
41
+ - id: observability
42
+ title: Outcome observability
43
+ description: Runs and outcomes can be evaluated by task class, risk, cost, and quality.
44
+ - id: resilience
45
+ title: Failure containment and recovery
46
+ description: Agent failures are bounded, reversible, diagnosed, and rehearsed.
47
+
48
+ readiness_profiles:
49
+ - id: read-only-analysis
50
+ title: Read-only analysis
51
+ description: Agent may inspect approved repository content and return advice, without mutations.
52
+ floors:
53
+ context: 1
54
+ environment: 0
55
+ specification: 0
56
+ tooling: 0
57
+ security: 1
58
+ testing: 0
59
+ governance: 0
60
+ learning: 0
61
+ observability: 0
62
+ resilience: 0
63
+ - id: planning
64
+ title: Planning and specification
65
+ description: Agent may draft plans, specifications, and proposed changes for human review.
66
+ floors:
67
+ context: 2
68
+ environment: 0
69
+ specification: 1
70
+ tooling: 1
71
+ security: 1
72
+ testing: 0
73
+ governance: 1
74
+ learning: 0
75
+ observability: 0
76
+ resilience: 0
77
+ - id: local-implementation
78
+ title: Local implementation
79
+ description: Agent may edit an isolated checkout and run approved local verification.
80
+ floors:
81
+ context: 2
82
+ environment: 2
83
+ specification: 2
84
+ tooling: 2
85
+ security: 2
86
+ testing: 2
87
+ governance: 1
88
+ learning: 1
89
+ observability: 1
90
+ resilience: 1
91
+ - id: pr-creation
92
+ title: Pull request creation
93
+ description: Agent may create a branch and propose a pull request; a human retains merge authority.
94
+ floors:
95
+ context: 2
96
+ environment: 2
97
+ specification: 2
98
+ tooling: 2
99
+ security: 2
100
+ testing: 2
101
+ governance: 2
102
+ learning: 1
103
+ observability: 1
104
+ resilience: 2
105
+ - id: limited-autonomous-maintenance
106
+ title: Limited autonomous maintenance
107
+ description: >-
108
+ Agent may complete pre-approved, low-risk maintenance within strict scope, budget, and stop
109
+ conditions. This profile never grants production deployment authority.
110
+ floors:
111
+ context: 3
112
+ environment: 3
113
+ specification: 3
114
+ tooling: 3
115
+ security: 3
116
+ testing: 3
117
+ governance: 3
118
+ learning: 3
119
+ observability: 3
120
+ resilience: 3
121
+
122
+ scoring:
123
+ dimension_method: consecutive-levels
124
+ overall_method: sum
125
+ maximum_score: 40
126
+ readiness_method: non-compensating-floors
127
+ attestation_counts_as_verified: false
@@ -0,0 +1,60 @@
1
+ # v0.4 calibration matrix
2
+
3
+ This matrix records the versioned expected outcomes exercised by the v0.4 conformance fixtures.
4
+ PR #11 review is the independent acceptance gate for these expectations. The executable assertions
5
+ live in `tests/v04-calibration.test.ts`; this document is the public, human-readable index.
6
+
7
+ | Case | Surface | Expected outcome |
8
+ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------ | -------------------------------------------------------------- |
9
+ | Mature harness | Node, GitHub Actions | 30/40, repository 23/23, limited-autonomous-maintenance passes |
10
+ | Guidance and verification comments only | GitHub Actions plus Jenkins comments | CTX-003 and TST-003 do not pass |
11
+ | Missing or display-only package tasks | Node package scripts | CTX-003 and TST-003 do not pass |
12
+ | Missing package tasks behind supported wrappers | Node, GitHub Actions | TST-003 does not pass |
13
+ | Package/workspace context switch; nested package-exec tools | Node, GitHub Actions | Context switch fails closed; nested tools may pass |
14
+ | Executed no-op guidance-validation script | Node, GitHub Actions | CTX-003 does not pass |
15
+ | Executed guidance validation, tests, and typecheck | Node, GitHub Actions | CTX-003 and TST-003 pass |
16
+ | Locked install, tests, static analysis, traceability, and curation | Node, GitHub Actions | ENV-003, SPC-003, and LRN-003 pass |
17
+ | Frozen install with pnpm, Yarn, or Bun | Node, GitHub Actions | ENV-003 passes |
18
+ | Keyword-bearing no-op environment, traceability, or curation files | Node, GitHub Actions | ENV-003, SPC-003, and LRN-003 do not pass |
19
+ | Specification heading check without implementation/test bindings | Node, GitHub Actions | SPC-003 does not pass |
20
+ | Python tests and static analysis | `uv run pytest` and `uv run mypy`, GitLab CI | TST-003 passes |
21
+ | Rust tests and static analysis | `cargo test` and `cargo clippy`, Azure Pipelines | TST-003 passes |
22
+ | Tests and static analysis split across CI files | Separate GitHub workflows | TST-003 passes |
23
+ | Tests and static analysis in one fail-fast multiline step | GitHub Actions | TST-003 passes |
24
+ | Multiline verification without a provider fail-fast guarantee | Azure Pipelines | TST-003 does not pass |
25
+ | Test discovery or session-listing commands plus static analysis | Python, GitHub Actions | TST-003 does not pass |
26
+ | Go or .NET test-listing modes plus static analysis | Multiple runtimes, GitHub Actions | TST-003 does not pass |
27
+ | Pytest local-variable display plus static analysis | Python, GitHub Actions | TST-003 passes |
28
+ | Tracked Maven/Gradle root wrappers versus missing wrapper | Java, GitHub Actions | Tracked wrappers pass; missing wrapper does not |
29
+ | Monorepo tests and static analysis | Root package tasks bound to Turbo commands | TST-003 passes |
30
+ | Invalid cross-tool command aliases | GitHub Actions | TST-003 command classes remain unmatched |
31
+ | Path-qualified package-manager impersonator or command after unconditional exit | Node, GitHub Actions | Mechanical CI controls do not pass |
32
+ | Executed secret scanner | GitHub Actions, GitLab CI, Azure Pipelines | SEC-003 repository alternative passes |
33
+ | git-secrets default scan versus unrelated explicit target | GitHub Actions | Default passes; unrelated target does not |
34
+ | Scanner comments, display modes, disabled/non-blocking jobs, neutralized scanner exits, invalid actions, or non-integration triggers | Multiple providers | SEC-003 repository alternative does not pass |
35
+ | Explicit unsupported command shell | GitHub Actions | SEC-003 repository alternative does not pass |
36
+ | Disjunction of supported integration events | GitHub Actions | SEC-003 repository alternative passes |
37
+ | Unresolved GitLab inheritance, exclusions, or non-blocking defaults | GitLab CI | SEC-003 repository alternative does not pass |
38
+ | Malformed GitLab workflow or job rules | GitLab CI | SEC-003 repository alternative does not pass |
39
+ | Job-level merge-request rule under a workflow-level denial | GitLab CI | SEC-003 repository alternative does not pass |
40
+ | Nested CI fragments or Azure root command fields | Multiple providers | SEC-003 repository alternative does not pass |
41
+ | Conditional checkout with unsupported target effect; non-root setup hook or working directory | Multiple providers | Repository-bound CI evidence fails closed |
42
+ | Azure stage with direct steps | Azure Pipelines | SEC-003 repository alternative does not pass |
43
+ | Host-native secret scanning claim | Target-bound platform evidence | SEC-003 may pass; SEC-007 remains unresolved |
44
+ | Keyword-stuffed or distant guidance | Repository documents and generated run output | Mechanical Level 3 controls do not pass |
45
+ | Comment-only validation-script structure | Executed tracked validator | CTX-003 does not pass |
46
+ | Required validator patterns split across unreachable functions | Executed tracked validator | CTX-003 does not pass |
47
+ | Explicit ownership map plus human approval and merge authority | Conventional ownership formats | GOV-002 passes |
48
+ | Placeholder/inactive owner, vague prose, negated authority, or missing authority | Conventional ownership formats | GOV-002 does not pass |
49
+ | AI/bot-qualified maintainer approval or merge authority | Agent guidance | GOV-002 does not pass |
50
+ | Component table in `OWNERS.md`; contact under a former-maintainers heading | Conventional ownership formats | Active mapping passes; former-only contact does not |
51
+ | Bare component name in a typed ownership table | Conventional ownership formats | Accountable assignment passes |
52
+ | Complete co-located containment components | Agent guidance | RES-002 passes |
53
+ | Compound “do not continue outside allowed paths” containment rule | Agent guidance | Mutation scope and stop trigger both match |
54
+ | Resource budget without retry bounds, or retry bounds without a resource budget | Agent guidance | RES-002 does not pass |
55
+ | Partial, negated, or absent containment components | Agent guidance | RES-002 does not pass and reports matched/missing groups |
56
+
57
+ Jenkins is intentionally a negative calibration in v0.4: the offline collector does not claim that
58
+ a Jenkinsfile is integration-triggered without a supported structural provider parser. Such evidence
59
+ remains unresolved or may be supplied as eligible, source-backed agent evidence. Scores from v0.3
60
+ and v0.4 are not directly comparable.
@@ -0,0 +1,75 @@
1
+ dimension: context
2
+ controls:
3
+ - id: ADRB-CTX-001
4
+ level: 1
5
+ title: Agent guidance is discoverable
6
+ outcome: A contributor or agent can locate the repository's authoritative operating guidance.
7
+ risk: Agents infer repository rules from generic practice or stale neighboring files.
8
+ evidence:
9
+ - type: path_any
10
+ scope: repository
11
+ patterns:
12
+ [
13
+ AGENTS.md,
14
+ Agents.md,
15
+ agents.md,
16
+ .ai/AGENTS.md,
17
+ .ai/Agents.md,
18
+ .ai/constitution.md,
19
+ .ai/instructions/**,
20
+ .ai/rules/**,
21
+ .agents/**,
22
+ ]
23
+ remediation: Add a tracked, non-empty agent entry point that names the authoritative guidance.
24
+ - id: ADRB-CTX-002
25
+ level: 2
26
+ title: Guidance scope and precedence are explicit
27
+ outcome: Instructions state their scope, precedence, important constraints, and architecture boundaries.
28
+ risk: Conflicting or nested guidance produces plausible changes that violate local invariants.
29
+ allow_agent_evidence: true
30
+ agent_evidence_scopes: [repository]
31
+ evidence:
32
+ - type: content_terms
33
+ scope: repository
34
+ files:
35
+ [
36
+ AGENTS.md,
37
+ Agents.md,
38
+ agents.md,
39
+ .ai/AGENTS.md,
40
+ .ai/Agents.md,
41
+ .ai/constitution.md,
42
+ .ai/instructions/**/*.md,
43
+ .ai/rules/**/*.md,
44
+ .ai/skills/**/*.md,
45
+ .agents/**/*.md,
46
+ ]
47
+ terms: [scope, precedence, architecture, must, constraint]
48
+ min_terms: 2
49
+ max_span_lines: 120
50
+ max_files_per_pattern: 50
51
+ remediation: Document instruction scope, precedence, non-negotiable constraints, and where deeper guidance lives.
52
+ - id: ADRB-CTX-003
53
+ level: 3
54
+ title: Agent guidance integrity is mechanically checked
55
+ outcome: Automated validation detects missing, broken, stale, or structurally invalid agent guidance.
56
+ risk: Critical instructions silently drift while agents continue treating them as authoritative.
57
+ allow_agent_evidence: true
58
+ agent_evidence_scopes: [repository]
59
+ evidence:
60
+ - type: ci_command
61
+ scope: repository
62
+ min_tools: 1
63
+ remediation: Add a CI check for required agent files, links, ownership, and structural invariants.
64
+ - id: ADRB-CTX-004
65
+ level: 4
66
+ title: Guidance effectiveness drives improvement
67
+ outcome: Retrieval failures, repeated instruction errors, and correction latency are trended and improve guidance.
68
+ risk: Documentation volume grows without evidence that agents find and apply the right context.
69
+ allow_attestation: true
70
+ allow_agent_evidence: true
71
+ evidence:
72
+ - type: manual
73
+ scope: outcome
74
+ prompt: Provide time-series guidance-quality outcomes and a recent instruction change driven by them.
75
+ remediation: Measure context retrieval and recurring instruction failures, then update guidance from the results.