@nimiplatform/nimi-coding 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 (118) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/CONTRIBUTING.md +3 -3
  3. package/README.md +285 -41
  4. package/README.zh-CN.md +294 -31
  5. package/bin/nimicoding.mjs +1 -1
  6. package/cli/commands/authority.mjs +849 -0
  7. package/cli/commands/clear.mjs +27 -7
  8. package/cli/commands/doctor.mjs +10 -1
  9. package/cli/commands/start.mjs +23 -27
  10. package/cli/commands/sync.mjs +21 -101
  11. package/cli/constants.mjs +7 -31
  12. package/cli/dev/check-authority-surface.mjs +173 -0
  13. package/cli/dev/check-product-conformance.mjs +917 -0
  14. package/cli/help.mjs +10 -17
  15. package/cli/index.mjs +6 -47
  16. package/cli/lib/authority/anchors.mjs +491 -0
  17. package/cli/lib/authority/audit.mjs +490 -0
  18. package/cli/lib/authority/closed-sets.mjs +646 -0
  19. package/cli/lib/authority/compile.mjs +110 -0
  20. package/cli/lib/authority/consumers.mjs +470 -0
  21. package/cli/lib/authority/diagnostics.mjs +87 -0
  22. package/cli/lib/authority/diff.mjs +287 -0
  23. package/cli/lib/authority/discover.mjs +447 -0
  24. package/cli/lib/authority/evidence-snapshot.mjs +1 -0
  25. package/cli/lib/authority/evidence.mjs +1432 -0
  26. package/cli/lib/authority/format.mjs +197 -0
  27. package/cli/lib/authority/git-snapshot.mjs +1065 -0
  28. package/cli/lib/authority/graph.mjs +351 -0
  29. package/cli/lib/authority/impact.mjs +252 -0
  30. package/cli/lib/authority/lexicon.mjs +55 -0
  31. package/cli/lib/authority/query.mjs +162 -0
  32. package/cli/lib/authority/repository-corpus.mjs +37 -0
  33. package/cli/lib/authority/repository-inventory.mjs +34 -0
  34. package/cli/lib/authority/review.mjs +222 -0
  35. package/cli/lib/authority/sarif.mjs +181 -0
  36. package/cli/lib/authority/scope-bindings.mjs +225 -0
  37. package/cli/lib/authority/source-map.mjs +105 -0
  38. package/cli/lib/authority/source-markdown.mjs +167 -0
  39. package/cli/lib/authority/source-yaml.mjs +312 -0
  40. package/cli/lib/authority/surface.mjs +79 -0
  41. package/cli/lib/authority/terms.mjs +421 -0
  42. package/cli/lib/authority/tracked-text.mjs +70 -0
  43. package/cli/lib/authority/validate.mjs +308 -0
  44. package/cli/lib/bootstrap.mjs +55 -71
  45. package/cli/lib/doctor.mjs +40 -123
  46. package/cli/lib/entrypoints.mjs +103 -105
  47. package/cli/lib/fs-helpers.mjs +139 -15
  48. package/cli/lib/internal/governance/config.mjs +0 -36
  49. package/cli/lib/shared.mjs +8 -21
  50. package/cli/lib/sync.mjs +81 -92
  51. package/cli/lib/value-helpers.mjs +0 -26
  52. package/cli/lib/yaml-helpers.mjs +1 -124
  53. package/cli/seeds/bootstrap.mjs +31 -87
  54. package/cli/seeds/seed-policy.yaml +9 -63
  55. package/contracts/authority-evidence-bindings.schema.yaml +53 -0
  56. package/contracts/authority-evidence-probe-results.schema.yaml +38 -0
  57. package/contracts/authority-impact-dispositions.schema.yaml +13 -0
  58. package/contracts/authority-scope-bindings.schema.yaml +15 -0
  59. package/contracts/authority-source.schema.yaml +64 -0
  60. package/contracts/authority-verifier-bindings.schema.yaml +20 -0
  61. package/methodology/authority-authoring.yaml +144 -0
  62. package/methodology/core.yaml +31 -26
  63. package/package.json +10 -6
  64. package/spec/authority-anchors.yaml +99 -0
  65. package/spec/authority-audit.yaml +85 -0
  66. package/spec/authority-authoring.yaml +150 -0
  67. package/spec/authority-closed-sets.yaml +65 -0
  68. package/spec/authority-consumers.yaml +70 -0
  69. package/spec/authority-context.yaml +50 -0
  70. package/spec/authority-discovery.yaml +119 -0
  71. package/spec/authority-evidence.yaml +200 -0
  72. package/spec/authority-graph.yaml +59 -0
  73. package/spec/authority-impact.yaml +84 -0
  74. package/spec/authority-review.yaml +89 -0
  75. package/spec/authority-terms.yaml +59 -0
  76. package/spec/product-scope.yaml +36 -23
  77. package/cli/commands/blueprint-audit.mjs +0 -91
  78. package/cli/commands/classify-spec-tree.mjs +0 -5
  79. package/cli/commands/generate-spec-derived-docs.mjs +0 -151
  80. package/cli/commands/generate-spec-migration-plan.mjs +0 -30
  81. package/cli/commands/surface-validator-command.mjs +0 -49
  82. package/cli/commands/validate-domain-admission.mjs +0 -5
  83. package/cli/commands/validate-guidance-bodies.mjs +0 -5
  84. package/cli/commands/validate-placement.mjs +0 -5
  85. package/cli/commands/validate-projection-edges.mjs +0 -5
  86. package/cli/commands/validate-spec-audit.mjs +0 -27
  87. package/cli/commands/validate-spec-governance.mjs +0 -144
  88. package/cli/commands/validate-spec-tree.mjs +0 -27
  89. package/cli/commands/validate-table-family.mjs +0 -5
  90. package/cli/commands/validate-tracked-output-admission.mjs +0 -5
  91. package/cli/lib/blueprint-audit.mjs +0 -363
  92. package/cli/lib/contracts.mjs +0 -21
  93. package/cli/lib/internal/contracts-loaders.mjs +0 -47
  94. package/cli/lib/internal/contracts-parse.mjs +0 -192
  95. package/cli/lib/internal/governance/runner.mjs +0 -35
  96. package/cli/lib/internal/surface-taxonomy-validators.mjs +0 -1147
  97. package/cli/lib/internal/validators-shared.mjs +0 -12
  98. package/cli/lib/internal/validators-spec-helpers.mjs +0 -52
  99. package/cli/lib/internal/validators-spec.mjs +0 -380
  100. package/cli/lib/validators.mjs +0 -30
  101. package/config/bootstrap.yaml +0 -6
  102. package/config/spec-generation-inputs.yaml +0 -41
  103. package/contracts/domain-admission.schema.yaml +0 -56
  104. package/contracts/migration-inventory.schema.yaml +0 -15
  105. package/contracts/negative-fixtures.yaml +0 -26
  106. package/contracts/placement-contract.schema.yaml +0 -127
  107. package/contracts/projection-edge.schema.yaml +0 -46
  108. package/contracts/shared-enums.yaml +0 -63
  109. package/contracts/spec-generation-audit.schema.yaml +0 -46
  110. package/contracts/spec-generation-inputs.schema.yaml +0 -43
  111. package/contracts/spec-layout.schema.yaml +0 -32
  112. package/contracts/surface-taxonomy.schema.yaml +0 -139
  113. package/contracts/table-family.schema.yaml +0 -133
  114. package/contracts/tracked-output-admission.schema.yaml +0 -17
  115. package/methodology/four-closure-policy.yaml +0 -20
  116. package/methodology/role-separation-policy.yaml +0 -22
  117. package/methodology/spec-reconstruction.yaml +0 -69
  118. package/spec/_meta/spec-tree-model.yaml +0 -44
