@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.
- package/CHANGELOG.md +16 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +92 -55
- package/README.zh-CN.md +93 -56
- package/cli/commands/authority.mjs +80 -125
- package/cli/commands/clear.mjs +3 -2
- package/cli/commands/code.mjs +225 -0
- package/cli/commands/start.mjs +3 -2
- package/cli/constants.mjs +2 -1
- package/cli/dev/check-authority-surface.mjs +17 -8
- package/cli/dev/check-product-conformance.mjs +4 -32
- package/cli/dev/run-cli-smoke.mjs +6 -0
- package/cli/help.mjs +8 -3
- package/cli/index.mjs +3 -2
- package/cli/lib/authority/audit.mjs +262 -185
- package/cli/lib/authority/change-candidates.mjs +807 -0
- package/cli/lib/authority/closed-sets.mjs +7 -8
- package/cli/lib/authority/compile.mjs +6 -24
- package/cli/lib/authority/compiled-snapshot.mjs +143 -0
- package/cli/lib/authority/consumers.mjs +69 -19
- package/cli/lib/authority/diagnostics.mjs +10 -2
- package/cli/lib/authority/diff.mjs +77 -54
- package/cli/lib/authority/format.mjs +4 -32
- package/cli/lib/authority/git-snapshot.mjs +34 -379
- package/cli/lib/authority/graph.mjs +10 -10
- package/cli/lib/authority/impact.mjs +17 -144
- package/cli/lib/authority/review.mjs +33 -43
- package/cli/lib/authority/sarif.mjs +1 -8
- package/cli/lib/authority/source-yaml.mjs +0 -4
- package/cli/lib/authority/surface.mjs +19 -1
- package/cli/lib/authority/terms.mjs +10 -9
- package/cli/lib/authority/validate.mjs +6 -14
- package/cli/lib/code/authority-annotation-response.mjs +43 -0
- package/cli/lib/code/authority-annotation-scan.mjs +162 -0
- package/cli/lib/code/authority-annotations.mjs +293 -0
- package/cli/lib/code/context.mjs +710 -0
- package/cli/lib/code/response.mjs +165 -0
- package/cli/lib/doctor.mjs +3 -2
- package/cli/lib/entrypoints.mjs +13 -5
- package/cli/seeds/seed-policy.yaml +2 -2
- package/contracts/authority-source.schema.yaml +0 -6
- package/contracts/authority-verifier-bindings.schema.yaml +21 -10
- package/methodology/authority-authoring.yaml +68 -70
- package/methodology/core.yaml +10 -6
- package/package.json +5 -3
- package/spec/authority-audit.yaml +56 -52
- package/spec/authority-authoring.yaml +3 -16
- package/spec/authority-change-candidates.yaml +146 -0
- package/spec/authority-consumers.yaml +7 -0
- package/spec/authority-discovery.yaml +2 -2
- package/spec/authority-graph.yaml +1 -1
- package/spec/authority-impact.yaml +16 -39
- package/spec/authority-review.yaml +29 -47
- package/spec/authority-terms.yaml +5 -1
- package/spec/code-authority-annotations.yaml +42 -0
- package/spec/code-context.yaml +38 -0
- package/spec/product-scope.yaml +15 -9
- package/cli/commands/validate-ai-governance.mjs +0 -335
- package/cli/lib/authority/evidence-snapshot.mjs +0 -1
- package/cli/lib/authority/evidence.mjs +0 -1432
- package/cli/lib/internal/governance/ai/ai-context-budget-core.mjs +0 -377
- package/cli/lib/internal/governance/ai/ai-structure-budget-core.mjs +0 -376
- package/cli/lib/internal/governance/ai/check-agents-freshness.mjs +0 -155
- package/cli/lib/internal/governance/ai/check-high-risk-doc-metadata-core.mjs +0 -173
- package/cli/lib/internal/governance/config.mjs +0 -114
- package/cli/lib/internal/governance/shared/read-yaml-with-fragments.mjs +0 -49
- package/contracts/authority-evidence-bindings.schema.yaml +0 -53
- package/contracts/authority-evidence-probe-results.schema.yaml +0 -38
- package/contracts/authority-impact-dispositions.schema.yaml +0 -13
- 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
|