@nimiplatform/nimi-coding 0.3.1 → 0.5.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 (115) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/CONTRIBUTING.md +3 -3
  3. package/README.md +297 -41
  4. package/README.zh-CN.md +306 -31
  5. package/bin/nimicoding.mjs +1 -1
  6. package/cli/commands/authority.mjs +804 -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 +182 -0
  13. package/cli/dev/check-product-conformance.mjs +889 -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 +567 -0
  18. package/cli/lib/authority/change-candidates.mjs +807 -0
  19. package/cli/lib/authority/closed-sets.mjs +645 -0
  20. package/cli/lib/authority/compile.mjs +92 -0
  21. package/cli/lib/authority/compiled-snapshot.mjs +143 -0
  22. package/cli/lib/authority/consumers.mjs +520 -0
  23. package/cli/lib/authority/diagnostics.mjs +93 -0
  24. package/cli/lib/authority/diff.mjs +310 -0
  25. package/cli/lib/authority/discover.mjs +447 -0
  26. package/cli/lib/authority/format.mjs +169 -0
  27. package/cli/lib/authority/git-snapshot.mjs +720 -0
  28. package/cli/lib/authority/graph.mjs +351 -0
  29. package/cli/lib/authority/impact.mjs +125 -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 +212 -0
  35. package/cli/lib/authority/sarif.mjs +174 -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 +308 -0
  40. package/cli/lib/authority/surface.mjs +97 -0
  41. package/cli/lib/authority/terms.mjs +422 -0
  42. package/cli/lib/authority/tracked-text.mjs +70 -0
  43. package/cli/lib/authority/validate.mjs +300 -0
  44. package/cli/lib/bootstrap.mjs +55 -71
  45. package/cli/lib/doctor.mjs +40 -123
  46. package/cli/lib/entrypoints.mjs +104 -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-scope-bindings.schema.yaml +15 -0
  56. package/contracts/authority-source.schema.yaml +58 -0
  57. package/contracts/authority-verifier-bindings.schema.yaml +31 -0
  58. package/methodology/authority-authoring.yaml +127 -0
  59. package/methodology/core.yaml +34 -27
  60. package/package.json +10 -6
  61. package/spec/authority-anchors.yaml +99 -0
  62. package/spec/authority-audit.yaml +89 -0
  63. package/spec/authority-authoring.yaml +137 -0
  64. package/spec/authority-change-candidates.yaml +146 -0
  65. package/spec/authority-closed-sets.yaml +65 -0
  66. package/spec/authority-consumers.yaml +77 -0
  67. package/spec/authority-context.yaml +50 -0
  68. package/spec/authority-discovery.yaml +119 -0
  69. package/spec/authority-graph.yaml +59 -0
  70. package/spec/authority-impact.yaml +61 -0
  71. package/spec/authority-review.yaml +71 -0
  72. package/spec/authority-terms.yaml +63 -0
  73. package/spec/product-scope.yaml +37 -23
  74. package/cli/commands/blueprint-audit.mjs +0 -91
  75. package/cli/commands/classify-spec-tree.mjs +0 -5
  76. package/cli/commands/generate-spec-derived-docs.mjs +0 -151
  77. package/cli/commands/generate-spec-migration-plan.mjs +0 -30
  78. package/cli/commands/surface-validator-command.mjs +0 -49
  79. package/cli/commands/validate-domain-admission.mjs +0 -5
  80. package/cli/commands/validate-guidance-bodies.mjs +0 -5
  81. package/cli/commands/validate-placement.mjs +0 -5
  82. package/cli/commands/validate-projection-edges.mjs +0 -5
  83. package/cli/commands/validate-spec-audit.mjs +0 -27
  84. package/cli/commands/validate-spec-governance.mjs +0 -144
  85. package/cli/commands/validate-spec-tree.mjs +0 -27
  86. package/cli/commands/validate-table-family.mjs +0 -5
  87. package/cli/commands/validate-tracked-output-admission.mjs +0 -5
  88. package/cli/lib/blueprint-audit.mjs +0 -363
  89. package/cli/lib/contracts.mjs +0 -21
  90. package/cli/lib/internal/contracts-loaders.mjs +0 -47
  91. package/cli/lib/internal/contracts-parse.mjs +0 -192
  92. package/cli/lib/internal/governance/runner.mjs +0 -35
  93. package/cli/lib/internal/surface-taxonomy-validators.mjs +0 -1147
  94. package/cli/lib/internal/validators-shared.mjs +0 -12
  95. package/cli/lib/internal/validators-spec-helpers.mjs +0 -52
  96. package/cli/lib/internal/validators-spec.mjs +0 -380
  97. package/cli/lib/validators.mjs +0 -30
  98. package/config/bootstrap.yaml +0 -6
  99. package/config/spec-generation-inputs.yaml +0 -41
  100. package/contracts/domain-admission.schema.yaml +0 -56
  101. package/contracts/migration-inventory.schema.yaml +0 -15
  102. package/contracts/negative-fixtures.yaml +0 -26
  103. package/contracts/placement-contract.schema.yaml +0 -127
  104. package/contracts/projection-edge.schema.yaml +0 -46
  105. package/contracts/shared-enums.yaml +0 -63
  106. package/contracts/spec-generation-audit.schema.yaml +0 -46
  107. package/contracts/spec-generation-inputs.schema.yaml +0 -43
  108. package/contracts/spec-layout.schema.yaml +0 -32
  109. package/contracts/surface-taxonomy.schema.yaml +0 -139
  110. package/contracts/table-family.schema.yaml +0 -133
  111. package/contracts/tracked-output-admission.schema.yaml +0 -17
  112. package/methodology/four-closure-policy.yaml +0 -20
  113. package/methodology/role-separation-policy.yaml +0 -22
  114. package/methodology/spec-reconstruction.yaml +0 -69
  115. package/spec/_meta/spec-tree-model.yaml +0 -44