@@ -0,0 +1,200 @@
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
@@ -0,0 +1,59 @@
1
+ version: 1
2
+ spec:
3
+ id: nimicoding.authority-graph.v1
4
+ owner: nimi-coding
5
+ status: active
6
+ product_claim: complete_admitted_private_compiler_snapshot_supports_bounded_direct_refs_exact_path_and_local_subgraph
7
+ source: one_complete_package_private_AuthorityIR_and_SourceMap_compile_per_command
8
+ commands:
9
+ refs: nimicoding authority refs <path> <id> --direction <incoming|outgoing|both> --relations <closed-set> --max-units <positive-safe-integer> --max-edges <positive-safe-integer> --max-bytes <positive-safe-integer> [--json]
10
+ path: nimicoding authority path <path> <from-id> <to-id> --traversal <directed|incidence> --relations <closed-set> --max-hops <positive-safe-integer> --max-units <positive-safe-integer> --max-edges <positive-safe-integer> --max-bytes <positive-safe-integer> [--json]
11
+ subgraph: nimicoding authority subgraph <path> <id> --direction <incoming|outgoing|both> --relations <closed-set> --depth <positive-safe-integer> --max-units <positive-safe-integer> --max-edges <positive-safe-integer> --max-bytes <positive-safe-integer> [--json]
12
+ relations:
13
+ admitted: [applies_to, supersedes]
14
+ request: explicit_non_empty_unique_closed_set
15
+ defaults_or_all_alias: forbidden
16
+ product:
17
+ format: nimicoding.authority-graph/v1
18
+ shared_fields: [format, operation, query, complete, nodes, edges, policy, counts, budgets]
19
+ path_fields: [found, steps]
20
+ node_fields: [id, kind, owner, lifecycle, scope, location]
21
+ definition_or_removed_scope: []
22
+ edge_fields: [source, type, target, sourceLocation, relationLocation, targetLocation]
23
+ location_fields: [file, range, sourcePointer]
24
+ semantic_prose_or_raw_AuthorityIR: excluded
25
+ ordering:
26
+ nodes: lexical_ID
27
+ edges: [source, type, target]
28
+ comparator: portable_lexical_comparator
29
+ traversal:
30
+ refs: direct_only_with_each_authored_edge_once
31
+ path_directed: authored_source_to_target_only
32
+ path_incidence: forward_or_reverse_steps_while_edges_remain_canonical_authored_source_to_target
33
+ reverse_step_claim: topology_incidence_only_not_semantic_dependency
34
+ path_selection: minimum_hops_then_lexical_minimum_complete_step_tuple_sequence
35
+ path_step_tuple: [relation_type, traversal, authored_source, authored_target]
36
+ subgraph: deterministic_cycle_safe_BFS_returning_complete_selected_graph_within_depth
37
+ budgets:
38
+ required_all: [max_units, max_edges, max_bytes]
39
+ path_also_requires: max_hops
40
+ subgraph_also_requires: depth
41
+ units_and_edges: constrain_complete_traversal_proof_not_only_returned_witness
42
+ bytes: UTF-8_bytes_of_compact_JSON.stringify_graph
43
+ overflow: AUTH_GRAPH_BUDGET_with_null_graph_and_partial_false
44
+ outcomes:
45
+ completed: includes_complete_no_path_with_found_false
46
+ usage_error: invalid_or_missing_CLI_arguments_exit_2_without_graph_product
47
+ refused: parsed_invocation_with_invalid_corpus_unknown_ID_or_insufficient_budget
48
+ failed: IO_resource_or_internal_failure
49
+ unknown_ID: AUTH_QUERY_NOT_FOUND
50
+ partial_or_truncated_graph: forbidden
51
+ locations:
52
+ paths: input_root_relative_portable_paths_when_inside_input_root
53
+ semantics: preserve_SourceMap_range_and_sourcePointer
54
+ relocation: equivalent_relocated_corpus_has_stable_logical_graph_and_relative_locations
55
+ boundaries:
56
+ read_only: true
57
+ durable_graph_cache_or_database: none
58
+ public_JS_exports: none
59
+ new_grammar_relation_or_inferred_prose_relation: forbidden
@@ -0,0 +1,84 @@
1
+ version: 1
2
+ spec:
3
+ id: nimicoding.authority-impact.v1
4
+ owner: nimi-coding
5
+ status: active
6
+ product_claim: compare_admitted_compiler_outputs_and_report_declared_review_obligations_without_claiming_sync_or_completion
7
+ commands:
8
+ diff: nimicoding authority diff <before-path> <after-path> --max-bytes <positive-integer> [--json]
9
+ impact: nimicoding authority impact <before-path> <after-path> --dispositions <file> --max-bytes <positive-integer> [--json]
10
+ diff:
11
+ source: two_independently_admitted_compiler_outputs
12
+ format: nimicoding.authority-diff/v1
13
+ top_level_fields: [format, changes, summary]
14
+ summary_fields: [units, changes]
15
+ record:
16
+ required_fields: [unitId, operation, pointer, before, after]
17
+ optional_fields: [beforeSource, afterSource]
18
+ operation_enum:
19
+ unit_added: complete_after_unit
20
+ modified: scalar_field_before_and_after
21
+ added: scope_value_or_relation_added
22
+ removed: scope_value_or_relation_removed
23
+ source_record_fields: [file, range, sourcePointer]
24
+ range_fields: [start, end]
25
+ position_fields: [line, column]
26
+ unit_removed_operation: forbidden
27
+ physical_unit_deletion: AUTH_DIFF_TRANSITION_INVALID
28
+ retirement: active_unit_is_replaced_by_a_valid_same_ID_same_kind_removed_tombstone
29
+ tombstone_retention: removed_unit_remains_present_until_a_separately_admitted_reserved_ID_mechanism_exists
30
+ pure_profile_format_file_rename_unit_order_or_container_regroup_change: empty
31
+ ordering: [unit_ID, JSON_pointer, operation, values]
32
+ traceability: changed_values_reference_before_and_or_after_SourceMap
33
+ invalid_input_diagnostics:
34
+ path_identity: before_or_after_prefix_plus_input_root_relative_path
35
+ related_paths: same_side_prefix_and_relative_normalization
36
+ ordering: global_diagnostic_order_after_normalization
37
+ relocated_equivalent_inputs: byte_identical_JSON
38
+ byte_budget:
39
+ scope: semantic_diff_only_not_complete_CLI_report_or_compiler_diagnostics
40
+ measure: UTF-8_bytes_of_compact_JSON_stringify_diff
41
+ overflow: AUTH_DIFF_BUDGET
42
+ result: {diff: null, partial: false}
43
+ impact:
44
+ format: nimicoding.authority-impact/v1
45
+ top_level_fields: [format, changedUnits, impactedUnits, obligations, complete]
46
+ impacted_unit_fields: [id, kind]
47
+ obligation_fields: [ruleId, type, target, disposition]
48
+ disposition_fields_when_addressed: [ruleId, type, target, status, evidence]
49
+ roots: normative_governance_definition_rule_graph_changes; non_normative_metadata_diff_is_reported_but_creates_no_obligation
50
+ direction: reverse_declared_relations_from_changed_units_to_dependents
51
+ relation_categories: [applies_to, supersedes]
52
+ unrelated_units: excluded
53
+ active_rule_obligations:
54
+ consumer: union_of_before_and_after_declared_scope
55
+ test: one_explicit_evidence_disposition_per_impacted_active_rule
56
+ missing_disposition: AUTH_IMPACT_UNDISPOSED
57
+ complete: every_required_declared_obligation_has_exact_addressed_evidence
58
+ proof_boundary: does_not_prove_implementation_consumer_or_test_synchronization
59
+ partial_success: false
60
+ failure_report: may_list_complete_impacted_units_and_unresolved_obligations_with_ok_false
61
+ byte_budget:
62
+ scope: semantic_diff_and_impact_only_not_complete_CLI_report_or_compiler_diagnostics
63
+ measure: UTF-8_bytes_of_compact_JSON_stringify_object_containing_diff_and_impact
64
+ overflow: AUTH_IMPACT_BUDGET
65
+ result: {diff: null, impact: null, partial: false}
66
+ dispositions:
67
+ format: nimicoding.authority-impact-dispositions/v1
68
+ authority: package://@nimiplatform/nimi-coding/contracts/authority-impact-dispositions.schema.yaml
69
+ status: addressed
70
+ evidence: explicit_non_empty_text
71
+ inference: forbidden
72
+ fail_closed:
73
+ invalid_before_or_after_authority: compiler_diagnostics
74
+ identity_reuse_kind_change_or_physical_deletion: AUTH_DIFF_TRANSITION_INVALID_or_compiler_identity_diagnostics
75
+ dangling_relation_or_illegal_lifecycle: compiler_diagnostics
76
+ malformed_or_extra_disposition: AUTH_IMPACT_DISPOSITION_INVALID
77
+ missing_or_invalid_max_bytes: CLI_usage_failure
78
+ boundaries:
79
+ writes_authority: false
80
+ durable_artifacts: none
81
+ git_interpretation: none
82
+ natural_language_contradiction_detection: not_claimed
83
+ implementation_consumer_test_sync_proof: not_admitted
84
+ storage_search_embedding_visualization_AI_execution_Atlas: not_admitted
@@ -0,0 +1,89 @@
1
+ version: 1
2
+ spec:
3
+ id: nimicoding.authority-review.v1
4
+ owner: nimi-coding
5
+ status: active
6
+ product_claim: one_explicit_Git_base_commit_and_one_stable_current_worktree_produce_an_exact_read_only_change_review_over_complete_canonical_snapshots
7
+ command: nimicoding authority review <repository-path> --base <git-ref> --bindings <file> --dispositions <file> --max-units <positive-safe-integer> --max-edges <positive-safe-integer> --max-bytes <positive-safe-integer> [--json]
8
+ capture:
9
+ repository: exact_non_bare_Git_worktree_root
10
+ base_ref:
11
+ resolution: once_at_capture_start_to_immutable_full_commit_OID
12
+ later_use: full_OID_only
13
+ option_injection: refused
14
+ base_authority:
15
+ source: Git_object_database
16
+ root: .nimi/spec_tree_required
17
+ inventory: all_nested_tree_and_leaf_entries_without_suffix_filtering
18
+ admitted_entry_types: [tree, regular_blob_100644_or_100755]
19
+ refused: [symlink_blob, gitlink, unknown_mode_or_type, invalid_UTF-8_path, path_escape, duplicate_path, missing_object]
20
+ worktree_authority:
21
+ source: complete_live_filesystem_inventory_under_.nimi/spec
22
+ includes: [tracked_unchanged, tracked_modification, tracked_deletion, untracked_or_ignored_file, unsupported_regular_file]
23
+ refused: [missing_root, symlink, non_regular_entry, invalid_UTF-8_path, path_escape]
24
+ stability: retain_exact_directory_and_file_handles_while_capturing_paths_types_bytes_and_metadata_then_recapture_complete_live_inventory_and_revalidate_all_held_handles_at_capture_commit
25
+ race: any_path_type_byte_or_stability_metadata_change_refuses_the_whole_capture
26
+ materialization:
27
+ location: independent_0700_temporary_directory
28
+ isolation: physical_temporary_root_must_be_outside_worktree_and_Git_administration_roots_before_any_directory_is_created_and_is_rechecked_after_creation
29
+ validation: readback_paths_types_and_bytes_must_match_capture
30
+ cleanup: required_after_success_or_failure
31
+ Git_mutation: [checkout, stash, reset, stage, commit, branch_update, worktree_update, index_update]
32
+ Git_mutation_posture: forbidden
33
+ snapshot_identity:
34
+ format: sha256_colon_lowercase_hex
35
+ domain: nimicoding.authority-snapshot-content/v1
36
+ inputs: sorted_repository_relative_regular_file_paths_entry_type_exact_byte_length_and_bytes
37
+ excludes: [base_ref_name, commit_OID, executable_bit, permissions, mtime, ctime, inode, absolute_path, temporary_path, traversal_order]
38
+ result:
39
+ base: [commitOid, contentIdentity, file_count, unit_count, byte_count]
40
+ worktree: [contentIdentity, file_count, unit_count, byte_count]
41
+ oracles:
42
+ admission_and_counts: compileAuthorityPath_on_each_materialized_snapshot
43
+ semantic_delta: diffAuthorityPaths
44
+ declared_impact: impactAuthorityPaths
45
+ current_governance: auditAuthorityPath_on_worktree_snapshot_only
46
+ copied_Git_parser_IR_graph_diff_or_detector: forbidden
47
+ product:
48
+ format: nimicoding.authority-review/v1
49
+ top_level_fields: [format, operationStatus, policyStatus, complete, partial, snapshots, components, diff, impact, audit, budgets]
50
+ operationStatus: completed
51
+ policyStatus:
52
+ blocked: current_audit_has_a_blocking_finding
53
+ indeterminate: no_blocking_finding_and_impact_or_audit_coverage_is_incomplete
54
+ passed: review_is_complete_and_current_audit_policy_passed
55
+ complete: impact_complete_and_audit_complete_independent_of_blocking_policy
56
+ partial: false
57
+ components: [snapshots, diff, impact, audit]
58
+ component_fields: [operationStatus, complete]
59
+ logical_products:
60
+ diff: nimicoding.authority-diff/v1
61
+ impact: nimicoding.authority-impact/v1
62
+ audit: nimicoding.authority-audit/v1
63
+ audit_claim: current_snapshot_only_without_before_after_finding_attribution
64
+ budgets:
65
+ required: [maxUnits, maxEdges, maxBytes]
66
+ values: positive_safe_integers
67
+ units_and_edges: existing_audit_proof_traversal_semantics
68
+ component_bytes: same_explicit_maxBytes_passed_to_diff_impact_and_audit
69
+ review_bytes: UTF-8_bytes_of_compact_JSON.stringify_complete_review
70
+ overflow: AUTH_REVIEW_BUDGET_or_existing_component_budget_with_review_null_and_partial_false
71
+ outcomes:
72
+ completed_passed: review_present_complete_true_policy_passed_exit_0
73
+ completed_blocked: review_present_policy_blocked_exit_1
74
+ completed_incomplete: review_present_complete_false_exit_1
75
+ refused: invalid_Git_corpus_binding_disposition_capture_transition_or_budget_returns_review_null_partial_false_exit_1
76
+ usage_error: missing_repeated_or_invalid_CLI_argument_exit_2_without_review_product
77
+ failed: uncaught_IO_resource_or_internal_failure_exit_2_without_review_product
78
+ unresolved_impact: only_AUTH_IMPACT_UNDISPOSED_preserves_complete_logical_review_with_complete_false
79
+ invalid_disposition: any_AUTH_IMPACT_DISPOSITION_INVALID_refuses_whole_review
80
+ required_audit_gap: preserves_complete_logical_review_with_complete_false
81
+ blocking_finding: preserves_complete_logical_review_without_claiming_finding_was_introduced_by_change
82
+ boundaries:
83
+ writes_authority_or_project_files: false
84
+ durable_cache_database_history_or_receipt: none
85
+ SARIF_review_aggregation: none
86
+ heuristic_rename_split_merge_semantics: forbidden
87
+ PR_branch_policy_approval_comment_commit_release_or_task_orchestration: not_owned
88
+ arbitrary_shell_plugin_test_model_embedding_or_semantic_search_execution: forbidden
89
+ public_AuthorityIR_or_SourceMap_export: none
@@ -0,0 +1,59 @@
1
+ version: 1
2
+ spec:
3
+ id: nimicoding.authority-terms.v1
4
+ owner: nimi-coding
5
+ status: active
6
+ product_claim: bounded_static_index_of_the_identifiers_the_active_authority_corpus_uses_and_optionally_where_one_exact_identifier_appears_in_tracked_text
7
+ command: nimicoding authority terms <repository-path> --spec <corpus-path> [--term <t>] [--code] --max-units <positive-safe-integer> --max-terms <positive-safe-integer> --max-bytes <positive-safe-integer> [--json]
8
+ surface:
9
+ report_format: nimicoding.authority-terms/v1
10
+ corpus_root: repository_authority_corpus_only
11
+ boolean_flags: [json, code]
12
+ value_flags: [spec, term]
13
+ integer_flags: [max-units, max-terms, max-bytes]
14
+ repeatable_flags: []
15
+ findings_change_exit_code: false
16
+ inputs:
17
+ repository:
18
+ shape: exact_non_symlink_Git_worktree_root
19
+ tracked_files: one_complete_git_ls_files_cached_NUL_inventory
20
+ writes_or_execution: forbidden
21
+ corpus:
22
+ root: exact_repository_relative_.nimi/spec_resolved_realpath
23
+ units: active_only
24
+ fields: [title, meaning, statement, condition, failure]
25
+ term:
26
+ required_for_code: true
27
+ admission: must_be_one_exact_term_the_closed_lexical_grammar_admits
28
+ lexical_grammar:
29
+ classes: [snake_case, camelCase, UPPER_SNAKE, PascalCase, dotted]
30
+ boundaries: ASCII_identifier_boundaries_required
31
+ excluded: terms_inside_longer_path_like_tokens_containing_a_slash
32
+ dotted_exclusion: final_segments_that_are_known_code_extensions
33
+ code_inventory:
34
+ shape: tracked_text_inventory_v1
35
+ selection: by_decoded_content_never_by_an_extension_allowlist
36
+ rationale: a_fixed_extension_list_silently_dropped_whole_languages_while_the_report_claimed_complete
37
+ binary_detection: NUL_byte_or_undecodable_UTF_8_prefix_probe
38
+ probe_decoder: one_fresh_decoder_per_file_so_a_straddling_character_cannot_reject_the_next_file
39
+ exclusions:
40
+ every_excluded_file_reported: true
41
+ reasons: [authority-corpus, binary-content, not-utf8]
42
+ silent_exclusion: forbidden
43
+ accounting: tracked_files_equals_scanned_files_plus_excluded_files
44
+ budgets:
45
+ max_units: complete_active_unit_set_must_fit
46
+ max_terms: complete_distinct_term_set_must_fit
47
+ max_bytes: inputBytes_complete_decoded_authority_and_optional_code_input_must_fit
48
+ exceeded: refuse_with_one_diagnostic_and_no_partial_index_or_cross_reference
49
+ result:
50
+ trackedPathSetDigest: sha256_hex_of_nimicoding.repository-inventory/v1_canonical_tracked_path_set_preimage
51
+ complete: true_only_when_every_admitted_input_was_read_and_classified
52
+ byte_counts:
53
+ scannedBytes: selected_normative_authority_fields_plus_optional_decoded_code_inputs
54
+ inputBytes: complete_decoded_authority_corpus_plus_optional_decoded_code_inputs
55
+ partial: never
56
+ modes: [index, detail]
57
+ detail_fields: [term, classes, unitCount, units, code, codeReferences, codeInventory]
58
+ findings_change_exit_code: false
59
+ determinism: identical_inputs_produce_byte_identical_output
@@ -1,27 +1,40 @@
1
- version: 3
1
+ version: 7
2
2
  product:
