mirror of
https://github.com/abhigyanpatwari/GitNexus.git
synced 2026-10-03 02:21:44 +00:00
Lands the authoritative data model and constants for the pure scope-based resolution RFC (#909) as Ring 1, part 1. No runtime behavior changes — types + constants only. New in gitnexus-shared/src/scope-resolution/: - types.ts — Scope, ScopeKind, ScopeId, DefId, Range, Capture, BindingRef, ImportEdge, TypeRef, Resolution, ResolutionEvidence, Reference, ReferenceIndex, LookupParams, RegistryContributor - evidence-weights.ts — EvidenceWeights constant map + typeBindingWeightAtDepth (RFC Appendix A) - origin-priority.ts — ORIGIN_PRIORITY constant map for deterministic tie-breaks (RFC Appendix B) - language-classification.ts — LanguageClassification type + LanguageClassifications map (production × 14, experimental × 2 for vue/cobol; governs Ring 4 DAG-retirement gate) - symbol-definition.ts — SymbolDefinition moved from gitnexus/src/core/ingestion/model/symbol-table.ts so scope-resolution types can reference it from the shared package Consumer updates: - symbol-table.ts: removes local SymbolDefinition declaration; imports from gitnexus-shared - model/index.ts: drops SymbolDefinition from barrel re-export per "direct imports from gitnexus-shared" convention (see gitnexus-shared feedback in project memory) - 9 source files + 5 test files: import SymbolDefinition directly from 'gitnexus-shared' Verification: - gitnexus-shared builds clean (tsc) - gitnexus builds clean (scripts/build.js) - 131/132 unit test files pass; 3767 tests green - Zero behavior changes; SymbolDefinition shape unchanged Blocks: #911 (LanguageProvider hook interface extensions) and all of Ring 2 (#912-#925). Closes part of #909.
49 lines
2 KiB
TypeScript
49 lines
2 KiB
TypeScript
/**
|
|
* `LanguageClassification` — RFC §6.1 Ring 3 / Ring 4 governance.
|
|
*
|
|
* Classifies each `SupportedLanguages` member for the rollout. Ring 4 (DAG
|
|
* retirement) is gated on *all production languages* being registry-primary
|
|
* and stable for one release cycle; `experimental` and `quarantined`
|
|
* languages do not block.
|
|
*
|
|
* Initial classification (locked in Ring 1 #910):
|
|
* - production: javascript, typescript, python, java, c, cpp, csharp, go,
|
|
* ruby, rust, php, kotlin, swift, dart
|
|
* - experimental: vue (embedded-language / SFC complexity),
|
|
* cobol (regex-provider path)
|
|
* - quarantined: (none)
|
|
*/
|
|
|
|
import { SupportedLanguages } from '../languages.js';
|
|
|
|
export type LanguageClassification = 'production' | 'experimental' | 'quarantined';
|
|
|
|
/**
|
|
* The canonical classification for each supported language. Governance
|
|
* changes (promote `experimental` → `production`, quarantine a language, …)
|
|
* update this map in a dedicated PR.
|
|
*/
|
|
export const LanguageClassifications: Readonly<Record<SupportedLanguages, LanguageClassification>> =
|
|
{
|
|
[SupportedLanguages.JavaScript]: 'production',
|
|
[SupportedLanguages.TypeScript]: 'production',
|
|
[SupportedLanguages.Python]: 'production',
|
|
[SupportedLanguages.Java]: 'production',
|
|
[SupportedLanguages.C]: 'production',
|
|
[SupportedLanguages.CPlusPlus]: 'production',
|
|
[SupportedLanguages.CSharp]: 'production',
|
|
[SupportedLanguages.Go]: 'production',
|
|
[SupportedLanguages.Ruby]: 'production',
|
|
[SupportedLanguages.Rust]: 'production',
|
|
[SupportedLanguages.PHP]: 'production',
|
|
[SupportedLanguages.Kotlin]: 'production',
|
|
[SupportedLanguages.Swift]: 'production',
|
|
[SupportedLanguages.Dart]: 'production',
|
|
[SupportedLanguages.Vue]: 'experimental',
|
|
[SupportedLanguages.Cobol]: 'experimental',
|
|
};
|
|
|
|
/** Convenience predicate: is this language gating Ring 4 retirement? */
|
|
export function isProductionLanguage(lang: SupportedLanguages): boolean {
|
|
return LanguageClassifications[lang] === 'production';
|
|
}
|