@@ -0,0 +1,137 @@
1
+ version: 1
2
+ spec:
3
+ id: nimicoding.authority-authoring.v2
4
+ owner: nimi-coding
5
+ status: active
6
+ product_claim: installed_package_deterministically_formats_checks_and_compiles_canonical_authority
7
+ source_authority: downstream_project_.nimi/spec_containing_only_canonical_authority_profiles
8
+ profiles:
9
+ file_suffixes: [.authority.yaml, .authority.md]
10
+ yaml:
11
+ document: closed_top_level_mapping_with_exact_format_and_non_empty_units_sequence_using_YAML_1.2_core_values
12
+ container_fields: [format, owner, scope, units]
13
+ container_defaults:
14
+ owner: applies_to_every_unit_that_omits_owner
15
+ scope: one_scope_value_applied_to_every_active_rule_that_omits_scope
16
+ definitions_do_not_inherit_scope: true
17
+ unit_omission_defaults:
18
+ lifecycle: active
19
+ relations: []
20
+ both_levels_absent: fail_closed_no_inference
21
+ units_per_file: 1_to_N
22
+ unit_identity: explicit_ID_independent_of_file_name_source_index_move_order_or_regroup
23
+ source_order: preserved_for_author_reading_but_non_semantic
24
+ formatter_inputs: [block_collections, syntax_clear_flow_collections, syntax_clear_block_scalars]
25
+ rejected: [legacy_top_level_single_unit_mapping, empty_units, invalid_utf8, duplicate_keys, aliases, anchors, merge_keys, explicit_tags, directives, complex_keys, comments]
26
+ markdown:
27
+ units_per_file: 1
28
+ shared_with_yaml: restricted_lexical_and_syntax_rules_only_not_document_fields
29
+ front_matter_fields: [format, id, kind, owner, lifecycle, modality, scope, relations]
30
+ forbidden_front_matter_fields: [units]
31
+ title: one_plain_level_one_line_required_for_admission_but_omittable_during_fmt
32
+ active_definition_sections: [Meaning]
33
+ active_rule_sections: [Statement, Condition, Failure]
34
+ removed_sections: [Removal reason]
35
+ section_body: exactly_one_plain_text_line
36
+ rejected: [extra_or_duplicate_headings, prose_outside_slots, lists, blockquotes, thematic_breaks, fences, html, links, references, emphasis, comments, trailing_content]
37
+ fields:
38
+ yaml_document_required: [format, units]
39
+ yaml_document_optional: [owner, scope]
40
+ unit_common_required: [id, kind, title]
41
+ unit_common_resolved_from_container_or_unit: [owner, lifecycle, relations]
42
+ markdown_frontmatter_also_requires: [format]
43
+ format: nimicoding.authority/v2
44
+ identifier: dot_separated_lowercase_segments_start_and_end_alphanumeric
45
+ kinds: [rule, definition]
46
+ lifecycles: [active, removed]
47
+ active_definition:
48
+ required: [meaning]
49
+ forbidden: [modality, scope, statement, condition, failure, reason]
50
+ active_rule:
51
+ required: [modality, scope, statement, condition, failure]
52
+ modalities: [must, must_not]
53
+ forbidden: [meaning, reason]
54
+ removed:
55
+ required: [reason]
56
+ forbidden: [meaning, modality, scope, statement, condition, failure]
57
+ text_values:
58
+ fields: [title, meaning, statement, condition, failure, reason]
59
+ unicode: non_empty_trimmed_well_formed_scalar_sequence
60
+ forbidden_line_break_code_points: [U+000A, U+000B, U+000C, U+000D, U+0085, U+2028, U+2029]
61
+ yaml_escaped_values: validated_after_parse_by_check_and_compile
62
+ fmt_semantics: value_preserving_and_not_evaluated
63
+ field_classes:
64
+ normative_governance: [id, kind, owner, lifecycle]
65
+ normative_definition: [meaning]
66
+ normative_rule: [modality, scope, statement, condition, failure]
67
+ normative_graph: [relations, type, target]
68
+ non_normative_metadata: [title, reason]
69
+ relations:
70
+ container: may_be_missing_only_during_draft_formatting
71
+ item_shape: exactly_non_empty_string_type_and_target
72
+ formatting: deterministic_type_then_target_sort_preserving_duplicates_and_unknown_string_types
73
+ applies_to: active_rule_to_active_definition_at_least_one_per_active_rule
74
+ supersedes: active_or_removed_to_removed_same_kind_max_one_incoming_and_outgoing_acyclic
75
+ semantic_failures: [unknown_type, duplicate_edge, self_edge, dangling_target, type_mismatch, cardinality, cycle]
76
+ commands:
77
+ fmt:
78
+ syntax: nimicoding authority fmt <file> [--check] [--json]
79
+ semantic_status: not_evaluated
80
+ writes: one_source_file_atomically_unless_check
81
+ structural_discriminants: [format, kind, lifecycle]
82
+ invention: forbidden
83
+ check:
84
+ syntax: nimicoding authority check <path> [--scope-bindings <file>] [--json]
85
+ writes: none
86
+ no_scope_bindings_flag: exact_existing_check_behavior
87
+ scope_bindings:
88
+ format: nimicoding.scope-bindings/v1
89
+ document: closed_mapping_with_exact_format_and_non_empty_scopes_sequence
90
+ scope_entry: closed_mapping_with_one_non_empty_single_line_scope_and_non_empty_bindings_sequence
91
+ binding_entry: closed_mapping_with_kind_and_non_empty_single_line_value
92
+ binding_kinds: [path_glob, module, command]
93
+ duplicate_scope: rejected
94
+ enforcement: exact_bidirectional_set_equality_between_registered_scopes_and_active_rule_scope_use
95
+ unregistered_use_diagnostic: every_scope_and_using_unit_ID
96
+ dead_registration_diagnostic: every_registered_scope_without_active_rule_use
97
+ repository_path_resolution: forbidden
98
+ partial_result: forbidden
99
+ compile:
100
+ syntax: nimicoding authority compile <path> [--json]
101
+ writes: none
102
+ source_format: exact_nimicoding.authority/v2_only
103
+ ir_visibility: package_private
104
+ public_json: operation_counts_and_diagnostics_only
105
+ anchors:
106
+ syntax: nimicoding authority anchors <repository-path> --spec <corpus-path> [--scope-bindings <file>] [--embedded-paths] --max-units <positive-safe-integer> --max-anchors <positive-safe-integer> --max-bytes <positive-safe-integer> [--json]
107
+ writes_and_execution: none
108
+ active_fields: [meaning, statement, condition, failure]
109
+ grammar: closed_maximal_non_whitespace_path_and_pnpm_script_tokens_defined_by_nimicoding.authority-anchors.v1
110
+ resolution: exact_Git_tracked_file_or_root_package_script_membership_without_inference
111
+ scope_path_globs: every_path_glob_matches_at_least_one_Git_tracked_file
112
+ module_and_command_bindings: structurally_admitted_but_not_resolved
113
+ budgets: complete_active_units_anchor_occurrences_and_compact_UTF-8_product_bytes
114
+ partial_result: forbidden
115
+ compiler:
116
+ ordering: [unit_id, scope_lexical, relation_type_then_target]
117
+ output: [AuthorityIR, SourceMap]
118
+ source_map: every_AuthorityIR_leaf_uses_its_actual_IR_JSON_pointer_and_exact_source_file_range_and_YAML_source_pointer_under_/units/source_index
119
+ non_ir_source_entries: forbidden
120
+ partial_success: forbidden
121
+ diagnostics:
122
+ range: one_based_unicode_scalar_half_open
123
+ missing_field: canonical_insertion_point_in_containing_mapping_or_section
124
+ conflicts: primary_location_plus_sorted_related_locations
125
+ repair: decision_category_only_never_product_semantic_value
126
+ runtime_authority:
127
+ contracts: installed_package_only
128
+ downstream_projection_cannot_change_compiler: true
129
+ historical_document_compatibility_or_inference: forbidden
130
+ sole_downstream_conformance_gate: authority_check_on_complete_canonical_root
131
+ admitted_downstream_consumers: [bounded_lexical_candidate_discovery, exact_query, bounded_context, bounded_graph_navigation, static_lexical_anchor_validation, embedded_repository_path_anchor_validation, corpus_consumer_and_gate_wiring_report, corpus_term_index_and_code_cross_reference, closed_vocabulary_pairing_report, project_bound_deterministic_audit, SARIF_projection, semantic_diff, declared_impact]
132
+ report_product_contracts:
133
+ consumers: nimicoding.authority-consumers.v1
134
+ terms: nimicoding.authority-terms.v1
135
+ closed-sets: nimicoding.authority-closed-sets.v1
136
+ anchors: nimicoding.authority-anchors.v1
137
+ not_admitted: [historical_format_reconstruction, profile_specific_validation, multi_unit_markdown, sqlite, cache, incremental, semantic_search, embedding, visualization, ai_execution, Atlas, qualification, final_cutover]
@@ -0,0 +1,146 @@
1
+ version: 1
2
+ spec:
3
+ id: nimicoding.authority-change-candidates.v1
4
+ owner: nimi-coding
5
+ status: active
6
+ product_claim: complete_deterministic_change_derived_recall_of_current_active_non_root_authority_candidates_over_caller_requested_explicit_exact_channels
7
+ source:
8
+ before: one_complete_independently_admitted_package_private_AuthorityIR_and_SourceMap
9
+ after: one_complete_independently_admitted_package_private_AuthorityIR_and_SourceMap
10
+ changes: complete_semantic_diff_between_the_two_admitted_inputs
11
+ command:
12
+ syntax: nimicoding authority change-candidates <before-path> <after-path> --channels <comma-separated-closed-set> --max-candidates <positive-safe-integer> --max-reasons <positive-safe-integer> --max-bytes <positive-safe-integer> [--json]
13
+ channel_selection:
14
+ required: one_non_empty_array
15
+ admitted: [owner, scope, changed_term, direct_relation, definition_identity, definition_title]
16
+ unknown_duplicate_non_string_or_empty: AUTH_CHANGE_CANDIDATES_CHANNELS_with_null_product
17
+ input_order: non_semantic
18
+ output_order: canonical_admitted_channel_order
19
+ completeness_scope: exact_union_of_requested_channels_only
20
+ unrequested_channels: not_evaluated_and_do_not_recall_or_emit_reasons
21
+ roots:
22
+ selection: every_exact_unit_ID_named_by_at_least_one_complete_semantic_diff_change
23
+ included_operations: [unit_added, modified, added, removed]
24
+ metadata_only_changes: included_because_owner_and_title_rename_context_are_product_relevant_recall_inputs
25
+ formatting_profile_file_move_container_regroup_and_source_order_only_change: no_root
26
+ root_record_fields: [id, changes, before, after]
27
+ change_fields: [operation, pointer]
28
+ side_fields: [kind, owner, lifecycle, title, location]
29
+ absent_side: explicit_null
30
+ candidate_universe:
31
+ source: after_only
32
+ lifecycle: active_only
33
+ roots: excluded
34
+ removed_tombstones: excluded
35
+ admission: at_least_one_exact_recall_reason_from_one_declared_channel
36
+ ordering: lexical_unit_ID
37
+ recall_channels:
38
+ owner:
39
+ match: exact_owner_equality_between_candidate_and_each_before_or_after_root
40
+ reason_witness: exact_raw_owner_and_both_SourceMap_locations
41
+ scope:
42
+ match: exact_scope_membership_shared_by_an_active_rule_candidate_and_each_before_or_after_active_rule_root
43
+ reason_witness: exact_raw_scope_and_both_SourceMap_locations
44
+ changed_term:
45
+ root_fields: [title, meaning, statement, condition, failure]
46
+ root_values: only_normalized_terms_present_on_one_changed_field_side_and_absent_from_the_other_side_plus_every_after_term_of_a_unit_added_root
47
+ candidate_fields: [title, meaning, statement, condition, failure]
48
+ normalization: [Unicode_NFKC, split_camelCase_boundary, deterministic_lowercase, Unicode_Letter_or_Number_runs, deduplicate_terms]
49
+ match: one_or_more_exact_normalized_terms_shared_by_one_changed_root_field_and_one_candidate_field
50
+ excluded: [unchanged_root_text, owner, scope, lifecycle, relations, removal_reason, fuzzy_matching, stopwords, synonyms, translation, embedding, model_inference]
51
+ unchanged_terms_within_a_changed_field: excluded
52
+ reason_witness: complete_shared_changed_term_set_plus_both_raw_fields_and_both_SourceMap_locations
53
+ direct_relation:
54
+ source: complete_before_and_after_authored_applies_to_or_supersedes_edges
55
+ match: candidate_is_the_exact_source_or_target_endpoint_of_an_edge_incident_to_a_root
56
+ direction: incoming_or_outgoing_relative_to_the_root_while_preserving_authored_source_and_target
57
+ reason_witness: complete_authored_edge_with_source_relation_target_locations_plus_root_and_candidate_ID_locations
58
+ definition_identity:
59
+ anchors:
60
+ - a_definition_root_on_the_same_side
61
+ - an_exact_definition_target_of_a_relation_authored_by_a_root_on_the_same_side
62
+ match:
63
+ - candidate_authors_a_relation_to_the_exact_same_definition_ID
64
+ - candidate_raw_text_contains_the_exact_NFKC_definition_ID_with_identifier_token_boundaries
65
+ reason_witness: exact_definition_ID_title_and_locations_root_reference_and_candidate_field_or_relation
66
+ definition_title:
67
+ anchors: same_as_definition_identity
68
+ match: candidate_raw_text_contains_the_complete_exact_NFKC_case_sensitive_definition_title_with_Unicode_Letter_Number_boundaries
69
+ excluded: [partial_title, case_fold, fuzzy_phrase, synonym, translation]
70
+ reason_witness: exact_definition_ID_title_and_locations_root_reference_and_candidate_raw_field
71
+ composition:
72
+ selection: set_union_of_every_candidate_admitted_by_any_requested_channel_on_either_side
73
+ reasons: every_unique_exact_requested_channel_side_root_and_witness_tuple
74
+ duplicate_candidates_and_reasons: suppressed
75
+ ranking_top_k_stopwords_frequency_cutoff_or_heuristic_reduction: forbidden
76
+ zero_candidates: successful_complete_empty_union
77
+ semantic_judgment: none
78
+ candidate:
79
+ fields: [id, kind, owner, lifecycle, title, modality, scope, rawFields, relations, primaryIdLocation, reasons]
80
+ modality: exact_must_or_must_not_for_rules_and_explicit_null_for_definitions
81
+ scope: exact_after_scope_for_rules_and_empty_for_definitions
82
+ raw_fields: [meaning, statement, condition, failure]
83
+ absent_raw_fields: explicit_null
84
+ relations: complete_after_authored_relation_records
85
+ reason_fields: [channel, side, rootId, witness]
86
+ reason_channels: [owner, scope, changed_term, direct_relation, definition_identity, definition_title]
87
+ side: before_or_after
88
+ locations:
89
+ fields: [file, range, sourcePointer]
90
+ paths: relative_to_the_corresponding_input_root_when_inside_it
91
+ payload:
92
+ format: nimicoding.authority-change-candidates/v1
93
+ fields: [format, complete, requestedChannels, roots, candidates, counts, budgets, policy]
94
+ requestedChannels: canonical_ordered_exact_caller_set
95
+ complete: true_only_when_the_entire_requested_channel_union_and_every_requested_channel_reason_are_returned
96
+ count_fields: [beforeUnits, afterUnits, changedRoots, eligibleAfterUnits, candidates, reasons]
97
+ budget_fields: [maxCandidates, maxReasons, maxBytes]
98
+ policy_fields: [roots, candidateUniverse, recall, changedTerms, ordering, interpretation]
99
+ excluded:
100
+ - score_or_rank
101
+ - truncated_or_partial_candidates
102
+ - inferred_relation
103
+ - conflict_or_consistency_finding
104
+ - retirement_or_replacement_recommendation
105
+ - authority_pass_or_fail
106
+ - implementation_or_test_conformance
107
+ budgets:
108
+ max_candidates: required_explicit_positive_safe_integer_over_the_complete_requested_channel_candidate_union
109
+ max_reasons: required_explicit_positive_safe_integer_over_all_unique_exact_requested_channel_reasons
110
+ max_bytes: required_explicit_positive_safe_integer_over_UTF-8_bytes_of_compact_JSON_stringify_complete_payload
111
+ candidate_or_reason_overflow: AUTH_CHANGE_CANDIDATES_BUDGET_with_null_product_and_partial_false
112
+ byte_overflow: AUTH_CHANGE_CANDIDATES_BUDGET_with_null_product_and_partial_false
113
+ silent_reduction: forbidden
114
+ evaluation_stages:
115
+ - exact_candidate_ID_union_using_only_light_indexes_and_match_descriptors
116
+ - exact_unique_logical_reason_count_without_global_reason_key_storage_or_SourceMap_witness_objects
117
+ - full_reason_candidate_root_and_payload_materialization_only_after_candidate_and_reason_budgets_pass
118
+ candidate_overflow: return_exact_required_candidate_count_without_reason_witness_candidate_record_or_payload_materialization
119
+ reason_overflow: return_exact_required_reason_count_without_reason_witness_candidate_record_or_payload_materialization
120
+ duplicate_match_occurrences: collapsed_by_each_channel_visitor_before_reason_counting
121
+ indexing:
122
+ snapshot_indexes: [by_ID, by_owner, by_scope, incoming_relations, outgoing_relations, by_container]
123
+ changed_terms: one_precomputed_candidate_field_term_set_plus_exact_term_to_candidate_field_inverted_index_per_side
124
+ definition_patterns:
125
+ normalization: each_candidate_text_field_and_each_unique_definition_identity_or_title_pattern_is_NFKC_normalized_once_per_index_build
126
+ matching: one_deterministic_Aho_Corasick_multi_pattern_scan_per_candidate_field_and_stage
127
+ boundaries: exact_identity_or_Unicode_Letter_Number_title_boundaries_are_checked_on_each_match
128
+ direct_relations: snapshot_adjacency_indexes_without_candidate_linear_search
129
+ persistence: none_indexes_are_transient_and_derived_from_the_two_immutable_compiler_snapshots
130
+ fail_closed:
131
+ invalid_before_or_after_authority: preserve_complete_side_qualified_diff_or_compiler_diagnostics
132
+ invalid_transition: preserve_AUTH_DIFF_TRANSITION_INVALID
133
+ invalid_channels: AUTH_CHANGE_CANDIDATES_CHANNELS
134
+ invalid_runtime_budget: AUTH_CHANGE_CANDIDATES_BUDGET_with_null_product
135
+ partial_product: forbidden
136
+ boundaries:
137
+ read_only: true
138
+ writes_or_durable_artifacts: none
139
+ public_JS_exports: none
140
+ authority_or_product_semantic_decision: not_claimed
141
+ natural_language_contradiction_detection: not_admitted
142
+ relation_generation_or_repair: not_admitted
143
+ hard_cut_workflow_or_report: host_owned_not_admitted
144
+ implementation_code_test_or_gate_location: separate_product_not_included
145
+ source_container_proximity_annotation: not_included_because_it_is_non_semantic_unbounded_and_derivable_from_returned_locations
146
+ cache_SQLite_embedding_or_persistent_index: none
@@ -0,0 +1,65 @@
1
+ version: 1
2
+ spec:
3
+ id: nimicoding.authority-closed-sets.v1
4
+ owner: nimi-coding
5
+ status: active
6
+ product_claim: bounded_static_pairing_of_closed_vocabularies_stated_in_active_authority_text_against_proto_enums_and_plain_scalar_sequences_in_tracked_YAML_implementation_sources
7
+ command: nimicoding authority closed-sets <repository-path> --spec <corpus-path> --max-units <positive-safe-integer> --max-sets <positive-safe-integer> --max-bytes <positive-safe-integer> [--json]
8
+ surface:
9
+ report_format: nimicoding.authority-closed-sets/v1
10
+ corpus_root: repository_authority_corpus_only
11
+ boolean_flags: [json]
12
+ value_flags: [spec]
13
+ integer_flags: [max-units, max-sets, 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:
25
+ shared_lexicon: normative_field_set_is_one_shared_definition_across_report_products
26
+ scanned: [meaning, statement, condition, failure]
27
+ rationale: a_rule_states_its_closed_vocabulary_in_the_condition_or_failure_as_often_as_in_the_statement
28
+ canonical_extraction:
29
+ shape: comma_run_enumeration_with_optional_and_or_tail
30
+ minimum_members: 3
31
+ minimum_commas: 1
32
+ rejected: multi_word_items_and_runs_continuing_into_prose
33
+ implementation_extraction:
34
+ proto_enums:
35
+ scope: all_tracked_.proto_files
36
+ values: value_names_with_their_longest_underscore_boundary_prefix_stripped
37
+ config_yaml_sequences:
38
+ scope: all_tracked_.yaml_and_.yml_files_excluding_the_authority_corpus
39
+ values: at_least_three_plain_scalar_tokens
40
+ inventory:
41
+ shape: implementation_kind_inventory_v1
42
+ tracked_files: complete_git_inventory_count
43
+ scanned_files: counts_by_proto_and_yaml_kind
44
+ exclusions:
45
+ every_excluded_file_reported: true
46
+ reasons: [authority-corpus, binary-content, not-utf8, not-a-scanned-kind]
47
+ accounting: tracked_files_equals_proto_scanned_plus_yaml_scanned_plus_excluded_files
48
+ pairing:
49
+ basis: member_overlap_inference_with_no_supplied_mapping
50
+ suppressed: pairs_whose_canonical_group_is_a_pure_subset_of_another_pair_for_the_same_set
51
+ unpaired: reported_as_a_first_class_inventory_never_as_silence
52
+ budgets:
53
+ max_units: complete_active_unit_set_must_fit
54
+ max_sets: complete_implementation_set_inventory_must_fit
55
+ max_bytes: inputBytes_complete_decoded_authority_and_implementation_input_must_fit
56
+ exceeded: refuse_with_one_diagnostic_and_no_partial_inventory_or_pairing
57
+ result:
58
+ trackedPathSetDigest: sha256_hex_of_nimicoding.repository-inventory/v1_canonical_tracked_path_set_preimage
59
+ complete: true_only_when_every_admitted_input_was_read_and_paired
60
+ byte_counts:
61
+ scannedBytes: normative_authority_fields_plus_decoded_proto_and_YAML_extractor_inputs
62
+ inputBytes: complete_decoded_authority_corpus_plus_decoded_proto_and_YAML_extractor_inputs
63
+ partial: never
64
+ findings_change_exit_code: false
65
+ determinism: identical_inputs_produce_byte_identical_output
@@ -0,0 +1,77 @@
1
+ version: 1
2
+ spec:
3
+ id: nimicoding.authority-consumers.v1
4
+ owner: nimi-coding
5
+ status: active
6
+ product_claim: bounded_static_report_of_which_tracked_files_reference_the_repository_authority_corpus_and_which_package_script_gates_any_workflow_can_reach
7
+ command: nimicoding authority consumers <repository-path> --spec <corpus-path> [--external-root <scheme>=<path>]... --max-files <positive-safe-integer> --max-refs <positive-safe-integer> --max-bytes <positive-safe-integer> [--json]
8
+ surface:
9
+ report_format: nimicoding.authority-consumers/v1
10
+ corpus_root: repository_authority_corpus_only
11
+ boolean_flags: [json]
12
+ value_flags: [spec]
13
+ integer_flags: [max-files, max-refs, max-bytes]
14
+ repeatable_flags: [external-root]
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
+ scan_selection: every_tracked_non_corpus_file_classified_by_NUL_and_fresh_UTF-8_probe_regardless_of_extension_plus_root_package.json
21
+ exclusions: every_authority_corpus_binary_content_and_non_UTF-8_file_named_with_reason_in_fileInventory
22
+ writes_or_execution: forbidden
23
+ corpus:
24
+ root: exact_repository_relative_.nimi/spec_resolved_realpath
25
+ rationale: a_fixture_directory_must_not_be_able_to_stand_in_as_the_canonical_corpus
26
+ external_roots:
27
+ shape: repeatable_<scheme>=<path>_with_lowercase_scheme_and_one_directory
28
+ scheme_knowledge: none_this_tool_knows_no_particular_project_scheme
29
+ absent_scheme: reference_is_externalUnresolved_never_dead
30
+ reference_grammar:
31
+ escaped_line_continuation: exact_backslash_LF_or_backslash_CRLF_is_removed_for_matching_while_locations_use_the_original_source_line
32
+ source_string_escape_boundary: one_backslash_followed_by_a_common_escape_starter_ends_the_local_path_while_two_or_more_backslashes_remain_a_Windows_separator_run
33
+ local_literal:
34
+ shape: .nimi<separator_run>spec_optionally_followed_by_further_segments
35
+ separators: forward_or_back_slash_runs_because_source_literals_escape_backslashes
36
+ bare_root_admitted: true
37
+ terminal_period_disambiguation:
38
+ raw_target_or_prefix_exists: preserve_raw_target
39
+ raw_absent_and_removing_exactly_one_period_resolves: classify_the_single_period_as_sentence_punctuation
40
+ raw_and_single_period_stripped_both_absent: preserve_raw_target_and_report_dead
41
+ raw_and_single_period_stripped_both_exist: preserve_raw_target
42
+ excluded: glob_star_or_angle_bracket_placeholder
43
+ local_constructor:
44
+ shape: adjacent_string_literals_beginning_with_.nimi_then_spec
45
+ reconstruction: only_while_every_further_segment_is_a_string_literal
46
+ non_literal_continuation: reported_as_unresolved_never_dropped
47
+ external:
48
+ shape: <scheme>:spec/<path>[#<unit-id>]
49
+ unit_id: dotted_lowercase_authority_identifier
50
+ canonical_path: dot_and_dot-dot_segments_forbidden_and_realpath_must_remain_within_the_declared_root
51
+ fragment_resolution: when_a_scheme_root_is_supplied_the_named_YAML_container_must_hold_a_unit_with_the_exact_fragment_ID
52
+ non_canonical_path: unresolved_with_reason_non-canonical-external-path
53
+ classification:
54
+ canonical: local_target_exists_in_the_tracked_inventory
55
+ canonicalDead: local_target_absent_from_the_tracked_inventory
56
+ externalAuthority: scheme_root_supplied_and_file_exists_and_any_supplied_fragment_names_a_unit_in_that_container
57
+ externalDead: scheme_root_supplied_and_file_is_absent_or_any_supplied_fragment_is_absent_with_fragment_named_in_the_report_row
58
+ externalUnresolved: no_root_supplied_for_the_scheme
59
+ unresolved: path_constructed_from_a_non_literal_segment
60
+ host_specific_exemptions: forbidden_historical_identity_strings_stay_visible_for_the_host_to_interpret
61
+ gate_wiring:
62
+ workflow_files: .github/workflows/*.yml_and_*.yaml
63
+ reachability: direct_workflow_mention_or_transitive_package_script_reference
64
+ orphan: no_workflow_and_no_referencing_script_and_not_a_lifecycle_script
65
+ budgets:
66
+ max_files: complete_scanned_file_set_must_fit
67
+ max_refs: complete_reference_set_including_unresolved_must_fit_and_the_refusal_names_that_compared_total
68
+ max_bytes: complete_decoded_input_must_fit
69
+ exceeded: refuse_with_one_diagnostic_and_no_partial_report
70
+ result:
71
+ trackedPathSetDigest: sha256_hex_of_nimicoding.repository-inventory/v1_canonical_tracked_path_set_preimage
72
+ complete: true_only_when_every_admitted_input_was_read_and_classified
73
+ partial: never
74
+ counts: [total, canonical, canonicalDead, externalAuthority, externalDead, externalUnresolved, unresolved]
75
+ file_inventory: tracked_text_inventory_v1
76
+ findings_change_exit_code: false
77
+ determinism: identical_inputs_produce_byte_identical_output
@@ -0,0 +1,50 @@
1
+ version: 1
2
+ spec:
3
+ id: nimicoding.authority-context.v1
4
+ owner: nimi-coding
5
+ status: active
6
+ product_claim: exact_ID_returns_one_unit_or_complete_bounded_declared_outgoing_interpretation_closure_or_fails
7
+ source: admitted_package_private_AuthorityIR_and_SourceMap_only
8
+ commands:
9
+ query:
10
+ syntax: nimicoding authority query <path> <id> --max-bytes <positive-integer> [--json]
11
+ result: exactly_one_unit_packet
12
+ budget: explicit_UTF-8_packet_bytes_required
13
+ context:
14
+ syntax: nimicoding authority context <path> <id> --max-units <positive-integer> --max-bytes <positive-integer> [--json]
15
+ budget: explicit_unit_and_UTF-8_packet_bytes_required
16
+ packet:
17
+ format: nimicoding.authority-context/v1
18
+ fields: [root, closure, units, sourceMap]
19
+ unit_order: lexical_ID
20
+ source_paths: relative_to_input_root_when_inside_it
21
+ schemas_included: false
22
+ unrelated_units_outside_closure_included: false
23
+ corpus_note: A legitimate closure may coincidentally include every corpus unit; no unit outside the closure is attached.
24
+ task_context: not_claimed
25
+ closure:
26
+ direction: outgoing_recursive
27
+ relation_categories: [applies_to, supersedes]
28
+ rationale:
29
+ applies_to: Include definitions explicitly required to interpret a rule.
30
+ supersedes: Include the declared older lineage required to interpret lifecycle relations.
31
+ incoming_relations: excluded_as_unrelated_to_the_root_declared_dependencies
32
+ fail_closed:
33
+ unknown_exact_ID: AUTH_QUERY_NOT_FOUND
34
+ ambiguous_ID: compiler_identity_diagnostic
35
+ invalid_source_or_graph: compiler_diagnostic
36
+ unit_or_UTF-8_packet_byte_budget_overflow: AUTH_CONTEXT_BUDGET_without_packet
37
+ partial_packet: forbidden
38
+ determinism:
39
+ repeated_semantic_output: identical
40
+ packet_units: lexical_ID
41
+ canonical_packet_bytes: UTF-8_byte_length_of_compact_JSON.stringify_packet_without_trailing_newline
42
+ tokenizer_dependency: forbidden
43
+ source_map: every_packet_unit_leaf_traceable
44
+ boundaries:
45
+ writes_authority: false
46
+ durable_artifacts: none
47
+ exposes_AuthorityIR_as_package_export: false
48
+ reads_projected_contracts: false
49
+ complete_task_context: not_admitted
50
+ storage_search_embedding_visualization_AI_execution_Atlas: not_admitted
@@ -0,0 +1,119 @@
1
+ version: 2
2
+ spec:
3
+ id: nimicoding.authority-discovery.v2
4
+ owner: nimi-coding
5
+ status: active
6
+ product_claim: bounded_deterministic_filtered_lexical_candidates_with_field_snippets_and_optional_direct_authored_relation_preview_for_callers_without_an_exact_authority_ID
7
+ source: complete_admitted_package_private_AuthorityIR_SourceMap_and_existing_M1_direct_authored_graph_only
8
+ command:
9
+ syntax: nimicoding authority discover <path> <query> [--kind <rule|definition>] [--owner <exact-owner>] [--scope <exact-scope>] [--lifecycle <active|removed>] --max-candidates <positive-safe-integer> --max-snippet-terms <positive-safe-integer> --max-bytes <positive-safe-integer> [--preview-direction <incoming|outgoing|both> --relations <comma-separated-relation-types> --max-edges <positive-safe-integer>] [--json]
10
+ continuity: same_purpose_specific_discover_command_with_a_hard_cut_payload_from_v1_to_v2
11
+ normalization:
12
+ order: [Unicode_NFKC, split_camelCase_boundary, deterministic_lowercase, Unicode_Letter_or_Number_runs, deduplicate_query_terms]
13
+ snippet_stream: preserve_normalized_field_term_occurrence_order
14
+ excluded: [language_stopwords, stemming, synonyms, translation, fuzzy_typo_matching, model_inference]
15
+ filters:
16
+ cardinality: each_filter_is_optional_singular_and_exact
17
+ kind: exact_rule_or_definition
18
+ owner: exact_known_unit_owner_equality
19
+ scope: exact_known_membership_in_the_unit_scope_sequence
20
+ lifecycle: exact_active_or_removed
21
+ execution: filter_the_complete_admitted_unit_universe_before_lexical_candidate_matching
22
+ effect_on_rank: none_other_than_removing_ineligible_units
23
+ unknown_owner_or_scope: AUTH_DISCOVERY_FILTER_UNKNOWN_with_null_discovery
24
+ structurally_impossible_or_empty_intersection: AUTH_DISCOVERY_FILTER_CONTRADICTORY_with_null_discovery
25
+ zero_lexical_match_in_nonempty_eligible_universe: AUTH_DISCOVERY_NOT_FOUND_without_absence_proof
26
+ fields:
27
+ included: [id, title, owner, scope, meaning, statement, condition, failure, reason]
28
+ excluded: [relations, container_or_file_name, SourceMap_path_text, derived_context, implementation_artifacts, test_artifacts]
29
+ match: normalized_token_equality
30
+ admission: at_least_one_query_term_matches_one_included_field_of_an_eligible_unit
31
+ ranking:
32
+ public_score: none
33
+ tuple:
34
+ - distinct_query_terms_in_id_or_title_descending
35
+ - distinct_query_terms_in_meaning_or_statement_descending
36
+ - distinct_query_terms_in_all_fields_descending
37
+ - distinct_query_terms_in_scope_descending
38
+ - distinct_query_terms_in_failure_descending
39
+ - distinct_query_terms_in_condition_descending
40
+ - distinct_query_terms_in_reason_descending
41
+ - distinct_query_terms_in_owner_descending
42
+ - unit_ID_lexical_ascending
43
+ invariants:
44
+ - filters_only_remove_ineligible_units_and_do_not_change_the_tuple
45
+ - max_snippet_terms_never_changes_matching_or_rank
46
+ - preview_configuration_and_graph_content_never_change_matching_or_rank
47
+ snippets:
48
+ per_match: one_deterministic_window_over_the_exact_matched_field_value
49
+ normalization: NFKC_camel_boundary_lowercase_Unicode_Letter_Number_terms
50
+ terms: at_most_max_snippet_terms_normalized_terms_in_original_field_occurrence_order
51
+ width: minimum_of_maxSnippetTerms_and_complete_normalized_field_term_count
52
+ selection: maximize_distinct_matched_query_terms_then_choose_the_earliest_window_start
53
+ anchor: first_matched_term_in_the_window_with_exact_normalized_term_and_zero_based_fieldTermIndex_in_the_complete_normalized_field_term_stream
54
+ matched_terms: query_terms_present_in_the_returned_window_in_normalized_query_order
55
+ omissions: exact_nonnegative_omittedBeforeTerms_and_omittedAfterTerms_counts
56
+ complete: true_only_when_no_normalized_field_term_is_omitted
57
+ traceability: exact_portable_field_SourceMap_location_on_every_match
58
+ boundary: snippet_is_a_lexical_match_not_source_prose_context_or_an_explanation
59
+ preview:
60
+ option_group: preview_direction_relations_and_max_edges_must_be_all_present_or_all_absent
61
+ source: existing_M1_direct_authored_graph_over_the_same_complete_compiler_snapshot
62
+ seeds: returned_candidate_IDs_only
63
+ direction: incoming_outgoing_or_both_incidence_selection_around_each_seed
64
+ relations: explicit_nonempty_unique_subset_of_applies_to_and_supersedes
65
+ topology: direct_authored_edges_only_no_transitive_expansion_or_context_assembly
66
+ authored_direction: preserved_even_when_selected_by_incoming_or_both_incidence
67
+ composition: deterministic_unique_nodes_and_unique_authored_edges_across_all_returned_candidates
68
+ nodes: every_returned_candidate_root_plus_every_selected_edge_endpoint_once
69
+ traceability: reuse_M1_node_primary_locations_and_authored_edge_SourceMap_locations
70
+ ordering:
71
+ roots: candidate_rank_order
72
+ relations_and_nodes: lexical_ascending
73
+ edges: source_then_type_then_target_lexical_ascending
74
+ completeness: every_matching_direct_edge_for_every_returned_candidate_or_refuse_the_whole_discovery
75
+ rank_effect: none
76
+ payload:
77
+ format: nimicoding.authority-discovery/v2
78
+ fields: [format, query, filters, counts, truncated, absenceProven, candidates, relationPreview, budgets]
79
+ query_fields: [text, normalizedTerms]
80
+ filter_fields: [kind, owner, scope, lifecycle]
81
+ absent_filters: explicit_null
82
+ count_fields: [corpusUnits, eligibleUnits, matchedUnits, returnedCandidates]
83
+ absenceProven: always_false
84
+ candidate_fields: [rank, id, kind, lifecycle, owner, title, scope, matchedTerms, matches, primaryIdLocation]
85
+ match_fields: [field, terms, location, snippet]
86
+ snippet_fields: [normalization, terms, anchor, matchedTerms, omittedBeforeTerms, omittedAfterTerms, complete]
87
+ relationPreview: null_when_the_preview_option_group_is_absent
88
+ preview_fields: [direction, relations, complete, roots, nodes, edges, counts, budgets, policy]
89
+ preview_count_fields: [roots, units, edges]
90
+ preview_budget_fields: [maxEdges]
91
+ preview_policy_fields: [selection, edgeRepresentation, duplicateNodesAndEdges, rankingEffect]
92
+ budget_fields: [maxCandidates, maxSnippetTerms, maxEdges, maxBytes]
93
+ absent_preview_maxEdges: explicit_null
94
+ excluded: [complete_AuthorityIR_unit, inferred_relation, transitive_relation_closure, inferred_explanation, selected_authority, implementation_or_test_information]
95
+ bounds:
96
+ max_candidates: required_explicit_positive_safe_integer_top_k_after_filters
97
+ max_snippet_terms: required_explicit_positive_safe_integer_per_match_window
98
+ max_edges: required_explicit_positive_safe_integer_only_when_preview_is_requested
99
+ truncation: explicitly_reports_matchedUnits_returnedCandidates_and_truncated_without_claiming_complete_recall
100
+ max_bytes: required_explicit_positive_safe_integer_over_UTF-8_bytes_of_compact_JSON.stringify_complete_v2_discovery_payload
101
+ edge_overflow: AUTH_DISCOVERY_PREVIEW_BUDGET_with_null_discovery_and_no_partial_preview_or_silent_edge_reduction
102
+ byte_overflow: AUTH_DISCOVERY_BUDGET_with_null_discovery_and_no_silent_candidate_snippet_or_preview_reduction
103
+ fail_closed:
104
+ CLI_usage_error: missing_repeated_unknown_or_syntactically_invalid_CLI_argument_exits_2_without_a_discovery_product
105
+ runtime_guard: package_private_runtime_invalid_filter_or_preview_options_return_the_corresponding_diagnostic_with_null_discovery
106
+ invalid_query: AUTH_DISCOVERY_QUERY_INVALID
107
+ invalid_filter: [AUTH_DISCOVERY_FILTER_INVALID, AUTH_DISCOVERY_FILTER_UNKNOWN, AUTH_DISCOVERY_FILTER_CONTRADICTORY]
108
+ invalid_preview_configuration: AUTH_DISCOVERY_PREVIEW_INVALID
109
+ zero_match: AUTH_DISCOVERY_NOT_FOUND_does_not_prove_authority_absence
110
+ invalid_corpus: preserve_complete_compiler_diagnostics
111
+ partial_discovery: forbidden
112
+ boundaries:
113
+ read_only: true
114
+ writes_or_durable_artifacts: none
115
+ reads_projected_contracts: false
116
+ exports_private_AuthorityIR: false
117
+ semantic_search_model_reranking_or_final_selection: not_claimed
118
+ relation_preview: bounded_direct_authored_topology_not_context_or_semantic_inference
119
+ caller_next_step: caller_owned_candidate_selection_followed_by_explicit_exact_query_or_context
@@ -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_accounting_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