3
3
  package_name: "@nimiplatform/nimi-coding"
4
- mission: methodology_spec_construction_and_deterministic_validation
4
+ mission: canonical_authority_methodology_formatter_compiler_primitives_and_deterministic_gates
5
5
  owned_surfaces:
6
- - bootstrap_and_sync_of_managed_.nimi_projections
7
- - methodology_principles
8
- - spec_surface_taxonomy_and_placement_contracts
9
- - spec_construction_inputs_and_generation_audit_contracts
10
- - deterministic_spec_governance_and_ai_governance_checks
6
+ - compact_authority_authoring_methodology
7
+ - exact_authority_guide_projection_and_managed_instruction_blocks
8
+ - canonical_authority_format_and_complete_root_check
9
+ - private_compile_bounded_filtered_lexical_discovery_with_field_snippets_optional_direct_authored_relation_preview_exact_query_and_declared_outgoing_context
10
+ - semantic_diff_and_declared_review_impact
11
+ - bounded_direct_references_exact_relation_paths_and_local_subgraphs
12
+ - project_bound_deterministic_authority_audit_and_SARIF_projection
13
+ - git_aware_exact_read_only_authority_change_review
14
+ - stable_current_worktree_authority_to_package_script_target_evidence
15
+ - optional_L3_repository_governance_not_authority_admission
16
+ canonical_boundary:
17
+ host_product_authority: .nimi/spec/**/*.authority.{yaml,md}
18
+ sole_conformance_gate: nimicoding_authority_check_complete_.nimi/spec
19
+ historical_format_inference: forbidden
20
+ product_semantic_generation: forbidden
21
+ surface_separation:
22
+ public: [documented_CLI, package_documentation]
23
+ canonical_project_owned: .nimi/spec/**/*.authority.{yaml,md}
24
+ projected_AI_visible_package_owned: [.nimi/methodology/authority-authoring.yaml, AGENTS.md#managed-block, CLAUDE.md#managed-block]
25
+ local_non_authority: .nimi/local/**
26
+ package_internal: [authority_grammar_contracts, AuthorityIR, SourceMap, compiler_implementation]
11
27
  out_of_scope:
12
- - planning_or_task_lifecycle
13
- - agent_or_provider_orchestration
14
- - implementation_execution
15
- - review_approval_or_completion_state
16
- - host_prompt_or_context_management
17
- - scheduling_notifications_and_automation
18
- integration_contract:
19
- host_owns_execution: true
20
- nimi_coding_may_emit_non_mutating_analysis: true
21
- nimi_coding_may_validate_declared_artifacts: true
22
- nimi_coding_must_not_create_host_execution_state: true
23
- canonical_roots:
24
- package_authority: package://@nimiplatform/nimi-coding
25
- host_product_authority: .nimi/spec
26
- managed_projection_roots: [.nimi/config, .nimi/contracts, .nimi/methodology]
27
- local_non_authority_root: .nimi/local
28
+ - reconstruction_taxonomy_tables_guidance_registries_and_generation_audits
29
+ - profile_specific_authority_validation
30
+ - planning_task_lifecycle_delegation_execution_review_or_approval
31
+ - host_workflow_command_aggregation
32
+ - sqlite_cache_incremental_embedding_semantic_search_visualization_AI_execution_or_Atlas
33
+ claims:
34
+ discovery: bounded_deterministic_exact_filtered_lexical_candidates_with_SourceMapped_field_snippets_and_optional_M1_direct_authored_relation_preview_not_semantic_search_selection_context_or_absence_proof
35
+ context: complete_declared_outgoing_interpretation_closure_not_complete_task_context
36
+ impact: declared_review_obligation_not_sync_or_completion_proof
37
+ graph: complete_bounded_explicit_relation_navigation_not_semantic_inference_or_raw_IR
38
+ audit: governance_bound_verifier_results_not_prose_predicate_inference_or_plugin_execution
39
+ review: immutable_base_OID_and_stable_worktree_exact_snapshots_composed_through_existing_compiler_diff_impact_and_current_audit_oracles
40
+ evidence: exact_identity_bound_package_script_target_reachability_and_external_supplied_observations_not_command_execution_test_success_runtime_reachability_or_conformance_attestation
@@ -1,91 +0,0 @@
1
- import {
2
- buildBlueprintAuditPayload,
3
- formatBlueprintAuditPayload,
4
- writeBlueprintAuditArtifact,
5
- } from "../lib/shared.mjs";
6
- import { localize } from "../lib/ui.mjs";
7
-
8
- function parseBlueprintAuditOptions(args) {
9
- const options = {
10
- json: false,
11
- writeLocal: false,
12
- blueprintRoot: null,
13
- canonicalRoot: null,
14
- };
15
-
16
- for (let index = 0; index < args.length; index += 1) {
17
- const arg = args[index];
18
-
19
- if (arg === "--json") {
20
- options.json = true;
21
- continue;
22
- }
23
-
24
- if (arg === "--write-local") {
25
- options.writeLocal = true;
26
- continue;
27
- }
28
-
29
- if (arg === "--blueprint-root" || arg === "--canonical-root") {
30
- const next = args[index + 1];
31
- if (!next || next.startsWith("--")) {
32
- return {
33
- ok: false,
34
- error: `${localize(
35
- `nimicoding blueprint-audit refused: ${arg} requires a value.`,
36
- `nimicoding blueprint-audit 已拒绝:${arg} 需要一个值。`,
37
- )}\n`,
38
- };
39
- }
40
-
41
- if (arg === "--blueprint-root") {
42
- options.blueprintRoot = next;
43
- } else {
44
- options.canonicalRoot = next;
45
- }
46
- index += 1;
47
- continue;
48
- }
49
-
50
- return {
51
- ok: false,
52
- error: `${localize(
53
- `nimicoding blueprint-audit refused: unknown option ${arg}.`,
54
- `nimicoding blueprint-audit 已拒绝:未知选项 ${arg}。`,
55
- )}\n`,
56
- };
57
- }
58
-
59
- return {
60
- ok: true,
61
- options,
62
- };
63
- }
64
-
65
- export async function runBlueprintAudit(args) {
66
- const parsed = parseBlueprintAuditOptions(args);
67
- if (!parsed.ok) {
68
- process.stderr.write(parsed.error);
69
- return 2;
70
- }
71
-
72
- const payload = await buildBlueprintAuditPayload(process.cwd(), parsed.options);
73
- if (payload.inputError) {
74
- process.stderr.write(payload.error);
75
- return payload.exitCode;
76
- }
77
-
78
- if (parsed.options.writeLocal) {
79
- await writeBlueprintAuditArtifact(process.cwd(), payload);
80
- }
81
-
82
- if (parsed.options.json) {
83
- process.stdout.write(`${JSON.stringify(payload, null, 2)}\n`);
84
- } else {
85
- process.stdout.write(formatBlueprintAuditPayload(payload));
86
- }
87
-
88
- return payload.exitCode;
89
- }
90
-
91
- export { parseBlueprintAuditOptions };
@@ -1,5 +0,0 @@
1
- import { runSurfaceValidatorCommand } from "./surface-validator-command.mjs";
2
-
3
- export function runClassifySpecTree(args) {
4
- return runSurfaceValidatorCommand(args, "classify-spec-tree");
5
- }