@nimiplatform/nimi-coding 0.4.0 → 0.6.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 (70) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/CONTRIBUTING.md +1 -1
  3. package/README.md +92 -55
  4. package/README.zh-CN.md +93 -56
  5. package/cli/commands/authority.mjs +80 -125
  6. package/cli/commands/clear.mjs +3 -2
  7. package/cli/commands/code.mjs +225 -0
  8. package/cli/commands/start.mjs +3 -2
  9. package/cli/constants.mjs +2 -1
  10. package/cli/dev/check-authority-surface.mjs +17 -8
  11. package/cli/dev/check-product-conformance.mjs +4 -32
  12. package/cli/dev/run-cli-smoke.mjs +6 -0
  13. package/cli/help.mjs +8 -3
  14. package/cli/index.mjs +3 -2
  15. package/cli/lib/authority/audit.mjs +262 -185
  16. package/cli/lib/authority/change-candidates.mjs +807 -0
  17. package/cli/lib/authority/closed-sets.mjs +7 -8
  18. package/cli/lib/authority/compile.mjs +6 -24
  19. package/cli/lib/authority/compiled-snapshot.mjs +143 -0
  20. package/cli/lib/authority/consumers.mjs +69 -19
  21. package/cli/lib/authority/diagnostics.mjs +10 -2
  22. package/cli/lib/authority/diff.mjs +77 -54
  23. package/cli/lib/authority/format.mjs +4 -32
  24. package/cli/lib/authority/git-snapshot.mjs +34 -379
  25. package/cli/lib/authority/graph.mjs +10 -10
  26. package/cli/lib/authority/impact.mjs +17 -144
  27. package/cli/lib/authority/review.mjs +33 -43
  28. package/cli/lib/authority/sarif.mjs +1 -8
  29. package/cli/lib/authority/source-yaml.mjs +0 -4
  30. package/cli/lib/authority/surface.mjs +19 -1
  31. package/cli/lib/authority/terms.mjs +10 -9
  32. package/cli/lib/authority/validate.mjs +6 -14
  33. package/cli/lib/code/authority-annotation-response.mjs +43 -0
  34. package/cli/lib/code/authority-annotation-scan.mjs +162 -0
  35. package/cli/lib/code/authority-annotations.mjs +293 -0
  36. package/cli/lib/code/context.mjs +710 -0
  37. package/cli/lib/code/response.mjs +165 -0
  38. package/cli/lib/doctor.mjs +3 -2
  39. package/cli/lib/entrypoints.mjs +13 -5
  40. package/cli/seeds/seed-policy.yaml +2 -2
  41. package/contracts/authority-source.schema.yaml +0 -6
  42. package/contracts/authority-verifier-bindings.schema.yaml +21 -10
  43. package/methodology/authority-authoring.yaml +68 -70
  44. package/methodology/core.yaml +10 -6
  45. package/package.json +5 -3
  46. package/spec/authority-audit.yaml +56 -52
  47. package/spec/authority-authoring.yaml +3 -16
  48. package/spec/authority-change-candidates.yaml +146 -0
  49. package/spec/authority-consumers.yaml +7 -0
  50. package/spec/authority-discovery.yaml +2 -2
  51. package/spec/authority-graph.yaml +1 -1
  52. package/spec/authority-impact.yaml +16 -39
  53. package/spec/authority-review.yaml +29 -47
  54. package/spec/authority-terms.yaml +5 -1
  55. package/spec/code-authority-annotations.yaml +42 -0
  56. package/spec/code-context.yaml +38 -0
  57. package/spec/product-scope.yaml +15 -9
  58. package/cli/commands/validate-ai-governance.mjs +0 -335
  59. package/cli/lib/authority/evidence-snapshot.mjs +0 -1
  60. package/cli/lib/authority/evidence.mjs +0 -1432
  61. package/cli/lib/internal/governance/ai/ai-context-budget-core.mjs +0 -377
  62. package/cli/lib/internal/governance/ai/ai-structure-budget-core.mjs +0 -376
  63. package/cli/lib/internal/governance/ai/check-agents-freshness.mjs +0 -155
  64. package/cli/lib/internal/governance/ai/check-high-risk-doc-metadata-core.mjs +0 -173
  65. package/cli/lib/internal/governance/config.mjs +0 -114
  66. package/cli/lib/internal/governance/shared/read-yaml-with-fragments.mjs +0 -49
  67. package/contracts/authority-evidence-bindings.schema.yaml +0 -53
  68. package/contracts/authority-evidence-probe-results.schema.yaml +0 -38
  69. package/contracts/authority-impact-dispositions.schema.yaml +0 -13
  70. package/spec/authority-evidence.yaml +0 -200
