diff --git a/crates/code-intel-cli/src/codegraph_provider/mod.rs b/crates/code-intel-cli/src/codegraph_provider/mod.rs index 9b24f247..9a4c9770 100644 --- a/crates/code-intel-cli/src/codegraph_provider/mod.rs +++ b/crates/code-intel-cli/src/codegraph_provider/mod.rs @@ -280,7 +280,7 @@ fn execute(request: &Request, result: &mut Value) -> Result<(), Failure> { } let provenance = json!({"collectionId":format!("codegraph-{identity}-{started}-{completed}-{}",std::process::id()), "command":serde_json::to_string(&engine.invocation(&args)).map_err(|e| Failure::contract(e.to_string()))?,"startedAt":started,"completedAt":completed}); - let uncertainty = json!(["Upstream language support is finite; unsupported source including PowerShell is not complete evidence.", + let uncertainty = json!(["Upstream language support is finite; unsupported source is not complete evidence.", "Static relationships, dynamic dispatch, confidence/provenance and upstream truncation remain partial; absence is not proof.", "Affected tests are candidates, not an authoritative test selection or delivery gate."]); let payload = json!({"schema":"code-intel-evidence-payload.v1","data":{"codegraph":{"schema":"code-intel-codegraph-observation.v1", diff --git a/crates/code-intel-cli/src/codenexus_lite.rs b/crates/code-intel-cli/src/codenexus_lite.rs index f253cc8e..a6cd2a3b 100644 --- a/crates/code-intel-cli/src/codenexus_lite.rs +++ b/crates/code-intel-cli/src/codenexus_lite.rs @@ -35,8 +35,8 @@ pub(crate) fn normalized_canonical_path(path: &Path) -> std::io::Result mod hardened_git; /// File extensions the fallback "largest code file" selector considers. -const CODE_EXTENSIONS: [&str; 10] = [ - ".ps1", ".py", ".rs", ".go", ".ts", ".tsx", ".js", ".jsx", ".java", ".cs", +const CODE_EXTENSIONS: [&str; 9] = [ + ".py", ".rs", ".go", ".ts", ".tsx", ".js", ".jsx", ".java", ".cs", ]; /// Paths that must never enter the CodeNexus context (build output, VCS, diff --git a/crates/code-intel-cli/src/file_gate/rules.rs b/crates/code-intel-cli/src/file_gate/rules.rs index d06db50b..e2d45cdf 100644 --- a/crates/code-intel-cli/src/file_gate/rules.rs +++ b/crates/code-intel-cli/src/file_gate/rules.rs @@ -40,8 +40,8 @@ pub(crate) const SOURCE_PROJECT: &str = "project"; /// all. `every_extension_is_only_classified_once` guards against silent /// duplication. pub(crate) const CODE_EXTENSIONS: &[&str] = &[ - "ps1", "psm1", "py", "rs", "go", "ts", "tsx", "js", "jsx", "mjs", "cjs", "java", "cs", "cpp", - "c", "h", "hpp", "v", + "py", "rs", "go", "ts", "tsx", "js", "jsx", "mjs", "cjs", "java", "cs", "cpp", "c", "h", "hpp", + "v", ]; /// Directory names default-excluded at *any* depth, not just the repository diff --git a/crates/code-intel-cli/src/graph/mod.rs b/crates/code-intel-cli/src/graph/mod.rs index ae7a68a8..32d77494 100644 --- a/crates/code-intel-cli/src/graph/mod.rs +++ b/crates/code-intel-cli/src/graph/mod.rs @@ -173,7 +173,6 @@ fn collect_source_files( fn language_from_path(path: &Path) -> Option<&'static str> { match path.extension().and_then(|value| value.to_str())? { "rs" => Some("rust"), - "ps1" | "psm1" | "psd1" => Some("powershell"), "py" => Some("python"), "js" | "mjs" | "cjs" => Some("javascript"), "ts" | "tsx" => Some("typescript"), @@ -271,18 +270,6 @@ fn edge_targets(language: &str, line: &str) -> Vec<(&'static str, String)> { } } } - "powershell" => { - if line.starts_with(". ") || line.starts_with("& ") { - if let Some(target) = first_path_like_token(line) { - targets.push(("invoke", target)); - } - } - if line.contains("Join-Path") { - if let Some(target) = quoted_tail(line) { - targets.push(("path_reference", target)); - } - } - } _ => { if let Some(target) = quoted_tail(line) { if target.contains('/') || target.contains('\\') { @@ -309,7 +296,7 @@ fn resolve_target( candidates.push(normalized.clone()); } - let extension_candidates = ["rs", "ps1", "py", "js", "ts", "tsx", "json", "md", "toml"]; + let extension_candidates = ["rs", "py", "js", "ts", "tsx", "json", "md", "toml"]; let mut expanded = Vec::new(); for candidate in candidates { expanded.push(candidate.clone()); @@ -339,7 +326,6 @@ fn extract_symbols(file: &SourceFile, full: bool) -> Vec { let line = raw_line.trim(); let symbol = match file.language { "rust" => rust_symbol(line), - "powershell" => powershell_symbol(line), "python" => python_symbol(line), "javascript" | "javascript-react" | "typescript" => js_symbol(line), _ => None, @@ -379,11 +365,6 @@ fn rust_symbol(line: &str) -> Option<(&'static str, String)> { None } -fn powershell_symbol(line: &str) -> Option<(&'static str, String)> { - line.strip_prefix("function ") - .map(|rest| ("function", take_ident(rest))) -} - fn python_symbol(line: &str) -> Option<(&'static str, String)> { if let Some(rest) = line.strip_prefix("def ") { return Some(("function", take_ident(rest))); @@ -457,14 +438,6 @@ fn quoted_after(line: &str, marker: &str) -> Option { Some(after_quote.split_once(quote)?.0.to_string()) } -fn first_path_like_token(line: &str) -> Option { - line.split_whitespace() - .skip(1) - .map(|value| value.trim_matches('"').trim_matches('\'')) - .find(|value| value.contains(".ps1") || value.contains('/') || value.contains('\\')) - .map(ToString::to_string) -} - fn truncate(value: &str, max: usize) -> String { if value.len() <= max { return value.to_string(); diff --git a/crates/code-intel-cli/src/language_pref/mod.rs b/crates/code-intel-cli/src/language_pref/mod.rs index ad04b6ae..47f87ebf 100644 --- a/crates/code-intel-cli/src/language_pref/mod.rs +++ b/crates/code-intel-cli/src/language_pref/mod.rs @@ -170,15 +170,12 @@ fn read_language(path: &Path) -> Option { .map(str::to_string) } -/// `$PSUICulture` (Windows) / `LANG`, `LC_ALL` (POSIX) only -- issue #155 -/// deliberately stops here rather than reading other files or history to -/// guess. `PSUICulture` is a PowerShell automatic *variable*, not an OS -/// environment variable, so `env::var("PSUICulture")` is almost always -/// absent even on a Windows box whose live PowerShell session reports one; -/// that is the intended "signal unavailable" outcome falling through to -/// `en`, not a bug to route around with a WinAPI call or a shell-out to -/// `powershell.exe` -- the issue asks for a deterministic signal or `en`, -/// not best-effort culture detection. +/// `PSUICulture` (Windows) / `LANG`, `LC_ALL` (POSIX) environment variables +/// only -- issue #155 deliberately stops here rather than reading other files +/// or history to guess. When the variable is absent that is the intended +/// "signal unavailable" outcome falling through to `en`, not a bug to route +/// around with a WinAPI call or a shell-out -- the issue asks for a +/// deterministic signal or `en`, not best-effort culture detection. fn system_locale_language() -> Option { let raw = if cfg!(windows) { env::var("PSUICulture").ok() diff --git a/crates/code-intel-cli/src/native_code_evidence.rs b/crates/code-intel-cli/src/native_code_evidence.rs index 0c5ce581..25243729 100644 --- a/crates/code-intel-cli/src/native_code_evidence.rs +++ b/crates/code-intel-cli/src/native_code_evidence.rs @@ -10,15 +10,8 @@ use crate::artifact_ref::VerifiedArtifact; use crate::capability::sha256_hex; use crate::snapshot; -const SUPPORTED_HEURISTICS: [&str; 7] = [ - "powershell", - "python", - "javascript", - "typescript", - "rust", - "go", - "java", -]; +const SUPPORTED_HEURISTICS: [&str; 6] = + ["python", "javascript", "typescript", "rust", "go", "java"]; pub(crate) fn execute( request: &Value, @@ -438,7 +431,6 @@ pub(crate) fn language(path: &str) -> &'static str { .to_ascii_lowercase() .as_str() { - "ps1" | "psm1" => "powershell", "py" => "python", "js" | "jsx" | "mjs" | "cjs" => "javascript", "ts" | "tsx" => "typescript", @@ -475,7 +467,6 @@ fn extract_symbols(path: &str, language: &str, lines: &[&str]) -> Vec { fn symbol_candidate<'a>(language: &str, line: &'a str) -> Option<(&'static str, &'a str)> { let line = line.trim_start(); match language { - "powershell" => word_after_ci(line, "function ").map(|name| ("function", name)), "python" => word_after(line, "def ") .map(|name| ("function", name)) .or_else(|| word_after(line, "class ").map(|name| ("class", name))), @@ -555,12 +546,6 @@ fn word_after<'a>(line: &'a str, prefix: &str) -> Option<&'a str> { identifier(line.strip_prefix(prefix)?) } -fn word_after_ci<'a>(line: &'a str, prefix: &str) -> Option<&'a str> { - line.get(..prefix.len()) - .filter(|actual| actual.eq_ignore_ascii_case(prefix))?; - identifier(&line[prefix.len()..]) -} - fn identifier(text: &str) -> Option<&str> { let end = text .char_indices() diff --git a/crates/code-intel-cli/src/project_orientation.rs b/crates/code-intel-cli/src/project_orientation.rs index efadccb0..9e4f7c24 100644 --- a/crates/code-intel-cli/src/project_orientation.rs +++ b/crates/code-intel-cli/src/project_orientation.rs @@ -326,7 +326,7 @@ fn inventory_paths(bytes: &[u8]) -> Result, AdapterError> { } fn command_script(path: &str) -> bool { - [".ps1", ".sh", ".cmd", ".bat"] + [".sh", ".cmd", ".bat"] .iter() .any(|suffix| path.to_ascii_lowercase().ends_with(suffix)) } diff --git a/crates/code-intel-cli/src/project_orientation_benchmark.rs b/crates/code-intel-cli/src/project_orientation_benchmark.rs index 53ee318f..f12018bc 100644 --- a/crates/code-intel-cli/src/project_orientation_benchmark.rs +++ b/crates/code-intel-cli/src/project_orientation_benchmark.rs @@ -175,7 +175,7 @@ fn run(raw: &[String]) -> Result { "fileCount":fixture.file_count, "providerStatus":if fixture.condition == "provider_missing" {"unavailable"} else {"available"}, "unknownFields":["call_graph","purpose","structural_relationships"], - "unsupportedFiles":["Cargo.toml","README.md"] + "unsupportedFiles":["Cargo.toml","README.md","run.sh"] }, "warmPreparationMs":warm_materialization, "samples":{"cold":cold,"warm":warm} @@ -258,7 +258,7 @@ fn materialize(root: &Path, fixture: &Fixture, manifest: &Path) -> Result Result>(); let dirty = fixture.condition == "dirty"; let snapshot = json!({ @@ -299,7 +301,7 @@ fn materialize(root: &Path, fixture: &Fixture, manifest: &Path) -> Result Result Result { orientation["purpose"]["status"] == "unknown", orientation["purpose"]["evidence"] == json!([]), orientation["activeChange"]["status"] == fixture["expected"]["activeChange"], - observed_file_count.saturating_add(2) + // Cargo.toml, README.md and run.sh carry no language. + observed_file_count.saturating_add(3) == fixture["expected"]["fileCount"] .as_u64() .unwrap_or(u64::MAX), diff --git a/crates/code-intel-cli/src/sentrux_analysis.rs b/crates/code-intel-cli/src/sentrux_analysis.rs index 4a4d45d0..cd0f3c3e 100644 --- a/crates/code-intel-cli/src/sentrux_analysis.rs +++ b/crates/code-intel-cli/src/sentrux_analysis.rs @@ -111,7 +111,7 @@ pub fn analyze(target: &Path) -> Result { "modules": module_output(&modules), "file_details": file_details, "edges": edge_output(&edges), - "note": "Lightweight DSM with 9 color modes. Heuristic text-based import detection across Python, Rust, V, and PowerShell (dot-source/Import-Module); does not resolve dynamic imports, aliases, or re-exports. Git-derived modes depend on local git history. See DR-0010 for scope and promotion reasoning." + "note": "Lightweight DSM with 9 color modes. Heuristic text-based import detection across Python, Rust, and V; does not resolve dynamic imports, aliases, or re-exports. Git-derived modes depend on local git history. See DR-0010 for scope and promotion reasoning." })) } @@ -384,28 +384,15 @@ fn functions(language: &str, lines: &[String]) -> Vec { "rust" => parse_c_signature(line, "fn ", true), "vlang" => parse_c_signature(line, "fn ", false), "typescript" | "javascript" => parse_javascript_signature(line), - "powershell" => parse_powershell_signature(line), _ => None, }; - if let Some((name, mut params, is_async, is_public)) = parsed { + if let Some((name, params, is_async, is_public)) = parsed { let end = if language == "python" { python_end(lines, index) } else { c_like_end(lines, index) }; let body = &lines[index..=end.min(lines.len().saturating_sub(1))]; - if language == "powershell" && params.is_empty() { - params = body - .iter() - .find_map(|line| { - let trimmed = line.trim_start(); - trimmed - .to_ascii_lowercase() - .starts_with("param(") - .then(|| trimmed[6..].to_string()) - }) - .unwrap_or_default(); - } let (count, loc, _, _) = line_stats(body); out.push(json!({ "name": name, "kind": "function", "start_line": index + 1, "end_line": end + 1, @@ -526,19 +513,6 @@ fn parse_javascript_signature(line: &str) -> Option<(String, String, bool, bool) )) } -fn parse_powershell_signature(line: &str) -> Option<(String, String, bool, bool)> { - let trimmed = line.trim_start(); - let lower = trimmed.to_ascii_lowercase(); - let rest = trimmed - .get(9..) - .filter(|_| lower.starts_with("function "))? - .trim_start(); - let name = rest - .split(|ch: char| ch.is_whitespace() || ch == '{' || ch == '(') - .next()?; - (!name.is_empty()).then(|| (name.to_string(), String::new(), false, true)) -} - fn python_end(lines: &[String], start: usize) -> usize { let indent = leading_whitespace(&lines[start]); for (index, line) in lines.iter().enumerate().skip(start + 1) { @@ -653,7 +627,6 @@ fn looks_like_function_declaration(line: &str) -> bool { || parse_c_signature(line, "fn ", true).is_some() || parse_c_signature(line, "fn ", false).is_some() || parse_javascript_signature(line).is_some() - || parse_powershell_signature(line).is_some() } fn complexity(language: &str, lines: &[String]) -> i64 { @@ -686,7 +659,7 @@ fn dsm_edges( let mut edges = BTreeMap::new(); for file in files { let ext = extension(file); - if !matches!(ext.as_str(), ".py" | ".rs" | ".v" | ".ps1" | ".psm1") { + if !matches!(ext.as_str(), ".py" | ".rs" | ".v") { continue; } let from = module_name(file); @@ -709,9 +682,6 @@ fn import_targets( files: &[String], modules: &BTreeMap, ) -> Vec { - if matches!(extension, ".ps1" | ".psm1") { - return powershell_targets(source, content, files); - } let mut targets = Vec::new(); for line in content.lines() { let trimmed = line.trim_start(); @@ -773,207 +743,6 @@ fn import_targets( targets } -/// Resolves the two PowerShell dependency idioms actually used anywhere in -/// this repository's own `.ps1`/`.psm1` files: dot-sourcing a sibling -/// script (`. (Join-Path $PSScriptRoot "Foo.ps1")` / `. "Foo.ps1"`) and -/// `Import-Module` of either a literal path or a variable assigned earlier -/// in the same file from one of those same path-building forms -/// (`$platformModule = Join-Path (Join-Path $PSScriptRoot "tools") -/// "code-intel-platform.psm1"`, then `Import-Module $platformModule`). -/// `$PSScriptRoot` is PowerShell's automatic variable for "the directory -/// containing the currently executing script" and is the only base this -/// heuristic understands, resolved here as `source`'s own directory. Bare -/// module names (`Import-Module SomeModule`, no path) and any other -/// computed expression are left unresolved -- this extracts the -/// literal-path idiom this codebase's own scripts actually use, not a full -/// PowerShell parser (issue #376/#148 E1: cross-language coupling was -/// previously entirely unmodeled -- dsm_edges never parsed `.ps1`/`.psm1` -/// at all). -fn powershell_targets(source: &str, content: &str, files: &[String]) -> Vec { - let source_dir = source.rsplit_once('/').map(|(dir, _)| dir).unwrap_or(""); - let mut variables: BTreeMap> = BTreeMap::new(); - for line in content.lines() { - let trimmed = line.trim_start(); - let Some(rest) = trimmed.strip_prefix('$') else { - continue; - }; - let Some((name, value)) = rest.split_once('=') else { - continue; - }; - let Some(name) = powershell_identifier(name.trim_end()) else { - continue; - }; - let value = value.trim().trim_end_matches(';').trim(); - if let Some(segments) = parse_ps1_path_expr(value) { - variables.insert(name.to_string(), segments); - } - } - - let mut targets = Vec::new(); - for line in content.lines() { - let trimmed = line.trim_start(); - let expr = if let Some(rest) = trimmed.strip_prefix(". ") { - Some(leading_ps1_expr(rest.trim_start())) - } else if let Some(rest) = trimmed - .strip_prefix("Import-Module ") - .or_else(|| trimmed.strip_prefix("import-module ")) - { - Some(leading_ps1_expr(rest.trim_start())) - } else { - None - }; - let Some(expr) = expr else { - continue; - }; - let segments = match expr.strip_prefix('$') { - Some(name) => variables.get(name).cloned(), - None => parse_ps1_path_expr(expr), - }; - let Some(segments) = segments else { - continue; - }; - if segments.is_empty() { - continue; - } - let mut parts: Vec<&str> = source_dir - .split('/') - .filter(|part| !part.is_empty()) - .collect(); - for segment in &segments { - parts.extend(segment.split('/').filter(|part| !part.is_empty())); - } - let candidate = parts.join("/"); - if let Some(target) = files.iter().find(|file| **file == candidate) { - targets.push(module_name(target)); - } - } - targets -} - -/// Extracts a PowerShell variable name (`$name = ...`): letters, digits, -/// and underscore, matching PowerShell's own identifier rules for the plain -/// (non-scoped, non-braced) variable form used everywhere in this repo's -/// scripts. -fn powershell_identifier(text: &str) -> Option<&str> { - let trimmed = text.trim(); - let end = trimmed - .char_indices() - .take_while(|(_, ch)| ch.is_ascii_alphanumeric() || *ch == '_') - .last() - .map(|(index, ch)| index + ch.len_utf8())?; - let value = &trimmed[..end]; - value - .chars() - .next() - .filter(|ch| ch.is_ascii_alphabetic() || *ch == '_') - .map(|_| value) -} - -/// Resolves a *bounded* subset of PowerShell path-building expressions: the -/// `$PSScriptRoot` automatic variable (an empty base -- "start here"), a -/// quoted string literal, or a `Join-Path ` call (PowerShell -/// 5.1's two-positional-argument form; the only nesting shape anywhere in -/// this repository's own scripts is `Join-Path (Join-Path $PSScriptRoot -/// "sub") "leaf"`, but arbitrary nesting is supported the same way). -/// Returns path segments relative to `$PSScriptRoot`, or `None` for -/// anything this heuristic doesn't recognize (a bare variable, string -/// concatenation, a computed expression, named `-Path`/`-ChildPath` -/// parameters). -fn parse_ps1_path_expr(expr: &str) -> Option> { - let trimmed = expr.trim(); - let unwrapped = trimmed - .strip_prefix('(') - .and_then(|rest| rest.strip_suffix(')')) - .map(str::trim) - .unwrap_or(trimmed); - if unwrapped == "$PSScriptRoot" { - return Some(Vec::new()); - } - if let Some(literal) = parse_ps1_string_literal(unwrapped) { - return Some(vec![literal]); - } - let rest = unwrapped - .strip_prefix("Join-Path ") - .or_else(|| unwrapped.strip_prefix("join-path "))?; - let (left, right) = split_ps1_call_args(rest)?; - let mut segments = parse_ps1_path_expr(left)?; - segments.push(parse_ps1_string_literal(right.trim())?); - Some(segments) -} - -/// Splits `Join-Path`'s two positional arguments at the first top-level -/// (paren/quote-balanced) whitespace run, so a parenthesized nested -/// `Join-Path` call in the first argument isn't mistaken for the argument -/// boundary. -fn split_ps1_call_args(rest: &str) -> Option<(&str, &str)> { - let bytes = rest.as_bytes(); - let mut depth = 0i32; - let mut quote: Option = None; - for (index, &byte) in bytes.iter().enumerate() { - match quote { - Some(open) => { - if byte == open { - quote = None; - } - } - None => match byte { - b'(' => depth += 1, - b')' => depth -= 1, - b'"' | b'\'' => quote = Some(byte), - b' ' | b'\t' if depth == 0 => { - let left = rest[..index].trim(); - let right = rest[index..].trim(); - if !left.is_empty() && !right.is_empty() { - return Some((left, right)); - } - } - _ => {} - }, - } - } - None -} - -/// Returns the leading PowerShell expression in `text` up to (but not -/// including) the first paren/quote-balanced whitespace -- one grouped unit -/// (`$var`, `"literal"`, or a parenthesized `(Join-Path ...)` call), so -/// trailing flags like `Import-Module $x -Force` don't get folded into the -/// expression. -fn leading_ps1_expr(text: &str) -> &str { - let bytes = text.as_bytes(); - let mut depth = 0i32; - let mut quote: Option = None; - for (index, &byte) in bytes.iter().enumerate() { - match quote { - Some(open) => { - if byte == open { - quote = None; - } - } - None => match byte { - b'(' => depth += 1, - b')' => depth -= 1, - b'"' | b'\'' => quote = Some(byte), - b' ' | b'\t' if depth <= 0 => return &text[..index], - _ => {} - }, - } - } - text -} - -fn parse_ps1_string_literal(text: &str) -> Option { - let text = text.trim(); - let bytes = text.as_bytes(); - if bytes.len() >= 2 { - let quote = bytes[0]; - if (quote == b'"' || quote == b'\'') && bytes[bytes.len() - 1] == quote { - return Some(text[1..text.len() - 1].replace('\\', "/")); - } - } - None -} - fn resolve_python_import(source: &str, token: &str, files: &[String]) -> Option { let leading_dots = token.chars().take_while(|ch| *ch == '.').count(); let mut parts = source @@ -1540,7 +1309,6 @@ fn language(relative: &str) -> &'static str { ".rs" => "rust", ".ts" | ".tsx" => "typescript", ".js" | ".jsx" | ".mjs" | ".cjs" => "javascript", - ".ps1" | ".psm1" => "powershell", ".go" => "go", ".java" => "java", ".cs" => "csharp", diff --git a/crates/code-intel-cli/src/sentrux_gate.rs b/crates/code-intel-cli/src/sentrux_gate.rs index 0e3caea0..a721105f 100644 --- a/crates/code-intel-cli/src/sentrux_gate.rs +++ b/crates/code-intel-cli/src/sentrux_gate.rs @@ -13,16 +13,9 @@ //! coupling counts only files written in a language whose dependency syntax //! this scanner actually models (`IMPORT_MODELED_EXTENSIONS`). //! -//! The coupling denominator matters more than it looks. `is_import_line` reads -//! `import` / `from` / `use` / `mod` / `require(` / `#include` / `using`; none -//! of those is how PowerShell declares a dependency (it dot-sources and calls -//! `Import-Module`). Counting `.ps1` files in the denominator therefore made -//! the score fall whenever PowerShell grew and rise whenever it shrank: the -//! metric read "share of PowerShell", not "coupling". In a repository midway -//! through replacing PowerShell with Rust, that inverted the gate — every -//! correct migration step registered as structural regression. Restricting -//! both numerator and denominator to modelled languages leaves the score -//! unchanged for repositories that have none of the unmodelled ones. +//! The coupling denominator is restricted to import-modelled languages, so a +//! file whose dependency syntax `is_import_line` cannot read never dilutes the +//! score. use std::collections::{BTreeMap, BTreeSet}; use std::fs; @@ -88,8 +81,8 @@ const GATED_METRIC_KEYS: [&str; 5] = [ /// `coupling_score` is import edges per import-modelled file. Deleting files /// that import less than the average shrinks the denominator and raises the -/// ratio with no new dependency (#456: PowerShell retirement deleted six -/// low-import files, edges fell 2131 -> 2117, the ratio rose 63.05 -> 63.77). +/// ratio with no new dependency (#456: deleting six low-import files, edges +/// fell 2131 -> 2117, the ratio rose 63.05 -> 63.77). /// A higher ratio is therefore a regression only when the tree also gained /// import edges; growth that keeps the ratio flat still passes, as before. fn coupling_regressed(before: &Value, metrics: &ProjectMetrics) -> bool { @@ -99,19 +92,13 @@ fn coupling_regressed(before: &Value, metrics: &ProjectMetrics) -> bool { // Subset of `file_gate::CODE_EXTENSIONS` whose dependency declarations `is_import_line` // recognises. Everything measured except coupling (size, functions, -// complexity, god files) still covers the full CODE_EXTENSIONS set — a -// PowerShell god file is still a god file. -// `every_code_extension_is_classified_as_import_modeled_or_not` keeps this -// list from silently drifting when CODE_EXTENSIONS grows. +// complexity, god files) still covers the full CODE_EXTENSIONS set. +// `every_code_extension_is_import_modeled` keeps this list from silently +// drifting when CODE_EXTENSIONS grows. const IMPORT_MODELED_EXTENSIONS: &[&str] = &[ "py", "rs", "go", "ts", "tsx", "js", "jsx", "mjs", "cjs", "java", "cs", "cpp", "c", "h", "hpp", "v", ]; -// PowerShell declares dependencies by dot-sourcing and `Import-Module`; this -// scanner reads neither, so counting .ps1/.psm1 files would only dilute the -// average. Adding either form to `is_import_line` is the prerequisite for -// moving these into IMPORT_MODELED_EXTENSIONS. -const IMPORT_UNMODELED_EXTENSIONS: &[&str] = &["ps1", "psm1"]; const MAX_VIOLATION_TARGETS: usize = 8; // The god-file rule, single source for both measurement (`measure_file`) and // reporting (`god_rule_label`) so the printed rule branch can never drift @@ -1256,14 +1243,13 @@ fn is_import_line(trimmed: &str) -> bool { /// **Prose does not branch.** The original tokenised the raw file, so every /// `if`, `or` and `and` inside a comment or a string literal counted. That is /// how `.sentrux/rules.toml` ended up ratcheted at `max_cc = 162`: the number -/// came from a 465-line PowerShell test script -/// with one recognised function, whose 161 "terms" included 45 bare `or` and -/// 11 bare `and` — English words in comments, since PowerShell spells the -/// operators `-or` and `-and`. Comments and string bodies are stripped first. +/// came from a 465-line test script with one recognised function, whose 161 +/// "terms" included 45 bare `or` and 11 bare `and` — English words in +/// comments. Comments and string bodies are stripped first. /// /// **`and`/`or` are only operators in some languages.** They branch in Python; -/// in PowerShell, Rust, C-family and JS they are ordinary words, and the -/// operators are `-and`/`-or` or `&&`/`||`. Counting by extension stops one +/// in Rust, C-family and JS they are ordinary words, and the operators are +/// `&&`/`||`. Counting by extension stops one /// language's prose from inflating another language's threshold. fn complexity_terms(relative: &str, content: &str) -> i64 { const WORDS: &[&str] = &[ @@ -1291,13 +1277,6 @@ fn complexity_terms(relative: &str, content: &str) -> i64 { index += 2; continue; } - if window == b"-a" || window == b"-o" { - // PowerShell's `-and` / `-or`. - let rest = &stripped[index..]; - if rest.starts_with("-and") || rest.starts_with("-or") { - count += 1; - } - } index += 1; } count @@ -1760,23 +1739,17 @@ mod tests { } #[test] - fn every_code_extension_is_classified_as_import_modeled_or_not() { + fn every_code_extension_is_import_modeled() { // A new extension added to file_gate::CODE_EXTENSIONS without a // decision here would silently land in the coupling denominator - // with zero imports, which is the exact defect this split exists - // to prevent. + // with zero imports. for extension in file_gate::CODE_EXTENSIONS { - let modeled = IMPORT_MODELED_EXTENSIONS.contains(extension); - let unmodeled = IMPORT_UNMODELED_EXTENSIONS.contains(extension); assert!( - modeled ^ unmodeled, - "{extension} must appear in exactly one of IMPORT_MODELED_EXTENSIONS / IMPORT_UNMODELED_EXTENSIONS" + IMPORT_MODELED_EXTENSIONS.contains(extension), + "{extension} must appear in IMPORT_MODELED_EXTENSIONS" ); } - for extension in IMPORT_MODELED_EXTENSIONS - .iter() - .chain(IMPORT_UNMODELED_EXTENSIONS) - { + for extension in IMPORT_MODELED_EXTENSIONS { assert!( file_gate::CODE_EXTENSIONS.contains(extension), "{extension} is classified but never collected" @@ -1784,41 +1757,6 @@ mod tests { } } - #[test] - fn coupling_ignores_files_whose_language_has_no_modeled_imports() { - let root = fixture_root("sentrux-native-coupling"); - fs::write( - root.join("lib.rs"), - "use std::fs;\nuse std::io;\npub fn f() {}\n", - ) - .expect("write rust fixture"); - let (rust_only, _) = measure_project(&root).expect("measure rust-only tree"); - assert_eq!(rust_only.import_modeled_file_count, 1); - assert_eq!(rust_only.coupling_score, 20.0); - - // Ten PowerShell files, each carrying a real dot-source dependency - // this scanner cannot read. Under the old all-files denominator the - // score would fall from 20.0 to 1.82 purely for gaining PowerShell. - for index in 0..10 { - fs::write( - root.join(format!("helper{index}.ps1")), - ". $PSScriptRoot/other.ps1\nfunction Invoke-Thing {}\n", - ) - .expect("write powershell fixture"); - } - let (mixed, _) = measure_project(&root).expect("measure mixed tree"); - assert_eq!(mixed.file_count, 11); - assert_eq!(mixed.import_modeled_file_count, 1); - assert_eq!(mixed.coupling_score, rust_only.coupling_score); - - // Deleting PowerShell — the whole point of the migration — must not - // register as a coupling regression either. - fs::remove_file(root.join("helper0.ps1")).expect("remove one powershell fixture"); - let (after_deletion, _) = measure_project(&root).expect("measure tree after deletion"); - assert_eq!(after_deletion.coupling_score, mixed.coupling_score); - fs::remove_dir_all(&root).expect("remove fixture"); - } - #[test] fn scan_json_reports_unresolved_imports_as_unmeasured_not_zero() { // #375: `unresolved_imports` was a hardcoded `0`, which reads as "an @@ -1838,17 +1776,10 @@ mod tests { #[test] fn prose_in_comments_and_strings_does_not_count_as_branching() { - // The shape that produced this repository's max_cc = 162: PowerShell - // spells its operators -and / -or, so bare "and"/"or" in a comment is - // English, not control flow. - let powershell = "# choose one branch or another, this and that\n$message = \"if or and while\"\nif ($x) { }\n"; - assert_eq!(complexity_terms("script.ps1", powershell), 1); - - // Real PowerShell operators still count. - assert_eq!( - complexity_terms("script.ps1", "if ($a -and $b -or $c) { }\n"), - 3 - ); + // The shape that produced this repository's max_cc = 162: bare + // "and"/"or" in a comment or string is English, not control flow. + let script = "// choose one branch or another, this and that\nlet message = \"if or and while\";\nif x { }\n"; + assert_eq!(complexity_terms("script.rs", script), 1); // Python is the language where the words really are operators. assert_eq!(complexity_terms("m.py", "if a and b or c:\n pass\n"), 3); diff --git a/crates/code-intel-cli/src/workflow_recommendation.rs b/crates/code-intel-cli/src/workflow_recommendation.rs index 30f4bd54..2fad63a4 100644 --- a/crates/code-intel-cli/src/workflow_recommendation.rs +++ b/crates/code-intel-cli/src/workflow_recommendation.rs @@ -22,8 +22,7 @@ const EXCLUDED_DIRS: &[&str] = &[ "__pycache__", ]; const SOURCE_EXTENSIONS: &[&str] = &[ - "ts", "tsx", "js", "jsx", "rs", "py", "go", "ps1", "psm1", "cs", "java", "kt", "swift", "vue", - "svelte", "v", + "ts", "tsx", "js", "jsx", "rs", "py", "go", "cs", "java", "kt", "swift", "vue", "svelte", "v", ]; pub(crate) fn execute( diff --git a/crates/code-intel-cli/tests/capability_exec.rs b/crates/code-intel-cli/tests/capability_exec.rs index 47d94e05..1c641c65 100644 --- a/crates/code-intel-cli/tests/capability_exec.rs +++ b/crates/code-intel-cli/tests/capability_exec.rs @@ -1622,7 +1622,7 @@ fn advisory_workflow_recommend_runs_through_a01_with_zero_effects() { "id":"advisory.workflow-recommend.compat", "version":"1.0.0", "toolchainDigests":[ - "25a2185026cb61771ff2e5f4c2364687d01158cfc9a8266d00a20e5573ba1bde", + "4a11d639a27ec7ae039c07f1731f16b68e546b0e1ccc79ca43665718198fcef9", "82a0e5a863141a63b87075c9c07913713fa895c258fd71d9bb62bdf2689bc1b4" ] }); diff --git a/crates/code-intel-cli/tests/internalization_record.rs b/crates/code-intel-cli/tests/internalization_record.rs index 610f3689..c291d158 100644 --- a/crates/code-intel-cli/tests/internalization_record.rs +++ b/crates/code-intel-cli/tests/internalization_record.rs @@ -1542,17 +1542,17 @@ fn ticket_r06_native_record_binds_b08_parity_size_coverage_and_latency() { } let measurements = c03_measurements(); let labeled = &measurements["observations"]["r06NativeCodeEvidence"]["labeledCorpus"]; - assert_eq!(labeled["samples"], 12); - assert_eq!(labeled["truePositives"], 6); + assert_eq!(labeled["samples"], 11); + assert_eq!(labeled["truePositives"], 5); assert_eq!(labeled["falsePositives"], 2); assert_eq!(labeled["falseNegatives"], 2); - assert_eq!(labeled["precision"], 0.75); - assert_eq!(labeled["recall"], 0.75); - assert_eq!(labeled["supportedCoverage"], 0.833333); + assert_eq!(labeled["precision"], 0.714286); + assert_eq!(labeled["recall"], 0.714286); + assert_eq!(labeled["supportedCoverage"], 0.818182); assert!(labeled["elapsedMs"] .as_f64() .is_some_and(|value| value >= 0.0)); - assert!(text.contains("labeled-corpus-samples-12")); + assert!(text.contains("labeled-corpus-samples-11")); assert!(!text.contains("gap:native-code:representative-precision-recall")); assert!(text.contains("line-heuristic")); } diff --git a/crates/code-intel-cli/tests/native_code_evidence.rs b/crates/code-intel-cli/tests/native_code_evidence.rs index be6817d8..11b34a9a 100644 --- a/crates/code-intel-cli/tests/native_code_evidence.rs +++ b/crates/code-intel-cli/tests/native_code_evidence.rs @@ -423,11 +423,11 @@ fn labeled_multilingual_corpus_quantifies_native_symbol_precision_recall_and_cov (false, false) => tn += 1, } } - assert_eq!((tp, fp, fn_, tn), (6, 2, 2, 2)); + assert_eq!((tp, fp, fn_, tn), (5, 2, 2, 2)); assert_eq!(unsupported.len(), 2); - assert_eq!(corpus["samples"].as_array().unwrap().len(), 12); - assert_eq!(tp as f64 / (tp + fp) as f64, 0.75); - assert_eq!(tp as f64 / (tp + fn_) as f64, 0.75); + assert_eq!(corpus["samples"].as_array().unwrap().len(), 11); + assert_eq!(tp as f64 / (tp + fp) as f64, 5.0 / 7.0); + assert_eq!(tp as f64 / (tp + fn_) as f64, 5.0 / 7.0); assert!(started.elapsed().as_millis() < 120_000); } diff --git a/crates/code-intel-cli/tests/project_orientation_benchmark.rs b/crates/code-intel-cli/tests/project_orientation_benchmark.rs index 874e7b8e..ab06669c 100644 --- a/crates/code-intel-cli/tests/project_orientation_benchmark.rs +++ b/crates/code-intel-cli/tests/project_orientation_benchmark.rs @@ -197,7 +197,7 @@ fn representative_corpus_measures_quality_latency_and_rejects_fast_provenance_fr for fixture in [clean, dirty, missing] { assert_eq!( fixture["samples"]["warm"][0]["coverage"]["unsupportedFiles"], - json!(["Cargo.toml", "README.md"]) + json!(["Cargo.toml", "README.md", "run.sh"]) ); assert!(fixture["samples"]["warm"][0]["artifact"]["bytes"] .as_u64() diff --git a/crates/code-intel-cli/tests/sentrux_analysis.rs b/crates/code-intel-cli/tests/sentrux_analysis.rs index 8e51953a..828a83f3 100644 --- a/crates/code-intel-cli/tests/sentrux_analysis.rs +++ b/crates/code-intel-cli/tests/sentrux_analysis.rs @@ -78,8 +78,8 @@ fn dsm_snapshot_preserves_contract_and_excludes_non_governed_source() { "fn choose_contract() { assert_eq!(1, 1); }\n", ); fixture.write( - "tools/ignored.ps1", - "function Invoke-Ignored { if ($true) { 1 } }\n", + "tools/ignored.py", + "def ignored():\n if True:\n return 1\n", ); fixture.write("target/ignored.rs", "fn ignored() {}\n"); fixture.write(".gitignore", "work/\n"); @@ -241,42 +241,6 @@ fn dsm_single_crate_intra_crate_coupling_is_no_longer_structurally_empty() { .any(|module| module["name"] == "crates/app" && module["files"] == 1)); } -#[test] -fn dsm_powershell_dot_source_and_import_module_edges_are_now_modeled() { - // Regression for issue #376/#148 E1's other half: `dsm_edges` once never - // parsed `.ps1`/`.psm1`, so a PowerShell-heavy repository under analysis - // was structurally blind to its own dominant language's coupling. - let fixture = Fixture::new(); - fixture.write( - "run-code-intel.ps1", - concat!( - "$platformModule = Join-Path (Join-Path $PSScriptRoot \"modules\") \"platform.psm1\"\n", - "Import-Module $platformModule -Force\n", - ". (Join-Path $PSScriptRoot \"logging.ps1\")\n", - ), - ); - fixture.write("modules/platform.psm1", "function Invoke-Platform { 1 }\n"); - fixture.write("logging.ps1", "function Write-Log { param($msg) 1 }\n"); - - let snapshot = sentrux_analysis::analyze(&fixture.root).expect("native DSM analysis"); - let edges = snapshot["edges"].as_array().expect("edge array"); - assert!( - edges.iter().any(|edge| { - edge["from"] == "run-code-intel.ps1" && edge["to"] == "modules" - }), - "Import-Module of a variable built from nested Join-Path calls should resolve to an edge: {edges:?}" - ); - assert!( - edges - .iter() - .any(|edge| { edge["from"] == "run-code-intel.ps1" && edge["to"] == "logging.ps1" }), - "dot-sourcing via Join-Path $PSScriptRoot should resolve to an edge: {edges:?}" - ); - - let script = module(&snapshot, "run-code-intel.ps1"); - assert_eq!(script["metrics"]["outbound_edges"], 2); -} - #[test] fn dsm_execution_depth_collapses_dependency_cycles() { let fixture = Fixture::new(); @@ -301,7 +265,6 @@ fn dsm_function_boundaries_ignore_sibling_decorators_and_structural_braces() { "src/lib.rs", "trait Contract {\n fn declaration(&self);\n}\npub fn real() -> &'static str {\n let marker = \"}\"; // }\n \"ok\"\n}\n", ); - fixture.write("script.ps1", "function Invoke-Contract { 1 }\n"); fixture.write( "frontend/main.js", "export const project = (items) => items.map((item) => item + 1);\n", @@ -313,7 +276,6 @@ fn dsm_function_boundaries_ignore_sibling_decorators_and_structural_braces() { let rust = file(&snapshot, "src/lib.rs"); assert_eq!(rust["functions"][0]["end_line"], 2); assert_eq!(rust["functions"][1]["end_line"], 7); - assert_eq!(file(&snapshot, "script.ps1")["function_count"], 1); assert_eq!( file(&snapshot, "frontend/main.js")["functions"][0]["complexity"], 1 diff --git a/crates/code-intel-cli/tests/understanding_quadrant.rs b/crates/code-intel-cli/tests/understanding_quadrant.rs index 69dfce58..dc2615cf 100644 --- a/crates/code-intel-cli/tests/understanding_quadrant.rs +++ b/crates/code-intel-cli/tests/understanding_quadrant.rs @@ -74,7 +74,7 @@ fn orientation() -> Value { "languages":[{"name":"Rust","fileCount":3,"provenance":provenance("/languages/0")}], "boundaries":[{"path":"src","kind":"top_level_directory","provenance":provenance("/boundaries/0")}], "entryPoints":[{"path":"src/main.rs","classification":"heuristic","provenance":provenance("/entryPoints/0")}], - "commands":[{"path":"build.ps1","kind":"script_path","provenance":provenance("/commands/0")}], + "commands":[{"path":"build.sh","kind":"script_path","provenance":provenance("/commands/0")}], "activeChange":{"status":"clean","paths":[],"provenance":provenance("/activeChange")}, "evidenceAvailability":[ {"evidence":"survival_scan","status":"available","provenance":provenance("/evidenceAvailability/0")}, diff --git a/docs/language-adapter-acceptance-standard.md b/docs/language-adapter-acceptance-standard.md index 5b05a1c6..7a76b257 100644 --- a/docs/language-adapter-acceptance-standard.md +++ b/docs/language-adapter-acceptance-standard.md @@ -50,6 +50,6 @@ Exit code `0` means every required gate passed. Exit code `1` means the requeste ## Current native baseline -`evidence.native-code` passes `candidate + structural` at the existing measured floor: 12 labeled samples, precision 0.75, recall 0.75, coverage 0.833333, ten deterministic replays, six compatibility artifacts, explicit unsupported behavior, and zero new runtime dependencies. +`evidence.native-code` passes `candidate + structural` at the existing measured floor: 11 labeled samples, precision 0.714286, recall 0.714286, coverage 0.818182, ten deterministic replays, six compatibility artifacts, explicit unsupported behavior, and zero new runtime dependencies. It does not pass `semantic`, `behavioral`, or `production`. Those require parser/differential oracles, stronger measurements, and independent verification rather than a label change. diff --git a/docs/tool-effectiveness-baseline.md b/docs/tool-effectiveness-baseline.md index d4680eda..bac1db82 100644 --- a/docs/tool-effectiveness-baseline.md +++ b/docs/tool-effectiveness-baseline.md @@ -12,7 +12,7 @@ adapters merely expose. The governing experiment design is | --- | --- | --- | --- | | Repository snapshot and Artifact Ref | portable identity, replay, digest and snapshot binding | contract and negative tests pass | necessary infrastructure; no standalone Agent uplift claim | | `rg` inventory | deterministic repository inventory when snapshot consumption succeeds | covered by parity and orientation fixtures | exact inventory baseline; real self-run currently exposed a `.git` path-set failure | -| Native code evidence | heuristic structural extraction for seven declared languages | 12 labeled samples; precision `0.75`, recall `0.75`, declared coverage `0.833333`, 10 stable replays | candidate structural baseline only | +| Native code evidence | heuristic structural extraction for six declared languages | 11 labeled samples; precision `0.714286`, recall `0.714286`, declared coverage `0.818182`, 10 stable replays | candidate structural baseline only | | Native retrieval slice | query-term and one-hop import selection can reduce a synthetic JavaScript repository | recall `1.0` for four expected files in one fixture | promising smoke test; precision, ranking, symbol and root-cause quality unmeasured | | Project orientation | fixed corpus output is deterministic, provenance-complete, bounded, and honest about missing providers | representative Rust benchmark passes; typical p95 target is at most 60 seconds | strong contract/cost evidence; no downstream Agent task comparison | | Sentrux | command output is normalized, admitted, and fail-closed across complete, partial, crash, and unknown cases | adapter and gate tests pass | architecture-detection precision and diagnosis uplift unknown | diff --git a/orchestration/acceptance/native-code-evidence-candidate.json b/orchestration/acceptance/native-code-evidence-candidate.json index d09559f1..99aa2d55 100644 --- a/orchestration/acceptance/native-code-evidence-candidate.json +++ b/orchestration/acceptance/native-code-evidence-candidate.json @@ -5,7 +5,7 @@ "version": "compat-1.0.0", "claimLevel": "structural", "requestedStage": "candidate", - "languages": ["powershell", "python", "javascript", "typescript", "rust", "go", "java"] + "languages": ["python", "javascript", "typescript", "rust", "go", "java"] }, "contract": { "artifactSchemas": [ @@ -26,10 +26,10 @@ "behavioral": false }, "corpus": { - "labeledSamples": 12, - "precision": 0.75, - "recall": 0.75, - "declaredCoverage": 0.833333, + "labeledSamples": 11, + "precision": 0.714286, + "recall": 0.714286, + "declaredCoverage": 0.818182, "unsupportedExplicit": true, "fabricatedFactsForUnsupported": 0 }, @@ -55,9 +55,9 @@ "sourceRevisionPinned": true, "implementationLicense": "PROJECT-LICENSE-PIPELINE-OWNED", "sourcePath": "crates/code-intel-cli/src/native_code_evidence.rs", - "sourceDigest": "d07d257df1c36e879bba2f6bdc3f18f4c26a34ee05889fc19f4ab96bc2027051", + "sourceDigest": "95f9186f6a7b926ce935e064de7925ef74cc7e10e1d46ca62f156b145e1ff2c8", "conformancePath": "crates/code-intel-cli/tests/native_code_evidence.rs", - "conformanceDigest": "d348456050ac2beaf0f5d8a8565446bcbb0feda80bc5db2a3cde685cea82041f" + "conformanceDigest": "45c90e72d07d0ce0b539374d7b2650105aada9e4e852c55eb49b72f02212b992" }, "rollback": { "documented": true, @@ -68,12 +68,12 @@ "reviewer": "" }, "evidence": [ - "local:r06:labeled-corpus-samples-12", - "local:r06:precision-0.75", - "local:r06:recall-0.75", - "local:r06:supported-coverage-0.833333", + "local:r06:labeled-corpus-samples-11", + "local:r06:precision-0.714286", + "local:r06:recall-0.714286", + "local:r06:supported-coverage-0.818182", "local:b08:normalized-parity-artifacts-6", - "local:pon-multilanguage:seven-supported-languages" + "local:pon-multilanguage:six-supported-languages" ], "gaps": [ "semantic oracle not implemented", diff --git a/orchestration/evidence/d02-clean-machine-verifier-attestation.v1.json b/orchestration/evidence/d02-clean-machine-verifier-attestation.v1.json index 07d2751f..ae7d1e38 100644 --- a/orchestration/evidence/d02-clean-machine-verifier-attestation.v1.json +++ b/orchestration/evidence/d02-clean-machine-verifier-attestation.v1.json @@ -16,8 +16,7 @@ "architecture": "x86_64", "toolchain": { "rustc": "1.96.1 (31fca3adb 2026-06-26)", - "cargo": "1.96.1 (356927216 2026-06-26)", - "powershell": "7.6.3" + "cargo": "1.96.1 (356927216 2026-06-26)" }, "mountCount": 0, "bindsPresent": false, diff --git a/orchestration/integrations.json b/orchestration/integrations.json index 15c12ab5..02fe3dcf 100644 --- a/orchestration/integrations.json +++ b/orchestration/integrations.json @@ -318,7 +318,7 @@ "version": "1.0.0", "toolchainDigests": [ "a0127c7e3d6745f1c415522159adb9a73eb502d109c0def01aefee72eacbaacd", - "245bd6d7eb6f774ea6f9cead43eb67f8b351fc92c930252d180d072f00524947", + "96779241e8da95440cdb35da35a192d35c1010bdac5c78ce7080d50d188dac70", "68a4f55b76080575721cde3ee62fd746999c6df8e79303b809baecf5d2514338", "4bfbebebe9e80fa6821100dbb572542a314be399ae0f929bac455c8f1531c4b2", "98ccc64478b2c61bfd7af741ea1f8ee01a88094065c0f025700e8110b525ef26" @@ -370,7 +370,7 @@ "toolchainDigests": [ "a0127c7e3d6745f1c415522159adb9a73eb502d109c0def01aefee72eacbaacd", "4702bbed12b8012e8f0c84c601c148e5557554449922860b19b96605538b9701", - "c04370471267cea55b87138119d9ca8a0ec607ac6883da298544ae3bf4c8b44d", + "161dbf574b884fa1078eeb9fcc5b8103ddd65f8321f235f1178e6d550c53542b", "4bfbebebe9e80fa6821100dbb572542a314be399ae0f929bac455c8f1531c4b2", "98ccc64478b2c61bfd7af741ea1f8ee01a88094065c0f025700e8110b525ef26", "c5191136d0b5fbe9f34a39b4c180a77e7439abab028dd5ad7e0e22713b02b778", @@ -559,7 +559,7 @@ "id": "project.orientation.compat", "version": "1.0.0", "toolchainDigests": [ - "6a5a3e18f68b13406b5cd4b2198050aff2a86f74b61024aaeb5d4850572761c2" + "20637cc5012613ff2cbec22c881c52a03410044cf0d53070fb9e2c6304961502" ] }, "determinism": "deterministic", @@ -649,7 +649,7 @@ "id": "project.orientation-benchmark.compat", "version": "1.0.0", "toolchainDigests": [ - "d65a4162a2063cb4b3fb86556169bd009eeb5ce4640c2e7d59a267b05af12c19" + "2cb2240835c1cdc073ab798e2693fc4101280205fa3798fc361613244755ba79" ] }, "determinism": "external_nondeterministic", @@ -755,7 +755,7 @@ "id": "advisory.workflow-recommend.compat", "version": "1.0.0", "toolchainDigests": [ - "25a2185026cb61771ff2e5f4c2364687d01158cfc9a8266d00a20e5573ba1bde", + "4a11d639a27ec7ae039c07f1731f16b68e546b0e1ccc79ca43665718198fcef9", "82a0e5a863141a63b87075c9c07913713fa895c258fd71d9bb62bdf2689bc1b4" ] }, @@ -1020,7 +1020,7 @@ "id": "evidence.native-code.compat", "version": "1.0.0", "toolchainDigests": [ - "d07d257df1c36e879bba2f6bdc3f18f4c26a34ee05889fc19f4ab96bc2027051" + "95f9186f6a7b926ce935e064de7925ef74cc7e10e1d46ca62f156b145e1ff2c8" ] }, "determinism": "deterministic", @@ -1331,7 +1331,6 @@ "orchestration/schemas/code-intel-model-routing-result.v1.schema.json", "orchestration/schemas/code-intel-model-adapter-request.v1.schema.json", "orchestration/schemas/code-intel-model-adapter-request.v2.schema.json", - "orchestration/schemas/code-intel-model-executable-handle.v1.schema.json", "orchestration/schemas/code-intel-model-adapter-result.v1.schema.json", "orchestration/schemas/code-intel-model-assistance-dossier.v1.schema.json" ], diff --git a/orchestration/internalization/ast-grep.json b/orchestration/internalization/ast-grep.json index e5ab5754..6f7d7d60 100644 --- a/orchestration/internalization/ast-grep.json +++ b/orchestration/internalization/ast-grep.json @@ -2,15 +2,15 @@ "schema": "code-intel-internalization-record.v1", "id": "internalization.ast-grep-record", "projectId": "code-intel-pipeline", - "subject": { "name": "ast-grep structural search executable", "kind": "adapted_capability", "source": { "uri": "https://github.com/ast-grep/ast-grep; installed-evidence=ast-grep 0.42.3", "revision": "installed-version:0.42.3; local-native-source-sha256:ec36694a8ffca7ef068982cc574e6e42499a4634eb12f86a742026558bd1867d; local-conformance-sha256:6ea3818b802bc0495c97ac3d64956acce4abefac81d7c8218721e7cd029d27a8" }, "license": { "id": "MIT-UPSTREAM-CLAIM-LOCAL-COPY-MISSING", "obligations": ["do not redistribute or upgrade from this record until the MIT license text and package provenance are retained locally", "preserve preview-only authority, snapshot lease binding, scope and escape guards, generated-content exclusions, and failure semantics exactly"] } }, + "subject": { "name": "ast-grep structural search executable", "kind": "adapted_capability", "source": { "uri": "https://github.com/ast-grep/ast-grep; installed-evidence=ast-grep 0.42.3", "revision": "installed-version:0.42.3; local-native-source-sha256:ec36694a8ffca7ef068982cc574e6e42499a4634eb12f86a742026558bd1867d; local-conformance-sha256:13ab7eb91278ee2db742bc2bf2d90aa01a8ef1a2580a85b03dea5e43a6ad47cc" }, "license": { "id": "MIT-UPSTREAM-CLAIM-LOCAL-COPY-MISSING", "obligations": ["do not redistribute or upgrade from this record until the MIT license text and package provenance are retained locally", "preserve preview-only authority, snapshot lease binding, scope and escape guards, generated-content exclusions, and failure semantics exactly"] } }, "adoption": { "rung": "invoke", "ownedBoundary": ["Pipeline owns edit.ast-grep-plan request validation, snapshot lease, path scope and escape guards, artifact contract, and failure mapping", "ast-grep owns pattern parsing, structural matching, and rewrite preview computation; this record does not authorize upgrade, vendoring, repository mutation, or reimplementation"], "necessityEvidence": { "evidenceIds": ["local:registry:edit.ast-grep-plan:optional", "local:i40:installed-ast-grep-0.42.3", "gap:ast-grep:package-provenance"], "checkedAt": 1785024000, "expiresAt": 1792800000 }, "compatibilityEvidence": { "evidenceIds": ["local:i40:preview-only-artifact-contract", "gap:ast-grep:replacement-command-drill"], "checkedAt": 1785024000, "expiresAt": 1792800000 }, "conformanceEvidence": { "evidenceIds": ["local:i40:scope-and-escape-conformance", "local:i40:operation-trace", "local:i41:ci-platform-matrix"], "checkedAt": 1785024000, "expiresAt": 1792800000 } }, "operationTrace": [ - { "integrationId": "edit.ast-grep-plan", "operation": "capabilityExec", "command": "target/debug/code-intel.exe capability exec edit.ast-grep-plan --request --out ", "implementationIdentity": { "providerId": "ast-grep", "implementationId": "edit.ast-grep-plan.compat+ast-grep-0.42.3", "activation": "optional preview-only capability envelope" }, "source": { "path": "crates/code-intel-cli/src/structured_edit.rs", "sha256": "ec36694a8ffca7ef068982cc574e6e42499a4634eb12f86a742026558bd1867d" }, "conformance": { "path": "crates/code-intel-cli/tests/capability_exec.rs", "sha256": "6ea3818b802bc0495c97ac3d64956acce4abefac81d7c8218721e7cd029d27a8", "testName": "structured_edit_plan_is_scope_bound_and_preview_only" } } + { "integrationId": "edit.ast-grep-plan", "operation": "capabilityExec", "command": "target/debug/code-intel.exe capability exec edit.ast-grep-plan --request --out ", "implementationIdentity": { "providerId": "ast-grep", "implementationId": "edit.ast-grep-plan.compat+ast-grep-0.42.3", "activation": "optional preview-only capability envelope" }, "source": { "path": "crates/code-intel-cli/src/structured_edit.rs", "sha256": "ec36694a8ffca7ef068982cc574e6e42499a4634eb12f86a742026558bd1867d" }, "conformance": { "path": "crates/code-intel-cli/tests/capability_exec.rs", "sha256": "13ab7eb91278ee2db742bc2bf2d90aa01a8ef1a2580a85b03dea5e43a6ad47cc", "testName": "structured_edit_plan_is_scope_bound_and_preview_only" } } ], "economics": { "benefit": { "metric": "registered preview-only structural edit operations with recomputable invocation trace", "value": 1, "unit": "operations" }, "cost": { "metric": "unclosed executable lifecycle gaps", "value": 4, "unit": "gaps" }, "benefitEvidence": { "evidenceIds": ["local:i40:operation-trace", "local:i40:scope-and-escape-conformance"], "checkedAt": 1785024000, "expiresAt": 1792800000 }, "costEvidence": { "evidenceIds": ["gap:ast-grep:package-provenance", "gap:ast-grep:local-license-copy", "gap:ast-grep:replacement-command-drill", "gap:ast-grep:latency-p50-p95-measurement"], "checkedAt": 1785024000, "expiresAt": 1792800000 } }, "assurance": { "maintenanceEvidence": { "evidenceIds": ["local:i40:pinned-installed-version", "gap:ast-grep:upstream-maintenance-review"], "checkedAt": 1785024000, "expiresAt": 1792800000 }, "securityEvidence": { "evidenceIds": ["local:i40:no-network-read-only-invocation", "local:i41:ci-pinned-artifact-digests", "gap:ast-grep:package-supply-chain-review"], "checkedAt": 1785024000, "expiresAt": 1792800000 } }, "update": { "policy": "Do not upgrade ast-grep implicitly; before 2026-10-24 retain package provenance/license, rerun the scope and escape conformance test on the CI platform matrix, and refresh the pinned release artifact digests in ci.yml together with this record", "nextCheckAt": 1792800000, "evidence": { "evidenceIds": ["gap:ast-grep:update-review"], "checkedAt": 1785024000, "expiresAt": 1792800000 } }, - "ownedModifications": [{ "path": "crates/code-intel-cli/src/structured_edit.rs", "description": "Pipeline-owned preview-only planning adapter and snapshot-bound invocation boundary", "evidenceIds": ["local:i40:native-source-sha256:ec36694a8ffca7ef068982cc574e6e42499a4634eb12f86a742026558bd1867d", "local:i40:conformance-sha256:6ea3818b802bc0495c97ac3d64956acce4abefac81d7c8218721e7cd029d27a8"] }], + "ownedModifications": [{ "path": "crates/code-intel-cli/src/structured_edit.rs", "description": "Pipeline-owned preview-only planning adapter and snapshot-bound invocation boundary", "evidenceIds": ["local:i40:native-source-sha256:ec36694a8ffca7ef068982cc574e6e42499a4634eb12f86a742026558bd1867d", "local:i40:conformance-sha256:13ab7eb91278ee2db742bc2bf2d90aa01a8ef1a2580a85b03dea5e43a6ad47cc"] }], "rollback": { "strategy": "disable the optional edit.ast-grep-plan capability without changing any other artifact contract; no consumer holds authority through it", "evidence": { "evidenceIds": ["local:registry:edit.ast-grep-plan:optional", "gap:ast-grep:replacement-command-drill"], "checkedAt": 1785024000, "expiresAt": 1792800000 } }, "exit": { "strategy": "replace the executable only behind edit.ast-grep-plan after exact artifact and failure parity", "replacementCriteria": ["alternate command passes pattern, rewrite, scope, escape, generated-content, snapshot-lease, and oversized-output fixtures", "representative latency p50/p95 and cost do not regress beyond the approved budget", "new executable has pinned provenance, license, security, update, rollback, and retirement evidence"], "evidence": { "evidenceIds": ["gap:ast-grep:replacement-command-drill", "gap:ast-grep:latency-p50-p95-measurement"], "checkedAt": 1785024000, "expiresAt": 1792800000 } }, "retirement": { "status": "candidate", "triggers": ["replacement passes the complete structural edit planning contract", "installed executable identity or package provenance becomes unverifiable", "security or maintenance policy rejects the pinned package"], "evidence": { "evidenceIds": ["local:i40:operation-trace", "gap:ast-grep:replacement-command-drill"], "checkedAt": 1785024000, "expiresAt": 1792800000 } }, diff --git a/orchestration/internalization/bmad.json b/orchestration/internalization/bmad.json index 06b929f2..2d62bae5 100644 --- a/orchestration/internalization/bmad.json +++ b/orchestration/internalization/bmad.json @@ -2,7 +2,7 @@ "schema": "code-intel-internalization-record.v1", "id": "internalization.bmad-record", "projectId": "code-intel-pipeline", - "subject": { "name": "BMAD advisory candidate", "kind": "design_reference", "source": { "uri": "https://github.com/bmad-code-org/BMAD-METHOD", "revision": "unverified-upstream; local-atom-sha256:25a2185026cb61771ff2e5f4c2364687d01158cfc9a8266d00a20e5573ba1bde" }, "license": { "id": "UNKNOWN-RESEARCH-ONLY", "obligations": ["do not distribute, vendor, invoke, or production-enable until canonical upstream URI, exact revision, and license are verified", "retain the local reference provenance and gap notice"] } }, + "subject": { "name": "BMAD advisory candidate", "kind": "design_reference", "source": { "uri": "https://github.com/bmad-code-org/BMAD-METHOD", "revision": "unverified-upstream; local-atom-sha256:4a11d639a27ec7ae039c07f1731f16b68e546b0e1ccc79ca43665718198fcef9" }, "license": { "id": "UNKNOWN-RESEARCH-ONLY", "obligations": ["do not distribute, vendor, invoke, or production-enable until canonical upstream URI, exact revision, and license are verified", "retain the local reference provenance and gap notice"] } }, "adoption": { "rung": "reimplement", "ownedBoundary": ["pipeline-owned spec-driven advisory candidate data only", "no BMAD runtime dependency", "no skill execution, deployment, commit, publish, or external-write authority"], diff --git a/orchestration/internalization/c03-r05-r12-measurements.json b/orchestration/internalization/c03-r05-r12-measurements.json index 0de20a7d..38ef9381 100644 --- a/orchestration/internalization/c03-r05-r12-measurements.json +++ b/orchestration/internalization/c03-r05-r12-measurements.json @@ -16,17 +16,18 @@ "testSha256": "11c7f5fe4343a266b35dcfaa7a35d75fb86b17766341fbc38a239915bc87bf9f", "labeledCorpus": { "fixture": "orchestration/internalization/fixtures/r06-native-labeled-corpus.json", - "samples": 12, - "supportedHeuristicSamples": 10, + "samples": 11, + "supportedHeuristicSamples": 9, "unsupportedSamples": 2, - "truePositives": 6, + "truePositives": 5, "falsePositives": 2, "falseNegatives": 2, "trueNegatives": 2, - "precision": 0.75, - "recall": 0.75, - "supportedCoverage": 0.833333, - "elapsedMs": 3620 + "precision": 0.714286, + "recall": 0.714286, + "supportedCoverage": 0.818182, + "elapsedMs": 3620, + "recount": "2026-10-19 (#465): the PowerShell sample was removed from the corpus; the counts and ratios above are recomputed from the remaining labels. elapsedMs, the hashes and measuredAt are from the 2026-07-14 run." } }, "r10Git": { diff --git a/orchestration/internalization/codegraph.json b/orchestration/internalization/codegraph.json index 87f54bd3..766585e5 100644 --- a/orchestration/internalization/codegraph.json +++ b/orchestration/internalization/codegraph.json @@ -54,7 +54,7 @@ }, "source": { "path": "crates/code-intel-cli/src/codegraph_provider/mod.rs", - "sha256": "221116ffacda83136fddbb848a9141d3b3ada3ed9a5c9fdc35e80622c14c7c51" + "sha256": "0570eea7137951aa68f8486bff3ab54e3e24e168039439da11bcbab9f4416f00" }, "conformance": { "path": "crates/code-intel-cli/tests/codegraph_provider.rs", @@ -99,7 +99,7 @@ } }, "ownedModifications": [ - { "path": "crates/code-intel-cli/src/codegraph_provider/mod.rs", "description": "Optional CLI entry, shared snapshot-bound execution and A04 evidence admission", "sha256": "221116ffacda83136fddbb848a9141d3b3ada3ed9a5c9fdc35e80622c14c7c51" }, + { "path": "crates/code-intel-cli/src/codegraph_provider/mod.rs", "description": "Optional CLI entry, shared snapshot-bound execution and A04 evidence admission", "sha256": "0570eea7137951aa68f8486bff3ab54e3e24e168039439da11bcbab9f4416f00" }, { "path": "crates/code-intel-cli/src/codegraph_provider/parser.rs", "description": "Public operation/path/argument contract", "sha256": "8a8ae0fc96accf1c9a6a97ad615d693419f7e552db9d49ad36fd83e9ab7682bd" }, { "path": "crates/code-intel-cli/src/codegraph_provider/process.rs", "description": "Trusted version-aware cross-platform launcher and fixed official SDK transport", "sha256": "1a8a9d853ac788006cbecd5c92d07d822b33e772e8dc80d44425845fe6974030" }, { "path": "crates/code-intel-cli/src/codegraph_provider/storage.rs", "description": "Ignored binding, lock, database/WAL fingerprints and persisted payload", "sha256": "f7f920370444d8fd33a5a9e4b82b54e15c4ed52ae519c1c8f87825c033a22a7a" }, diff --git a/orchestration/internalization/codenexus.json b/orchestration/internalization/codenexus.json index 03625319..a8d35440 100644 --- a/orchestration/internalization/codenexus.json +++ b/orchestration/internalization/codenexus.json @@ -12,7 +12,7 @@ }, "operationTrace": [ { "integrationId": "provider.codenexus-adapt", "operation": "adapt", "command": "target/debug/code-intel.exe provider codenexus-adapt --request --artifact-root --evaluated-at --max-age-seconds ", "implementationIdentity": { "providerId": "codenexus.full", "implementationId": "codenexus.service.v1", "activation": "primary" }, "source": { "path": "crates/code-intel-cli/src/codenexus_adapter.rs", "sha256": "07fa25c19ae895ea8ba455b2acbeec7d0558ed2bf50028119026d0a524cd47fc" }, "conformance": { "path": "crates/code-intel-cli/tests/codenexus_adapter.rs", "sha256": "bcfe3143c458fa3e79bbe9f2860028769493f85e82a5f69e6b58f4d1d8df1f31", "testName": "production_route_runs_full_lite_and_unavailable_through_a04" } }, - { "integrationId": "provider.codenexus-adapt", "operation": "capabilityExec", "command": "target/debug/code-intel.exe capability exec provider.codenexus-adapt --request --out --artifact-root ", "implementationIdentity": { "providerId": "codenexus.lite-compat", "implementationId": "codenexus-lite", "activation": "legacy_rollback" }, "source": { "path": "crates/code-intel-cli/src/builtin_provider_evidence.rs", "sha256": "a0127c7e3d6745f1c415522159adb9a73eb502d109c0def01aefee72eacbaacd" }, "conformance": { "path": "crates/code-intel-cli/tests/capability_exec.rs", "sha256": "6ea3818b802bc0495c97ac3d64956acce4abefac81d7c8218721e7cd029d27a8", "testName": "codenexus_builtin_compat_dispatches_through_provider_codenexus_adapt" } }, + { "integrationId": "provider.codenexus-adapt", "operation": "capabilityExec", "command": "target/debug/code-intel.exe capability exec provider.codenexus-adapt --request --out --artifact-root ", "implementationIdentity": { "providerId": "codenexus.lite-compat", "implementationId": "codenexus-lite", "activation": "legacy_rollback" }, "source": { "path": "crates/code-intel-cli/src/builtin_provider_evidence.rs", "sha256": "a0127c7e3d6745f1c415522159adb9a73eb502d109c0def01aefee72eacbaacd" }, "conformance": { "path": "crates/code-intel-cli/tests/capability_exec.rs", "sha256": "13ab7eb91278ee2db742bc2bf2d90aa01a8ef1a2580a85b03dea5e43a6ad47cc", "testName": "codenexus_builtin_compat_dispatches_through_provider_codenexus_adapt" } }, { "integrationId": "localization.codenexus-lite", "operation": "compat", "command": "target/debug/code-intel.exe codenexus generate --repo --out codenexus-context.json", "implementationIdentity": { "providerId": "codenexus.lite-compat", "implementationId": "codenexus-lite", "activation": "legacy_rollback" }, "source": { "path": "crates/code-intel-cli/src/codenexus_generate.rs", "sha256": "9dc52eff9584142744e9bcfab88e77516ece63cb22323858c2608535986f13db" }, "conformance": { "path": "crates/code-intel-cli/tests/codenexus_generate.rs", "sha256": "89ffc6733affba2dc075a539f992eb1d004dd01d844da9662385caca6c384cda", "testName": "compiled_route_matches_the_codenexus_contract" } } ], "economics": { "benefit": { "metric": "B04 provider identities exercised by swap conformance", "value": 2, "unit": "implementations" }, "cost": { "metric": "registered full/lite lifecycle identities", "value": 2, "unit": "implementations" }, "benefitEvidence": { "evidenceIds": ["local:b04:full-lite-provider-swap", "gap:codenexus:measured-localization-value"], "checkedAt": 1783900800, "expiresAt": 1791676800 }, "costEvidence": { "evidenceIds": ["local:b04:production-operation-trace", "gap:codenexus:index-storage-latency-cost-measurement"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, diff --git a/orchestration/internalization/fixtures/pon-multilanguage-code-evidence.json b/orchestration/internalization/fixtures/pon-multilanguage-code-evidence.json index 37dc515b..cbac3baf 100644 --- a/orchestration/internalization/fixtures/pon-multilanguage-code-evidence.json +++ b/orchestration/internalization/fixtures/pon-multilanguage-code-evidence.json @@ -54,14 +54,6 @@ "expectedSymbols": [{ "kind": "class", "name": "Main" }], "expectedImports": [] }, - { - "path": "main.ps1", - "language": "powershell", - "supported": true, - "content": "function Invoke-Main { 'ok' }\n", - "expectedSymbols": [{ "kind": "function", "name": "Invoke-Main" }], - "expectedImports": [] - }, { "path": "Main.cs", "language": "csharp", diff --git a/orchestration/internalization/fixtures/r06-native-labeled-corpus.json b/orchestration/internalization/fixtures/r06-native-labeled-corpus.json index 03fdbf27..220bac64 100644 --- a/orchestration/internalization/fixtures/r06-native-labeled-corpus.json +++ b/orchestration/internalization/fixtures/r06-native-labeled-corpus.json @@ -6,7 +6,6 @@ { "path": "javascript_positive.js", "languageClass": "supported", "polarity": "positive", "symbolPresent": true, "content": "// Español: función real\nfunction saludar(nombre) { return nombre; }\n" }, { "path": "rust_positive.rs", "languageClass": "supported", "polarity": "positive", "symbolPresent": true, "content": "// 日本語: 実関数\npub fn greet() {}\n" }, { "path": "go_positive.go", "languageClass": "supported", "polarity": "positive", "symbolPresent": true, "content": "// Português: função real\nfunc Saudacao() {}\n" }, - { "path": "powershell_positive.ps1", "languageClass": "supported", "polarity": "positive", "symbolPresent": true, "content": "# Français : fonction réelle\nfunction Get-Greeting { 'bonjour' }\n" }, { "path": "java_positive.java", "languageClass": "supported", "polarity": "positive", "symbolPresent": true, "content": "// Deutsch: echte Klasse\npublic class Greeting {}\n" }, { "path": "python_false_positive.py", "languageClass": "supported", "polarity": "negative", "symbolPresent": false, "content": "TEXT = '''\ndef ghost():\n pass\n'''\n" }, { "path": "javascript_false_positive.js", "languageClass": "supported", "polarity": "negative", "symbolPresent": false, "content": "const text = `\nfunction ghost() {}\n`;\n" }, diff --git a/orchestration/internalization/git.json b/orchestration/internalization/git.json index 13db11ae..e772ede3 100644 --- a/orchestration/internalization/git.json +++ b/orchestration/internalization/git.json @@ -1,6 +1,6 @@ { "schema": "code-intel-internalization-record.v1", "id": "internalization.git-record", "projectId": "code-intel-pipeline", - "subject": { "name": "Git read-only repository protocol dependency", "kind": "adapted_capability", "source": { "uri": "https://git-scm.com; installed-path=C:/Program Files/Git/cmd/git.exe", "revision": "installed-version:2.54.0.windows.1; local-license-sha256:5b2198d1645f767585e8a88ac0499b04472164c0d2da22e75ecf97ef443ab32e; local-snapshot-source-sha256:9e75addea8b423dc6ea20f6e8f45a005266f17a8e1a0528c51d2afb82c37a993; local-conformance-sha256:32cf4376be6f7c30d8dca616dd8f5b9290eb8929d7df4c39e37322fec33e46bf; measurement-sha256:52e46a4483cc08f4ae54736795805575814d571f8f1e21c53fb0466c90e8a4d7" }, "license": { "id": "GPL-2.0-only-LOCAL-LICENSE-COPY-BOUND", "obligations": ["retain C:/Program Files/Git/LICENSE.txt and its bound digest with package provenance before redistribution", "restrict current adapter authority to read-only repository inspection; mutation commands require a separately registered and A05-gated capability"] } }, + "subject": { "name": "Git read-only repository protocol dependency", "kind": "adapted_capability", "source": { "uri": "https://git-scm.com; installed-path=C:/Program Files/Git/cmd/git.exe", "revision": "installed-version:2.54.0.windows.1; local-license-sha256:5b2198d1645f767585e8a88ac0499b04472164c0d2da22e75ecf97ef443ab32e; local-snapshot-source-sha256:9e75addea8b423dc6ea20f6e8f45a005266f17a8e1a0528c51d2afb82c37a993; local-conformance-sha256:32cf4376be6f7c30d8dca616dd8f5b9290eb8929d7df4c39e37322fec33e46bf; measurement-sha256:dcf15c73e85384af1607deb5e2981611e88be99e8ab8987c6f3e43334eb6f5c6" }, "license": { "id": "GPL-2.0-only-LOCAL-LICENSE-COPY-BOUND", "obligations": ["retain C:/Program Files/Git/LICENSE.txt and its bound digest with package provenance before redistribution", "restrict current adapter authority to read-only repository inspection; mutation commands require a separately registered and A05-gated capability"] } }, "adoption": { "rung": "invoke", "ownedBoundary": ["Pipeline owns portable Snapshot Identity, explicit head_only and explicit_overlay semantics, scope normalization, Git command argument construction, output parsing, and failure taxonomy", "Git owns repository storage and protocol behavior; commit, checkout, reset, clean, add, index mutation, fetch, push, config writes, hooks, credentials, and network operations are out of scope"], "necessityEvidence": { "evidenceIds": ["local:a02:repository.snapshot-identity", "local:b07:snapshot-registered", "local:r10:installed-git-2.54.0.windows.1"], "checkedAt": 1783900800, "expiresAt": 1791676800 }, "compatibilityEvidence": { "evidenceIds": ["local:r10:head-overlay-fixtures", "local:r10:unborn-shallow-gitlink-lfs-fixtures", "local:r10:alternate-vcs-adapter-actually-executed", "local:r10:alternate-vcs-mismatch-fail-closed", "local:r10:rollback-to-git-or-unversioned"], "checkedAt": 1783900800, "expiresAt": 1791676800 }, "conformanceEvidence": { "evidenceIds": ["local:r10:operation-trace", "local:r10:read-only-command-audit", "local:r10:alternate-mismatch-exit-65", "gap:git:representative-platform-matrix"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, "operationTrace": [ { "integrationId": "repository.snapshot-identity", "operation": "snapshotIdentity", "command": "target/debug/code-intel.exe snapshot identity --repo --working-tree-policy --scope ", "implementationIdentity": { "providerId": "git-system-dependency", "implementationId": "git-2.54.0.windows.1+snapshot-v1", "activation": "required read-only repository inspection" }, "source": { "path": "crates/code-intel-cli/src/snapshot.rs", "sha256": "9e75addea8b423dc6ea20f6e8f45a005266f17a8e1a0528c51d2afb82c37a993" }, "conformance": { "path": "crates/code-intel-cli/tests/snapshot_identity.rs", "sha256": "32cf4376be6f7c30d8dca616dd8f5b9290eb8929d7df4c39e37322fec33e46bf", "testName": "alternate_vcs_contract_fixture_is_fail_closed_and_rolls_back_to_unversioned" } }, diff --git a/orchestration/internalization/graph.json b/orchestration/internalization/graph.json index 92771aac..9da642f2 100644 --- a/orchestration/internalization/graph.json +++ b/orchestration/internalization/graph.json @@ -13,8 +13,8 @@ "operationTrace": [ { "integrationId": "provider.graph-adapt", "operation": "adapt", "command": "target/debug/code-intel.exe provider graph-adapt --request --artifact-root --evaluated-at --max-age-seconds ", "implementationIdentity": { "providerId": "code-intel.graph", "implementationId": "graph-adapter.v1", "activation": "primary" }, "source": { "path": "crates/code-intel-cli/src/graph_adapter.rs", "sha256": "68a4f55b76080575721cde3ee62fd746999c6df8e79303b809baecf5d2514338" }, "conformance": { "path": "crates/code-intel-cli/tests/graph_adapter.rs", "sha256": "0b8b9a9ce192d387e073fb09107bc948e4897a484115afd9f1f09038e67da726", "testName": "public_route_usage_registry_facade_and_schemas_are_real" } }, { "integrationId": "provider.graph-adapt", "operation": "capabilityExec", "command": "target/debug/code-intel.exe capability exec provider.graph-adapt --request --out --artifact-root ", "implementationIdentity": { "providerId": "code-intel.graph", "implementationId": "provider.graph-builtin.compat", "activation": "required production capability envelope" }, "source": { "path": "crates/code-intel-cli/src/builtin_provider_evidence.rs", "sha256": "a0127c7e3d6745f1c415522159adb9a73eb502d109c0def01aefee72eacbaacd" }, "conformance": { "path": "crates/code-intel-cli/tests/dag_run.rs", "sha256": "1a95f8f6102df4b475800da942e85325f40afdde532ed545da584c49fde6b5dc", "testName": "production_dag_output_commits_and_enters_the_authoritative_index" } }, - { "integrationId": "graph.code-intel-understand", "operation": "refresh", "command": "target/debug/code-intel.exe graph --repo --language zh --write --json", "implementationIdentity": { "providerId": "code-intel.graph", "implementationId": "internal-rust-graph", "activation": "primary" }, "source": { "path": "crates/code-intel-cli/src/graph/mod.rs", "sha256": "245bd6d7eb6f774ea6f9cead43eb67f8b351fc92c930252d180d072f00524947" }, "conformance": { "path": "crates/code-intel-cli/tests/graph_adapter.rs", "sha256": "0b8b9a9ce192d387e073fb09107bc948e4897a484115afd9f1f09038e67da726", "testName": "internal_and_external_current_outputs_share_one_port_and_provenance_schema" } }, - { "integrationId": "graph.code-intel-understand", "operation": "refreshFull", "command": "target/debug/code-intel.exe graph --repo --language zh --full --write --json", "implementationIdentity": { "providerId": "code-intel.graph", "implementationId": "internal-rust-graph", "activation": "primary" }, "source": { "path": "crates/code-intel-cli/src/graph/mod.rs", "sha256": "245bd6d7eb6f774ea6f9cead43eb67f8b351fc92c930252d180d072f00524947" }, "conformance": { "path": "crates/code-intel-cli/tests/graph_adapter.rs", "sha256": "0b8b9a9ce192d387e073fb09107bc948e4897a484115afd9f1f09038e67da726", "testName": "internal_and_external_current_outputs_share_one_port_and_provenance_schema" } }, + { "integrationId": "graph.code-intel-understand", "operation": "refresh", "command": "target/debug/code-intel.exe graph --repo --language zh --write --json", "implementationIdentity": { "providerId": "code-intel.graph", "implementationId": "internal-rust-graph", "activation": "primary" }, "source": { "path": "crates/code-intel-cli/src/graph/mod.rs", "sha256": "96779241e8da95440cdb35da35a192d35c1010bdac5c78ce7080d50d188dac70" }, "conformance": { "path": "crates/code-intel-cli/tests/graph_adapter.rs", "sha256": "0b8b9a9ce192d387e073fb09107bc948e4897a484115afd9f1f09038e67da726", "testName": "internal_and_external_current_outputs_share_one_port_and_provenance_schema" } }, + { "integrationId": "graph.code-intel-understand", "operation": "refreshFull", "command": "target/debug/code-intel.exe graph --repo --language zh --full --write --json", "implementationIdentity": { "providerId": "code-intel.graph", "implementationId": "internal-rust-graph", "activation": "primary" }, "source": { "path": "crates/code-intel-cli/src/graph/mod.rs", "sha256": "96779241e8da95440cdb35da35a192d35c1010bdac5c78ce7080d50d188dac70" }, "conformance": { "path": "crates/code-intel-cli/tests/graph_adapter.rs", "sha256": "0b8b9a9ce192d387e073fb09107bc948e4897a484115afd9f1f09038e67da726", "testName": "internal_and_external_current_outputs_share_one_port_and_provenance_schema" } }, { "integrationId": "graph.understand-external", "operation": "refresh", "command": "/understand --language zh", "implementationIdentity": { "providerId": "understand-anything", "implementationId": "unverified-upstream", "activation": "explicit_fallback" }, "source": { "path": "docs/graph-provider-adapter.md", "sha256": "dbaf8f1a9bbe434e9ab313ab0466d0e4d1e75449873f49eb7f24d90b812310d0" }, "conformance": { "path": "crates/code-intel-cli/tests/graph_adapter.rs", "sha256": "0b8b9a9ce192d387e073fb09107bc948e4897a484115afd9f1f09038e67da726", "testName": "fallback_identity_and_payload_identity_cannot_be_relabelled" } }, { "integrationId": "graph.understand-external", "operation": "refreshFull", "command": "/understand --language zh --full", "implementationIdentity": { "providerId": "understand-anything", "implementationId": "unverified-upstream", "activation": "legacy_rollback" }, "source": { "path": "docs/graph-provider-adapter.md", "sha256": "dbaf8f1a9bbe434e9ab313ab0466d0e4d1e75449873f49eb7f24d90b812310d0" }, "conformance": { "path": "crates/code-intel-cli/tests/graph_adapter.rs", "sha256": "0b8b9a9ce192d387e073fb09107bc948e4897a484115afd9f1f09038e67da726", "testName": "fallback_identity_and_payload_identity_cannot_be_relabelled" } } ], diff --git a/orchestration/internalization/native-code-evidence.json b/orchestration/internalization/native-code-evidence.json index 26149526..12c3575b 100644 --- a/orchestration/internalization/native-code-evidence.json +++ b/orchestration/internalization/native-code-evidence.json @@ -1,15 +1,15 @@ { "schema": "code-intel-internalization-record.v1", "id": "internalization.native-code-evidence-record", "projectId": "code-intel-pipeline", - "subject": { "name": "Native Code Evidence deterministic baseline", "kind": "selectively_owned_implementation", "source": { "uri": "local:crates/code-intel-cli/src/native_code_evidence.rs", "revision": "pipeline-owned-v1; local-runtime-sha256:d07d257df1c36e879bba2f6bdc3f18f4c26a34ee05889fc19f4ab96bc2027051; local-conformance-sha256:d348456050ac2beaf0f5d8a8565446bcbb0feda80bc5db2a3cde685cea82041f; measurement-sha256:52e46a4483cc08f4ae54736795805575814d571f8f1e21c53fb0466c90e8a4d7" }, "license": { "id": "PROJECT-LICENSE-PIPELINE-OWNED", "obligations": ["retain repository license and provenance for the owned implementation", "never relabel line heuristics as parser, call-graph, semantic, or framework precision"] } }, - "adoption": { "rung": "reimplement", "ownedBoundary": ["Pipeline owns deterministic file, line-heuristic symbol, file-chunk, containment, heuristic import, scorecard, and agent-slice artifacts", "Pipeline does not claim AST parsing, dynamic calls, cross-file call graph, framework semantics, embeddings, or cocoindex behavior"], "necessityEvidence": { "evidenceIds": ["local:b07:evidence.native-code-required", "local:b08:legacy-parity"], "checkedAt": 1783900800, "expiresAt": 1791676800 }, "compatibilityEvidence": { "evidenceIds": ["local:b08:a01-a03-a09-artifact-parity", "local:r06:unsupported-language-unknown"], "checkedAt": 1783900800, "expiresAt": 1791676800 }, "conformanceEvidence": { "evidenceIds": ["local:r06:operation-trace", "local:b08:native-contract-tests", "local:r06:labeled-corpus-samples-12", "local:r06:precision-0.75", "local:r06:recall-0.75", "local:r06:supported-coverage-0.833333"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, - "operationTrace": [{ "integrationId": "evidence.native-code", "operation": "capabilityExec", "command": "target/debug/code-intel.exe capability exec evidence.native-code --request --out ", "implementationIdentity": { "providerId": "code-intel-pipeline", "implementationId": "evidence.native-code.compat-1.0.0", "activation": "required deterministic production baseline" }, "source": { "path": "crates/code-intel-cli/src/native_code_evidence.rs", "sha256": "d07d257df1c36e879bba2f6bdc3f18f4c26a34ee05889fc19f4ab96bc2027051" }, "conformance": { "path": "crates/code-intel-cli/tests/native_code_evidence.rs", "sha256": "d348456050ac2beaf0f5d8a8565446bcbb0feda80bc5db2a3cde685cea82041f", "testName": "labeled_multilingual_corpus_quantifies_native_symbol_precision_recall_and_coverage" } }], - "economics": { "benefit": { "metric": "B08 normalized legacy parity artifacts", "value": 6, "unit": "artifacts" }, "cost": { "metric": "four-test B08 fixture suite elapsed time", "value": 27110, "unit": "milliseconds" }, "benefitEvidence": { "evidenceIds": ["local:b08:normalized-parity-artifacts-6", "local:r06:artifact-refs-8", "local:r06:fixture-files-2", "local:r06:labeled-corpus-samples-12", "local:r06:true-positive-6", "local:r06:false-positive-2", "local:r06:false-negative-2"], "checkedAt": 1783900800, "expiresAt": 1791676800 }, "costEvidence": { "evidenceIds": ["local:r06:suite-elapsed-ms-27110", "local:r06:labeled-corpus-elapsed-ms-3620", "gap:native-code:framework-matrix"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, + "subject": { "name": "Native Code Evidence deterministic baseline", "kind": "selectively_owned_implementation", "source": { "uri": "local:crates/code-intel-cli/src/native_code_evidence.rs", "revision": "pipeline-owned-v1; local-runtime-sha256:95f9186f6a7b926ce935e064de7925ef74cc7e10e1d46ca62f156b145e1ff2c8; local-conformance-sha256:45c90e72d07d0ce0b539374d7b2650105aada9e4e852c55eb49b72f02212b992; measurement-sha256:dcf15c73e85384af1607deb5e2981611e88be99e8ab8987c6f3e43334eb6f5c6" }, "license": { "id": "PROJECT-LICENSE-PIPELINE-OWNED", "obligations": ["retain repository license and provenance for the owned implementation", "never relabel line heuristics as parser, call-graph, semantic, or framework precision"] } }, + "adoption": { "rung": "reimplement", "ownedBoundary": ["Pipeline owns deterministic file, line-heuristic symbol, file-chunk, containment, heuristic import, scorecard, and agent-slice artifacts", "Pipeline does not claim AST parsing, dynamic calls, cross-file call graph, framework semantics, embeddings, or cocoindex behavior"], "necessityEvidence": { "evidenceIds": ["local:b07:evidence.native-code-required", "local:b08:legacy-parity"], "checkedAt": 1783900800, "expiresAt": 1791676800 }, "compatibilityEvidence": { "evidenceIds": ["local:b08:a01-a03-a09-artifact-parity", "local:r06:unsupported-language-unknown"], "checkedAt": 1783900800, "expiresAt": 1791676800 }, "conformanceEvidence": { "evidenceIds": ["local:r06:operation-trace", "local:b08:native-contract-tests", "local:r06:labeled-corpus-samples-11", "local:r06:precision-0.714286", "local:r06:recall-0.714286", "local:r06:supported-coverage-0.818182"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, + "operationTrace": [{ "integrationId": "evidence.native-code", "operation": "capabilityExec", "command": "target/debug/code-intel.exe capability exec evidence.native-code --request --out ", "implementationIdentity": { "providerId": "code-intel-pipeline", "implementationId": "evidence.native-code.compat-1.0.0", "activation": "required deterministic production baseline" }, "source": { "path": "crates/code-intel-cli/src/native_code_evidence.rs", "sha256": "95f9186f6a7b926ce935e064de7925ef74cc7e10e1d46ca62f156b145e1ff2c8" }, "conformance": { "path": "crates/code-intel-cli/tests/native_code_evidence.rs", "sha256": "45c90e72d07d0ce0b539374d7b2650105aada9e4e852c55eb49b72f02212b992", "testName": "labeled_multilingual_corpus_quantifies_native_symbol_precision_recall_and_coverage" } }], + "economics": { "benefit": { "metric": "B08 normalized legacy parity artifacts", "value": 6, "unit": "artifacts" }, "cost": { "metric": "four-test B08 fixture suite elapsed time", "value": 27110, "unit": "milliseconds" }, "benefitEvidence": { "evidenceIds": ["local:b08:normalized-parity-artifacts-6", "local:r06:artifact-refs-8", "local:r06:fixture-files-2", "local:r06:labeled-corpus-samples-11", "local:r06:true-positive-5", "local:r06:false-positive-2", "local:r06:false-negative-2"], "checkedAt": 1783900800, "expiresAt": 1791676800 }, "costEvidence": { "evidenceIds": ["local:r06:suite-elapsed-ms-27110", "local:r06:labeled-corpus-elapsed-ms-3620", "gap:native-code:framework-matrix"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, "assurance": { "maintenanceEvidence": { "evidenceIds": ["local:r06:pipeline-owned-toolchain-digest", "local:b08:contract-tests"], "checkedAt": 1783900800, "expiresAt": 1791676800 }, "securityEvidence": { "evidenceIds": ["local:r06:repo-read-local-write-only", "local:r06:no-network-provider"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, "update": { "policy": "Any heuristic or artifact change must refresh the toolchain digest, rerun B08 parity and deterministic replay, and publish precision/cost measurements before widening claims", "nextCheckAt": 1791676800, "evidence": { "evidenceIds": ["local:r06:toolchain-digest-policy", "gap:native-code:measurement-refresh"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, - "ownedModifications": [{ "path": "crates/code-intel-cli/src/native_code_evidence.rs", "description": "Pipeline-owned deterministic baseline with explicit line-heuristic labels and a manually labeled representative corpus", "evidenceIds": ["local:r06:runtime-sha256:d07d257df1c36e879bba2f6bdc3f18f4c26a34ee05889fc19f4ab96bc2027051", "local:r06:conformance-sha256:d348456050ac2beaf0f5d8a8565446bcbb0feda80bc5db2a3cde685cea82041f", "local:r06:labeled-corpus-samples-12"] }], + "ownedModifications": [{ "path": "crates/code-intel-cli/src/native_code_evidence.rs", "description": "Pipeline-owned deterministic baseline with explicit line-heuristic labels and a manually labeled representative corpus", "evidenceIds": ["local:r06:runtime-sha256:95f9186f6a7b926ce935e064de7925ef74cc7e10e1d46ca62f156b145e1ff2c8", "local:r06:conformance-sha256:45c90e72d07d0ce0b539374d7b2650105aada9e4e852c55eb49b72f02212b992", "local:r06:labeled-corpus-samples-11"] }], "rollback": { "strategy": "route through the preserved legacy producer while retaining the registered artifact contract and explicit unknown semantics", "evidence": { "evidenceIds": ["local:b08:legacy-parity", "local:r06:compatibility-route"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, "exit": { "strategy": "replace the baseline only behind evidence.native-code after exact contract, failure, determinism, and measurement parity", "replacementCriteria": ["replacement preserves A01, A03, A09 and artifact identities", "precision and recall improve over the pinned 0.75/0.75 labeled-corpus baseline without hidden network or model effects", "legacy rollback and deterministic replay remain tested"], "evidence": { "evidenceIds": ["local:b08:legacy-parity", "local:r06:labeled-corpus-baseline", "gap:native-code:replacement-drill"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, "retirement": { "status": "candidate", "triggers": ["a replacement proves full artifact and failure parity with better measured value", "heuristic maintenance cost exceeds measured value", "the production declaration is removed"], "evidence": { "evidenceIds": ["local:b07:evidence.native-code-required", "gap:native-code:retirement-comparison"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, - "lifecycle": { "previousStatus": null, "status": "research", "effectiveAt": 1783900800, "replacementRecordId": null, "evidenceIds": ["local:r06:operation-trace", "local:b08:legacy-parity", "local:r06:suite-elapsed-ms-27110", "local:r06:labeled-corpus-samples-12", "local:r06:precision-0.75", "local:r06:recall-0.75", "gap:native-code:framework-matrix"], "authorityEvent": null }, + "lifecycle": { "previousStatus": null, "status": "research", "effectiveAt": 1783900800, "replacementRecordId": null, "evidenceIds": ["local:r06:operation-trace", "local:b08:legacy-parity", "local:r06:suite-elapsed-ms-27110", "local:r06:labeled-corpus-samples-11", "local:r06:precision-0.714286", "local:r06:recall-0.714286", "gap:native-code:framework-matrix"], "authorityEvent": null }, "provenance": { "recordedAt": 1783900800, "recordedBy": "dependency-expert" } } diff --git a/orchestration/internalization/pon-multilanguage.json b/orchestration/internalization/pon-multilanguage.json index 9734fe5d..d4454c56 100644 --- a/orchestration/internalization/pon-multilanguage.json +++ b/orchestration/internalization/pon-multilanguage.json @@ -7,7 +7,7 @@ "kind": "design_reference", "source": { "uri": "https://github.com/can1357/pon", - "revision": "ab9067dbd2899c64c4d67a4bc27b8ad49472b126; local-plan-sha256:13aba02afe50ba96b51f8af8f25a5f4adbf485737d4ccc4897d3f769aee7cea9; local-doc-sha256:ab190f0b1d5df7b552567bd89b48eef177b2d1318d19a6eb3bc828bbfcdc23ab; local-test-sha256:83620098bbe864243e7b0f83bcea1836bca534b25ae5b8810687d859158e457c; local-fixture-sha256:26429a991641d142404eca462fdfb23b5256fdf3501724b63b6d441faa58cd6d" + "revision": "ab9067dbd2899c64c4d67a4bc27b8ad49472b126; local-plan-sha256:13aba02afe50ba96b51f8af8f25a5f4adbf485737d4ccc4897d3f769aee7cea9; local-doc-sha256:ab190f0b1d5df7b552567bd89b48eef177b2d1318d19a6eb3bc828bbfcdc23ab; local-test-sha256:83620098bbe864243e7b0f83bcea1836bca534b25ae5b8810687d859158e457c; local-fixture-sha256:47bff8d0a45da6eec001f185fd45a21989ae52fdf3464db35e2e4d88421657f1" }, "license": { "id": "UNKNOWN-RESEARCH-ONLY", @@ -21,13 +21,13 @@ "rung": "reimplement", "ownedBoundary": [ "Pipeline reuses its existing Code Evidence v1 files, symbols, symbol-chunks, imports, and coverage artifacts as one language-neutral structural fact contract", - "the multilingual conformance floor covers Python, JavaScript, TypeScript, Rust, Go, Java, and PowerShell while C# remains an explicit unsupported control", + "the multilingual conformance floor covers Python, JavaScript, TypeScript, Rust, Go, and Java while C# remains an explicit unsupported control", "no pon runtime dependency, Python runtime semantics, new intermediate representation, parser claim, type claim, call graph, or automatic fixture mutation" ], "necessityEvidence": { "evidenceIds": [ "local:pon-multilanguage:existing-code-evidence-contract", - "local:pon-multilanguage:seven-supported-languages", + "local:pon-multilanguage:six-supported-languages", "gap:pon-multilanguage:parser-backed-adapter" ], "checkedAt": 1784073600, @@ -45,7 +45,7 @@ "conformanceEvidence": { "evidenceIds": [ "local:pon-multilanguage:targeted-rust-test-pass", - "local:pon-multilanguage:seven-supported-languages", + "local:pon-multilanguage:six-supported-languages", "local:pon-multilanguage:unsupported-csharp-no-fabrication", "gap:pon-multilanguage:independent-verifier" ], @@ -56,7 +56,7 @@ "economics": { "benefit": { "metric": "supported source languages pinned to one Code Evidence field contract", - "value": 7, + "value": 6, "unit": "languages" }, "cost": { @@ -66,7 +66,7 @@ }, "benefitEvidence": { "evidenceIds": [ - "local:pon-multilanguage:seven-supported-languages", + "local:pon-multilanguage:six-supported-languages", "local:pon-multilanguage:artifact-schemas-v1" ], "checkedAt": 1784073600, @@ -141,9 +141,9 @@ }, { "path": "orchestration/internalization/fixtures/pon-multilanguage-code-evidence.json", - "description": "Eight-sample cross-language mapping floor with seven supported languages and one unsupported control", + "description": "Seven-sample cross-language mapping floor with six supported languages and one unsupported control", "evidenceIds": [ - "local:pon-multilanguage:seven-supported-languages", + "local:pon-multilanguage:six-supported-languages", "local:pon-multilanguage:fixture-digest-pinned" ] } diff --git a/orchestration/internalization/rg.json b/orchestration/internalization/rg.json index 231fdf86..0e772143 100644 --- a/orchestration/internalization/rg.json +++ b/orchestration/internalization/rg.json @@ -2,15 +2,15 @@ "schema": "code-intel-internalization-record.v1", "id": "internalization.rg-record", "projectId": "code-intel-pipeline", - "subject": { "name": "ripgrep inventory executable", "kind": "adapted_capability", "source": { "uri": "https://github.com/BurntSushi/ripgrep; installed-evidence=rg 15.1.0 (rev af60c2de9d)", "revision": "installed-version:15.1.0-af60c2de9d; local-native-source-sha256:82a0e5a863141a63b87075c9c07913713fa895c258fd71d9bb62bdf2689bc1b4; local-conformance-sha256:6ea3818b802bc0495c97ac3d64956acce4abefac81d7c8218721e7cd029d27a8" }, "license": { "id": "MIT-OR-Unlicense-UPSTREAM-CLAIM-LOCAL-COPY-MISSING", "obligations": ["do not redistribute or upgrade from this record until the selected license text and package provenance are retained locally", "preserve exact inventory scope, exclusions, order normalization, snapshot lease, and failure semantics"] } }, + "subject": { "name": "ripgrep inventory executable", "kind": "adapted_capability", "source": { "uri": "https://github.com/BurntSushi/ripgrep; installed-evidence=rg 15.1.0 (rev af60c2de9d)", "revision": "installed-version:15.1.0-af60c2de9d; local-native-source-sha256:82a0e5a863141a63b87075c9c07913713fa895c258fd71d9bb62bdf2689bc1b4; local-conformance-sha256:13ab7eb91278ee2db742bc2bf2d90aa01a8ef1a2580a85b03dea5e43a6ad47cc" }, "license": { "id": "MIT-OR-Unlicense-UPSTREAM-CLAIM-LOCAL-COPY-MISSING", "obligations": ["do not redistribute or upgrade from this record until the selected license text and package provenance are retained locally", "preserve exact inventory scope, exclusions, order normalization, snapshot lease, and failure semantics"] } }, "adoption": { "rung": "invoke", "ownedBoundary": ["Pipeline owns inventory.rg request normalization, snapshot-controlled mirror, exclusions, artifact contract, and failure mapping", "ripgrep owns executable search and traversal behavior; this record does not authorize upgrade, vendoring, or reimplementation"], "necessityEvidence": { "evidenceIds": ["local:registry:inventory.rg:required", "local:r09:installed-rg-15.1.0-af60c2de9d", "gap:rg:package-provenance"], "checkedAt": 1783900800, "expiresAt": 1791676800 }, "compatibilityEvidence": { "evidenceIds": ["local:a00:inventory-parity", "local:r09:cross-platform-contract", "gap:rg:replacement-command-drill"], "checkedAt": 1783900800, "expiresAt": 1791676800 }, "conformanceEvidence": { "evidenceIds": ["local:r09:scope-exclusion-conformance", "local:r09:operation-trace", "gap:rg:representative-platform-matrix"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, "operationTrace": [ - { "integrationId": "inventory.rg", "operation": "capabilityExec", "command": "target/debug/code-intel.exe capability exec inventory.rg --request --out ", "implementationIdentity": { "providerId": "ripgrep", "implementationId": "inventory.rg.compat+rg-15.1.0-af60c2de9d", "activation": "required production capability envelope" }, "source": { "path": "crates/code-intel-cli/src/capability_inventory.rs", "sha256": "82a0e5a863141a63b87075c9c07913713fa895c258fd71d9bb62bdf2689bc1b4" }, "conformance": { "path": "crates/code-intel-cli/tests/capability_exec.rs", "sha256": "6ea3818b802bc0495c97ac3d64956acce4abefac81d7c8218721e7cd029d27a8", "testName": "inventory_rg_exec_emits_one_result_and_stable_real_rg_artifact" } } + { "integrationId": "inventory.rg", "operation": "capabilityExec", "command": "target/debug/code-intel.exe capability exec inventory.rg --request --out ", "implementationIdentity": { "providerId": "ripgrep", "implementationId": "inventory.rg.compat+rg-15.1.0-af60c2de9d", "activation": "required production capability envelope" }, "source": { "path": "crates/code-intel-cli/src/capability_inventory.rs", "sha256": "82a0e5a863141a63b87075c9c07913713fa895c258fd71d9bb62bdf2689bc1b4" }, "conformance": { "path": "crates/code-intel-cli/tests/capability_exec.rs", "sha256": "13ab7eb91278ee2db742bc2bf2d90aa01a8ef1a2580a85b03dea5e43a6ad47cc", "testName": "inventory_rg_exec_emits_one_result_and_stable_real_rg_artifact" } } ], "economics": { "benefit": { "metric": "registered production inventory operations with recomputable invocation trace", "value": 2, "unit": "operations" }, "cost": { "metric": "unclosed executable lifecycle gaps", "value": 4, "unit": "gaps" }, "benefitEvidence": { "evidenceIds": ["local:r09:operation-trace", "local:r09:scope-exclusion-conformance"], "checkedAt": 1783900800, "expiresAt": 1791676800 }, "costEvidence": { "evidenceIds": ["gap:rg:package-provenance", "gap:rg:local-license-copy", "gap:rg:replacement-command-drill", "gap:rg:latency-p50-p95-measurement"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, "assurance": { "maintenanceEvidence": { "evidenceIds": ["local:r09:pinned-installed-version", "gap:rg:upstream-maintenance-review"], "checkedAt": 1783900800, "expiresAt": 1791676800 }, "securityEvidence": { "evidenceIds": ["local:r09:no-network-read-only-invocation", "gap:rg:package-supply-chain-review"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, "update": { "policy": "Do not upgrade rg implicitly; before 2026-10-11 retain package provenance/license, rerun cross-platform conformance and benchmark, and exercise the replacement adapter", "nextCheckAt": 1791676800, "evidence": { "evidenceIds": ["gap:rg:update-review"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, - "ownedModifications": [{ "path": "crates/code-intel-cli/src/capability_inventory.rs", "description": "Pipeline-owned inventory adapter and snapshot-controlled invocation boundary", "evidenceIds": ["local:r09:native-source-sha256:82a0e5a863141a63b87075c9c07913713fa895c258fd71d9bb62bdf2689bc1b4", "local:r09:conformance-sha256:6ea3818b802bc0495c97ac3d64956acce4abefac81d7c8218721e7cd029d27a8"] }], + "ownedModifications": [{ "path": "crates/code-intel-cli/src/capability_inventory.rs", "description": "Pipeline-owned inventory adapter and snapshot-controlled invocation boundary", "evidenceIds": ["local:r09:native-source-sha256:82a0e5a863141a63b87075c9c07913713fa895c258fd71d9bb62bdf2689bc1b4", "local:r09:conformance-sha256:13ab7eb91278ee2db742bc2bf2d90aa01a8ef1a2580a85b03dea5e43a6ad47cc"] }], "rollback": { "strategy": "route inventory.rg to the preserved compatibility facade without changing the artifact contract or upgrading rg", "evidence": { "evidenceIds": ["local:a00:inventory-parity", "gap:rg:replacement-command-drill"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, "exit": { "strategy": "replace the executable only behind inventory.rg after exact artifact and failure parity", "replacementCriteria": ["alternate command passes scope, exclusion, symlink, ignore, empty-repository, and snapshot fixtures", "representative latency p50/p95 and cost do not regress beyond the approved budget", "new executable has pinned provenance, license, security, update, rollback, and retirement evidence"], "evidence": { "evidenceIds": ["gap:rg:replacement-command-drill", "gap:rg:latency-p50-p95-measurement"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, "retirement": { "status": "candidate", "triggers": ["replacement passes the complete inventory contract", "installed executable identity or package provenance becomes unverifiable", "security or maintenance policy rejects the pinned package"], "evidence": { "evidenceIds": ["local:r09:operation-trace", "gap:rg:replacement-command-drill"], "checkedAt": 1783900800, "expiresAt": 1791676800 } }, diff --git a/orchestration/internalization/sentrux.json b/orchestration/internalization/sentrux.json index 4d953f77..d4720a1e 100644 --- a/orchestration/internalization/sentrux.json +++ b/orchestration/internalization/sentrux.json @@ -65,11 +65,11 @@ }, "source": { "path": "crates/code-intel-cli/src/sentrux_analysis.rs", - "sha256": "8ddc9cb3557cd8583d63c88410751eaa876977724005bcb3774a4e5bd876faa7" + "sha256": "25604e3583f5fe1160098ae9d6bffd7a9babe0b9bb731edc966cb4a9c3e0e1be" }, "conformance": { "path": "crates/code-intel-cli/tests/sentrux_analysis.rs", - "sha256": "7d77d3107482a1d4aced1f398e39e96a698a812580bae08d6be060407005ed5e", + "sha256": "e22a4d21ed8419d11ef214869f139680a7e5d0e30cd1c2f8d93dfbefc3aeb155", "testName": "dsm_snapshot_preserves_contract_and_excludes_non_governed_source" } }, @@ -179,7 +179,7 @@ }, "source": { "path": "crates/code-intel-cli/src/sentrux_gate.rs", - "sha256": "c04370471267cea55b87138119d9ca8a0ec607ac6883da298544ae3bf4c8b44d" + "sha256": "161dbf574b884fa1078eeb9fcc5b8103ddd65f8321f235f1178e6d550c53542b" }, "conformance": { "path": "crates/code-intel-cli/tests/dag_run.rs", @@ -259,15 +259,15 @@ "path": "crates/code-intel-cli/src/sentrux_analysis.rs", "description": "native Rust governed-source, file/function metric, module graph, and DSM risk kernel", "evidenceIds": [ - "local:sentrux:rust-dsm-source-sha256:8ddc9cb3557cd8583d63c88410751eaa876977724005bcb3774a4e5bd876faa7", - "local:sentrux:rust-dsm-conformance-sha256:7d77d3107482a1d4aced1f398e39e96a698a812580bae08d6be060407005ed5e" + "local:sentrux:rust-dsm-source-sha256:25604e3583f5fe1160098ae9d6bffd7a9babe0b9bb731edc966cb4a9c3e0e1be", + "local:sentrux:rust-dsm-conformance-sha256:e22a4d21ed8419d11ef214869f139680a7e5d0e30cd1c2f8d93dfbefc3aeb155" ] }, { "path": "crates/code-intel-cli/src/sentrux_gate.rs", "description": "Pipeline-owned built-in structural gate engine (metrics, rules check, versioned blocking/advisory admission, cycle detection)", "evidenceIds": [ - "local:b03:native-gate-source-sha256:c04370471267cea55b87138119d9ca8a0ec607ac6883da298544ae3bf4c8b44d", + "local:b03:native-gate-source-sha256:161dbf574b884fa1078eeb9fcc5b8103ddd65f8321f235f1178e6d550c53542b", "local:b03:native-gate-conformance:1a95f8f6102df4b475800da942e85325f40afdde532ed545da584c49fde6b5dc" ] } diff --git a/orchestration/schemas/code-intel-clean-machine-verifier-attestation.v1.schema.json b/orchestration/schemas/code-intel-clean-machine-verifier-attestation.v1.schema.json index f797971b..ac5bc4e9 100644 --- a/orchestration/schemas/code-intel-clean-machine-verifier-attestation.v1.schema.json +++ b/orchestration/schemas/code-intel-clean-machine-verifier-attestation.v1.schema.json @@ -27,8 +27,8 @@ "os": { "type": "string", "minLength": 1 }, "architecture": { "type": "string", "minLength": 1 }, "toolchain": { - "type": "object", "additionalProperties": false, "required": ["rustc", "cargo", "powershell"], - "properties": { "rustc": { "type": "string", "minLength": 1 }, "cargo": { "type": "string", "minLength": 1 }, "powershell": { "type": "string", "minLength": 1 } } + "type": "object", "additionalProperties": false, "required": ["rustc", "cargo"], + "properties": { "rustc": { "type": "string", "minLength": 1 }, "cargo": { "type": "string", "minLength": 1 } } }, "mountCount": { "const": 0 }, "bindsPresent": { "const": false }, diff --git a/orchestration/schemas/code-intel-model-executable-handle.v1.schema.json b/orchestration/schemas/code-intel-model-executable-handle.v1.schema.json deleted file mode 100644 index e0f4084c..00000000 --- a/orchestration/schemas/code-intel-model-executable-handle.v1.schema.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "code-intel-model-executable-handle.v1.schema.json", - "title": "Code Intel content-bound executable handle v1", - "type": "object", - "additionalProperties": false, - "required": ["schema", "adapter", "executablePath", "sha256", "length", "lastWriteTimeUtcTicks", "observedAt", "expiresAt", "identity"], - "properties": { - "schema": { "const": "code-intel-model-executable-handle.v1" }, - "adapter": { "enum": ["claude_cli", "opencode_cli", "codex_cli"] }, - "executablePath": { "type": "string", "minLength": 1 }, - "sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }, - "length": { "type": "integer", "minimum": 0 }, - "lastWriteTimeUtcTicks": { "type": "integer", "minimum": 0 }, - "observedAt": { "type": "string", "format": "date-time" }, - "expiresAt": { "type": "string", "format": "date-time" }, - "identity": { "type": "string", "pattern": "^[a-f0-9]{64}$" } - } -}