@@ -1,114 +0,0 @@
1
- import path from "node:path";
2
-
3
- import { readTextIfFile } from "../../fs-helpers.mjs";
4
- import { parseYamlText } from "../../yaml-helpers.mjs";
5
- import { isPlainObject } from "../../value-helpers.mjs";
6
-
7
- const GOVERNANCE_CONFIG_RELATIVE_PATH = ".nimi/config/governance.yaml";
8
-
9
- function normalizeAgentsTarget(entry) {
10
- if (!isPlainObject(entry) || typeof entry.rel !== "string") {
11
- return null;
12
- }
13
-
14
- return {
15
- rel: entry.rel.trim(),
16
- maxLines: Number(entry.max_lines ?? entry.maxLines ?? 0),
17
- };
18
- }
19
-
20
- function normalizeGovernanceConfig(parsed) {
21
- if (!isPlainObject(parsed)) {
22
- return null;
23
- }
24
-
25
- const profileId = typeof parsed.profile_id === "string" ? parsed.profile_id.trim() : null;
26
- const aiGovernance = isPlainObject(parsed.ai_governance) ? parsed.ai_governance : {};
27
- const agentsFreshness = isPlainObject(aiGovernance.agents_freshness)
28
- ? aiGovernance.agents_freshness
29
- : {};
30
-
31
- const normalized = {
32
- profileId,
33
- aiGovernance: {
34
- agentsFreshness: {
35
- targets: Array.isArray(agentsFreshness.targets)
36
- ? agentsFreshness.targets.map(normalizeAgentsTarget).filter(Boolean)
37
- : [],
38
- requiredSections: Array.isArray(agentsFreshness.required_sections)
39
- ? agentsFreshness.required_sections
40
- .map((entry) => String(entry || "").trim())
41
- .filter(Boolean)
42
- : [],
43
- staleTokens: Array.isArray(agentsFreshness.stale_tokens)
44
- ? agentsFreshness.stale_tokens.map((entry) => String(entry || "").trim()).filter(Boolean)
45
- : [],
46
- },
47
- contextBudget: isPlainObject(aiGovernance.context_budget)
48
- ? aiGovernance.context_budget
49
- : {},
50
- structureBudget: isPlainObject(aiGovernance.structure_budget)
51
- ? aiGovernance.structure_budget
52
- : {},
53
- highRiskDocMetadata: isPlainObject(aiGovernance.high_risk_doc_metadata)
54
- ? aiGovernance.high_risk_doc_metadata
55
- : {},
56
- },
57
- };
58
-
59
- if (!normalized.profileId) {
60
- return null;
61
- }
62
-
63
- return normalized;
64
- }
65
-
66
- export async function loadGovernanceConfig(projectRoot = process.cwd()) {
67
- const configPath = path.join(projectRoot, GOVERNANCE_CONFIG_RELATIVE_PATH);
68
- const text = await readTextIfFile(configPath);
69
-
70
- if (text === null) {
71
- return {
72
- ok: false,
73
- path: configPath,
74
- reason: "missing governance config",
75
- config: null,
76
- };
77
- }
78
-
79
- const parsed = parseYamlText(text);
80
- const normalized = normalizeGovernanceConfig(parsed);
81
-
82
- if (!normalized) {
83
- return {
84
- ok: false,
85
- path: configPath,
86
- reason: "invalid governance config",
87
- config: null,
88
- };
89
- }
90
-
91
- return {
92
- ok: true,
93
- path: configPath,
94
- reason: null,
95
- config: normalized,
96
- };
97
- }
98
-
99
- export function requireProfile(governanceConfig, requestedProfile) {
100
- const effectiveProfile = requestedProfile || governanceConfig.profileId;
101
- if (effectiveProfile !== governanceConfig.profileId) {
102
- return {
103
- ok: false,
104
- error: `governance profile mismatch: expected ${governanceConfig.profileId} but received ${effectiveProfile}`,
105
- profile: effectiveProfile,
106
- };
107
- }
108
-
109
- return {
110
- ok: true,
111
- error: null,
112
- profile: effectiveProfile,
113
- };
114
- }
@@ -1,49 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import YAML from 'yaml';
4
-
5
- function isRecord(value) {
6
- return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
7
- }
8
-
9
- function mergeFragmentValues(key, currentValue, nextValue, sourcePath) {
10
- if (typeof currentValue === 'undefined') {
11
- return nextValue;
12
- }
13
- if (Array.isArray(currentValue) && Array.isArray(nextValue)) {
14
- return [...currentValue, ...nextValue];
15
- }
16
- if (isRecord(currentValue) && isRecord(nextValue)) {
17
- return { ...currentValue, ...nextValue };
18
- }
19
- throw new Error(`fragment merge type mismatch for ${key} in ${sourcePath}`);
20
- }
21
-
22
- export function readYamlWithFragments(filePath) {
23
- const raw = fs.readFileSync(filePath, 'utf8');
24
- const parsed = YAML.parse(raw);
25
- if (!isRecord(parsed) || !isRecord(parsed.fragments)) {
26
- return parsed;
27
- }
28
-
29
- const resolved = { ...parsed };
30
- const fragmentEntries = Object.entries(parsed.fragments);
31
- delete resolved.fragments;
32
-
33
- for (const [key, fragmentSpec] of fragmentEntries) {
34
- const refs = Array.isArray(fragmentSpec) ? fragmentSpec : [fragmentSpec];
35
- let mergedValue;
36
- for (const ref of refs) {
37
- const relativeRef = String(ref || '').trim();
38
- if (!relativeRef) {
39
- throw new Error(`empty fragment reference for ${key} in ${filePath}`);
40
- }
41
- const fragmentPath = path.resolve(path.dirname(filePath), relativeRef);
42
- const fragmentValue = readYamlWithFragments(fragmentPath);
43
- mergedValue = mergeFragmentValues(key, mergedValue, fragmentValue, filePath);
44
- }
45
- resolved[key] = mergedValue;
46
- }
47
-
48
- return resolved;
49
- }
@@ -1,53 +0,0 @@
1
- version: 1
2
- contract:
3
- id: nimicoding.authority-evidence-bindings.v1
4
- owner: nimi-coding
5
- visibility: package_internal
6
- format: nimicoding.authority-evidence-bindings/v1
7
- probe: package-script-target-reachability/v1
8
- container:
9
- path: .nimi/config
10
- Git_index: one_exact_tracked_stage-zero_regular_entry
11
- worktree: exact_current_regular_non-symlink_bytes
12
- identifier_pattern: '^[a-z](?:[a-z0-9-]*[a-z0-9])?(?:\.[a-z](?:[a-z0-9-]*[a-z0-9])?)+$'
13
- script_pattern: '^[a-z0-9](?:[a-z0-9._:-]*[a-z0-9])?$'
14
- version_pattern: '^[A-Za-z0-9](?:[A-Za-z0-9._+-]*[A-Za-z0-9])?$'
15
- fields:
16
- top: [format, required_bindings, bindings]
17
- binding: [id, authority, probe, manifest, command, tests, external_probe]
18
- authority: [unit, scope]
19
- command: [script, target]
20
- tests: [script, targets]
21
- external_probe: [id, version, required]
22
- paths:
23
- form: non_empty_repository_relative_POSIX_path
24
- forbidden: [absolute, empty_segment, dot_segment, dot_dot_segment, backslash, NUL, any_case-folded_.git_path_segment]
25
- resolution: lexical_and_physical_containment_in_exact_repository_root
26
- symlink_or_non_regular_leaf_or_parent: refused_and_never_followed
27
- package_script_grammar:
28
- parsing: static_manifest_string_comparison_only
29
- separator: one_ASCII_space_between_tokens_with_no_leading_or_trailing_space
30
- command: node --import tsx <target>
31
- tests: pnpm exec vitest run <targets...>
32
- targets: exact_binding_paths_in_declared_order_using_only_ASCII_letters_digits_dot_underscore_hyphen_and_slash
33
- forbidden: [quoting, escaping, environment_assignment, additional_option_or_flag, glob, pipe, redirect, command_substitution, command_chaining, arbitrary_executable]
34
- constraints:
35
- required_bindings: non_empty_unique_exact_binding_IDs
36
- binding_ID: unique_exact_dotted_lowercase_identifier
37
- authority_unit: exact_active_rule_ID
38
- authority_scope: exact_member_of_the_bound_active_rule_scope
39
- probe: fixed_package_owned_probe_only
40
- manifest: one_safe_repository_relative_regular_JSON_file_locator
41
- command_script: one_exact_manifest_scripts_key
42
- command_target: one_safe_repository_relative_regular_file_locator
43
- tests_script: one_exact_manifest_scripts_key_distinct_from_command_script
44
- test_targets: non_empty_unique_safe_repository_relative_regular_file_locators
45
- within_binding_locator_roles: manifest_command_target_and_test_targets_are_pairwise_portable-distinct
46
- cross_binding_locator_paths: exact_duplicates_may_share_one_input_but_portable_case_collisions_are_forbidden
47
- configured_binding_not_required: evaluated_but_does_not_create_required_coverage
48
- external_probe: null_or_exact_object
49
- external_probe_ID: exact_dotted_lowercase_identifier
50
- external_probe_version: explicit_non_empty_version
51
- external_probe_required: boolean
52
- duplicate_or_extra_fields: forbidden
53
- binding_product_semantics_defaults_or_conformance_claims: forbidden
@@ -1,38 +0,0 @@
1
- version: 1
2
- contract:
3
- id: nimicoding.authority-evidence-probe-results.v1
4
- owner: nimi-coding
5
- visibility: package_internal
6
- format: nimicoding.authority-evidence-probe-results/v1
7
- container:
8
- path: .nimi/local
9
- entry: one_exact_regular_non-symlink_supplied_observation_file
10
- Git_tracking: not_required
11
- identity_pattern: '^sha256:[0-9a-f]{64}$'
12
- identifier_pattern: '^[a-z](?:[a-z0-9-]*[a-z0-9])?(?:\.[a-z](?:[a-z0-9-]*[a-z0-9])?)+$'
13
- version_pattern: '^[A-Za-z0-9](?:[A-Za-z0-9._+-]*[A-Za-z0-9])?$'
14
- fields:
15
- top: [format, authority_content_identity, repository_input_identity, binding_identity, results]
16
- item: [binding, probe, version, adapter, execution, outcome]
17
- adapter: [id, version]
18
- execution: [completed, failed, unsupported]
19
- outcome:
20
- completed: [passed, failed]
21
- failed_or_unsupported: null
22
- constraints:
23
- identities: exact_lowercase_SHA-256_identities_of_the_captured_inputs
24
- results: unique_by_binding_with_no_extra_or_duplicate_items
25
- binding: exact_configured_binding_ID_with_one_external_probe_declaration
26
- probe_and_version: exact_match_to_the_binding_external_probe
27
- adapter_ID: exact_dotted_lowercase_identifier
28
- adapter_version: explicit_non_empty_version
29
- malformed_unknown_or_identity_mismatched_result: refused_not_gap_or_clean
30
- missing_declared_result: represented_by_runtime_as_not_provided
31
- execution_and_outcome: exact_conditional_shape
32
- extra_fields: forbidden
33
- trust:
34
- source: external_supplied_observation
35
- package_attestation: false
36
- shape_identity_or_coverage_validation_proves_execution: false
37
- reported_pass_proves_conformance_or_test_success: false
38
- external_result_creates_deterministic_finding_or_blocking_authority: false
@@ -1,13 +0,0 @@
1
- version: 1
2
- contract:
3
- id: nimicoding.authority-impact-dispositions.v1
4
- owner: nimi-coding
5
- visibility: package_internal
6
- format: nimicoding.authority-impact-dispositions/v1
7
- identifier_pattern: '^[a-z](?:[a-z0-9-]*[a-z0-9])?(?:\.[a-z](?:[a-z0-9-]*[a-z0-9])?)+$'
8
- status: addressed
9
- fields:
10
- top: [format, rules]
11
- rule: [id, consumers, test]
12
- consumer: [scope, status, evidence]
13
- test: [status, evidence]
@@ -1,200 +0,0 @@
1
- version: 1
2
- spec:
3
- id: nimicoding.authority-evidence.v1
4
- owner: nimi-coding
5
- status: active
6
- product_claim: one_stable_current_worktree_and_one_closed_project_binding_produce_exact_package_script_locator_and_declared_target_reachability_evidence_without_claiming_implementation_conformance_or_test_execution
7
- command: nimicoding authority evidence <repository-path> --bindings <tracked-.nimi/config-path> [--probe-results <.nimi/local-path>] --max-units <positive-safe-integer> --max-bindings <positive-safe-integer> --max-locators <positive-safe-integer> --max-edges <positive-safe-integer> --max-input-bytes <positive-safe-integer> --max-bytes <positive-safe-integer> [--json]
8
- surface:
9
- primary_machine_product: JSON
10
- human_output: concise_projection_of_the_same_logical_product
11
- repository_selection: exact_current_non_bare_Git_worktree_root
12
- repository_HEAD: one_resolvable_committed_full_OID_captured_once_as_non-semantic_context_with_unborn_HEAD_refused
13
- authority_root: .nimi/spec
14
- inputs:
15
- authority: complete_stably_captured_current_.nimi/spec_admitted_by_compileAuthorityPath
16
- binding:
17
- format: nimicoding.authority-evidence-bindings/v1
18
- authority: package://@nimiplatform/nimi-coding/contracts/authority-evidence-bindings.schema.yaml
19
- source: one_stably_captured_regular_non_symlink_project_owned_.nimi/config_file_with_one_exact_stage-zero_regular_Git_index_entry
20
- required_bindings: non_empty_so_an_accidentally_emptied_required_surface_is_refused
21
- product_authority: false
22
- external_results:
23
- format: nimicoding.authority-evidence-probe-results/v1
24
- authority: package://@nimiplatform/nimi-coding/contracts/authority-evidence-probe-results.schema.yaml
25
- source: optional_stably_captured_regular_non_symlink_.nimi/local_supplied_observation_file
26
- execution_or_truth_attestation: not_claimed
27
- complete_input_boundary:
28
- included:
29
- - complete_.nimi/spec_inventory_paths_types_and_bytes
30
- - exact_binding_bytes
31
- - each_configured_manifest_path_type_and_bytes
32
- - each_configured_command_target_path_type_and_bytes
33
- - each_configured_test_target_path_type_and_bytes
34
- - optional_external_result_bytes
35
- repository_evidence_universe: binding_declared_paths_only
36
- unbound_repository_files_inspected_or_proved_absent: false
37
- path_escape_symlink_following_or_any_case-folded_.git_path_segment_access: forbidden
38
- capture:
39
- first: retain_exact_directory_and_file_handles_for_all_present_inputs_and_parent_directories_for_missing_inputs
40
- second: recapture_complete_authority_inventory_binding_and_all_declared_repository_paths
41
- commit: revalidate_all_held_paths_types_metadata_and_bytes
42
- race: any_binding_authority_path_type_inventory_or_byte_change_refuses_the_whole_product
43
- materialization: captured_authority_uses_one_isolated_temporary_directory_with_readback_validation_and_cleanup_after_success_or_failure
44
- binding:
45
- exact_fields: [id, authority, probe, manifest, command, tests, external_probe]
46
- authority_fields: [unit, scope]
47
- authority_resolution: exact_active_rule_and_exact_declared_scope_member
48
- probe: package-script-target-reachability/v1
49
- manifest: safe_repository_relative_regular_JSON_file
50
- command_fields: [script, target]
51
- tests_fields: [script, targets]
52
- test_targets: non_empty_unique_repository_relative_paths
53
- external_probe: null_or_exact_id_version_required_declaration
54
- semantics: project_owned_integration_locator_only
55
- exact_authority_ref_proves_probe_predicate_equivalence: false
56
- project_product_defaults_statement_condition_failure_or_conformance: forbidden
57
- package_owned_probe:
58
- id: package-script-target-reachability/v1
59
- version: 1
60
- execution: deterministic_static_parse_on_captured_bytes_without_running_any_command
61
- manifest_read:
62
- document: one_valid_UTF-8_JSON_object_with_one_scripts_object
63
- duplicate_or_invalid_JSON_structure: refused
64
- admitted_command_script: node --import tsx <target>
65
- admitted_test_script: pnpm exec vitest run <targets...>
66
- grammar:
67
- token_separator: one_ASCII_space
68
- target_token_charset: ASCII_letters_digits_dot_underscore_hyphen_and_slash
69
- target_order: exact_binding_order
70
- inferred_alias_flag_glob_quote_shell_or_environment_semantics: forbidden
71
- locators:
72
- - authority_unit_and_scope_independent_SourceMap_locations
73
- - manifest_file_and_exact_script_value_locations
74
- - command_target_regular_file
75
- - each_test_target_regular_file
76
- graph_edges:
77
- - authority_to_project_binding
78
- - binding_to_manifest
79
- - manifest_to_command_script
80
- - command_script_to_command_target
81
- - manifest_to_test_script
82
- - test_script_to_each_test_target
83
- graph_product: every_budgeted_edge_is_returned_as_one_explicit_per-binding_edge_record
84
- graph_edge_status: [bound, reachable, missing, mismatch, indeterminate]
85
- reachability:
86
- reachable: exact_script_grammar_matches_the_binding_and_every_required_target_locator_exists_as_one_supported_regular_file
87
- missing: exact_manifest_script_or_declared_target_is_absent
88
- unsupported: present_input_cannot_be_decided_by_the_closed_static_grammar_or_supported_entry_types
89
- basis: project_binding_plus_package_computed_exact_locator_resolution
90
- runtime_call_graph_execution_test_result_or_behavioral_conformance: not_claimed
91
- declared_target_existence: evaluated_independently_from_script_grammar_so_a_missing_target_is_never_hidden_by_an_unsupported_script
92
- external_probe_results:
93
- identities_required: [authority_content_identity, repository_input_identity, binding_identity]
94
- result_match: exact_binding_external_probe_ID_version_and_unique_result_item
95
- output_state_mapping:
96
- no_item: not_provided
97
- completed_passed: [reported_completed, reported_passed]
98
- completed_failed: [reported_completed, reported_failed]
99
- failed: [reported_execution_failed, null]
100
- unsupported: [reported_unsupported, null]
101
- output_source: external_supplied
102
- packageAttestation: false
103
- required_not_provided_failed_unsupported_or_reported_failed: required_evidence_gap
104
- optional_state: observation_only
105
- malformed_extra_duplicate_unknown_or_identity_mismatch: refused_with_null_evidence
106
- reported_pass_effect: satisfies_only_the_declared_supplied_observation_requirement
107
- reported_pass_does_not_prove: [probe_execution, test_success, implementation_conformance, authority_satisfaction]
108
- identity:
109
- format: sha256_colon_lowercase_hex
110
- authority_content_identity:
111
- domain: nimicoding.authority-snapshot-content/v1
112
- inputs: complete_sorted_.nimi/spec_regular_file_paths_types_lengths_and_exact_bytes
113
- repository_input_identity:
114
- domain: nimicoding.repository-evidence-input/v1
115
- inputs: sorted_unique_binding_declared_repository_paths_entry_state_type_exact_byte_length_and_bytes
116
- missing_or_unsupported: explicit_framed_state_marker_without_following_or_inference
117
- excludes: [authority_bytes, binding_bytes, external_result_bytes]
118
- binding_identity:
119
- domain: nimicoding.authority-evidence-binding/v1
120
- inputs: exact_captured_binding_byte_length_and_bytes
121
- excluded_from_all_semantic_identities: [absolute_repository_path, branch_name, mtime, ctime, inode, permissions, traversal_order, temporary_path]
122
- external_result: excluded_from_input_identities_and_required_to_exact_match_all_three
123
- product:
124
- format: nimicoding.authority-evidence/v1
125
- top_level_fields: [format, operationStatus, evidenceStatus, complete, partial, conformanceStatus, identities, bindings, observations, findings, gaps, counts, budgets]
126
- operationStatus: completed
127
- evidenceStatus:
128
- unavailable: at_least_one_required_package_computed_script_or_target_reachability_finding
129
- indeterminate: no_required_reachability_finding_and_at_least_one_required_gap
130
- available: no_required_reachability_finding_or_gap
131
- complete: false_only_when_at_least_one_required_gap_exists
132
- partial: false
133
- conformanceStatus: not_evaluated
134
- binding_record:
135
- authority: exact_unit_scope_unit_location_and_independent_scopeLocation
136
- packageProbe: package_computed_ID_version_and_execution_status
137
- manifest: exact_path_script_locations_and_entry_state
138
- command: exact_script_target_locations_and_reachability_state
139
- tests: exact_script_target_locations_and_reachability_state
140
- externalProbe: declared_requirement_reported_state_and_packageAttestation_false
141
- edges: complete_explicit_5_plus_test_target_count_graph_with_source_target_basis_status_and_locations
142
- obligationKeys:
143
- consumer: exact_rule_ID_consumer_scope_tuple
144
- test: exact_rule_ID_test_rule_ID_tuple
145
- observation: declaration_existence_exact_script_shape_and_reachability_facts_only
146
- finding:
147
- code: AUTH_EVIDENCE_REQUIRED_TARGET_UNREACHABLE
148
- basis: governance_bound_package_computed_exact_locator_reachability
149
- claim: required_bound_script_or_target_locator_is_missing_not_that_implementation_violates_authority
150
- gaps:
151
- - required_binding_missing
152
- - supported_static_probe_capability_unavailable
153
- - required_external_probe_not_provided
154
- - required_external_probe_reported_execution_failure
155
- - required_external_probe_reported_unsupported
156
- - required_external_probe_reported_failure
157
- locations: repository_relative_with_exact_range_for_authority_manifest_script_and_present_target_witnesses
158
- fingerprints:
159
- algorithm: SHA-256_with_sha256_colon_prefix
160
- inputs: stable_item_code_probe_version_binding_ID_authority_ID_scope_and_logical_target_IDs
161
- excluded: [absolute_path, relative_path, range, message, repository_input_identity, external_adapter, policy]
162
- ordering:
163
- bindings: binding_ID
164
- locators: logical_locator_ID
165
- edges: [source, target, edge_ID]
166
- observations_findings_gaps: [binding_ID, code, logical_target_ID]
167
- budgets:
168
- required: [maxUnits, maxBindings, maxLocators, maxEdges, maxInputBytes, maxBytes]
169
- values: positive_safe_integers
170
- maxUnits: complete_admitted_authority_corpus_unit_count
171
- maxBindings: distinct_union_of_required_and_configured_binding_IDs
172
- maxLocators: all_logical_authority_manifest_script_command_target_and_test_target_locators_required_for_complete_output
173
- maxEdges: all_explicitly_returned_declared_evidence_graph_edges_before_status_filtering
174
- maxInputBytes: sum_of_all_captured_regular_authority_binding_manifest_target_and_external_result_bytes
175
- maxBytes: UTF-8_bytes_of_compact_JSON.stringify_complete_evidence
176
- overflow: AUTH_EVIDENCE_BUDGET_with_evidence_null_partial_false
177
- outcomes:
178
- completed_available: evidence_present_complete_true_evidenceStatus_available_exit_0_without_conformance_claim
179
- completed_unavailable: evidence_present_with_required_package_computed_finding_exit_1
180
- completed_indeterminate: evidence_present_complete_false_with_required_gap_exit_1
181
- refused: invalid_repository_corpus_binding_authority_reference_scope_manifest_JSON_result_identity_capture_or_budget_returns_evidence_null_partial_false_exit_1
182
- usage_error: missing_repeated_unknown_or_invalid_CLI_argument_exit_2_without_evidence_product
183
- failed: uncaught_IO_resource_or_internal_failure_exit_2_without_evidence_product
184
- partial_or_truncated_output: forbidden
185
- anti_overclaim:
186
- file_or_target_exists_means_conformance: false
187
- exact_package_script_shape_means_command_executed: false
188
- test_target_exists_means_test_executed_or_passed: false
189
- external_reported_pass_means_package_attestation: false
190
- reachability_label: declared_package_script_target_reachability_only
191
- clean_verified_conforms_or_test_passed_language: forbidden
192
- boundaries:
193
- writes_authority_repository_Git_index_or_project_files: false
194
- arbitrary_shell_plugin_script_or_test_execution: forbidden
195
- source_code_AST_universal_ontology_call_graph_or_semantic_inference: forbidden
196
- canonical_grammar_kind_field_or_relation_change: none
197
- durable_cache_database_history_receipt_or_ledger: none
198
- SARIF_review_diff_impact_or_audit_aggregation: none
199
- model_embedding_AI_remediation_UI_IDE_Studio_Atlas_or_release_orchestration: not_owned
200
- public_AuthorityIR_or_SourceMap_export: none