From 33360340379f878e93324e0829a1bb6f33eafc9d Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Tue, 27 Oct 2026 08:18:11 +0930 Subject: [PATCH 01/17] docs(spec): propose PR153 platform maintenance backlog --- .../specs/CBG-PLAT-01/evidence/checksums.json | 21 + .../ci-failure-reproduction-macos.log | 25 + .../current-extension-provenance.json | 34 ++ .../current-head-cli-no-home-summary.json | 8 + .../current-head-debug-macho-imports.txt | 8 + ...filesystem-current-source-probes-build.log | 0 ...esystem-current-source-probes-commands.txt | 2 + .../filesystem-current-source-probes-run.log | 17 + .../filesystem-current-source-probes.rs | 27 ++ .../evidence/head-lifecycle-helper-probe.log | 5 + .../evidence/head-lifecycle-helper-probe.rs | 61 +++ .../evidence/head-vs-ci-merge.json | 1 + .../evidence/native-dependency-imports.txt | 63 +++ .../evidence/nested-scan-result-summary.json | 10 + .../evidence/review-scope-and-results.json | 34 ++ .../selected-lifecycle-runtime-tests.log | 10 + .../evidence/selected-platform-test-names.txt | 58 +++ .../evidence/source-snapshot-sha256.json | 229 ++++++++++ .../CBG-PLAT-01/evidence/test-commands.txt | 2 + .../evidence/test-result-summary.txt | 27 ++ docs/specs/CBG-PLAT-01/planning-review.md | 53 +++ docs/specs/CBG-PLAT-01/review-evidence.md | 73 +++ docs/specs/CBG-PLAT-01/spec.md | 427 ++++++++++++++++++ 23 files changed, 1195 insertions(+) create mode 100644 docs/specs/CBG-PLAT-01/evidence/checksums.json create mode 100644 docs/specs/CBG-PLAT-01/evidence/ci-failure-reproduction-macos.log create mode 100644 docs/specs/CBG-PLAT-01/evidence/current-extension-provenance.json create mode 100644 docs/specs/CBG-PLAT-01/evidence/current-head-cli-no-home-summary.json create mode 100644 docs/specs/CBG-PLAT-01/evidence/current-head-debug-macho-imports.txt create mode 100644 docs/specs/CBG-PLAT-01/evidence/filesystem-current-source-probes-build.log create mode 100644 docs/specs/CBG-PLAT-01/evidence/filesystem-current-source-probes-commands.txt create mode 100644 docs/specs/CBG-PLAT-01/evidence/filesystem-current-source-probes-run.log create mode 100644 docs/specs/CBG-PLAT-01/evidence/filesystem-current-source-probes.rs create mode 100644 docs/specs/CBG-PLAT-01/evidence/head-lifecycle-helper-probe.log create mode 100644 docs/specs/CBG-PLAT-01/evidence/head-lifecycle-helper-probe.rs create mode 100644 docs/specs/CBG-PLAT-01/evidence/head-vs-ci-merge.json create mode 100644 docs/specs/CBG-PLAT-01/evidence/native-dependency-imports.txt create mode 100644 docs/specs/CBG-PLAT-01/evidence/nested-scan-result-summary.json create mode 100644 docs/specs/CBG-PLAT-01/evidence/review-scope-and-results.json create mode 100644 docs/specs/CBG-PLAT-01/evidence/selected-lifecycle-runtime-tests.log create mode 100644 docs/specs/CBG-PLAT-01/evidence/selected-platform-test-names.txt create mode 100644 docs/specs/CBG-PLAT-01/evidence/source-snapshot-sha256.json create mode 100644 docs/specs/CBG-PLAT-01/evidence/test-commands.txt create mode 100644 docs/specs/CBG-PLAT-01/evidence/test-result-summary.txt create mode 100644 docs/specs/CBG-PLAT-01/planning-review.md create mode 100644 docs/specs/CBG-PLAT-01/review-evidence.md create mode 100644 docs/specs/CBG-PLAT-01/spec.md diff --git a/docs/specs/CBG-PLAT-01/evidence/checksums.json b/docs/specs/CBG-PLAT-01/evidence/checksums.json new file mode 100644 index 00000000..24d35697 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/checksums.json @@ -0,0 +1,21 @@ +{ + "head-vs-ci-merge.json": "d58e8deefa6c324f08d1078c650830df4a4f87576474db82e32a1ac8ecca1bcd", + "filesystem-current-source-probes.rs": "3e687ec999258a948b402ab81d5ad5a6023e81c3a145fe4cc9e4e54f4fdf3636", + "filesystem-current-source-probes-run.log": "c7b70097042540db332dd7116564a59fc4927cfeed9ca486bb289016301ee884", + "filesystem-current-source-probes-commands.txt": "6077a02e05086236bf2d9aaf6ea114d078f883440f341e4b7958211cce2a772d", + "filesystem-current-source-probes-build.log": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "head-lifecycle-helper-probe.rs": "6b34625f07eb569ffefa37f25290e48fb227d7ae17350756cf845d569b7e636e", + "current-head-debug-macho-imports.txt": "ea09f809b9e14d498b41da176ebd2dc4f22bac707390cb97c668e8dc90b4d99e", + "review-scope-and-results.json": "fd3d37c3053cff92d19b2790d70a41b4562fa5745b5c3b998fdb5a48fdd53559", + "head-lifecycle-helper-probe.log": "4d0db6609f2a04eca5cefb55b81b0d3dacb608298fe4d5baa877e3491bb79b0d", + "selected-platform-test-names.txt": "66fb6bdca380d2733b6e734266638b833bc1c5faec60626291190ef52b1a0f4d", + "current-extension-provenance.json": "2d8c1ac6952401453d84f766c2444d36b3692f2e882eab4ee606c96d414f895d", + "nested-scan-result-summary.json": "b7751b47b2e1a65a0845fa6959e9ad295f411a6cff5ef9a1501bd52de7ea6ee2", + "native-dependency-imports.txt": "cd28dc61a66e4f35978bea7aaa602d8a35fdd03ffdbd96bee78068b7505e28a1", + "source-snapshot-sha256.json": "6e0b830c0a2d631b0b02c46db9fcea9232578b6d1a504f46b773b7596ee06d1d", + "test-commands.txt": "8d6b57addeda7c97d72c150adb045257d40a4ea760469a0633206858a5c46a57", + "ci-failure-reproduction-macos.log": "e8898544faf5d48fcecc999ee4d28153a7e1b3afabf7692632f97020c5002625", + "selected-lifecycle-runtime-tests.log": "7943d7ecc237ae49c013f97404e5f5811d20b66622572d7ec5fff0268834764c", + "current-head-cli-no-home-summary.json": "c4b97d46ee0d6dbff6701ef9e79e9d38c63d98062d654fa8d2cf51eb1d60f73a", + "test-result-summary.txt": "fa9066044cd6a59f008c17fd87efe3eca09663c2c3b15431dba5c6b58af1db9f" +} diff --git a/docs/specs/CBG-PLAT-01/evidence/ci-failure-reproduction-macos.log b/docs/specs/CBG-PLAT-01/evidence/ci-failure-reproduction-macos.log new file mode 100644 index 00000000..17fedab9 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/ci-failure-reproduction-macos.log @@ -0,0 +1,25 @@ + Blocking waiting for file lock on package cache + Blocking waiting for file lock on package cache + Blocking waiting for file lock on build directory + Finished `test` profile [unoptimized + debuginfo] target(s) in 0.13s + Running unittests src/lib.rs (/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/codebase_graph-ffa80bf96221ee79) + +running 2 tests +test adapters::cli::tests::dispatch_materialize::watch_help_documents_parallel_default_and_opt_out ... FAILED +test db_writer::phase::tests::copy_trace_metadata_reports_generated_file_bytes ... ok + +failures: + +---- adapters::cli::tests::dispatch_materialize::watch_help_documents_parallel_default_and_opt_out stdout ---- + +thread 'adapters::cli::tests::dispatch_materialize::watch_help_documents_parallel_default_and_opt_out' (33972985) panicked at src/adapters/cli/tests/dispatch_materialize.rs:73:5: +assertion failed: text.contains("--parallel Parse independent files concurrently; default behavior") +note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace + + +failures: + adapters::cli::tests::dispatch_materialize::watch_help_documents_parallel_default_and_opt_out + +test result: FAILED. 1 passed; 1 failed; 0 ignored; 0 measured; 840 filtered out; finished in 0.00s + +error: test failed, to rerun pass `-p codebase-graph --lib` diff --git a/docs/specs/CBG-PLAT-01/evidence/current-extension-provenance.json b/docs/specs/CBG-PLAT-01/evidence/current-extension-provenance.json new file mode 100644 index 00000000..1d747454 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/current-extension-provenance.json @@ -0,0 +1,34 @@ +{ + "head": "862a8f88d485d5bd257ebd9456c194156fd4ee94", + "source_root": "/tmp/codebasegraph-pr153-platform-source-862a8f88d485", + "assets": [ + { + "source": "assets/ladybug-extensions/0.19.0/win_amd64/fts/libfts.lbug_extension.xz", + "compressed_sha256": "a8a9d74be93a54482b6bb6df7c44ead6cb751f398b87b10c990d63e2da77910d", + "extracted_file": "/tmp/codebasegraph-pr153-platform-862a8f88d485/current-extension-imports/win_amd64-fts.lbug_extension", + "extracted_bytes": 14779904, + "extracted_sha256": "7f82059c8149bb7851420a9bfd0c46859e92efaeda0bcd5c65418d8f174edac4" + }, + { + "source": "assets/ladybug-extensions/0.19.0/win_amd64/json/libjson.lbug_extension.xz", + "compressed_sha256": "adf5e05d5a63c181a1be3e1e6c90a8ffb9901118171e7caf8f860af055868ada", + "extracted_file": "/tmp/codebasegraph-pr153-platform-862a8f88d485/current-extension-imports/win_amd64-json.lbug_extension", + "extracted_bytes": 14178304, + "extracted_sha256": "bdecb5201dd6abccc06ddc1f6cb4fcf0be3adb7aa3ddaac2f383ed129fca2b1f" + }, + { + "source": "assets/ladybug-extensions/0.19.0/osx_arm64/fts/libfts.lbug_extension.xz", + "compressed_sha256": "e34b00df38ced0b09993112a6d3a2d76735ecea639bb7deaf4e804351343f891", + "extracted_file": "/tmp/codebasegraph-pr153-platform-862a8f88d485/current-extension-imports/osx_arm64-fts.lbug_extension", + "extracted_bytes": 1562680, + "extracted_sha256": "83ae4be9fa718577ca971f27ff890b3aea5789c9dd908784e28f52917febbfdb" + }, + { + "source": "assets/ladybug-extensions/0.19.0/osx_arm64/json/libjson.lbug_extension.xz", + "compressed_sha256": "7d39d0ba2fe3eb41364febc09fb45aca02b37bb64a06e3a3666bfb70f49792cd", + "extracted_file": "/tmp/codebasegraph-pr153-platform-862a8f88d485/current-extension-imports/osx_arm64-json.lbug_extension", + "extracted_bytes": 630440, + "extracted_sha256": "e6482a025de31d662ee4b32a39c991706b8cc3c2ec49673ef5d8ce45cc23ce7a" + } + ] +} diff --git a/docs/specs/CBG-PLAT-01/evidence/current-head-cli-no-home-summary.json b/docs/specs/CBG-PLAT-01/evidence/current-head-cli-no-home-summary.json new file mode 100644 index 00000000..bb3c70ce --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/current-head-cli-no-home-summary.json @@ -0,0 +1,8 @@ +{ + "action": "dry_run", + "method": "file_adapter", + "scope": "user", + "path": "./.codex/config.toml", + "native_error": "codex executable not found", + "target_locality": "shared" +} diff --git a/docs/specs/CBG-PLAT-01/evidence/current-head-debug-macho-imports.txt b/docs/specs/CBG-PLAT-01/evidence/current-head-debug-macho-imports.txt new file mode 100644 index 00000000..48ab94d9 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/current-head-debug-macho-imports.txt @@ -0,0 +1,8 @@ +/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/codebase-graph: + /opt/homebrew/opt/openssl@3/lib/libssl.3.dylib (compatibility version 3.0.0, current version 3.0.0) + /opt/homebrew/opt/openssl@3/lib/libcrypto.3.dylib (compatibility version 3.0.0, current version 3.0.0) + /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 5026.5.4) + /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 1226.0.0) + /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 2100.43.0) + /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0) + /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1356.0.0) diff --git a/docs/specs/CBG-PLAT-01/evidence/filesystem-current-source-probes-build.log b/docs/specs/CBG-PLAT-01/evidence/filesystem-current-source-probes-build.log new file mode 100644 index 00000000..e69de29b diff --git a/docs/specs/CBG-PLAT-01/evidence/filesystem-current-source-probes-commands.txt b/docs/specs/CBG-PLAT-01/evidence/filesystem-current-source-probes-commands.txt new file mode 100644 index 00000000..cc0ca157 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/filesystem-current-source-probes-commands.txt @@ -0,0 +1,2 @@ +rustc --test --edition=2021 /tmp/codebasegraph-pr153-platform-862a8f88d485/filesystem-current-source-probes.rs -L dependency=/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps --extern fs2=/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/libfs2-1a85edd651763c6e.rlib --extern serde=/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/libserde-a89632c9e82a1c87.rlib --extern serde_json=/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/libserde_json-4b26a53808e3a4c2.rlib --extern sha2=/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/libsha2-5f0be4be237d1b42.rlib --extern libc=/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/liblibc-efbcba732f888a3d.rlib --extern getrandom=/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/libgetrandom-2ee9e3c68380b366.rlib --extern libmimalloc_sys=/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/liblibmimalloc_sys-d27824baec5eccca.rlib -o /tmp/codebasegraph-pr153-platform-862a8f88d485/filesystem-current-source-probes +/tmp/codebasegraph-pr153-platform-862a8f88d485/filesystem-current-source-probes --exact pr153_review_macos_nested_scan_does_not_consume_outer_cursor --nocapture --test-threads=1 diff --git a/docs/specs/CBG-PLAT-01/evidence/filesystem-current-source-probes-run.log b/docs/specs/CBG-PLAT-01/evidence/filesystem-current-source-probes-run.log new file mode 100644 index 00000000..2a9a4f92 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/filesystem-current-source-probes-run.log @@ -0,0 +1,17 @@ + +running 1 test +test pr153_review_macos_nested_scan_does_not_consume_outer_cursor ... baseline=200, outer=85, inner_min=200 + +thread 'pr153_review_macos_nested_scan_does_not_consume_outer_cursor' (33983795) panicked at /tmp/codebasegraph-pr153-platform-862a8f88d485/filesystem-current-source-probes.rs:26:5: +assertion `left == right` failed: same-parent nested scan must preserve the outer cursor + left: 85 + right: 200 +note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace +FAILED + +failures: + +failures: + pr153_review_macos_nested_scan_does_not_consume_outer_cursor + +test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 266 filtered out; finished in 0.26s diff --git a/docs/specs/CBG-PLAT-01/evidence/filesystem-current-source-probes.rs b/docs/specs/CBG-PLAT-01/evidence/filesystem-current-source-probes.rs new file mode 100644 index 00000000..229efc26 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/filesystem-current-source-probes.rs @@ -0,0 +1,27 @@ +include!("/tmp/codebasegraph-pr153-platform-source-862a8f88d485/src/storage/test_harness.rs"); + +#[test] +fn pr153_review_macos_nested_scan_does_not_consume_outer_cursor() { + use storage::locks::{path_identity, RootedDirectory}; + let fixture = temp_dir("pr153-nested-scan"); + for index in 0..200 { + fs::write(fixture.join(format!("entry-{index:04}")), b"one").unwrap(); + } + let root = RootedDirectory::open_readonly_root(&fixture, path_identity(&fixture).unwrap()).unwrap(); + let mut expected = 0usize; + root.visit_entries(&mut [0;4096], &mut |_| {expected += 1; Ok(())}).unwrap(); + let mut outer = 0usize; + let mut inner_min = usize::MAX; + root.visit_entries(&mut [0;4096], &mut |_| { + let mut inner = 0usize; + root.visit_entries(&mut [0;4096], &mut |_| {inner += 1; Ok(())})?; + inner_min = inner_min.min(inner); + outer += 1; + Ok(()) + }).unwrap(); + eprintln!("baseline={expected}, outer={outer}, inner_min={inner_min}"); + drop(root); + fs::remove_dir_all(&fixture).unwrap(); + assert_eq!(inner_min, expected); + assert_eq!(outer, expected, "same-parent nested scan must preserve the outer cursor"); +} diff --git a/docs/specs/CBG-PLAT-01/evidence/head-lifecycle-helper-probe.log b/docs/specs/CBG-PLAT-01/evidence/head-lifecycle-helper-probe.log new file mode 100644 index 00000000..054df8ee --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/head-lifecycle-helper-probe.log @@ -0,0 +1,5 @@ +resolved_home=. +codex_user=./.codex/config.toml +claude_user=./.claude.json +codex_available=false +codex_exe_available=true diff --git a/docs/specs/CBG-PLAT-01/evidence/head-lifecycle-helper-probe.rs b/docs/specs/CBG-PLAT-01/evidence/head-lifecycle-helper-probe.rs new file mode 100644 index 00000000..4b984dd7 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/head-lifecycle-helper-probe.rs @@ -0,0 +1,61 @@ +use std::{env,path::{Path,PathBuf}}; +fn home_dir() -> PathBuf { + env::var_os("HOME") + .map(PathBuf::from) + .unwrap_or_else(|| PathBuf::from(".")) +} +fn executable_in_path(executable: &str) -> bool { + let path = Path::new(executable); + if path.components().count() > 1 { + return path.is_file(); + } + env::var_os("PATH") + .map(|paths| env::split_paths(&paths).any(|dir| dir.join(executable).is_file())) + .unwrap_or(false) +} +fn default_client_config_path(adapter: &str, scope: &str, repo_root: &Path) -> PathBuf { + let home = home_dir(); + match adapter { + "codex" => { + if scope == "user" { + env::var_os("CODEX_HOME") + .map(PathBuf::from) + .unwrap_or_else(|| home.join(".codex")) + .join("config.toml") + } else { + repo_root.join(".codex/config.toml") + } + } + "claude" => { + if scope == "project" { + repo_root.join(".mcp.json") + } else { + home.join(".claude.json") + } + } + "claude-project" => repo_root.join(".mcp.json"), + "lmstudio" => home.join(".lmstudio/mcp.json"), + "github-copilot" => repo_root.join(".vscode/mcp.json"), + "hermes" => home.join(".hermes/config.yaml"), + "openclaw" => env::var_os("OPENCLAW_HOME") + .map(PathBuf::from) + .unwrap_or_else(|| home.join(".openclaw")) + .join("mcp.json5"), + "generic" => { + if scope == "project" { + repo_root.join(".mcp.json") + } else { + home.join(".config/mcp/mcp.json") + } + } + _ => home.join(".config/mcp/mcp.json"), + } +} +fn main() { + let repo=env::current_dir().unwrap(); + println!("resolved_home={}",home_dir().display()); + println!("codex_user={}",default_client_config_path("codex","user",&repo).display()); + println!("claude_user={}",default_client_config_path("claude","user",&repo).display()); + println!("codex_available={}",executable_in_path("codex")); + println!("codex_exe_available={}",executable_in_path("codex.exe")); +} diff --git a/docs/specs/CBG-PLAT-01/evidence/head-vs-ci-merge.json b/docs/specs/CBG-PLAT-01/evidence/head-vs-ci-merge.json new file mode 100644 index 00000000..1ed5d65e --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/head-vs-ci-merge.json @@ -0,0 +1 @@ +{"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/compare/862a8f88d485d5bd257ebd9456c194156fd4ee94...b7c1b3edf5d50508932b407d237452fafd100539","html_url":"https://github.com/rabii-chaarani/codebaseGraph/compare/862a8f88d485d5bd257ebd9456c194156fd4ee94...b7c1b3edf5d50508932b407d237452fafd100539","permalink_url":"https://github.com/rabii-chaarani/codebaseGraph/compare/rabii-chaarani:862a8f8...rabii-chaarani:b7c1b3e","diff_url":"https://github.com/rabii-chaarani/codebaseGraph/compare/862a8f88d485d5bd257ebd9456c194156fd4ee94...b7c1b3edf5d50508932b407d237452fafd100539.diff","patch_url":"https://github.com/rabii-chaarani/codebaseGraph/compare/862a8f88d485d5bd257ebd9456c194156fd4ee94...b7c1b3edf5d50508932b407d237452fafd100539.patch","base_commit":{"sha":"862a8f88d485d5bd257ebd9456c194156fd4ee94","node_id":"C_kwDOSZ0WutoAKDg2MmE4Zjg4ZDQ4NWQ1YmQyNTdlYmQ5NDU2YzE5NDE1NmZkNGVlOTQ","commit":{"author":{"name":"rabii-chaarani","email":"rabii.chaarani@monash.edu","date":"2026-10-26T13:26:49Z"},"committer":{"name":"rabii-chaarani","email":"rabii.chaarani@monash.edu","date":"2026-10-26T13:26:49Z"},"message":"fix(ci): compile phase trace labels only on macOS","tree":{"sha":"df55226feb36b814d75125345447c2d002ad2e52","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/git/trees/df55226feb36b814d75125345447c2d002ad2e52"},"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/git/commits/862a8f88d485d5bd257ebd9456c194156fd4ee94","comment_count":0,"verification":{"verified":false,"reason":"unsigned","signature":null,"payload":null,"verified_at":null}},"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/862a8f88d485d5bd257ebd9456c194156fd4ee94","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/862a8f88d485d5bd257ebd9456c194156fd4ee94","comments_url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/862a8f88d485d5bd257ebd9456c194156fd4ee94/comments","author":{"login":"rabii-chaarani","id":50892556,"node_id":"MDQ6VXNlcjUwODkyNTU2","avatar_url":"https://avatars.githubusercontent.com/u/50892556?v=4","gravatar_id":"","url":"https://api.github.com/users/rabii-chaarani","html_url":"https://github.com/rabii-chaarani","followers_url":"https://api.github.com/users/rabii-chaarani/followers","following_url":"https://api.github.com/users/rabii-chaarani/following{/other_user}","gists_url":"https://api.github.com/users/rabii-chaarani/gists{/gist_id}","starred_url":"https://api.github.com/users/rabii-chaarani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rabii-chaarani/subscriptions","organizations_url":"https://api.github.com/users/rabii-chaarani/orgs","repos_url":"https://api.github.com/users/rabii-chaarani/repos","events_url":"https://api.github.com/users/rabii-chaarani/events{/privacy}","received_events_url":"https://api.github.com/users/rabii-chaarani/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"rabii-chaarani","id":50892556,"node_id":"MDQ6VXNlcjUwODkyNTU2","avatar_url":"https://avatars.githubusercontent.com/u/50892556?v=4","gravatar_id":"","url":"https://api.github.com/users/rabii-chaarani","html_url":"https://github.com/rabii-chaarani","followers_url":"https://api.github.com/users/rabii-chaarani/followers","following_url":"https://api.github.com/users/rabii-chaarani/following{/other_user}","gists_url":"https://api.github.com/users/rabii-chaarani/gists{/gist_id}","starred_url":"https://api.github.com/users/rabii-chaarani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rabii-chaarani/subscriptions","organizations_url":"https://api.github.com/users/rabii-chaarani/orgs","repos_url":"https://api.github.com/users/rabii-chaarani/repos","events_url":"https://api.github.com/users/rabii-chaarani/events{/privacy}","received_events_url":"https://api.github.com/users/rabii-chaarani/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"088415dbcbc2934a9464e1b0d8e968395d80b2fe","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/088415dbcbc2934a9464e1b0d8e968395d80b2fe","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/088415dbcbc2934a9464e1b0d8e968395d80b2fe"}]},"merge_base_commit":{"sha":"862a8f88d485d5bd257ebd9456c194156fd4ee94","node_id":"C_kwDOSZ0WutoAKDg2MmE4Zjg4ZDQ4NWQ1YmQyNTdlYmQ5NDU2YzE5NDE1NmZkNGVlOTQ","commit":{"author":{"name":"rabii-chaarani","email":"rabii.chaarani@monash.edu","date":"2026-10-26T13:26:49Z"},"committer":{"name":"rabii-chaarani","email":"rabii.chaarani@monash.edu","date":"2026-10-26T13:26:49Z"},"message":"fix(ci): compile phase trace labels only on macOS","tree":{"sha":"df55226feb36b814d75125345447c2d002ad2e52","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/git/trees/df55226feb36b814d75125345447c2d002ad2e52"},"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/git/commits/862a8f88d485d5bd257ebd9456c194156fd4ee94","comment_count":0,"verification":{"verified":false,"reason":"unsigned","signature":null,"payload":null,"verified_at":null}},"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/862a8f88d485d5bd257ebd9456c194156fd4ee94","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/862a8f88d485d5bd257ebd9456c194156fd4ee94","comments_url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/862a8f88d485d5bd257ebd9456c194156fd4ee94/comments","author":{"login":"rabii-chaarani","id":50892556,"node_id":"MDQ6VXNlcjUwODkyNTU2","avatar_url":"https://avatars.githubusercontent.com/u/50892556?v=4","gravatar_id":"","url":"https://api.github.com/users/rabii-chaarani","html_url":"https://github.com/rabii-chaarani","followers_url":"https://api.github.com/users/rabii-chaarani/followers","following_url":"https://api.github.com/users/rabii-chaarani/following{/other_user}","gists_url":"https://api.github.com/users/rabii-chaarani/gists{/gist_id}","starred_url":"https://api.github.com/users/rabii-chaarani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rabii-chaarani/subscriptions","organizations_url":"https://api.github.com/users/rabii-chaarani/orgs","repos_url":"https://api.github.com/users/rabii-chaarani/repos","events_url":"https://api.github.com/users/rabii-chaarani/events{/privacy}","received_events_url":"https://api.github.com/users/rabii-chaarani/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"rabii-chaarani","id":50892556,"node_id":"MDQ6VXNlcjUwODkyNTU2","avatar_url":"https://avatars.githubusercontent.com/u/50892556?v=4","gravatar_id":"","url":"https://api.github.com/users/rabii-chaarani","html_url":"https://github.com/rabii-chaarani","followers_url":"https://api.github.com/users/rabii-chaarani/followers","following_url":"https://api.github.com/users/rabii-chaarani/following{/other_user}","gists_url":"https://api.github.com/users/rabii-chaarani/gists{/gist_id}","starred_url":"https://api.github.com/users/rabii-chaarani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rabii-chaarani/subscriptions","organizations_url":"https://api.github.com/users/rabii-chaarani/orgs","repos_url":"https://api.github.com/users/rabii-chaarani/repos","events_url":"https://api.github.com/users/rabii-chaarani/events{/privacy}","received_events_url":"https://api.github.com/users/rabii-chaarani/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"088415dbcbc2934a9464e1b0d8e968395d80b2fe","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/088415dbcbc2934a9464e1b0d8e968395d80b2fe","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/088415dbcbc2934a9464e1b0d8e968395d80b2fe"}]},"status":"ahead","ahead_by":2,"behind_by":0,"total_commits":2,"commits":[{"sha":"ca115690b226384164cf364458a0e3255b8908d3","node_id":"C_kwDOSZ0WutoAKGNhMTE1NjkwYjIyNjM4NDE2NGNmMzY0NDU4YTBlMzI1NWI4OTA4ZDM","commit":{"author":{"name":"Rabii Chaarani","email":"50892556+rabii-chaarani@users.noreply.github.com","date":"2026-10-21T03:11:11Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-10-21T03:11:11Z"},"message":"chore(main): reissue release 3.0.4 (#154)\n\nRefresh the unpublished 3.0.4 notes from patched main so the replacement\nrelease includes ammonia 4.1.8 and the recovery regressions from #152.\nKeep package and release-manifest versions at 3.0.4.","tree":{"sha":"1008eeb9da57767696a2700696261bbe3fa33419","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/git/trees/1008eeb9da57767696a2700696261bbe3fa33419"},"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/git/commits/ca115690b226384164cf364458a0e3255b8908d3","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJq2C1QCRC1aQ7uu5UhlAAAMWsQAEm1k6PIFeykZ4DoBzjy4t62\noKSAvKlJeDpETYsLfVNuCf55RZfPRrZjGHeL5RSusKwjNPYaxBgikWjjx5ZsX9hm\nxD5SaFJBX0+jgTSPEAWX3UNxhIj0JTz0BAZXWeBnJJgd++0YKEod3LQkYp3g/luX\n376iLDnd24BZxzrcqht+z/LVYQR0Do0KQjLBNdW0NEbCxbjG4Kuc17QDfLGGsmqC\naVeeeZQ/U1LdqbbdYmVhrVNx405tkipbWwYzSDSv4AaHvX+S8dYJP/BDaxwN9kSy\n5+OX822kvSHfm6nadh5nbDR/9/q7lkPdbetr8o9kW/bnvad9swXSAbrHlY1Sqix5\nifvvhTojvtIHuAGy7jYdRqHnb6bduuWtGMZYHVJcJtOcPC6UkF94p8Ygpm8WpDui\n9WgzDfxjHou9IYun+M+Xna1YXSUZVEpFwhDccrHr5LygG19I1YS0OK+rmet81B1H\nufSkitb5Ij0/SaskUjminxHI93uul+ZWD7EQ1G9sE/EZfSmmWFZO8OsA3V9YW1cQ\nqxxo6C+v363vscMTXIdyyCCuXy4+ozw5UZx02JUKvM8pGRUwD1bM2ZvZmC338NJL\nrenwhjtpGfrLI+epHtSRhst6hlTFUvJ5o59BNGQVuTa2ogq8eld1OxMgFLd6Ctuj\nabOs/Sf+fV9WcW/urSy5\n=KMb/\n-----END PGP SIGNATURE-----\n","payload":"tree 1008eeb9da57767696a2700696261bbe3fa33419\nparent 018df35e72447fc3e014e950d1d3c6648bbd4820\nauthor Rabii Chaarani <50892556+rabii-chaarani@users.noreply.github.com> 1792552271 +0930\ncommitter GitHub 1792552271 +0930\n\nchore(main): reissue release 3.0.4 (#154)\n\nRefresh the unpublished 3.0.4 notes from patched main so the replacement\nrelease includes ammonia 4.1.8 and the recovery regressions from #152.\nKeep package and release-manifest versions at 3.0.4.","verified_at":"2026-10-21T03:11:12Z"}},"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/ca115690b226384164cf364458a0e3255b8908d3","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/ca115690b226384164cf364458a0e3255b8908d3","comments_url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/ca115690b226384164cf364458a0e3255b8908d3/comments","author":{"login":"rabii-chaarani","id":50892556,"node_id":"MDQ6VXNlcjUwODkyNTU2","avatar_url":"https://avatars.githubusercontent.com/u/50892556?v=4","gravatar_id":"","url":"https://api.github.com/users/rabii-chaarani","html_url":"https://github.com/rabii-chaarani","followers_url":"https://api.github.com/users/rabii-chaarani/followers","following_url":"https://api.github.com/users/rabii-chaarani/following{/other_user}","gists_url":"https://api.github.com/users/rabii-chaarani/gists{/gist_id}","starred_url":"https://api.github.com/users/rabii-chaarani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rabii-chaarani/subscriptions","organizations_url":"https://api.github.com/users/rabii-chaarani/orgs","repos_url":"https://api.github.com/users/rabii-chaarani/repos","events_url":"https://api.github.com/users/rabii-chaarani/events{/privacy}","received_events_url":"https://api.github.com/users/rabii-chaarani/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"018df35e72447fc3e014e950d1d3c6648bbd4820","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/018df35e72447fc3e014e950d1d3c6648bbd4820","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/018df35e72447fc3e014e950d1d3c6648bbd4820"}]},{"sha":"b7c1b3edf5d50508932b407d237452fafd100539","node_id":"C_kwDOSZ0WutoAKGI3YzFiM2VkZjVkNTA1MDg5MzJiNDA3ZDIzNzQ1MmZhZmQxMDA1Mzk","commit":{"author":{"name":"Rabii Chaarani","email":"50892556+rabii-chaarani@users.noreply.github.com","date":"2026-10-26T13:26:54Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-10-26T13:26:54Z"},"message":"Merge 862a8f88d485d5bd257ebd9456c194156fd4ee94 into ca115690b226384164cf364458a0e3255b8908d3","tree":{"sha":"c7d1a00a4ba57fb0ae91e63978bad45fbc0434f2","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/git/trees/c7d1a00a4ba57fb0ae91e63978bad45fbc0434f2"},"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/git/commits/b7c1b3edf5d50508932b407d237452fafd100539","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJq31UeCRC1aQ7uu5UhlAAAkLMQAAcl6NmGhjOwzg8V3303n/Cs\nAPChAENbFladRnRZ/Ji8f8k78GtA/mNi5uhEkihvO+pLswcmleqQoeKFJLM4ZzF3\nvr1kFLHu4YoIOIiMCeAQ8QxW6UqLhpgzJ5Yll0a7WOn7JdyJmXoF6l3IJEzAFtdq\nfziaxTHDiw6uWk8R9FBo0Y9SNmuSNLLSzx4VhVfglaYEBJaMK3p1EXy3rnnys6Lp\nDp0pkfRUGMuR6C6Im4CgOuP9OXEPWqFC4KS5fqiTw39AaY6Xk2I7E/F58yeiMRAY\nM0Vyae4YgfhnVOpvpn2uUm/R483QbU9iuu3GJDXU+HY6TElWnSEiuvEqupI/kHnZ\nCIuMhAphUBjcJEyFAWsQ1K5tREeCUI0FU6iLgYatDZtgbZ/0EzrC5Z3+SuHflxXk\nrwZlKfmc0OxuPznyj9vRb5PLqSnDPhKse1osv9NQI6anV3E0g2ockyyt1EPDxG2F\n0zK34PJCcVC2TF6x1OzeXTrqSHmEf6BRTenSE6j0KtZIOr2ujZaUUdF3JYLDY19v\nP8vgiLl+D8/Czwf/LDchTZ0z4zBG/e/LMc45z+g6YWbVd6Lz5JlxkVKvEMXAXMaW\nmcEuVun2GASvCwxNi3iWRO/0Ro7Z+NZvcsBQNjzhOTn+WtDU1GnAFCe3LnBVOl5n\nhahSLVz2NXFRmCtrVeDb\n=QZ/V\n-----END PGP SIGNATURE-----\n","payload":"tree c7d1a00a4ba57fb0ae91e63978bad45fbc0434f2\nparent ca115690b226384164cf364458a0e3255b8908d3\nparent 862a8f88d485d5bd257ebd9456c194156fd4ee94\nauthor Rabii Chaarani <50892556+rabii-chaarani@users.noreply.github.com> 1793021214 +0000\ncommitter GitHub 1793021214 +0000\n\nMerge 862a8f88d485d5bd257ebd9456c194156fd4ee94 into ca115690b226384164cf364458a0e3255b8908d3\n","verified_at":"2026-10-26T13:26:55Z"}},"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/b7c1b3edf5d50508932b407d237452fafd100539","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/b7c1b3edf5d50508932b407d237452fafd100539","comments_url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/b7c1b3edf5d50508932b407d237452fafd100539/comments","author":{"login":"rabii-chaarani","id":50892556,"node_id":"MDQ6VXNlcjUwODkyNTU2","avatar_url":"https://avatars.githubusercontent.com/u/50892556?v=4","gravatar_id":"","url":"https://api.github.com/users/rabii-chaarani","html_url":"https://github.com/rabii-chaarani","followers_url":"https://api.github.com/users/rabii-chaarani/followers","following_url":"https://api.github.com/users/rabii-chaarani/following{/other_user}","gists_url":"https://api.github.com/users/rabii-chaarani/gists{/gist_id}","starred_url":"https://api.github.com/users/rabii-chaarani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rabii-chaarani/subscriptions","organizations_url":"https://api.github.com/users/rabii-chaarani/orgs","repos_url":"https://api.github.com/users/rabii-chaarani/repos","events_url":"https://api.github.com/users/rabii-chaarani/events{/privacy}","received_events_url":"https://api.github.com/users/rabii-chaarani/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"ca115690b226384164cf364458a0e3255b8908d3","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/ca115690b226384164cf364458a0e3255b8908d3","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/ca115690b226384164cf364458a0e3255b8908d3"},{"sha":"862a8f88d485d5bd257ebd9456c194156fd4ee94","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/862a8f88d485d5bd257ebd9456c194156fd4ee94","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/862a8f88d485d5bd257ebd9456c194156fd4ee94"}]}],"files":[{"sha":"174dbfd0e344fb76a2b695b182a28c2266c1e694","filename":"CHANGELOG.md","status":"modified","additions":6,"deletions":1,"changes":7,"blob_url":"https://github.com/rabii-chaarani/codebaseGraph/blob/b7c1b3edf5d50508932b407d237452fafd100539/CHANGELOG.md","raw_url":"https://github.com/rabii-chaarani/codebaseGraph/raw/b7c1b3edf5d50508932b407d237452fafd100539/CHANGELOG.md","contents_url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/contents/CHANGELOG.md?ref=b7c1b3edf5d50508932b407d237452fafd100539","patch":"@@ -1,12 +1,17 @@\n # Changelog\n \n-## [3.0.4](https://github.com/rabii-chaarani/codebaseGraph/compare/v3.0.3...v3.0.4) (2026-10-16)\n+## [3.0.4](https://github.com/rabii-chaarani/codebaseGraph/compare/v3.0.3...v3.0.4) (2026-10-21)\n \n \n ### Bug Fixes\n \n+* **deps:** update ammonia to the patched 4.1.8 release ([#152](https://github.com/rabii-chaarani/codebaseGraph/pull/152))\n * **k-wiki:** close diagnostic gaps and add regression coverage ([#149](https://github.com/rabii-chaarani/codebaseGraph/issues/149)) ([98ff47a](https://github.com/rabii-chaarani/codebaseGraph/commit/98ff47aee385366f5884193f70f050da79169e71))\n \n+### Tests\n+\n+* Verify stale-worker recovery and native-phase teardown across manual graph publication ([#152](https://github.com/rabii-chaarani/codebaseGraph/pull/152)).\n+\n ## [3.0.3](https://github.com/rabii-chaarani/codebaseGraph/compare/v3.0.2...v3.0.3) (2026-10-15)\n \n "}]} \ No newline at end of file diff --git a/docs/specs/CBG-PLAT-01/evidence/native-dependency-imports.txt b/docs/specs/CBG-PLAT-01/evidence/native-dependency-imports.txt new file mode 100644 index 00000000..3d9caf95 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/native-dependency-imports.txt @@ -0,0 +1,63 @@ +/tmp/codebasegraph-pr153-platform-862a8f88d485/current-extension-imports/osx_arm64-fts.lbug_extension: Mach-O 64-bit dynamically linked shared library arm64 +/tmp/codebasegraph-pr153-platform-862a8f88d485/current-extension-imports/osx_arm64-json.lbug_extension: Mach-O 64-bit dynamically linked shared library arm64 +/tmp/codebasegraph-pr153-platform-862a8f88d485/current-extension-imports/win_amd64-fts.lbug_extension: PE32+ executable (DLL) (GUI) x86-64, for MS Windows +/tmp/codebasegraph-pr153-platform-862a8f88d485/current-extension-imports/win_amd64-json.lbug_extension: PE32+ executable (DLL) (GUI) x86-64, for MS Windows +/tmp/codebasegraph-pr153-platform-862a8f88d485/current-extension-imports/osx_arm64-fts.lbug_extension: + @rpath/libfts.lbug_extension (compatibility version 0.0.0, current version 0.0.0) +/tmp/codebasegraph-pr153-platform-862a8f88d485/current-extension-imports/osx_arm64-json.lbug_extension: + @rpath/libjson.lbug_extension (compatibility version 0.0.0, current version 0.0.0) +/tmp/codebasegraph-pr153-platform-862a8f88d485/current-extension-imports/osx_arm64-fts.lbug_extension: + name @rpath/libfts.lbug_extension (offset 24) + cmd LC_BUILD_VERSION + minos 13.3 +/tmp/codebasegraph-pr153-platform-862a8f88d485/current-extension-imports/osx_arm64-json.lbug_extension: + name @rpath/libjson.lbug_extension (offset 24) + cmd LC_BUILD_VERSION + minos 13.3 +/tmp/codebasegraph-pr153-platform-862a8f88d485/current-extension-imports/win_amd64-fts.lbug_extension: file format coff-x86-64 +TLS directory: +The Import Tables: + DLL Name: libssl-3-x64.dll + DLL Name: libcrypto-3-x64.dll + DLL Name: KERNEL32.dll + DLL Name: MSVCP140.dll + DLL Name: WS2_32.dll + DLL Name: CRYPT32.dll + DLL Name: VCRUNTIME140.dll + DLL Name: VCRUNTIME140_1.dll + DLL Name: api-ms-win-crt-runtime-l1-1-0.dll + DLL Name: api-ms-win-crt-heap-l1-1-0.dll + DLL Name: api-ms-win-crt-math-l1-1-0.dll + DLL Name: api-ms-win-crt-locale-l1-1-0.dll + DLL Name: api-ms-win-crt-string-l1-1-0.dll + DLL Name: api-ms-win-crt-convert-l1-1-0.dll + DLL Name: api-ms-win-crt-stdio-l1-1-0.dll + DLL Name: api-ms-win-crt-filesystem-l1-1-0.dll + DLL Name: api-ms-win-crt-time-l1-1-0.dll + DLL Name: api-ms-win-crt-environment-l1-1-0.dll + DLL Name: api-ms-win-crt-utility-l1-1-0.dll +Export Table: + DLL name: libfts.lbug_extension +/tmp/codebasegraph-pr153-platform-862a8f88d485/current-extension-imports/win_amd64-json.lbug_extension: file format coff-x86-64 +TLS directory: +The Import Tables: + DLL Name: libssl-3-x64.dll + DLL Name: libcrypto-3-x64.dll + DLL Name: KERNEL32.dll + DLL Name: MSVCP140.dll + DLL Name: WS2_32.dll + DLL Name: CRYPT32.dll + DLL Name: VCRUNTIME140.dll + DLL Name: VCRUNTIME140_1.dll + DLL Name: api-ms-win-crt-runtime-l1-1-0.dll + DLL Name: api-ms-win-crt-math-l1-1-0.dll + DLL Name: api-ms-win-crt-heap-l1-1-0.dll + DLL Name: api-ms-win-crt-locale-l1-1-0.dll + DLL Name: api-ms-win-crt-string-l1-1-0.dll + DLL Name: api-ms-win-crt-stdio-l1-1-0.dll + DLL Name: api-ms-win-crt-convert-l1-1-0.dll + DLL Name: api-ms-win-crt-environment-l1-1-0.dll + DLL Name: api-ms-win-crt-filesystem-l1-1-0.dll + DLL Name: api-ms-win-crt-utility-l1-1-0.dll +Export Table: + DLL name: libjson.lbug_extension diff --git a/docs/specs/CBG-PLAT-01/evidence/nested-scan-result-summary.json b/docs/specs/CBG-PLAT-01/evidence/nested-scan-result-summary.json new file mode 100644 index 00000000..3af696d0 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/nested-scan-result-summary.json @@ -0,0 +1,10 @@ +{ + "source_head": "862a8f88d485d5bd257ebd9456c194156fd4ee94", + "fixture": "filesystem-current-source-probes.rs", + "log": "filesystem-current-source-probes-run.log", + "baseline": 200, + "outer": 85, + "minimum_inner": 200, + "outcome": "failed invariant; nested scan consumes outer cursor; macOS ARM64 native", + "production_full_cleanup_reproduction": false +} diff --git a/docs/specs/CBG-PLAT-01/evidence/review-scope-and-results.json b/docs/specs/CBG-PLAT-01/evidence/review-scope-and-results.json new file mode 100644 index 00000000..aee5d72f --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/review-scope-and-results.json @@ -0,0 +1,34 @@ +{ + "version": "3.0.4", + "head": "862a8f88d485d5bd257ebd9456c194156fd4ee94", + "supported_platforms": [ + "macOS ARM64", + "Windows x86_64" + ], + "fresh_passing_tests_completed": { + "xtask": 42, + "platform_lifecycle_native_db": 58, + "storage_lock_family": 30, + "storage_integration": 10, + "copy_metadata_macos": 1, + "real_cli_recovery_cancellation": 4 + }, + "fresh_failed_tests_completed": [ + "adapters::cli::tests::dispatch_materialize::watch_help_documents_parallel_default_and_opt_out" + ], + "hosted_ci_run": 40330652083, + "hosted_tested_merge_sha": "b7c1b3edf5d50508932b407d237452fafd100539", + "hosted_merge_source_difference": [ + "CHANGELOG.md" + ], + "hosted_artifact_jobs": "skipped, not passed", + "old_findings_not_carried_forward": [ + "build direct-child-only teardown", + "build PID-only recovery authority", + "unguarded raw lbug database handle lifetime", + "unchecked native Unicode projection" + ], + "fresh_selected_passing_total": 145, + "reviewer_probe": "new macOS multi-batch nested directory scan fails: baseline200, outer85, inner200", + "final_report": "/tmp/codebasegraph-pr153-platform-862a8f88d485/report.md" +} diff --git a/docs/specs/CBG-PLAT-01/evidence/selected-lifecycle-runtime-tests.log b/docs/specs/CBG-PLAT-01/evidence/selected-lifecycle-runtime-tests.log new file mode 100644 index 00000000..184650fe --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/selected-lifecycle-runtime-tests.log @@ -0,0 +1,10 @@ + Finished `test` profile [unoptimized + debuginfo] target(s) in 0.10s + Running tests/refresh_recovery_process.rs (/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/refresh_recovery_process-a831b40dcd3acc3b) + +running 4 tests +test legacy_worker_pid_recovers_without_signalling_and_respects_writer_ownership ... ok +test lifecycle_faults::authenticated_cancellation_cleans_loader_and_retries_pending_edit ... ok +test lifecycle_faults::timing_wrapper_keeps_loader_in_build_containment ... ok +test lifecycle_faults::unavailable_guardian_preserves_paused_tree_evidence_until_emptiness_is_proven ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 20 filtered out; finished in 499.03s diff --git a/docs/specs/CBG-PLAT-01/evidence/selected-platform-test-names.txt b/docs/specs/CBG-PLAT-01/evidence/selected-platform-test-names.txt new file mode 100644 index 00000000..c7e8ceda --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/selected-platform-test-names.txt @@ -0,0 +1,58 @@ +adapters::mcp::daemon::tests::failure_snapshot_is_bounded_private_and_replaced_atomically +adapters::mcp::daemon::tests::launchd_status_parser_reports_running_and_failed_jobs +adapters::mcp::daemon::tests::manager_missing_messages_are_recognized_without_localized_status_parsing +adapters::mcp::daemon::tests::older_daemon_state_without_start_timestamp_remains_readable +adapters::mcp::daemon::tests::reconciliation_is_idempotent_and_fails_closed_on_identity_mismatch +adapters::mcp::daemon::tests::service_manifests_quote_paths_and_request_single_instance_restart +adapters::mcp::daemon::tests::stable_ports_and_service_ids_are_repository_scoped +adapters::mcp::daemon::tests::systemd_status_parser_reports_running_failed_and_missing_fields +api::lifecycle::tests::claude_desktop_path_is_rejected_for_loopback_http +api::lifecycle::tests::cloud_targets_require_public_https_without_exposing_loopback +api::lifecycle::tests::codex_toml_block_round_trips_windows_style_arguments +api::lifecycle::tests::codex_toml_reject_different_leaves_existing_file_byte_identical +api::lifecycle::tests::daemon_port_selection_migrates_collisions_but_rejects_unavailable_overrides +api::lifecycle::tests::dry_run_language_detection_recognizes_webassembly_case_insensitively +api::lifecycle::tests::hermes_install_migrates_singular_marker_blocks_without_dropping_existing_entries +api::lifecycle::tests::hermes_managed_block_round_trips_windows_style_arguments +api::lifecycle::tests::hermes_reject_different_leaves_existing_file_byte_identical +api::lifecycle::tests::http_registration_can_be_inspected_renamed_and_removed +api::lifecycle::tests::http_registration_migrates_only_the_recognized_stdio_entry +api::lifecycle::tests::http_registration_shapes_match_every_loopback_harness +api::lifecycle::tests::install_removes_legacy_k_wiki_entry_in_the_same_file_update +api::lifecycle::tests::json_reject_different_leaves_existing_file_byte_identical +api::lifecycle::tests::managed_instruction_block_replaces_stale_guidance_and_preserves_surrounding_text +api::lifecycle::tests::matching_entries_remain_idempotent_across_json_codex_and_hermes_configs +api::lifecycle::tests::mcp_agent_hook_persistence_unions_existing_clients +api::lifecycle::tests::native_client_commands_preserve_every_server_argument +api::lifecycle::tests::refresh_failure_classifier_retries_source_changes_and_worker_exit +api::lifecycle::tests::registration_rename_deduplicates_matching_json_destination_atomically +api::lifecycle::tests::registration_rename_preserves_codex_entry_and_rejects_conflicting_destination +api::lifecycle::tests::reinstall_activation_boundary_keeps_new_state_on_post_activation_failure +api::lifecycle::tests::reinstall_activation_boundary_restores_backup_on_activation_failure +api::lifecycle::tests::remove_mcp_server_dry_run_reports_previous_without_writing_and_write_removes_entry +api::lifecycle::tests::remove_partial_state_tree_rejects_symlinks +api::lifecycle::tests::resolve_mcp_target_rejects_aggregate_unknown_and_invalid_scope_targets +api::lifecycle::tests::resolve_mcp_target_treats_explicit_paths_inside_repo_as_local_and_outside_as_shared +api::lifecycle::tests::resolve_mcp_target_uses_expected_default_locality_and_paths +db_writer::tests::guarded_database_failed_native_open_releases_exclusion +db_writer::tests::guarded_database_move_and_connection_retain_physical_family +db_writer::tests::guarded_database_native_path_rejects_full_non_utf8_before_effects +db_writer::tests::guarded_database_native_path_rejects_transforms_before_filesystem_effects +db_writer::tests::guarded_database_readonly_rejects_parent_without_coordination_write_access +db_writer::tests::guarded_database_rejects_symlink_and_hardlink_resources_before_open +db_writer::tests::guarded_database_relative_native_open_uses_one_absolute_guarded_resource +db_writer::tests::guarded_database_symlink_parent_traversal_cannot_bind_another_native_resource +db_writer::tests::guarded_database_unicode_alias_retains_physical_parent_exclusion +db_writer::tests::guarded_database_unwind_closes_native_handle_and_releases_exclusion +db_writer::tests::guarded_database_windows_encoding_policy_checks_the_complete_native_path +process_lifecycle::tests::accepted_nonblocking_socket_is_normalized_for_control_frames +process_lifecycle::tests::bounded_protocol_rejects_unterminated_control_frame +process_lifecycle::tests::capability_json_is_private_at_creation_and_after_replacement +process_lifecycle::tests::retired_startup_rejects_late_guardian_before_child_creation +process_lifecycle::tests::slow_trickle_cannot_extend_control_frame_deadline +process_lifecycle::tests::workspace_without_global_state_remains_protected_by_guardian_lease +process_lifecycle::unix::tests::absent_proof_never_establishes_emptiness +process_lifecycle::unix::tests::fifo_writer_controls_empty_proof +process_lifecycle::unix::tests::proof_without_ready_retains_live_writers_then_allows_empty_recovery +process_lifecycle::unix::tests::recovery_rejects_regular_files_symlinks_and_replaced_fifo_identity +process_lifecycle::unix::tests::stopped_owned_child_is_not_an_exit_and_resume_or_cancellation_still_completes diff --git a/docs/specs/CBG-PLAT-01/evidence/source-snapshot-sha256.json b/docs/specs/CBG-PLAT-01/evidence/source-snapshot-sha256.json new file mode 100644 index 00000000..7ff62ed3 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/source-snapshot-sha256.json @@ -0,0 +1,229 @@ +{ + "crates/k-wiki/src/adapters/cli.rs": "b5d5d054a2a063f5b8f881547aa3d34c75aae74dbf94465a0a5ad353c1926bf4", + "crates/k-wiki/src/adapters/http.rs": "8ae80aa4601a8776369cbf6426f23ab986c51626d95673561673fb29663f2aa4", + "crates/k-wiki/src/adapters/install.rs": "7be961ca1516892e4b63f4c32a8536996bdca1e1f5447d294028972b20c5e4bf", + "crates/k-wiki/src/adapters/mcp.rs": "4baad85ade6fcf8f2eb7a69b5c07929bacc783e65d2bb8c3192495604f2b804d", + "crates/k-wiki/src/adapters/mod.rs": "9fba7cf7de016731656f301a2ff86a7334ed898bced55df89650511422e5ef84", + "crates/k-wiki/src/api/contracts.rs": "019f08b4dad8f1c250b0b01de71f16d262056970979e84dc1c0ae23f45f553ea", + "crates/k-wiki/src/api/facade.rs": "559933fe8aa20ac49582617993a31df620f0e89360151fc3ddc0d53ac0a07bdf", + "crates/k-wiki/src/api/mod.rs": "cecdbbe2ddda8302be2e99e8e95afe32910df6aa367dc3065270d91cb7bc5145", + "crates/k-wiki/src/api/registry.rs": "596fbe985b6e2af9e5cd0b5653baca585572cf9904f9732c7eda9464188ad0d1", + "crates/k-wiki/src/authoring/bundle.rs": "4cc974d441227b576dc0ccbb873ea7fe232e1f87f4ecf01b52fc927357e41e32", + "crates/k-wiki/src/authoring/mod.rs": "739484eaf8e3e02614c9ef74c36508fb6751aafcb3152ecbe68f9bd73862d533", + "crates/k-wiki/src/authoring/page.rs": "4ac9552f9407cc8511c874d1d12e4c290eec933345c51045b0c179a5fe40aaea", + "crates/k-wiki/src/authoring/write.rs": "f5b6822859ca46e37c7121420de749eacdcc454863f12261b48e5fd345821dbf", + "crates/k-wiki/src/bin/k-wiki.rs": "7688bb538d30ed6d3c1aa5147f52b604f364efd52104466233ba71b88ccfafba", + "crates/k-wiki/src/bundle/mod.rs": "89648f228ce2bb1f60106ac451c68c0cfae17d407a7898c4e82e7daa2230614f", + "crates/k-wiki/src/compiler/mod.rs": "ba3be8236266cb742b5432484cc8ec4042e3da47dd74259329008ae25a876365", + "crates/k-wiki/src/conformance.rs": "d70c4149a337268e82d4cb1bbd9cb069c423c3b59f452de9a19f03eab71bb108", + "crates/k-wiki/src/diagnostic.rs": "05d96b05a6c569e7378e6d61ee7ad73e524e60ee0cf29d02537a6be75e2a1204", + "crates/k-wiki/src/graph_context.rs": "23fba237d4b6117ac914965a87504a7ffec4c02b958b887f536f7d86f2293e1c", + "crates/k-wiki/src/lib.rs": "b38e9b31eabda34565ab5be588cdc291d67006204ba27385b02634be1be24c8c", + "crates/k-wiki/src/memory.rs": "8e6402586f2190e536ecb1d6144735a77b08640ef85e554c148d0049cbfbaeea", + "crates/k-wiki/src/model.rs": "37495fe19bdb12bcf4247b06b1cb534891e834cf1b13becade4f917e8bdaef57", + "crates/k-wiki/src/projection/mod.rs": "91b213bc252e2b895f1fef6e70cde41f93f2989bc7a98712d13a6b99b9845594", + "crates/k-wiki/src/refresh.rs": "fa3c1e2199b8ef6ed0a50e8c59d3e5b0819e896ba262673d071f91175d1b1b5d", + "crates/k-wiki/src/render/mod.rs": "72d933e017228db06805568232c3dab45ad9bb2caf9336e954b7442f5ed6e8dd", + "crates/k-wiki/src/search/mod.rs": "09b2dc7d91aee673ff137f1d09ba0a4320a42f39972ea0ebc45b3f6a723914b3", + "crates/k-wiki/src/service.rs": "9aee89282f778101705752e4f597f3b1642b0d92cb464372ab41cc169833a9e4", + "crates/k-wiki/tests/api_integration.rs": "1bbfa6812a737c07d7f3b566e82125e24aefdd54409eaf83faa1877b0cc04c00", + "crates/k-wiki/tests/authoring.rs": "ccf184723141f0a80c5015d18e467deb70480a57a3da099ffc34207997414f5c", + "crates/k-wiki/tests/bundle_reader.rs": "e823f28854b532e109525c961151164cec00c4f24d391249daa428bd18c44831", + "crates/k-wiki/tests/compilation.rs": "036e0c6ad7a6ecca6158d3b04a84032b1ddf83aec7f9519a0094ddfc91ec7a6d", + "crates/k-wiki/tests/conformance.rs": "2110c007ca8bcb2c77be5f5b2592ab8865d26b422bb4ec2cf0501243f0c27f4d", + "crates/k-wiki/tests/diagnostic_transports.rs": "6340ce2a5d43ac63d947ac44909b69bd9cb5129fd2e3e80600e623eb89520a59", + "crates/k-wiki/tests/diagnostics.rs": "7b6e8cc14482d99a004f2115607da0ad675d9b113b467d194b97ed3081abca54", + "crates/k-wiki/tests/memory.rs": "a4b8b4e03c2ed19d6169bab98291f89d81108736d642fb3aec3657fa08949262", + "crates/k-wiki/tests/projection.rs": "6add0a4bbc02401cb5ebd733ebba64d7e47e3c6f97f60d842f6cbc40df2da314", + "crates/k-wiki/tests/refresh.rs": "a8b90c02df7a6ced0ef78b9055ba25fc92cef0f2af2b00d9f1383971114ef82d", + "crates/k-wiki/tests/rendering.rs": "ea6328e283ec169824fad347d446a79e9ef0e4f5d10fcad8664bc862b991b014", + "crates/k-wiki/tests/search.rs": "73cf862aa1e154bb830f43d6d64d237ecd0e7f9924af7d3add37d4a93f58e002", + "crates/k-wiki/tests/transports.rs": "4908e8f16af4e57fbfe56158986d7c4cf807f5bbfdf4ca85203f48ada1959830", + "crates/xtask/src/main.rs": "d8561f5d8ba107e599890c825522f0fc518581bd52702c2115822f0f661d7099", + "crates/xtask/src/native_tests.rs": "ada965856dbc889902c68a01c1e5fbe33c4a050dc84e915a5e07244162d7e5a4", + "crates/xtask/src/native_tests/shards.rs": "7420672dcfb926caf3e12c6483e3f0349e11ef11cb37a4d603811f43797c42f3", + "crates/xtask/src/release.rs": "dc74317037a68df27c98c24678d2b46589ef64fc1ef0d484b415cae33435ebd7", + "crates/xtask/src/release/workflow_tests.rs": "549e2b6cfabfe0e60717dc186ecf94b1a3e598d7ee670857460f1f3bb1b59861", + "src/adapters/cli/agent_hooks.rs": "734420d08c51c98ca2a9439bc866bccec8477cbf734ff6e3a3eea375e501dbd5", + "src/adapters/cli/dispatch.rs": "2c0d983710e214cbaa7513c6c3815fc61911ba9e0f1b2fadd50e7158cd599045", + "src/adapters/cli/format/help.rs": "dcc1d0e9500dc21fad4f6635a46268a7a06d543cc1c2e050d63380ea3e3b0ec8", + "src/adapters/cli/format/mod.rs": "93cce74f87ede48515929a7bdd98bbcdca1538de2f43d1a974a616de5f08761f", + "src/adapters/cli/graph/mod.rs": "5120e540053c40aeafd185d3061f2381df94ca81d6ff2386008302d9dbb63325", + "src/adapters/cli/graph/options.rs": "29a70791cb1446b6adaea9ffaa7b5ac631e254eb6ec9bbfd44687a2692a27212", + "src/adapters/cli/install/command.rs": "1adbd5cbf46ee646d09de8ce2cb41da4f05495c27980cf9a5ae1c5ee209c4f94", + "src/adapters/cli/install/mod.rs": "9df3b6b37f535b46a4dbc7c8997cd9d3a123962cc8ad12acb3f5f4daeba4ee43", + "src/adapters/cli/install/options.rs": "a89014b1ff165f80e2dfa947132fc7a9884d50c0c22ceca4e3f12df9247bf4e0", + "src/adapters/cli/install/verify.rs": "6666efd44a7462135900ccb89d917b467f48f23e4ac334271f1647b038c5963b", + "src/adapters/cli/materialization/command.rs": "d61558d4b8a33151a12d143ac41a8943f57fef31b16c439b43b1911816b6f6a5", + "src/adapters/cli/materialization/mod.rs": "3dcc8f7e40a2a48aef8428482eb450076abba32b1e05e54fe34c2824522c1b03", + "src/adapters/cli/materialization_input.rs": "c8963a4b67d7363d3f295de353a97af3db6096578e36f57254aff18e796c0ab7", + "src/adapters/cli/mcp_command.rs": "b74ba5bed6db496ddc9028cb5cdb23396e080300bf99a2bc851cba77722b7239", + "src/adapters/cli/mod.rs": "c574c9f1e30d211fee7ad12d8675c5f52bc87dc2a1d1b2985fe5f030f9f5bd43", + "src/adapters/cli/reinstall.rs": "1fa6fe07302384e8187ec466f8b605051e11c7a679643f1147b5268da8f9b2ff", + "src/adapters/cli/setup.rs": "42e00faa6605ffede89da215f71b921ad1974c46b5ec170ad65ace1ff7b56ef7", + "src/adapters/cli/tests/dispatch_materialize.rs": "af6bcdd98f62aae44e370b2d4ddbf17dd34cb0246a49d665d3004d5abfc5256a", + "src/adapters/cli/tests/fixtures.rs": "63d2aa157ff043e5ccbf6e010074feb3e6ad1f9682d91603382f686eb676facd", + "src/adapters/cli/tests/graph.rs": "00340ebf27a5738c4dee1f0db3203f05ac80055333115ef6e9be3aeae42f129a", + "src/adapters/cli/tests/install.rs": "64c2b26cd0110c52d8929ea76425c505a3eb2839dd1a4179cbda1cfd8a1c97f8", + "src/adapters/cli/tests/mcp.rs": "22cd4cef51368a0f3050641e7e437d7fbc4d798e6337b87c3bf1b446cf3081bc", + "src/adapters/cli/tests/mod.rs": "4af78fca9d33196268b95f121bafe908771853e10c29bdac0e1dc3865bf2770d", + "src/adapters/cli/tests/watch.rs": "19e24cbf9bf8cd8f58d8eaae1b46c61ed169743536858145cf9d3d68585a89b0", + "src/adapters/cli/uninstall.rs": "981bbdb419a89973a57d3e92c2cd7c6b569eaff9b904bf10bc8e60efb6763c03", + "src/adapters/cli/util.rs": "89ba0e9f636551828a969fdc262e0ba89e08f9789755bbc196f0b892e72e429c", + "src/adapters/cli/watch/command.rs": "d239a949f9a39a85ba37addfbf8ec036d6f9764cb402c5666f41967dbe37ae56", + "src/adapters/cli/watch/mod.rs": "57e8b098f971e6287f487e6f144baa1881c250c73e12bcc9e0431c3777243183", + "src/adapters/cli/watch/options.rs": "ca40d91b6f36edf0cf0f550ddecef629262dd2600412ddf94ef7c497a835f4b8", + "src/adapters/cli/watch/output.rs": "112c20c3db88bcaed49dd39a31f937bc378e3aa875d75b05b5a304ac2f6ba379", + "src/adapters/mcp/block.rs": "f353cba3a29726be0843f188eadebe1f9c56caabd1700ebe0507882b524de23f", + "src/adapters/mcp/daemon.rs": "67206e7eefac851d292d4f8a48eb0492b004f3df23886820bee17b4ce2f0c359", + "src/adapters/mcp/dispatcher.rs": "ee9b242632c374921435978f81407c190158d58a5d462fe7c6496e2a358471c5", + "src/adapters/mcp/http.rs": "12d26405a1d678e4c0b2432eb9b3ea28f0d834d6ba7fc45b91c363ac2ab8657b", + "src/adapters/mcp/mod.rs": "c9ce96984e78874aa8a08784cbd6b85cba7dc83c97f0f81c9e1ea356f46ede1e", + "src/adapters/mcp/options.rs": "4bb7a5eadd19606cf9cbe9922680c3be62b16a16fb690aa7cf55047ff10e4c9b", + "src/adapters/mcp/protocol.rs": "e46b17bc3295f5c1dafcf5c5237cf7f6a5ef4aed5e2000139f978eb7ca43e799", + "src/adapters/mcp/refresh.rs": "522e25f8ff1112aed77b221e208eff69fe8df152e6e8527013a4484fd5dca829", + "src/adapters/mcp/state.rs": "14aca0cb1fd70a5cf05482583c4d1160da242a0176b00aacb915f8625967fca6", + "src/adapters/mcp/stdio.rs": "5b305dce4d89bb50c07699605b9114777933943694e9a2eb9cab5a2dabe55b38", + "src/adapters/mcp/tools.rs": "b70b1c7ecc2933852787d7442cbcfc560d244641a8002afa0f2283de9ee29d6b", + "src/adapters/mod.rs": "7ac875addaf5c578802e143a7de66420494288222bc430afe19196a611f235d8", + "src/agent_hooks.rs": "83b867b31a69d80c0794587ce58b118bec4862ad2a5251804c6ffd8e07629c19", + "src/api/boundary_tests.rs": "e6756a457ce5f5ce02e700ba7af9207709d68b1eb4e458ebc435b2929ba2d642", + "src/api/catalog.rs": "e8ae3e4c3071a1ba247a6db5f58350110a018fde88f40d608c670b1659efef01", + "src/api/catalog_support.rs": "221bb3bfc461a15ebeb6a31b518964edbb179b3969f2000f7ef065ac52011ca4", + "src/api/context.rs": "da07ae3b85d43d45c69cb89739c0f1ccc7d4234ed837fe1bd4fd05c07071a677", + "src/api/contracts.rs": "6cedee070d6724fdc29c76363988f3aac804931f3df9b86bad97f0845ff1be3f", + "src/api/core.rs": "b8acfa792f984269604512c2e35598e74b515bf060cca60c5b200e74cf6f317c", + "src/api/execution_context.rs": "1d0ae6f7f54a28ecc84735045825a870673a0d1d257f867711613bcb584332d2", + "src/api/facade.rs": "addc21ef57da7daeb08033529a76f246121fa8ac48ba3ea21ed0af90c77193dc", + "src/api/graph_read.rs": "d821e8d7c81ce44bcdb0e1ffd915fdd4321c0f4b09a023884500f300ede125d6", + "src/api/lifecycle.rs": "6704a451b019e87af9742151cc8feaf627dc08a0c05664ff0f6ba783d7fd35cd", + "src/api/materialization.rs": "b2ba396562acc074e36d569ee5e03a380061082de7b33669451885329c89ff1c", + "src/api/mod.rs": "2ef0485007ca6758f9d30fbe94a371425db70e1882a346818937c106938b22ae", + "src/api/normalization.rs": "56b1f81d7157cead4991bc47d709838d81aa0eab9e262d3ad24187fbc692e3d9", + "src/api/presentation_support.rs": "3e088993064b6eb7a5c0d4e6d6aab9e319cd6ebe74225e60495c89fea42d31c7", + "src/api/presenter.rs": "4486d7f007e20df0b057b6cf505b05fee96af835d6ffa4cd15b90d8a399945a2", + "src/api/refresh.rs": "2cbe8222d464e68baf6234a1ac9bcc61eb96c78a0b5a9fece815ee8ba6c3eaf6", + "src/artifact_store.rs": "b63b79ba4dbe311f0e39ff69e876b120695017e077023bcb532d18c6bccbb7d9", + "src/bin/codebase-graph.rs": "88109d11795b0e7ad653237a2c2e4f29ff4dcf7a6038e046da88423df9c10305", + "src/bootstrap.rs": "46029abcc79b8f23a99b630cc3e57cdb94e5cace1be0adc47d55819075ef7645", + "src/coordinator.rs": "a11b7ceb26cc38e7e331ec23e07c752fd00197fea2abede8f9dac6dfbd8d5879", + "src/coordinator/tests.rs": "6d79e83da5c7160905a3a0e165881dcab7c87bc9bb39212a301920eb55ebe912", + "src/daemon_service.rs": "354ed57fe7870e9150bd91c1fe047c1186ea972a9191ba4ded882d83bdd66e42", + "src/db_writer/access.rs": "b390915f919bd6a68511afe858335cc929d3c082f706894c561dbb804904451d", + "src/db_writer/extensions.rs": "cf35d63b79c080575be1647f68da84c4723a5e62688eaa9915b066e68516ced3", + "src/db_writer/mod.rs": "dcf0a934c4fa96d95460a8c1e0fed6c9a7f78ae3aea1f0cf579aa0302fce9954", + "src/db_writer/phase.rs": "7f2981688b431a609f5be7c2a93c0dbb55e1a8218398a5aa9e25da48ee43c837", + "src/db_writer/request.rs": "181ebf945156a82d0c894daf4d8a478a96eb51ca638a03b2a62ccef534ab4693", + "src/db_writer/rss.rs": "be73c087697de048a95fe1935de0b1fc2ee4a3dd6634db02f72f7f627885c41c", + "src/db_writer/schema.rs": "64636ac494699d00df83233df66c44882c1fc5c94ad5eb3a6c16075cf04c002e", + "src/db_writer/tests.rs": "2249074e24508baa735fea6f27a9c5f6a7163d15215879ebb46549c418e6e42b", + "src/db_writer/write.rs": "e5e1856ceed991087ed69d5bf337bcd52ebbde0118b74f528438220cf4af4897", + "src/error.rs": "760cdf7c7744434ca4e4d60f701e02bfe99ec19c3c4745d8d8011c9a3cee93e4", + "src/execution/mod.rs": "408f98c957a25205a58a1eb20b94b2ae16d538179b9be31d7bde3994b4050724", + "src/execution/parallel.rs": "2c0973cc24637da4841d4603fb2b2df6f35de6ef6cb8a91ae89e779b8dcddabd", + "src/execution/plan.rs": "f6319948d6b41c4de24a21e88f4df6f826151cfd464e42bd244b7cce0f43430a", + "src/execution/run.rs": "35f2677f17822aac2ad90f0af1b0dc6f09c6f222acd78233769ee52f8e4c0f31", + "src/execution/timing.rs": "4525f8043b01d32a3f2b3616bd1830a3038908661355f9b3b0e909237f9a5e9b", + "src/hash.rs": "c8eace50b2831cbde1646b4693e625aacc464553064682b889ab62baaaf0e4fb", + "src/lib.rs": "509f314907f3860c8408f1ed32f8e94867ba79d906b01d7de2e7cc253910d751", + "src/materialization_worker.rs": "9512f83683901e5186ec3262e360ca733b39175f37a4cfb812441d55ad3daf55", + "src/mcp_client.rs": "31dcde1ae03101e639747fbe6e92dff683a13a946d49af7d14fa0ca6ab79ae3e", + "src/normalize.rs": "e5ab94bb1d784601b13172c70228b5a1937672a7812f5336964de2c302914fe0", + "src/parser/captures.rs": "3fcd1f1aad682c733abdd497736f5366b8f2b04ad072cf1a06369e21c47ac0d6", + "src/parser/fields.rs": "13db15d6ff0c91885ac47332008cf48b0b1621f625e4eacb95d69152a1dcf2f0", + "src/parser/markdown.rs": "ae21b299c40cdd223e4d67e647cb5ad1ff75453ba531d76b4534b24a83b72047", + "src/parser/mod.rs": "255b4551bd0f95f571de99ff7fff4bd3a61c0a03635285f5f303b7c7adc4f578", + "src/parser/tree_sitter.rs": "b644d631d0de277a91bbeefc6df71e3429c5e2da9f853f27c8242ed0e52aabfa", + "src/parser/wat.rs": "ccd06037725d1be1be19431be6fd7d193551f9836b88e4628e17f688cfdbfe99", + "src/partition_builder.rs": "3a298f586f8f360b351a54f68215d28a93715cf0a499913674e39a520a2f95e1", + "src/process_lifecycle/mod.rs": "75b22b2db8dc471ed7d89e6982c9019b0a232bed411b9ae71b76b611d19241f6", + "src/process_lifecycle/unix.rs": "bbe2c2cc599f9472047faaad821eacb813653082bb16f713118636d7717093a5", + "src/process_lifecycle/windows.rs": "8e77aae5e43d84c59c3b143a91ca969a921f610b3abf7d1ca1e04767339e439f", + "src/profiles.rs": "7594fcb7cf495f8094ecbafcb269975fdb071cf98be6246a09619cf495efce37", + "src/protocol.rs": "a890e48f19cc6a21d5f753bf98b614e2c9d03896db7b830c0a449807a7d91c72", + "src/scan.rs": "04741059c6992f59f917eec89514a4674cf7fce80727d06f3cd32ffd2a346cb9", + "src/search_index/build.rs": "b7bb1a176951c81a2fd1d4bd0276ec92c132334d5bb6f12cb4c7b508af9ec875", + "src/search_index/io.rs": "ae4a620bd4958de7f5758322363e5aa367697106275dd8c2f54e4c6dddf59f51", + "src/search_index/mod.rs": "baa8c1ef3f4d840d757973baae21ee55491da190fad4228dc7fb13f9105b1fef", + "src/search_index/model.rs": "802670178e9af23a2ae615a51cdb08365ba1b0f8e441b477f617f6277f3a0389", + "src/search_index/read.rs": "103c69d3c8de3f45d33005cc2eb395bd5eaa3dc4fd79522699a80269c38c0940", + "src/search_index/tests.rs": "745f994751d697166e0236ee24a6a032ac5fd3903c564d12e97611809c9b9e9e", + "src/source_selection.rs": "c68d19786b47a1e4209d2d8a4bc62e095ddc583a051a47e93400435f0b770e16", + "src/staging_writer/accumulator.rs": "2fa14e6f977981fa88ad44024bff7e3cd4fe33e8feebfc48e1ca45d919829915", + "src/staging_writer/files.rs": "2c65ec06747cca9a551a9c0f0ec9a5fab2fa70adebbe3fff0289d1bde6e4bbaf", + "src/staging_writer/merge.rs": "00d7c54be7376cd77c8ab9656f6fdbf27760cc1d5c839b565ea7b04b714fb4f1", + "src/staging_writer/mod.rs": "d54bfd219e84640919ccc8ba45721f3b54b0a5dec848213bb1cb581bbbf77909", + "src/staging_writer/result.rs": "4e0e8a8baadeb8e7d1904945ab11bdffec40dc68319451d0b3898d67baa7cac1", + "src/staging_writer/rows.rs": "5e5afff195f6707c675a96ac1925d609e22a554156b592b3fa4c5e4e4766cc8b", + "src/staging_writer/spill.rs": "a1870eac16d7299ef937178b9520e68ff7603a308b7a5f59ed1b63c248035efd", + "src/staging_writer/tests.rs": "a500f7b2ad80e601a73e9dd0780106d305d74f842f654757099bf5daf69c3548", + "src/staging_writer/writer.rs": "7fec0e506c03a0707f92191e40fb21a2ccf0b0beb32d175ff10ae96315de4244", + "src/storage/atomic.rs": "ebacf3af507cf0448e8747065d3fdb8e64fc136a598ff7f972c5b65aeba4409f", + "src/storage/containment.rs": "519c4f58c1d4be02970775b9ac1c341b5d05ef4523ae31909f429f804824f482", + "src/storage/direct.rs": "faad998af4467a00fd0cd946ecab5dbb3628c7bcc3aa1f24ace166472f1149d2", + "src/storage/inventory.rs": "37ebc44c05991cebc6ac6528cea320a002cddf52b744b051693404cb0fd83159", + "src/storage/layout.rs": "30ca57a967b8f3ff5e72e0af6e4edc63e5ad6bb191dc80e3894bb64966038987", + "src/storage/locks.rs": "c9e62ce647dfe207e6c44a7f9029b734bc1ff5dd319fccc60c1a87c7d6a4d88b", + "src/storage/maintenance.rs": "061191affdacb910abe21070c25ae3cc2979db2f87ea0127274dce61e1e19c9e", + "src/storage/maintenance_admission.rs": "a37383188d1bcc14337562c84f410cbe60d7297ba200791b5d2d493a157876df", + "src/storage/maintenance_automatic_direct.rs": "7516ebce83df47d3067f2538f54231c13fb435411599174a304aa04a22a1965e", + "src/storage/maintenance_backup.rs": "ef38f7d1c621f1f3b6d9deafdae1d2a72da63b74f8f5c024fddaaf2a9c983bd7", + "src/storage/maintenance_budget.rs": "2d15689d5811386c87505cf8b89a0c90b066f781020f18e9fe5a69aa4ba5d8aa", + "src/storage/maintenance_candidate.rs": "2d63f7e9950cd82784f84fb3cbffcb4ff266508949161ef65e5934d02ae4dd17", + "src/storage/maintenance_controls.rs": "e849ddc57abebbb92c73aee720506a3d3ae4be78ce0e70ce6f2faaad9f72e434", + "src/storage/maintenance_generation_engine.rs": "639a9857928a57504fb059c5650f4a24ee7cd4cb7e4b6b8e31ab1d4d6614692b", + "src/storage/maintenance_generation_gate.rs": "b3f6ef5741d797a0fa88b13a53e8559eb57048bf81b7ce44bd0cdccf5fcb26eb", + "src/storage/maintenance_generations.rs": "3d2d2d0365bb86774fb65bddc61b11f6c79fd151db33a52cd2824bfcddb05c66", + "src/storage/maintenance_journal.rs": "d9f903b20bd05614af5246a70364e4c17b53f250b24dca242d673f83f52bbd48", + "src/storage/maintenance_json.rs": "7cf5baff196bbbab8a77fb646cb338b1a95f89c6ef657acd0bf2139a5b7fd3ac", + "src/storage/maintenance_legacy_association.rs": "55f0f45c5b1a75f5a6a6ebada44d0b552cdb0275b3ac164f887c4e01fce8f7ac", + "src/storage/maintenance_legacy_bootstrap.rs": "76377210198c3a4e813e7a6fd80be323ab96592f9f5adbdb89db257142e30bb6", + "src/storage/maintenance_legacy_coverage.rs": "32e7eb2b5137bc4a5672da7e39db9e738d5c8376b542cce333e4227588adafd6", + "src/storage/maintenance_legacy_engine.rs": "8545909a076fbf552ed465bfd510ac346da6c9eadfb4e04eea404a84d77dbc97", + "src/storage/maintenance_legacy_generations_engine.rs": "35fd9ff8a8c198226844664605b3dba54038b95d908554912200ef238e17642a", + "src/storage/maintenance_legacy_guard.rs": "d8f1757600419c6c95e8e6857ea122289409f316208e9d5ac46a1d71efdfcb0c", + "src/storage/maintenance_legacy_source_recovery_tests.rs": "e80ba33363b13072c2446cafa69503c1e68d7f1397ed2736588a2d76e245ea94", + "src/storage/maintenance_legacy_staging.rs": "9251f63d4924186d764d31da369b980424230a5634ad6e1a96fbae493325e9b2", + "src/storage/maintenance_legacy_stream.rs": "ecbe24522e7615b879c36b2c7fc80b79f8c54779ff192907902a4f836dd2708c", + "src/storage/maintenance_native_projection.rs": "a54f389b354944c3a5ca62230acbf67a28ce460c8ea59aa9bdd74449143df90e", + "src/storage/maintenance_origin.rs": "f7befcc03f5dbf76b81448178b6e14bab304148e63c412babbc78225509b7671", + "src/storage/maintenance_ownership.rs": "760542a617a01a6bb09fe0ff75e052d6c66e6b9efbe8505d53ca8e22450cfafe", + "src/storage/maintenance_projection.rs": "4565d3a507eee3122bf67d03689f0d1cc415544e5a79e07604378f73c3b1feb5", + "src/storage/maintenance_references.rs": "78094003a14879441255272657b4044080a9592b7ca59f9794926934813e762b", + "src/storage/maintenance_retirement.rs": "f0d0db19b03321bfd1890b94eefbb809866c58345759df8264beb06e39a22161", + "src/storage/maintenance_scheduler.rs": "a65509524dd191c22471da3fee6067e4272e4bad33bee818b1ab0367fba5949e", + "src/storage/maintenance_validation.rs": "403e3edf264b762edd852e32ce6c5dd628bdd29f9a0728ac80cf17cdd8e509c2", + "src/storage/maintenance_workspace_gate.rs": "3914a12a2ad7161ac0a8b6518bac43b8412ea9fcd70040fc59178ec707bdd2a3", + "src/storage/managed.rs": "29790ff1fe1f16c77645b408654f8bda325e5d771afa29539fdcd8c5aae461a2", + "src/storage/mod.rs": "c8d46bd2fcf6ada768a91b2fa0480b9c35f49c77158e5e57dd4a847bcbc1121a", + "src/storage/run_workspace.rs": "2b3284a6ff9b49b2249d95d52dc1ae2d96de8267c591d342a266dd910ca2f273", + "src/storage/test_harness.rs": "7023f205de1b9c16ac3ccdd1c87f44158595c423f5583a43ebed32d854b5f80e", + "src/syntax_materializer/arena.rs": "1986e2b48d5a69d127b7a0f2a92464414790eee36870b3d8873daaf9e819e36b", + "src/syntax_materializer/builder/edges.rs": "9d7563f152bc5bf747f8f973ccb47c2d2dd84152d7cc18bc24f1fcb4bac54dde", + "src/syntax_materializer/builder/mod.rs": "57496a28a2237bc18eed8c630f3eea99825f9dec616597a86d16dffd9a0c5952", + "src/syntax_materializer/builder/nodes.rs": "b163d96e735a82da0d472041b5b21f8ee3505bad194b1bedab91fe8ccadf47ad", + "src/syntax_materializer/builder/semantic.rs": "09e80f1e30e8daaec901d9de9dc9bc9b69df5d74274ecaa83351025ff968de7a", + "src/syntax_materializer/builder/traversal.rs": "d5960bbabb5138bdd28ea9f27b39919e7d236b1a44738ec1ad165ebd1b1799cb", + "src/syntax_materializer/capture.rs": "a7f542f23319106ee4eda0632e5e2196b4b62323effe8ac882b78b88309865c9", + "src/syntax_materializer/ids.rs": "509c260349abefb5ee90cafb5c25844c2f3f18038194635e90648e2454aaf8c5", + "src/syntax_materializer/mod.rs": "9cada348473a9ac37a13af5915d79f5dd4486fa9c0d62cedfd5b2c6a96508112", + "src/syntax_materializer/relations.rs": "9887ea3be912053c62d3034cd7b40459e292d9bfcecdee6c2f1ca8bdc74cac04", + "src/syntax_materializer/rows.rs": "db117c755af4a8b85e50a6ab0042f8265cebc5e14cb480388b39cc57183d559b", + "src/syntax_materializer/tests.rs": "9c177764e8ffa131578baa140befdf33ae7e6ce5056ef63144421f1be9f89e4d", + "tests/agent_hooks_process.rs": "364d029cd0d4daf328ba46a1254e1d9a6f5df4e7fc9b0a86bcbf7740b6030478", + "tests/auto_repo_root.rs": "f843a5a431fcdb9f55a4a6d0554b106eb17b3deccee7fec335b8d700ce15e62c", + "tests/coordinator_process.rs": "4ffc40b55894159a45df943f5b924ea267e7781da6b4e20e036ebc05e358845a", + "tests/copy_phase_process.rs": "dbff1132733d5557a7108033f9bb41b8e5968357614c1b1bb8a4344fc046424b", + "tests/generation_storage.rs": "ab0628e9ec2b1ba42d873b4a399ad90632ad11a083fc16e5902c78eabd8d1807", + "tests/http_admission_process.rs": "3dd5533bfd85467027710b37d77be2ebfc84832d23942f3a5398c335b151dbb9", + "tests/http_daemon_process.rs": "0504ad229dad3da16ea95d6c57ab1cb38bacaa3436c32c4165bd251c7aa15294", + "tests/native_request_identity.rs": "7dd54f9039b2d219cc42dde5428a7c146e721ac6f1feec9bd183c81162c1bf97", + "tests/refresh_recovery_process.rs": "56c4133d2c75aa7b248d84ab1fc9b8aae8ef1b29fb4808155d70e201e07db248", + "tests/storage_maintenance.rs": "16ccd5ba363ce2b4774163c70036a3a7971e9dcccff36d942ee70e84dadf06d1", + "tests/support/lifecycle_faults.rs": "6fa03996e99accc18adda746fbb376d55c35a8191a14ce261e918243154175a7", + "tests/support/storage_maintenance/collector.rs": "46ceff561e3252155dba410ff646f7cf25f5eb21960fee27f2dd9a7c57303a2c", + "tests/support/storage_maintenance/mod.rs": "7594eacd903f327c882f26ef1d5c49847e20afd3d7fc37f2334efc62702f0fd5", + "tests/support/storage_maintenance/process.rs": "212a9d91e62f9648ed9e911cbd2b0daa20bce9286bf0d76c4636575054ea4669", + "tests/support/storage_maintenance/workload.rs": "9548cc7b66402bfc8af53031edfd6d8bcac73b38897d7fc7f63194b2aeec1008", + "build.rs": "cd2da95e498f02c64109bd91cf963ed7bfa502488cd99d658eadb896de35b8de" +} diff --git a/docs/specs/CBG-PLAT-01/evidence/test-commands.txt b/docs/specs/CBG-PLAT-01/evidence/test-commands.txt new file mode 100644 index 00000000..2c3baf22 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/test-commands.txt @@ -0,0 +1,2 @@ +CARGO_TARGET_DIR=/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target cargo test --locked -p codebase-graph --lib -- adapters::mcp::daemon::tests::failure_snapshot_is_bounded_private_and_replaced_atomically adapters::mcp::daemon::tests::launchd_status_parser_reports_running_and_failed_jobs adapters::mcp::daemon::tests::manager_missing_messages_are_recognized_without_localized_status_parsing adapters::mcp::daemon::tests::older_daemon_state_without_start_timestamp_remains_readable adapters::mcp::daemon::tests::reconciliation_is_idempotent_and_fails_closed_on_identity_mismatch adapters::mcp::daemon::tests::service_manifests_quote_paths_and_request_single_instance_restart adapters::mcp::daemon::tests::stable_ports_and_service_ids_are_repository_scoped adapters::mcp::daemon::tests::systemd_status_parser_reports_running_failed_and_missing_fields api::lifecycle::tests::claude_desktop_path_is_rejected_for_loopback_http api::lifecycle::tests::cloud_targets_require_public_https_without_exposing_loopback api::lifecycle::tests::codex_toml_block_round_trips_windows_style_arguments api::lifecycle::tests::codex_toml_reject_different_leaves_existing_file_byte_identical api::lifecycle::tests::daemon_port_selection_migrates_collisions_but_rejects_unavailable_overrides api::lifecycle::tests::dry_run_language_detection_recognizes_webassembly_case_insensitively api::lifecycle::tests::hermes_install_migrates_singular_marker_blocks_without_dropping_existing_entries api::lifecycle::tests::hermes_managed_block_round_trips_windows_style_arguments api::lifecycle::tests::hermes_reject_different_leaves_existing_file_byte_identical api::lifecycle::tests::http_registration_can_be_inspected_renamed_and_removed api::lifecycle::tests::http_registration_migrates_only_the_recognized_stdio_entry api::lifecycle::tests::http_registration_shapes_match_every_loopback_harness api::lifecycle::tests::install_removes_legacy_k_wiki_entry_in_the_same_file_update api::lifecycle::tests::json_reject_different_leaves_existing_file_byte_identical api::lifecycle::tests::managed_instruction_block_replaces_stale_guidance_and_preserves_surrounding_text api::lifecycle::tests::matching_entries_remain_idempotent_across_json_codex_and_hermes_configs api::lifecycle::tests::mcp_agent_hook_persistence_unions_existing_clients api::lifecycle::tests::native_client_commands_preserve_every_server_argument api::lifecycle::tests::refresh_failure_classifier_retries_source_changes_and_worker_exit api::lifecycle::tests::registration_rename_deduplicates_matching_json_destination_atomically api::lifecycle::tests::registration_rename_preserves_codex_entry_and_rejects_conflicting_destination api::lifecycle::tests::reinstall_activation_boundary_keeps_new_state_on_post_activation_failure api::lifecycle::tests::reinstall_activation_boundary_restores_backup_on_activation_failure api::lifecycle::tests::remove_mcp_server_dry_run_reports_previous_without_writing_and_write_removes_entry api::lifecycle::tests::remove_partial_state_tree_rejects_symlinks api::lifecycle::tests::resolve_mcp_target_rejects_aggregate_unknown_and_invalid_scope_targets api::lifecycle::tests::resolve_mcp_target_treats_explicit_paths_inside_repo_as_local_and_outside_as_shared api::lifecycle::tests::resolve_mcp_target_uses_expected_default_locality_and_paths db_writer::tests::guarded_database_failed_native_open_releases_exclusion db_writer::tests::guarded_database_move_and_connection_retain_physical_family db_writer::tests::guarded_database_native_path_rejects_full_non_utf8_before_effects db_writer::tests::guarded_database_native_path_rejects_transforms_before_filesystem_effects db_writer::tests::guarded_database_readonly_rejects_parent_without_coordination_write_access db_writer::tests::guarded_database_rejects_symlink_and_hardlink_resources_before_open db_writer::tests::guarded_database_relative_native_open_uses_one_absolute_guarded_resource db_writer::tests::guarded_database_symlink_parent_traversal_cannot_bind_another_native_resource db_writer::tests::guarded_database_unicode_alias_retains_physical_parent_exclusion db_writer::tests::guarded_database_unwind_closes_native_handle_and_releases_exclusion db_writer::tests::guarded_database_windows_encoding_policy_checks_the_complete_native_path process_lifecycle::tests::accepted_nonblocking_socket_is_normalized_for_control_frames process_lifecycle::tests::bounded_protocol_rejects_unterminated_control_frame process_lifecycle::tests::capability_json_is_private_at_creation_and_after_replacement process_lifecycle::tests::retired_startup_rejects_late_guardian_before_child_creation process_lifecycle::tests::slow_trickle_cannot_extend_control_frame_deadline process_lifecycle::tests::workspace_without_global_state_remains_protected_by_guardian_lease process_lifecycle::unix::tests::absent_proof_never_establishes_emptiness process_lifecycle::unix::tests::fifo_writer_controls_empty_proof process_lifecycle::unix::tests::proof_without_ready_retains_live_writers_then_allows_empty_recovery process_lifecycle::unix::tests::recovery_rejects_regular_files_symlinks_and_replaced_fifo_identity process_lifecycle::unix::tests::stopped_owned_child_is_not_an_exit_and_resume_or_cancellation_still_completes --exact --test-threads=1 > /tmp/codebasegraph-pr153-platform-862a8f88d485/selected-platform-tests.log 2>&1 +CARGO_TARGET_DIR=/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target cargo test --locked -p codebase-graph --lib -- adapters::cli::tests::dispatch_materialize::watch_help_documents_parallel_default_and_opt_out db_writer::phase::tests::copy_trace_metadata_reports_generated_file_bytes --exact --test-threads=1 > /tmp/codebasegraph-pr153-platform-862a8f88d485/ci-failure-reproduction-macos.log 2>&1 diff --git a/docs/specs/CBG-PLAT-01/evidence/test-result-summary.txt b/docs/specs/CBG-PLAT-01/evidence/test-result-summary.txt new file mode 100644 index 00000000..17677adc --- /dev/null +++ b/docs/specs/CBG-PLAT-01/evidence/test-result-summary.txt @@ -0,0 +1,27 @@ +## xtask-tests.log + Running unittests src/main.rs (/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/xtask-c22ce753677b8c8b) +running 42 tests +test result: ok. 42 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.59s +## selected-platform-tests.log + Running unittests src/lib.rs (/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/codebase_graph-ffa80bf96221ee79) +running 58 tests +test result: ok. 58 passed; 0 failed; 0 ignored; 0 measured; 784 filtered out; finished in 0.74s +## storage-platform-unit-tests.log + Running unittests src/lib.rs (/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/codebase_graph-ffa80bf96221ee79) +running 30 tests +test result: ok. 30 passed; 0 failed; 0 ignored; 0 measured; 812 filtered out; finished in 0.63s +## storage-selected-integration-tests.log + Running src/storage/test_harness.rs (/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/storage_foundation-19729f82bc7a7900) +running 10 tests +test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 256 filtered out; finished in 1.19s +## ci-failure-reproduction-macos.log + Running unittests src/lib.rs (/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/codebase_graph-ffa80bf96221ee79) +running 2 tests +test adapters::cli::tests::dispatch_materialize::watch_help_documents_parallel_default_and_opt_out ... FAILED +assertion failed: text.contains("--parallel Parse independent files concurrently; default behavior") +test result: FAILED. 1 passed; 1 failed; 0 ignored; 0 measured; 840 filtered out; finished in 0.00s +error: test failed, to rerun pass `-p codebase-graph --lib` +## selected-lifecycle-runtime-tests.log + Running tests/refresh_recovery_process.rs (/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/refresh_recovery_process-a831b40dcd3acc3b) +running 4 tests +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 20 filtered out; finished in 499.03s diff --git a/docs/specs/CBG-PLAT-01/planning-review.md b/docs/specs/CBG-PLAT-01/planning-review.md new file mode 100644 index 00000000..ad7385f6 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/planning-review.md @@ -0,0 +1,53 @@ +# Independent issue-plan review — CBG-PLAT-01 + +**Scope:** ten proposed Maintenance slices, not drafted issue bodies. Reviewed only the supplied exact-HEAD investigation and its four subsystem reports, selected local source, existing COPY/resource-removal and disk-cleanup contracts, and the saved planning context. Baseline: PR153 `862a8f88d485d5bd257ebd9456c194156fd4ee94` (3.0.4). No remote lookup, duplicate-issue search, execution, or implementation review was performed here. + +**Verdict:** the ten-slice structure covers the current investigation without needing another project, feature model, or eleventh defect. Create it as **proposed / awaiting user approval**, subject to the corrections below. Creating issues/specification is not approval to implement. + +## Required corrections and slice boundaries + +| Slice | Current evidence | Required planned acceptance / boundary | +| --- | --- | --- | +| **S01 — macOS nested scan** | New P2. Exact-source native helper probe saw 85/200 outer entries; all inner scans saw 200. Production receipt traversal reenters the same anchor. | Per-traversal independent open-file description; retain rooted namespace authority and bounded scratch. `dup`/`try_clone` is not a fix. Test multi-batch completeness without hard-coding 85 as a limit. A claim of collector convergence additionally needs a production receipt-selection case; the helper probe alone did not prove data loss or full collector starvation. | +| **S02 — Windows DLL contract** | P2 current asset/import and archive-policy evidence, **not** clean-Windows execution. JSON/FTS require OpenSSL 3 **and MSVC runtime DLLs**. | Keep shipping versus checked prerequisites **proposed**. Shipping must cover the actual import closure, application-controlled loading, packaging allowlist/install/checksums and notices. Prerequisites need explicit versions/availability checks and truthful readiness. Exercise actual JSON/FTS loading from the installed archive on a clean Windows consumer; EXE static OpenSSL or `--help` is insufficient. No dependency/extension ABI upgrade is implied. | +| **S03 — macOS OpenSSL contract** | P2 source/build evidence; fresh exact-HEAD **debug** CLI has absolute Homebrew install names. No current release archive was inspected. | Keep static, relocatable bundled dylibs, or checked prerequisite **proposed**. Inspect final release imports and run both shipped binaries plus normal extension/materialization behavior under the chosen policy on a clean consumer. Do not assert that a release archive already failed or require bundled dylibs before the user chooses. | +| **S04 — Windows user/executable discovery** | Preexisting P2. Exact unconditional logic and a macOS CLI no-HOME probe establish the gap; they do not qualify Windows behavior. | Explicitly decide HOME/USERPROFILE/override precedence, missing-home behavior, suffix resolution, and whether/how `.cmd`/`.bat` are executed safely. Do not equate PATHEXT discovery with safe invocation or silently add shell execution. Test the actual Windows entrypoint with HOME absent despite Cargo's forced test HOME. Keep native cache-home requirements explicit rather than forcing every subsystem through one universal home rule. | +| **S05 — PowerShell native probe status** | P2 source/PowerShell-semantics finding; not locally executed. | Check each native probe's exit status immediately. Checksum-valid failure of either shipped binary must fail dry-run and real install before destination binaries change; include a successful control. Verify supported PowerShell hosts. Do not expand this into transactional installer rollback or make it depend on the DLL policy merely because both touch `install.ps1`. | +| **S06 — watch-help CI** | Current macOS unit and Windows unit shard 4 fail; exact-head Mac reproduction agrees. | State the existing parallel default consistently and retain the behavioral assertion. No runtime parsing/default change, ignored test, or bypassed gate. | +| **S07 — COPY metadata fixture** | Current Windows unit shard 1 fails; same test passes on Mac. Fixture uses raw Windows display paths; production COPY renderer already normalizes them. | Use existing production rendering policy/its exact normalization and keep the four-byte metadata oracle. Native Windows rerun. No production COPY-path repair, general SQL parser, or new fallback is justified by this failure. | +| **S08 — epoch lock observer** | Current Windows integration shard 2 returns raw lock error 33. Fixture retries only WouldBlock; production already recognizes fs2 contention. | Match fs2-aware contention classification, preserve the existing five-second deadline and all birth/epoch assertions, then rerun Windows. The logs do not show the lock-hold duration; do not promise the classifier fix alone proves success. No production lock weakening or S09 dependency. | +| **S09 — relock mode invariant** | Preexisting **P3** source/dependency-semantics finding; no native Windows reproduction. Windows layers Shared over Exclusive while reporting Shared. | Decide truthful retained Exclusive versus a safe release/reacquire/revalidate downgrade. A native second-handle test must agree with the selected reported/effective mode. Do not blindly copy the fresh-creation gap protocol. Direct read admission already starts Exclusive on both OSes: no new Windows reader-concurrency regression or throughput promise. | +| **S10 — final qualification** | Current aggregate fails; both native artifact jobs were **skipped**. 145 selected Mac executions passed, not the full suite or Windows/consumer qualification. | Re-run full supported-native cohorts and actual final release archives after the selected fixes. Qualify clean installs without accidental developer DLL/dylib PATHs or preseeded extension caches. For a prerequisite policy, prove clear failure when missing and successful normal use with only declared prerequisites. Run normal graph/extension behavior and existing containment/unknown-evidence cases. Record exact source/merge, binaries, archives, native inputs, commands, outcomes and limits. Reconcile stale four-target release documentation. Platform qualification is not merge/deployment/live-service approval. | + +## Decisions and overlap to make explicit + +1. **Open choices belong in the proposed spec now**, not as already-set issue requirements: S02/S03 distribution policy; S04 home/suffix/script-execution policy; S09 effective lock mode; S10 supported OS floors and source-install recipe. macOS extension `minos 13.3` is current asset evidence, not user approval of a product floor. Windows PE subsystem version does not establish the supported Windows floor. Plain Cargo install lacks the opt-in Windows bundling feature: select/document the intended recipe rather than claiming it was executed and failed. +2. **Avoid duplicate ownership.** S02/S03 own target-specific runtime packaging and dependency checks; S05 owns generic native-probe exit handling; S10 consumes those contracts and owns final cross-platform evidence/document consistency. Source-install policy must agree with S02, not become a second dependency policy. S01/S09 remain narrow storage fixes, not a replacement storage design. +3. **Use only real dependencies.** There is no sequential S01→S02→… chain. Most lanes are independent after the relevant specification decisions and approval; shared files require coordinated ownership, not invented product dependencies. S10 planning can start immediately; its completion waits for all fixes selected for this milestone and fresh evidence. S09 is not the cause of current CI failures or an established support blocker; if included in milestone closure, say that is the selected maintenance scope. +4. **Supplement existing contracts, do not copy them.** Link DC-S2–S5 and the current COPY resource-removal amendment. Preserve rooted confinement, stable/raw Direct identity, owner-bound native lifetime, unknown-containment preservation and approved ceiling removal. S10 records remaining platform evidence against those existing criteria; it must not silently reapprove them, duplicate the whole DC-S5 program, or close aggregate cleanup/release rollout. +5. **Bind approval and evidence honestly.** Give `CBG-PLAT-01` stable requirement/acceptance IDs, exact baseline and canonical Git path; each issue links its applicable IDs and evidence. Keep approval, planned acceptance, actual execution, independent review, platform qualification and deployment separate. Before dependent implementation, freeze the agreed spec and record the real user decision/full Git SHA under the established workflow. The proposed milestone is only grouping in existing Maintenance `P-COD-2`, not a new architecture or authorization. + +## Stale claims to exclude + +Do not import prior direct-child/PID-authorized build recovery, native database lifetime/alias-corruption, Linux/Intel support, workload-ceiling, or blanket test-discovery defects. They do not describe the reviewed head/scope. Legacy MCP-daemon service-control limitations and host-cfg cross-compilation debt were not established as new supported-native blockers. The current CI is head-bound but executed a synthetic merge differing only in `CHANGELOG.md`; preserve that provenance distinction. + +**Side effects / assumptions:** only this requested temporary review file was written; no repository, issue, model, wiki, source or constants changed. Assumed the parent's ten labels describe the intended slice scope; actual issue descriptions and remote duplicate checks remain for the coordinator. This review makes no policy selection or implementation approval. + + +## Follow-up — concrete draft check + +Read the subsequently authored `docs/specs/CBG-PLAT-01/spec.md` proposed 0.1 (426 lines). Evidence boundaries and proposed D01–D05 decisions are sound. The additional S00 contract/approval prerequisite is appropriate. S10 can exclude S09 from hard dependencies if the maintainer explicitly records inclusion or deferral before aggregate closure. + +Corrections sent to the coordinator: + +- S00's instruction to resolve **all** D01–D05 before dependent implementation contradicts §7's independent exact-slice approval and §8's possible S09 deferral. Gate selected implementation on its applicable approved decisions; explicitly defer unrelated choices instead of letting D04 block S01–S08. +- S10's acceptance “under approved D01–D05” introduces the same accidental D04/S09 dependency. Refer to applicable approved D01/D02/D03/D05 and the recorded S09 disposition. +- All eleven `**Acceptance (proposed):` labels lack closing Markdown bold markers. +- Grouped A01–A02/A03–A04/etc. labels do not identify individual acceptance bullets. Assign each criterion its actual stable ID and a usable link target (or link the slice section and exact labeled criterion) before concise Linear descriptions refer to AC IDs. The ranges alone are ambiguous. +- Make S04's “allowed batch shims” verification conditional on D03. Replace S10's “promoted/installed archives” with final immutable/installed archives unless actual promotion is separately authorized; qualification does not authorize publication. + +No new production defect or stale-review import found. No draft/repository edits or remote checks performed; only this temporary addendum was written. Local supporting Markdown links resolved at this snapshot. + +## Coordinator disposition + +The eleven delivery records include S00 as a planning/approval prerequisite, not an eleventh defect. The coordinator resolved the draft-review corrections before publication: applicable-slice approval/decision deferrals, no D04 prerequisite for S01–S08/S10 unless S09 is selected, stable individual A00–A15 anchors, closed Markdown emphasis, conditional batch-shim acceptance and final immutable archives without promotion authorization. No implementation review, policy approval or product change is implied. diff --git a/docs/specs/CBG-PLAT-01/review-evidence.md b/docs/specs/CBG-PLAT-01/review-evidence.md new file mode 100644 index 00000000..7186ee50 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/review-evidence.md @@ -0,0 +1,73 @@ +# PR #153 platform review evidence — CBG-PLAT-01 + +This is the evidence record for issue/spec planning, not implementation, merge approval or platform qualification. Saved text logs remove only redundant trailing blank lines for Git whitespace checks; payload lines/results are unchanged, and [checksums.json](./evidence/checksums.json) hashes the Git-tracked evidence bytes. It summarizes the fresh review completed on 2026-10-26. Detailed investigation output is deliberately not duplicated here. + +## Revision and provenance + +- **Reviewed source:** [PR #153](https://github.com/rabii-chaarani/codebaseGraph/pull/153), exact [HEAD `862a8f88d485d5bd257ebd9456c194156fd4ee94`](https://github.com/rabii-chaarani/codebaseGraph/commit/862a8f88d485d5bd257ebd9456c194156fd4ee94), version **3.0.4**. Detached isolated checkout and fresh isolated Cargo target; no older compiled review artifacts were reused. +- **Source comparison base:** `018df35e72447fc3e014e950d1d3c6648bbd4820`. +- **Supported scope:** macOS ARM64 and Windows x86_64. Linux/Intel removal and approved workload-resource-ceiling removal are not defects. +- **Hosted checks:** [CI run 40330652083, attempt 1](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40330652083) is head-bound, but jobs checked out synthetic merge `b7c1b3edf5d50508932b407d237452fafd100539` onto `ca115690b226384164cf364458a0e3255b8908d3`. The [exact HEAD-to-merge comparison](https://github.com/rabii-chaarani/codebaseGraph/compare/862a8f88d485d5bd257ebd9456c194156fd4ee94...b7c1b3edf5d50508932b407d237452fafd100539) changes **only `CHANGELOG.md`**. Implementation, tests and workflows match the reviewed head. This is not silently treated as execution against the supplied source base. Saved response: [head-vs-ci-merge.json](./evidence/head-vs-ci-merge.json). + +## Fresh local execution: 145 selected tests passed, not the full suite + +Host: macOS ARM64; Rust/Cargo 1.96.0. Builds/tests used the isolated exact-head project's Cargo environment. + +| Executed selection | Result | +| --- | --- | +| `cargo test --locked -p xtask` | 42 passed | +| Lifecycle/daemon/API/guarded native database selection | 58 passed | +| Rooted-directory/physical-family selection | 30 passed | +| Storage-foundation integration selection | 10 passed | +| COPY trace metadata case on macOS | 1 passed | +| Real-CLI recovery/cancellation/containment selection | 4 passed | +| **Selected passing total** | **145** | +| Exact current watch-help case | **Failed** | +| Reviewer exact-source nested-scan probe | **Failed: baseline 200, outer 85, every inner 200** | + +The four real-CLI passes cover legacy-PID recovery without signalling, authenticated cancellation/retry, timing-wrapper containment, and unavailable-guardian evidence preservation/recovery. Evidence: [test-result-summary.txt](./evidence/test-result-summary.txt), [runtime selection log](./evidence/selected-lifecycle-runtime-tests.log), and [watch-help reproduction](./evidence/ci-failure-reproduction-macos.log). The fresh debug CLI also built successfully. Neither this selection nor passing hosted jobs establishes full native/release qualification. + +## New confirmed PR defect: macOS nested enumeration loses later entries + +**P2.** [The new macOS `RootedDirectory` traversal](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/locks.rs#L2552-L2563) resets and consumes the retained directory FD with `lseek`/`getattrlistbulk`. Its [callback](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/locks.rs#L2616-L2620) can traverse the same anchor and consume the caller's kernel cursor. After its buffered batch, the outer traversal sees EOF and silently omits later entries. `RootedDirectory` and `visit_entries` are absent from the specified base: this is a **new PR defect**, not an older platform gap. + +The executed reviewer fixture includes the **unmodified exact-head** `src/storage/test_harness.rs` and, through it, `locks.rs`; it does not substitute a reimplemented scanner. It links against freshly built exact-checkout dependencies. With 200 files and 4096-byte scratch buffers, baseline traversal saw 200, every complete nested traversal saw 200, but outer traversal saw **85**. The completeness assertion failed (exit 101). **85 is the measured first-batch count, not a portable limit.** + +Production performs this nesting: [`prepare_terminal_output` scans the registry](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/maintenance_candidate.rs#L2717-L2724) and [calls `workspace_has_child_receipts` on that same registry](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/maintenance_candidate.rs#L2780-L2793), whose [inner traversal](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/maintenance_candidate.rs#L2658-L2668) consumes it. Later receipts can be skipped in a multi-batch directory, leaving terminal cleanup pending. **No unsafe deletion, data loss or full-collector starvation/convergence failure was reproduced.** + +Planning direction: keep the pinned directory as namespace authority but give each enumeration an independent open file description, for example rooted `openat(".")` with appropriate flags. `dup`/`try_clone` shares cursor state and is insufficient. [Windows already reopens its pinned directory per traversal](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/locks.rs#L2688-L2692). Preserve that boundary; require a multi-batch macOS nested regression and a production receipt-selection test before claiming cleanup convergence. + +## Current CI qualification blockers + +| Exact hosted job | Evidence and narrow interpretation | +| --- | --- | +| [macOS unit](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40330652083/job/121599480548), [Windows unit shard 4](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40330652083/job/121599480194) | `watch_help_documents_parallel_default_and_opt_out` requires `; default behavior`; [current help omits it](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/adapters/cli/format/help.rs#L21-L22), while [the test requires it](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/adapters/cli/tests/dispatch_materialize.rs#L67-L79). Reproduced fresh at exact HEAD. Not merely whitespace; no runtime parsing failure implied. | +| [Windows unit shard 1](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40330652083/job/121599480503) | `copy_trace_metadata_reports_generated_file_bytes`: [fixture inserts raw `Path::display()` into SQL](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/db_writer/phase.rs#L1171-L1186); Windows separators become parser escapes, yielding `None`. [Production rendering already normalizes separators](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/staging_writer/files.rs#L47-L54). Same test passed fresh on macOS. Fixture portability failure, not proof of broken production COPY. | +| [Windows integration shard 2](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40330652083/job/121599479977) | Epoch observer fails with lock violation **OS error 33**. [Fixture retries only `WouldBlock`](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/tests/support/storage_maintenance/process.rs#L730-L745); [production classifier already handles fs2 raw contention](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/locks.rs#L340-L344). Keep the deadline and epoch assertions. Log does not establish whether a valid lock hold exceeded the deadline. | + +These are current help/test-contract qualification failures; they do not establish production storage/process failure. Other native cohort jobs and fmt/Clippy/audit/package checks passed. Aggregate [`required`](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40330652083/job/121630165203) failed. Both artifact build-and-smoke jobs were **skipped**, not passed: [macOS](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40330652083/job/121630167195), [Windows](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40330652083/job/121629956632). macOS unit Cargo stopped after its root-library failure, so the hosted failure does not prove later workspace unit targets ran. Fresh local xtask passes do not make that job green. + +## Current consumer-platform gaps: distinguish evidence from runtime proof + +These are **current-state gaps, not all new PR regressions**. The review does not assign a new-introduction claim where it has not established one. + +- **Windows runtime dependencies (P2):** both exact-head bundled JSON/FTS PE assets import `libssl-3-x64.dll`, `libcrypto-3-x64.dll`, `MSVCP140.dll`, `VCRUNTIME140.dll`, and `VCRUNTIME140_1.dll`. [Bundling selects those assets](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/db_writer/extensions.rs#L98-L110), but [archive policy](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/crates/xtask/src/main.rs#L421-L441) and [installer copying](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/release/install/install.ps1#L85-L87) supply only the two EXEs, not those runtime DLLs. Static OpenSSL linking of an EXE does not satisfy a separately loaded extension's import table. Evidence is **current checked-in asset inspection and source policy**, not a clean-Windows missing-DLL reproduction. Choose a documented/checked prerequisite policy or verified application-controlled dependency packaging. +- **macOS runtime dependencies (P2):** [preexisting dynamic OpenSSL link/search policy](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/build.rs#L8-L26), with no packaging relocation step, remains. `otool -L` on the fresh exact-head **debug** CLI shows absolute `/opt/homebrew/opt/openssl@3/lib/libssl.3.dylib` and `libcrypto.3.dylib` imports. **This is not a release-artifact inspection or clean-consumer launch.** Qualify the final installed archive after selecting bundling/static-link/prerequisite policy. +- **Windows discovery (P2; preexisting source):** [unchanged helpers](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/api/lifecycle.rs#L5060-L5073) use HOME-or-`.` and exact executable filenames. Fresh exact-head CLI dry-run with HOME/CODEX_HOME absent, USERPROFILE set and suffix-only `codex.exe` on PATH reports user config `./.codex/config.toml` and native installer unavailable. This ran on **macOS against unconditional logic**, not on Windows. Saved [CLI result summary](./evidence/current-head-cli-no-home-summary.json) and [helper probe](./evidence/head-lifecycle-helper-probe.log) retain the observations. Plan explicit user-directory and Windows executable-resolution policy; do not call it a native Windows reproduction. +- **Installer exit status (P2; preexisting probe body):** [PowerShell probe](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/release/install/install.ps1#L35-L47) does not check `$LASTEXITCODE`. Under normal Windows PowerShell native-command semantics, `ErrorActionPreference = Stop` alone does not reject a launched native program's nonzero exit. This is source/semantics evidence; PowerShell execution was unavailable. Require a failing-probe/no-destination-change test, not an asserted executed result. + +Exact asset hashes and filtered imports/minimum-OS inspection: [current-extension-provenance.json](./evidence/current-extension-provenance.json), [native-dependency-imports.txt](./evidence/native-dependency-imports.txt). Fresh debug Mach-O inspection: [current-head-debug-macho-imports.txt](./evidence/current-head-debug-macho-imports.txt). + +Residual policy/invariant items remain separate: [preexisting Windows `relock_shared`](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/locks.rs#L87-L96) reports Shared while retaining layered exclusive ownership (excess exclusion, not a new reader-concurrency regression); default Windows Cargo install omits the native recipe's opt-in extension feature; current ARM64 extension assets encode macOS **13.3** minimum, which should be declared/qualified. Host-`cfg!` cross-compilation debt alone does not prove a supported-native failure. + +## Preserve corrected boundaries and evidence limits + +The new [process capability boundary](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/process_lifecycle/mod.rs#L138-L143), guardian/process-group/FIFO proof on macOS and Job Object/handle ownership on Windows materially replace the old direct-child/PID-only build premise. [GuardedDatabase](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/db_writer/access.rs#L98-L112) now owns native destruction before lease release; current native path validation and physical-family guards invalidate older unchecked-projection/alias-lifetime claims. No confirmed new P1/P2 process defect was found in scope. Do not turn legacy daemon service-control limits into a claim against current build containment. + +**Not executed:** full workspace suite, local Windows runtime, fresh release archive, clean consumer install, service-manager installation or power-loss qualification. Hosted Windows outcomes are head-bound CI evidence, not local reproduction. No old v2 artifacts or host-bound graph/wiki/model state were used as implementation proof. No implementation/source constants changed. No installs/restarts, PR comments, CI reruns or remote/wiki/model mutations were performed by this review. Assumption: native support includes runtime/discovery/install behavior, not compilation alone; dependency and compatibility policy remains a planning decision. + +## Appendix: exact-source nested-scan reproduction + +The short [fixture source](./evidence/filesystem-current-source-probes.rs), [executed build/run commands](./evidence/filesystem-current-source-probes-commands.txt), [failure log](./evidence/filesystem-current-source-probes-run.log) and [result summary](./evidence/nested-scan-result-summary.json) preserve the actual reproduction. The source creates 200 `entry-NNNN` files, performs one baseline scan, then scans the same `RootedDirectory` fully inside every outer callback and asserts both counts equal the baseline. + +For a new run, check out the immutable reviewed HEAD on macOS ARM64, build that checkout's `storage_foundation` dependencies, and adapt the saved fixture include path and dependency paths/fingerprints to that checkout and its target directory. Do **not** replace `locks.rs` with an extracted approximation. Run only `pr153_review_macos_nested_scan_does_not_consume_outer_cursor` with `--exact --nocapture --test-threads=1`. The saved command records the original paths; the evidence links above are repository-relative and do not require the original temporary directory. Expected invariant is complete outer traversal; the measured broken run was **200 / 85 / 200**. diff --git a/docs/specs/CBG-PLAT-01/spec.md b/docs/specs/CBG-PLAT-01/spec.md new file mode 100644 index 00000000..d59506fa --- /dev/null +++ b/docs/specs/CBG-PLAT-01/spec.md @@ -0,0 +1,427 @@ +# CBG-PLAT-01 — PR #153 platform maintenance + +## 1. Identity, status and authority + +- **Revision:** proposed 0.1. **Work ID:** `CBG-PLAT-01`. +- **Canonical Git path:** `docs/specs/CBG-PLAT-01/spec.md`. Supporting review evidence: [review-evidence.md](review-evidence.md) and [evidence/](evidence/). +- **Delivery:** CodebaseGraph Linear workspace (`https://linear.app/codebasegraph`), existing **Maintenance** project `P-COD-2` (`https://linear.app/codebasegraph/project/maintenance-33932479ebd0`), team `COD`. This user-selected destination supersedes older project-routing advice. No new project is created. +- **Baseline:** [PR #153](https://github.com/rabii-chaarani/codebaseGraph/pull/153), reviewed HEAD `862a8f88d485d5bd257ebd9456c194156fd4ee94`, version3.0.4. This evidence is not the prior checkout6aa5ba8 review. Revalidate changed source before implementation. +- **Approval:** the user requested “Create issues in Linear using the spec workflow. Create the issues in Maintenance project in CodebaseGraph Workspace.” This authorizes planning/specification publication and issue creation only. **Implementation, dependency policies, scope changes, merge, deployment and service restarts are not approved.** No approved full specification SHA exists yet; a docs commit/PR is not approval. S00 records explicit future approval of the actual committed revision/scope. +- **Closure owner:** repository maintainer/user; no automatic aggregate closure delegated. Assignees/dates/estimates remain unset. Draft requirements below are proposed, not approved acceptance changes. +- **State separation:** proposed → exact-scope approved → implemented → native-platform qualified → maintainer closed. Linear Backlog, attached/configured tests, commits and percentages are not evidence of later states. + +## 2. Problem and observable outcome + +Fresh inspection of the actual PR code found one newly introduced macOS traversal completeness defect, existing runtime packaging/discovery/installer gaps, three current native CI root causes, and a lower-priority preexisting Windows lock-mode invariant. The new guardian/Job Object and GuardedDatabase abstractions are useful and must not be replaced because an older review described code that is no longer present. + +Outcome: correct the selected confirmed gaps under explicit policies, preserve current ownership/containment/cleanup safety, and qualify one exact corrected revision plus installed consumer archives on the two declared native targets. Each independently deliverable slice below has requirements, acceptance and evidence limits. No claim is made that source findings are all introduced by PR153. + +## 3. Existing contracts, architectural context and scope + +- Reuse the canonical [disk-cleanup contract at reviewed SHA](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/knowledge/architecture/graph-disk-cleanup-contract.md), especially DC-S3-R3/DC-S4-R4 and its origin/ownership/retention invariants. It remains a wiki-authored contract at its original identity; this spec does not copy/migrate/reapprove it. +- Reuse [CBG-COPY-01](../CBG-COPY-01/spec.md), its existing approval records, and the [resource-ceiling amendment](../CBG-COPY-01/resource-ceilings-amendment.md)/[approval](../CBG-COPY-01/resource-ceilings-approval.md). Preserve no replay of uncertain COPY mutation and retained cancellation/unknown-containment behavior. Workload ceiling removal is intentional. +- Reuse the [release contract/process at reviewed SHA](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/docs/release.md), current typed native target/test contracts and source evidence. Any stale four-target architecture prose is not proof of a current requirement. +- Scryer read-only orientation identified existing Graph Store `node-88`/`resp-108,109,113,232,233`; Repository Lifecycle Service `node-136`/`resp-25,30,31`; Release Gate `node-1`/`resp-16,17,254–258`; CLI Adapter `node-9`. These identifiers supply intended context, **not SHA-bound implementation proof**: the configured server is bound to the main local repository, not this detached PR checkout. No model write, sign-off, source-map repair or “implemented” transition is claimed. Revalidate applicable directives/claims and open a proportional change ledger in implementation; fixes restoring claims/docs/tests need no invented topology. +- In scope: macOS ARM64 and Windows x86_64 only; independent proposed maintenance slices S01–S09 and qualification S10. Preserve raw Direct journal compatibility separately from physical resource identity. No Ladybug/extension ABI or dependency-version upgrade is implied; any such change needs separate impact review and approval. +- Excluded: Linux/Intel/Windows ARM64 expansion, new platform trait framework, process containment redesign, policy-free DLL search fallback, raw journal migration, general SQL parsing, workload ceiling restoration, global PATH mutation, two-file installer rollback redesign, code fixes/CI reruns/deployment in this planning task. + +## 4. Proposed requirements and delivery slices + +All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract/approval prerequisite, not a coding task. S06–S08 are qualification fixes, not assertions of production COPY/exclusion defects. S09 is explicitly preexisting P3 debt. Priority names are Linear Medium for reviewed P2 work and Low for P3 debt; they do not imply an urgent incident. + +### S00 — Publish the proposed platform contracts and record exact-scope approval + +**Outcome:** Publish/pin the proposed specification and review evidence; resolve applicable decisions and obtain explicit exact-scope approval for selected dependent slices, while recording deferral of unrelated decisions. + +**Problem/evidence:** The user approved creating issues/spec planning only. No current message approves implementation or chooses runtime dependency, discovery, lock or supported-environment policy. + +**Requirements / criteria:** R01, R02, R03, R04, R05, R06, R07, R08, R09, R10 → A00. + +- Preserve the reviewed PR153 source SHA and existing CBG-COPY-01 and disk-cleanup approval histories. +- Resolve/approve only open decisions applicable to the selected slices, record explicit deferrals for the rest, and never treat recommendations as approval. +- Record canonical path, full committed specification SHA, exact approved scope and user decision reference in a separate approval record. +- Reconcile applicable Scryer intent proportionately before coding; fixes/tests restoring claims need no invented nodes. + +**Acceptance (proposed):** + + +- **A00** — Given the reviewed proposal and evidence, a maintainer can fetch the exact Git revision and all relative evidence links. Given no matching explicit approval, dependent implementation issues remain blocked; Backlog, a docs commit/PR, review, or issue creation is not approval. Given a material contract revision, retain the earlier revision and record a new approved SHA/scope before dependent work. + +**Architectural context:** Planning/contract-only: no new architecture claim required; consult existing Graph Store, Repository Lifecycle Service and Release Gate intent before implementation. + +**Planned verification:** Remote immutable permalink availability, Markdown evidence links/hashes, explicit approval scope and stable IDs; no product test implied. + +**Source orientation at the reviewed SHA:** +- [docs/specs/CBG-COPY-01/resource-ceilings-approval.md:1–10](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/docs/specs/CBG-COPY-01/resource-ceilings-approval.md#L1-L10) +- [README.md:45–65](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/README.md#L45-L65) + +**Dependencies:** none; planning/approval only. **Open decisions:** D01, D02, D03, D04, D05. No task depends on a guessed implementation date. + +### S01 — Isolate macOS directory enumeration cursors for nested cleanup scans + +**Outcome:** Nested rooted scans discover all directory entries without consuming an outer traversal cursor. + +**Problem/evidence:** New PR153 macOS visit_entries resets/consumes the RootedDirectory FD. A current-source native 200-entry probe sees baseline200 and every inner200, but outer85. Terminal cleanup scans the same workspace-origin registry recursively. + +**Requirements / criteria:** R01 → A01, A02. + +- Keep the pinned rooted directory as namespace authority; use a separate open file description for each macOS traversal. +- Do not use dup/try_clone as cursor isolation, because duplicated descriptors share offsets. +- Retain fixed scratch, cancellation, no-follow/identity checks, bounded maintenance passes and conservative unknown-entry retention. + +**Acceptance (proposed):** + + +- **A01** — Given more entries than one native batch, nested and nonnested scans return the same complete entry set exactly once; do not assert the incidental85-entry batch size. + +- **A02** — Given terminal workspace receipts spanning multiple batches, selection can observe later eligible receipts while child receipts continue to protect parent directories. Given cancellation or namespace replacement, traversal remains bounded and does not acquire deletion authority from names alone; Windows nested-scan behavior remains green. + +**Architectural context:** Graph Store node-88: resp-232 (recover abandoned workspaces), resp-233 (retire superseded generations). Reuse canonical disk contract DC-S3-R3 and DC-S4-R4; no new topology is proposed. + +**Planned verification:** Execute a multi-batch native macOS regression using the actual RootedDirectory helper and a real receipt-selection case; rerun native Windows nested traversal tests and affected storage radius. + +**Source orientation at the reviewed SHA:** +- [src/storage/locks.rs:2552–2559](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/locks.rs#L2552-L2559) +- [src/storage/maintenance_candidate.rs:2650–2696](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/maintenance_candidate.rs#L2650-L2696) +- [src/storage/maintenance_candidate.rs:2717–2793](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/maintenance_candidate.rs#L2717-L2793) + +**Dependencies:** S00. **Open decisions:** none beyond exact-scope approval/revalidation. No task depends on a guessed implementation date. + +### S02 — Define and satisfy Windows archive native-library dependencies + +**Outcome:** The installed Windows archive can load required JSON/FTS native components under an explicit approved runtime-dependency contract. + +**Problem/evidence:** Exact checked-in Windows JSON/FTS extension PE imports require OpenSSL3 and VC runtime DLLs. Current archive allowlist/installer contains only two EXEs, checksums and installers; static EXE linkage does not satisfy extension DLL imports. No clean-Windows load failure was locally executed. + +**Requirements / criteria:** R02 → A03, A04. + +- Resolve D01: approved app-local compatible libraries with loader policy/licenses/checksums, or explicit supported external prerequisites with checking; do not silently choose. +- Keep NativeTarget/archive provenance as the single packaging authority; include all intentionally shipped sidecars in inventory and integrity verification. +- Keep DLL resolution application-controlled; do not widen global PATH or load arbitrary caller-writable libraries as a fallback. + +**Acceptance (proposed):** + + +- **A03** — Given an approved clean Windows baseline without developer OpenSSL/VC PATH entries, the exact installed archive either supplies or verifies all declared native dependencies before reporting ready. + +- **A04** — Given real setup and queries, LOAD json, LOAD fts, graph build/reopen/search and k-wiki/MCP smoke succeed through installed binaries. Given a missing/incompatible declared prerequisite or sidecar, fail clearly without replacing a working installation or reporting qualification; include imports, archive hashes, licenses and loader policy in evidence. + +**Architectural context:** Graph Store resp-113; Release Gate resp-255, resp-256, resp-257, resp-258 and resp-16/resp-17. Runtime packaging policy is not yet approved; review any affected intent before coding. + +**Planned verification:** Inspect PE imports of exact final archive components and execute clean-consumer native Windows installation/JSON/FTS/reopen/CLI/MCP cases, including missing-dependency failure. + +**Source orientation at the reviewed SHA:** +- [src/db_writer/extensions.rs:98–110](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/db_writer/extensions.rs#L98-L110) +- [crates/xtask/src/main.rs:421–441](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/crates/xtask/src/main.rs#L421-L441) +- [crates/xtask/src/main.rs:596–607](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/crates/xtask/src/main.rs#L596-L607) +- [release/install/install.ps1:76–89](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/release/install/install.ps1#L76-L89) + +**Dependencies:** S00. **Open decisions:** D01, D05. No task depends on a guessed implementation date. + +### S03 — Remove undeclared Homebrew-path assumptions from macOS distribution + +**Outcome:** macOS ARM64 binaries launch and operate on the approved consumer environment without an undeclared producer-specific Homebrew path. + +**Problem/evidence:** Current build.rs requests dynamic OpenSSL and package assembly has no relocation/dylib policy. Fresh exact-head debug otool imports /opt/homebrew/opt/openssl@3 paths. This is not a release artifact or clean-host launch reproduction. + +**Requirements / criteria:** R03 → A05, A06. + +- Resolve D02: static linking, verified relocatable bundled dylibs/rpaths, or explicit supported prerequisite contract. +- Retain exact-artifact checksums/provenance and inspect final release imports, not only a debug build. +- Document the approved ARM64/minimum-OS dependency policy; do not restore intentionally removed Intel/Linux targets. + +**Acceptance (proposed):** + + +- **A05** — Given the approved consumer baseline, final installed ARM64 archive --help, graph/JSON/FTS build and reopen, k-wiki and MCP operate without undeclared producer-path dependencies. + +- **A06** — Given external prerequisites are the approved policy, installation checks and documents their supported version/location and fails clearly when absent. Final archive otool dependency/install-name/rpath evidence matches the approved policy; licenses/checksums cover any bundled dylibs. + +**Architectural context:** Release Gate resp-255–resp-258, resp-16/resp-17; Graph Store resp-113. Change only approved native distribution policy, not process containment. + +**Planned verification:** Build the actual ARM64 release archive, inspect Mach-O imports/rpaths, then execute installed archive on a clean approved macOS consumer baseline and prerequisite-failure cases. + +**Source orientation at the reviewed SHA:** +- [build.rs:10–26](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/build.rs#L10-L26) +- [crates/xtask/src/main.rs:421–441](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/crates/xtask/src/main.rs#L421-L441) +- [crates/xtask/src/main.rs:596–607](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/crates/xtask/src/main.rs#L596-L607) +- [README.md:45–65](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/README.md#L45-L65) + +**Dependencies:** S00. **Open decisions:** D02, D05. No task depends on a guessed implementation date. + +### S04 — Use explicit Windows user-directory and executable discovery policy + +**Outcome:** User-scoped MCP registration targets the real user directory and native client discovery recognizes supported Windows executables. + +**Problem/evidence:** Preexisting exact-head lifecycle.rs uses HOME only then dot and exact PATH filenames. Fresh CLI dry-run with HOME absent, USERPROFILE present and only codex.exe reports scope=user, path=./.codex/config.toml, native installer unavailable. Mac branch reproduction, not Windows runtime. + +**Requirements / criteria:** R04 → A07, A08. + +- Resolve D03 for HOME/USERPROFILE/explicit client-home override precedence and no-user-directory failure. Preserve project scope and explicit config paths. +- Support Windows executable suffix resolution under an explicit policy; distinguish .exe from batch/.cmd execution and quote safely rather than blindly invoking a shell. +- Consolidate shared discovery semantics across registration/verification; do not change Ladybug cache home unless its native contract agrees. + +**Acceptance (proposed):** + + +- **A07** — Given HOME absent and USERPROFILE present, a real Windows user-scope install/dry-run resolves the approved absolute user path, never the current repository by fallback. + +- **A08** — Given only a supported suffixed client on PATH, discovery and invocation/verification agree; spaced paths, arguments and explicit overrides round-trip. Given missing home, missing client or unsafe batch-command inputs, return the approved explicit result without corrupting unrelated config or silently selecting another user/project target. + +**Architectural context:** Repository Lifecycle Service node-136: resp-25/resp-30/resp-31. No new platform framework; clarify discovery behavior before changing public defaults. + +**Planned verification:** Native Windows process-level tests with isolated HOME/USERPROFILE/PATH/CODEX_HOME and fixtures for .exe, batch shims only if allowed by D03, spaces, absent discovery and unchanged macOS/project/explicit-path cases. + +**Source orientation at the reviewed SHA:** +- [src/api/lifecycle.rs:3312–3347](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/api/lifecycle.rs#L3312-L3347) +- [src/api/lifecycle.rs:5060–5073](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/api/lifecycle.rs#L5060-L5073) +- [src/adapters/cli/install/verify.rs:361–369](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/adapters/cli/install/verify.rs#L361-L369) +- [src/adapters/mcp/daemon.rs:1838–1843](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/adapters/mcp/daemon.rs#L1838-L1843) +- [.cargo/config.toml:1–3](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/.cargo/config.toml#L1-L3) + +**Dependencies:** S00. **Open decisions:** D03. No task depends on a guessed implementation date. + +### S05 — Reject failing native probes in the PowerShell installer + +**Outcome:** A checksum-valid executable that exits nonzero cannot pass installer validation or replace a working installation. + +**Problem/evidence:** Current Assert-Binary pipes native output to Out-Null without checking LASTEXITCODE. ErrorActionPreference=Stop alone is not a native-exit policy. Static PowerShell semantics finding; no local pwsh execution. + +**Requirements / criteria:** R05 → A09. + +- Check each native exit immediately and throw a clear failure for nonzero. +- Keep validation of both binaries before any destination replacement; preserve checksum checks and supported-host rejection. +- Do not conflate this fix with an unapproved two-binary rollback/atomic-upgrade redesign. + +**Acceptance (proposed):** + + +- **A09** — Given a valid checksum but a --help/--version probe returning nonzero, both DryRun and real install fail and existing destination binaries stay byte-identical. Given successful probes for both binaries, intended installation succeeds; missing/corrupt files still fail before replacement. Execute on the approved Windows PowerShell baseline and any separately claimed PowerShell version; record real exit and destination evidence. + +**Architectural context:** Release Gate resp-16, resp-256; existing installer validation behavior restoration, no invented model claim required. + +**Planned verification:** Native Windows installer tests using checksum-valid controlled executables with success/nonzero exits, DryRun, real destination-preservation and checksum-failure paths. + +**Source orientation at the reviewed SHA:** +- [release/install/install.ps1:27–47](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/release/install/install.ps1#L27-L47) +- [release/install/install.ps1:76–89](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/release/install/install.ps1#L76-L89) + +**Dependencies:** S00. **Open decisions:** D05. No task depends on a guessed implementation date. + +### S06 — Restore watch help documentation of the parallel default + +**Outcome:** Watch help states the existing default and passes the current contract test on both native platforms. + +**Problem/evidence:** Current watch_help description omits ; default behavior required by watch_help_documents_parallel_default_and_opt_out. Reproduced fresh on Mac; current CI fails Mac unit and Windows unit shard4. No runtime parser failure implied. + +**Requirements / criteria:** R06 → A10. + +- Make watch help accurately state the existing parallel default and single-thread opt-out, consistently with build help. +- Keep retired workload-resource options removed and retain the existing help/CLI behavioral checks. + +**Acceptance (proposed):** + + +- **A10** — Given watch --help, the documented default/opt-out agrees with actual parser defaults and the existing failing test passes. Build/watch help and argument behavior remain consistent and retired options remain unsupported; do not bypass required checks or delete meaningful assertions. + +**Architectural context:** CLI Adapter node-9; documentation/test correction restoring existing behavior, no new architecture entry required. + +**Planned verification:** Run the exact help test plus adjacent CLI argument/default tests on Mac and Windows; attach head-bound passing cohort evidence. + +**Source orientation at the reviewed SHA:** +- [src/adapters/cli/format/help.rs:21–22](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/adapters/cli/format/help.rs#L21-L22) +- [src/adapters/cli/tests/dispatch_materialize.rs:67–79](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/adapters/cli/tests/dispatch_materialize.rs#L67-L79) + +**Dependencies:** S00. **Open decisions:** none beyond exact-scope approval/revalidation. No task depends on a guessed implementation date. + +### S07 — Render valid Windows COPY paths in the trace-metadata fixture + +**Outcome:** The COPY metadata regression tests actual generated SQL paths consistently on Windows and macOS. + +**Problem/evidence:** The current test interpolates source.display() raw Windows backslashes; the debug parser treats them as SQL escapes and returns None. Hosted Windows unit shard1 fails; fresh Mac passes. Production COPY generator already normalizes paths. + +**Requirements / criteria:** R07 → A11. + +- Build the fixture statement through the existing production COPY path rendering policy, including quoting/escaping/prefix treatment. +- Retain the exact four-byte metadata oracle and bounded debug instrumentation. Do not add production loading fallbacks or alter native COPY behavior to satisfy invalid test SQL. + +**Acceptance (proposed):** + + +- **A11** — Given a Windows temp path with backslashes/spaces, the fixture statement uses the production renderer and metadata returns the exact intended file and four bytes. Native Windows and Mac trace-metadata tests pass while existing COPY failure/acknowledgement/diagnostic and path-rendering cases remain valid. + +**Architectural context:** Graph Store / Graph Writer; test-only correction under existing CBG-COPY-01 contracts. No new claim or mutation-retry behavior. + +**Planned verification:** Native Windows exact case and adjacent COPY renderer/instrumentation tests; verify real generated statement rather than only a magic string. + +**Source orientation at the reviewed SHA:** +- [src/db_writer/phase.rs:372–399](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/db_writer/phase.rs#L372-L399) +- [src/db_writer/phase.rs:1171–1186](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/db_writer/phase.rs#L1171-L1186) +- [src/staging_writer/files.rs:47–54](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/staging_writer/files.rs#L47-L54) + +**Dependencies:** S00. **Open decisions:** none beyond exact-scope approval/revalidation. No task depends on a guessed implementation date. + +### S08 — Recognize Windows fs2 contention in the reference-epoch observer + +**Outcome:** The epoch fixture waits through genuine Windows lock contention within its existing deadline and still verifies real publication birth/epoch state. + +**Problem/evidence:** Fixture retries only ErrorKind::WouldBlock; fs2 Windows reports OS33. Current Windows integration shard2 fails observing follow-up epoch. Production lock classifier already handles raw fs2 contention; no production exclusion defect established. + +**Requirements / criteria:** R08 → A12. + +- Use the existing fs2-aware contention semantics for the fixture: kind or lock_contended_error raw OS code. +- Preserve the five-second deadline and all actual epoch/birth/integrity assertions; propagate noncontention errors. +- If corrected retry still times out, investigate the real lock hold separately rather than widening deadline or weakening ownership. + +**Acceptance (proposed):** + + +- **A12** — Given an owned Windows contention fixture released before the deadline, observation retries and then reads/validates the real epoch. Given permanent contention, noncontention I/O failure or invalid epoch data, observation fails within the unchanged contract and preserves evidence. The actual first-creation/follow-up MCP publication test passes with the same birth and advanced epoch assertions. + +**Architectural context:** Graph Store node-88 resp-109 and existing cleanup/publication contracts. Fixture correction only; do not loosen product locks. + +**Planned verification:** Native Windows bounded contention/release/error cases and isolated_worker_first_creation_and_followup_keep_same_covered_publication_birth on exact source/binary provenance. + +**Source orientation at the reviewed SHA:** +- [tests/support/storage_maintenance/process.rs:730–745](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/tests/support/storage_maintenance/process.rs#L730-L745) +- [tests/storage_maintenance.rs:249–274](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/tests/storage_maintenance.rs#L249-L274) +- [src/storage/locks.rs:340–344](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/locks.rs#L340-L344) + +**Dependencies:** S00. **Open decisions:** none beyond exact-scope approval/revalidation. No task depends on a guessed implementation date. + +### S09 — Make Windows Direct lease mode truthful after relock_shared + +**Outcome:** Reported lease mode and held OS lock semantics agree under an explicitly chosen Direct-read contract. + +**Problem/evidence:** Preexisting relock_shared layers Windows fs2 Shared over Exclusive then reports Shared. Current begin_read already acquires Exclusive on both platforms, so this is P3 mode/excess-exclusion debt, not a newly proved reader-concurrency regression. + +**Requirements / criteria:** R09 → A13. + +- Resolve D04: intentionally retain/report Exclusive, or implement a real Windows release/reacquire-and-revalidate transition consistent with publication safety. +- Do not simply unlock before lock_shared across protected recovery state; an unvalidated gap can create a race. +- Do not reuse the fresh-creation helper without proving its preconditions apply to committed reads. + +**Acceptance (proposed):** + + +- **A13** — Given the approved mode policy, a second native Windows handle observes the expected Shared/Exclusive contention behavior and mode/verifies reports the truth. Native Windows and Mac Direct read/replay/writer exclusion regressions pass, including transition contention and failure; no permanent lock leak or new concurrent-reader guarantee is implied. + +**Architectural context:** Graph Store resp-109. Existing invariant clarification; a changed concurrent-reader guarantee requires explicit contract review, not an incidental compatibility shim. + +**Planned verification:** Native Windows second-handle lock-mode test plus affected Direct committed-read/recovery/writer-exclusion tests; check pinned fs2 semantics and failure/revalidation paths. + +**Source orientation at the reviewed SHA:** +- [src/storage/locks.rs:87–96](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/locks.rs#L87-L96) +- [src/storage/locks.rs:174–197](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/locks.rs#L174-L197) +- [src/storage/direct.rs:206–229](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/direct.rs#L206-L229) + +**Dependencies:** S00. **Open decisions:** D04. No task depends on a guessed implementation date. + +### S10 — Qualify the corrected native revision and installed consumer archives + +**Outcome:** One exact corrected revision has honest native test, artifact and clean-consumer qualification before Maintenance scope closure. + +**Problem/evidence:** Current head-bound CI has four failed native cohort jobs (three root causes), required failure and both artifact jobs skipped. 145 selected local Mac passes are not full workspace/Windows/release qualification. + +**Requirements / criteria:** R10 → A14, A15. + +- Preserve serial discovered inventories, bounded Windows sharding, captured CLI hashes, ignored-case accounting and fail-closed artifact gates. +- Run native Mac ARM64 and Windows x64 checks on the selected corrected revision; bind head/synthetic merge, binary hashes, archive hashes and environment. +- Execute real installation/upgrade/failure paths and installed CLI/MCP/JSON/FTS/reopen under approved clean-consumer and prerequisite policies. Reconcile stale four-target release documentation with the two-target scope; this qualification does not duplicate or close the broader DC-S5 cleanup/rollout programme. +- Resolve D05 and document the actual tested OS/PowerShell floors and source-install feature recipe; do not restore removed platforms or workload ceilings. + +**Acceptance (proposed):** + + +- **A14** — All required native cohorts and artifact build-and-smoke jobs actually pass for the corrected source; skipped jobs, old runs or configured tests are not accepted as passing evidence. + +- **A15** — The exact final immutable installed archives pass clean-consumer success and missing-prerequisite/probe-failure cases on both supported platforms under the applicable approved D01/D02/D03/D05 contracts and recorded S09 inclusion/deferral. Evidence distinguishes local implementation, native-platform qualification and aggregate closure, and rechecks retained cancellation/unknown-containment/guarded ownership contracts. A designated maintainer verifies all linked issue acceptance and approves milestone closure; issue completion percentages, commits or merges alone do not close it. + +**Architectural context:** Release Gate resp-254–resp-258, resp-16/resp-17, plus Graph Store ownership/containment contracts; proportional reconciliation of changed claims before closure. + +**Planned verification:** Full native CI at one corrected revision plus exact-archive clean-consumer install/upgrade/CLI/MCP/JSON/FTS checks; maintain JUnit/inventory/provenance where required and record unexecuted/ignored cases. + +**Source orientation at the reviewed SHA:** +- [.github/workflows/native.yml:29–103](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/.github/workflows/native.yml#L29-L103) +- [crates/xtask/src/native_tests.rs:148–187](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/crates/xtask/src/native_tests.rs#L148-L187) +- [crates/xtask/src/native_tests/shards.rs:28–64](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/crates/xtask/src/native_tests/shards.rs#L28-L64) + +**Dependencies:** S01, S02, S03, S04, S05, S06, S07, S08. **Open decisions:** D05. No task depends on a guessed implementation date. + +## 5. Failure/recovery and compatibility invariants + +- Cursor repair must not broaden deletion authority, erase unknown evidence, bypass cancellation or retain unbounded directory unions. Exact multi-batch completeness is required; incidental85 batch count is not a public constant. +- Missing/incompatible native dependencies and failing installer probes must be explicit failures before readiness/replacement under the approved policy. No silent fallback to global PATH, arbitrary DLLs, downloads or alternate configuration locations. +- Discovery failures must not map user scope into repository/CWD by default. Preserve explicit client overrides, unrelated configuration and project-scoped behavior. +- Reference observer contention stays bounded by its current deadline and preserves actual epoch/birth assertions. Unknown or noncontention failures are not transformed into success. This does not weaken production locks. +- Any Windows lock transition must preserve exclusion/revalidation around changed ownership. Simply unlock/relock is not a general atomic downgrade. +- Do not change native path rejection, raw journal recovery keys, guarded handle lifetimes, Job Object/FIFO proof, no-COPY-replay, bounded diagnostics or maintenance per-pass policy incidentally. Material behavior/acceptance changes require a revised spec and user approval. + +## 6. Acceptance trace and evidence status + +| Criterion | Requirement/slice | Method | Executed baseline / required future evidence | +|---|---|---|---| +| A00 | S00 / R01–R10 | Audit immutable spec/review links and explicit human approval | This proposal is not approved; planning only. | +| A01–A02 | R01 / S01 | Exact rooted helper multi-batch nested test; production receipt-selection case; cancellation/namespace tests | Mac exact-source helper baseline200/outer85/inner200 fails. No complete collector-starvation/data-loss repro. Fixed native runs required. | +| A03–A04 | R02 / S02 | Final PE imports + installed clean Windows JSON/FTS/CLI/MCP and failure cases | Current asset imports inspected; no clean Windows missing-DLL execution. D01/D05 pending. | +| A05–A06 | R03 / S03 | Final release Mach-O/rpaths + clean approved ARM64 install/reopen/failure | Fresh debug CLI imports inspected only; no final release/clean consumer run. D02/D05 pending. | +| A07–A08 | R04 / S04 | Process-level native Windows env/PATH/override cases and Mac regression | Fresh CLI portable-logic reproduction points user scope to dot with HOME absent. Not Windows execution. D03 pending. | +| A09 | R05 / S05 | Native PowerShell valid-checksum/nonzero executable preflight/destination preservation | Source semantics only; pwsh unavailable locally. D05 pending. | +| A10 | R06 / S06 | Exact watch-help and adjacent behavior tests on both native targets | Fresh Mac failure; hosted Mac+Win failure. Fixed run pending. | +| A11 | R07 / S07 | Production-rendered path fixture + native Windows/Mac metadata/COPY tests | Mac passes; Windows unit shard1 fails raw path fixture. No production loading defect inferred. | +| A12 | R08 / S08 | Windows owned contention/release/timeout/noncontention cases + actual epoch publication case | Windows integration shard2 failed OS33; product classifier already handles raw fs2 errors. Lock duration not established. | +| A13 | R09 / S09 | Native Windows second-handle Shared/Exclusive behavior + Direct read/replay/exclusion | Static fs2 semantics; no Windows local execution. Existing admission already exclusive on both OSes. D04 pending. | +| A14–A15 | R10 / S10 | All required native cohorts/artifact jobs + exact installed clean-consumer success/failure; maintainer sign-off | Current CI40330652083 failed; both artifacts skipped. 145 selected local Mac passes are not qualification/closure. | + +Actual verification record: [review-evidence.md](review-evidence.md). SHA-bound failed CI tested a synthetic merge; only CHANGELOG differs from reviewed implementation. Later passing evidence must identify full source/merge SHA, native OS/toolchain, CLI/archive hashes, exact command/method, result and limits. Mark planned/ignored/unexecuted cases explicitly. Ingest JUnit into Scryer only where existing claims require it, after actual execution. + +## 7. Open decisions and start gate + +Owner for D01–D05 is the repository maintainer/user. Recommendations are options, not preselected approvals. The approval record may approve independent exact slices without falsely approving other decisions; do not reopen unchanged approved contracts. Do not silently choose runtime/compatibility/acceptance policy while implementing a small fix. + +### D01 — Windows native dependency delivery + +- Affected: S02, S10. +- Recommendation/options: Prefer a verified app-local distribution/loader contract if license and dependency compatibility checks allow it. Alternative: explicit supported prerequisites checked before setup. +- Tradeoff/start constraint: Do not select app-local DLL placement, global PATH changes or implicit downloads without approval. Missing-library failure must be clear; exact final imports and load tests are required. +- Status: unanswered/proposed. No implementation approval recorded. + +### D02 — macOS OpenSSL delivery + +- Affected: S03, S10. +- Recommendation/options: Choose static linkage or verified relative dylib/rpath packaging where feasible. Alternative: explicitly supported Homebrew prerequisite. +- Tradeoff/start constraint: A debug import list is not a release qualification. No undeclared producer-prefix dependency may be called portable. +- Status: unanswered/proposed. No implementation approval recorded. + +### D03 — Windows discovery precedence and command kinds + +- Affected: S04. +- Recommendation/options: Define HOME/USERPROFILE/client-specific override precedence and fail explicitly when no valid user directory exists. Resolve .exe directly; review batch shims separately. +- Tradeoff/start constraint: Do not silently change explicit paths/project scope or introduce unsafe shell fallback for .cmd/.bat. Current issue records a gap, not approval of a specific precedence policy. +- Status: unanswered/proposed. No implementation approval recorded. + +### D04 — Direct read lock-mode contract + +- Affected: S09. +- Recommendation/options: Prefer the smallest truthful mode behavior consistent with current exclusive admission; if true downgrade is required, specify revalidation around the Windows gap. +- Tradeoff/start constraint: Keeping/reporting Exclusive changes advertised mode; release/reacquire can race. No new concurrent-reader guarantee is approved by this backlog. +- Status: unanswered/proposed. No implementation approval recorded. + +### D05 — Supported consumer qualification matrix and Cargo-install recipe + +- Affected: S02, S03, S05, S10. +- Recommendation/options: Name tested macOS ARM64/Windows x64 OS and PowerShell baselines; honor macOS13.3 native extension floor and explicitly select/document source-install bundled-feature behavior. +- Tradeoff/start constraint: No platform expansion, implicit minimum-OS guarantee, resource-ceiling restoration, blanket timeout increase or weakened test gate. +- Status: unanswered/proposed. No implementation approval recorded. + +## 8. Handoff, dependencies and closure + +- Publish this proposed revision and evidence in a separate docs-only review branch/PR; do not modify PR153 code or treat its existing approvals as approval of new maintenance policy. Linear issues link the remotely available full spec-commit permalink and applicable requirement/criterion IDs. Approval must later pin the exact approved content. +- Group this bounded outcome with one Maintenance milestone. S00 gates dependent implementation; S01–S08 are independently deliverable after their own contracts/approval, not a sequential implementation chain. S10 depends on the included corrected slices and actual native/consumer evidence. S09 is lower-priority residual debt: explicitly decide whether to include it in the qualified release or formally defer it; do not claim it fixed or silently omit it from milestone closure. +- There is no ready Scryer execution brief or writable-file assignment yet. Before implementation, revalidate exact current source/tools, settle affected decisions, identify existing claims, preserve other work, and use one writer per shared manifest/target/installer boundary. No new architecture entries merely to fill this table. +- Record changed files/anchors, exact approved spec SHA/scope, commits/PRs, executed criteria evidence, native environments, failure attempts, review outcomes, remaining limits and Linear transitions. Follow fresh required review gates for large implementations; planning review is not that implementation review. +- Individual issues close only on their actual acceptance; full native/consumer qualification and maintainer aggregate closure stay separate. No merge/deploy/restart authorization is granted by completion of this planning request. + +### Planning authorization record + +User request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. This is the sole new authorization recorded here; it is not a fabricated exact-revision sign-off. No product constants or implementation source changed by this planning work. From 039bfea717f1c4869220e609885505b27bc79f8e Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Tue, 27 Oct 2026 08:21:41 +0930 Subject: [PATCH 02/17] docs(spec): link Maintenance delivery issues --- docs/specs/CBG-PLAT-01/delivery.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 docs/specs/CBG-PLAT-01/delivery.md diff --git a/docs/specs/CBG-PLAT-01/delivery.md b/docs/specs/CBG-PLAT-01/delivery.md new file mode 100644 index 00000000..bafe2f8c --- /dev/null +++ b/docs/specs/CBG-PLAT-01/delivery.md @@ -0,0 +1,29 @@ +# CBG-PLAT-01 — delivery index + +- Project: [Maintenance, CodebaseGraph workspace](https://linear.app/codebasegraph/project/maintenance-33932479ebd0). Team `COD`. +- Milestone: `CBG-PLAT-01 — PR #153 platform maintenance`, ID `ff37f4fc-4072-439a-8691-9c15dc739ddd`. +- Proposed canonical specification: [rev0.1 at full commit 33360340379f878e93324e0829a1bb6f33eafc9d](https://github.com/rabii-chaarani/codebaseGraph/blob/33360340379f878e93324e0829a1bb6f33eafc9d/docs/specs/CBG-PLAT-01/spec.md). No approved specification SHA or implementation sign-off is recorded. +- Draft docs-only publication: [PR155](https://github.com/rabii-chaarani/codebaseGraph/pull/155), stacked on PR153. No product source/constants changed. +- User authorized this spec/backlog creation only. All issues are Backlog; Medium priority for P2/planning/qualification, Low for preexisting P3. No dates, estimates or assignees invented. + +| Work item | Linear | Outcome | Depends on | +|---|---|---|---| +| `CBG-PLAT-01/S00` | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | Publish the proposed platform contracts and record exact-scope approval | None; planning/approval gate | +| `CBG-PLAT-01/S01` | [COD-52](https://linear.app/codebasegraph/issue/COD-52/cbg-plat-01s01-isolate-macos-directory-enumeration-cursors-for-nested) | Isolate macOS directory enumeration cursors for nested cleanup scans | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | +| `CBG-PLAT-01/S02` | [COD-53](https://linear.app/codebasegraph/issue/COD-53/cbg-plat-01s02-define-and-satisfy-windows-archive-native-library) | Define and satisfy Windows archive native-library dependencies | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | +| `CBG-PLAT-01/S03` | [COD-54](https://linear.app/codebasegraph/issue/COD-54/cbg-plat-01s03-remove-undeclared-homebrew-path-assumptions-from-macos) | Remove undeclared Homebrew-path assumptions from macOS distribution | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | +| `CBG-PLAT-01/S04` | [COD-55](https://linear.app/codebasegraph/issue/COD-55/cbg-plat-01s04-use-explicit-windows-user-directory-and-executable) | Use explicit Windows user-directory and executable discovery policy | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | +| `CBG-PLAT-01/S05` | [COD-56](https://linear.app/codebasegraph/issue/COD-56/cbg-plat-01s05-reject-failing-native-probes-in-the-powershell) | Reject failing native probes in the PowerShell installer | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | +| `CBG-PLAT-01/S06` | [COD-57](https://linear.app/codebasegraph/issue/COD-57/cbg-plat-01s06-restore-watch-help-documentation-of-the-parallel) | Restore watch help documentation of the parallel default | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | +| `CBG-PLAT-01/S07` | [COD-58](https://linear.app/codebasegraph/issue/COD-58/cbg-plat-01s07-render-valid-windows-copy-paths-in-the-trace-metadata) | Render valid Windows COPY paths in the trace-metadata fixture | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | +| `CBG-PLAT-01/S08` | [COD-59](https://linear.app/codebasegraph/issue/COD-59/cbg-plat-01s08-recognize-windows-fs2-contention-in-the-reference-epoch) | Recognize Windows fs2 contention in the reference-epoch observer | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | +| `CBG-PLAT-01/S09` | [COD-60](https://linear.app/codebasegraph/issue/COD-60/cbg-plat-01s09-make-windows-direct-lease-mode-truthful-after-relock) | Make Windows Direct lease mode truthful after relock_shared | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | +| `CBG-PLAT-01/S10` | [COD-61](https://linear.app/codebasegraph/issue/COD-61/cbg-plat-01s10-qualify-the-corrected-native-revision-and-installed) | Qualify the corrected native revision and installed consumer archives | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record), [COD-52](https://linear.app/codebasegraph/issue/COD-52/cbg-plat-01s01-isolate-macos-directory-enumeration-cursors-for-nested), [COD-53](https://linear.app/codebasegraph/issue/COD-53/cbg-plat-01s02-define-and-satisfy-windows-archive-native-library), [COD-54](https://linear.app/codebasegraph/issue/COD-54/cbg-plat-01s03-remove-undeclared-homebrew-path-assumptions-from-macos), [COD-55](https://linear.app/codebasegraph/issue/COD-55/cbg-plat-01s04-use-explicit-windows-user-directory-and-executable), [COD-56](https://linear.app/codebasegraph/issue/COD-56/cbg-plat-01s05-reject-failing-native-probes-in-the-powershell), [COD-57](https://linear.app/codebasegraph/issue/COD-57/cbg-plat-01s06-restore-watch-help-documentation-of-the-parallel), [COD-58](https://linear.app/codebasegraph/issue/COD-58/cbg-plat-01s07-render-valid-windows-copy-paths-in-the-trace-metadata), [COD-59](https://linear.app/codebasegraph/issue/COD-59/cbg-plat-01s08-recognize-windows-fs2-contention-in-the-reference-epoch) | + +S09 is related to S10 but not a cause of the current CI failures. Its inclusion or explicit maintainer deferral is required before aggregate closure; no unsafe lock transition is preapproved. + +S00 may record exact independent slice approvals/deferrals; unrelated unresolved policy must not be treated as a real product dependency. Implementation remains gated by the applicable approved content even if an issue status changes. + +The configured live Scryer/Wiki instances supplied intended context only; this delivery index does not claim PR-head model reconciliation or implementation. Revalidate claims/directives proportionately at implementation start. + +Verification of this planning task: existing team/project/archived records searched; all created issue IDs, project/state/milestone/links and actual blocking relationships read back through Linear before handoff. Git spec/evidence links were verified remotely available. No fix or passing future qualification is claimed. From 18d4f1e2e1e59f8c8ac05f90e9c8982b0af6c00c Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Tue, 27 Oct 2026 08:35:51 +0930 Subject: [PATCH 03/17] docs(spec): record approved Windows runtime bundling policy --- .../decisions/d01-windows-runtime-bundling.md | 26 +++++++++++++++ docs/specs/CBG-PLAT-01/delivery.md | 2 +- docs/specs/CBG-PLAT-01/spec.md | 32 ++++++++++--------- 3 files changed, 44 insertions(+), 16 deletions(-) create mode 100644 docs/specs/CBG-PLAT-01/decisions/d01-windows-runtime-bundling.md diff --git a/docs/specs/CBG-PLAT-01/decisions/d01-windows-runtime-bundling.md b/docs/specs/CBG-PLAT-01/decisions/d01-windows-runtime-bundling.md new file mode 100644 index 00000000..6d63db2d --- /dev/null +++ b/docs/specs/CBG-PLAT-01/decisions/d01-windows-runtime-bundling.md @@ -0,0 +1,26 @@ +# D01 — Windows prebuilt runtime bundling decision + +## Approved scope and source proposal + +- Work: `CBG-PLAT-01/D01`; applies to S02/COD-53 and qualification S10/COD-61. +- Canonical proposal: `docs/specs/CBG-PLAT-01/spec.md`, proposed revision0.1 at full Git commit `33360340379f878e93324e0829a1bb6f33eafc9d`, **D01 only**, not the full specification or its implementation. +- Immutable proposal: https://github.com/rabii-chaarani/codebaseGraph/blob/33360340379f878e93324e0829a1bb6f33eafc9d/docs/specs/CBG-PLAT-01/spec.md#d01--windows-native-dependency-delivery +- Decision reference: this conversation, immediately after the user asked to resolve the pending decisions together. The assistant asked whether the Windows archive should work without manual dependency installation and presented A (bundle required runtimes) versus B (external prerequisites). The user answered **“A”**. +- Decision status: **policy approved**. Revision0.2 records that selection; it does not pretend the user approved the entire revised document. + +## Selected option A + +Windows **prebuilt releases** must bundle the compatible redistributable non-system runtime libraries required by the shipped programs and JSON/FTS extensions. Users should install/extract the archive and run it without separately installing OpenSSL or the required Visual C++ runtime. + +The selected option includes maintaining compatible redistributable libraries, license notices, checksums/integrity verification and application-controlled DLL loading. Larger downloads and additional release-maintenance responsibility were stated tradeoffs. Do not widen global PATH or add arbitrary caller-writable library fallback. Determine exact compatible versions/layout and safe loading mechanisms during authorized implementation; no specific DLL placement or API design was selected by the user. + +If licensing, ABI compatibility or redistribution prevents this option, report the blocker. Do not silently substitute the rejected manual-prerequisite experience. + +## What this does not approve + +- Implementation start or completion of COD-53/R02/A03–A04, source changes, a model implementation claim or passing platform qualification. +- D02 macOS distribution, D03 discovery, D04 lock mode or D05 OS/PowerShell floors and **Cargo source-install policy**. +- A general Windows self-contained/system-library guarantee beyond an explicit approved consumer baseline. +- Dependency/extension ABI upgrades, global environment changes, automatic downloads, merge, deployment or live service restart. + +COD-51 stays Backlog as the broader exact-scope approval gate; COD-53/COD-61 remain unimplemented/unqualified. Existing issue blockers are not removed merely because one policy is now selected. Subsequent exact-slice implementation approval can reuse D01 without reopening it. diff --git a/docs/specs/CBG-PLAT-01/delivery.md b/docs/specs/CBG-PLAT-01/delivery.md index bafe2f8c..7e2461fd 100644 --- a/docs/specs/CBG-PLAT-01/delivery.md +++ b/docs/specs/CBG-PLAT-01/delivery.md @@ -4,7 +4,7 @@ - Milestone: `CBG-PLAT-01 — PR #153 platform maintenance`, ID `ff37f4fc-4072-439a-8691-9c15dc739ddd`. - Proposed canonical specification: [rev0.1 at full commit 33360340379f878e93324e0829a1bb6f33eafc9d](https://github.com/rabii-chaarani/codebaseGraph/blob/33360340379f878e93324e0829a1bb6f33eafc9d/docs/specs/CBG-PLAT-01/spec.md). No approved specification SHA or implementation sign-off is recorded. - Draft docs-only publication: [PR155](https://github.com/rabii-chaarani/codebaseGraph/pull/155), stacked on PR153. No product source/constants changed. -- User authorized this spec/backlog creation only. All issues are Backlog; Medium priority for P2/planning/qualification, Low for preexisting P3. No dates, estimates or assignees invented. +- User initially authorized spec/backlog creation, then explicitly selected **D01 optionA: bundled runtimes for Windows prebuilt releases**; see [decision record](decisions/d01-windows-runtime-bundling.md). No implementation start is authorized. D02–D05 remain unresolved; Cargo source-install policy stays open. All issues remain Backlog with no dates, estimates or assignees invented. | Work item | Linear | Outcome | Depends on | |---|---|---|---| diff --git a/docs/specs/CBG-PLAT-01/spec.md b/docs/specs/CBG-PLAT-01/spec.md index d59506fa..74307fd0 100644 --- a/docs/specs/CBG-PLAT-01/spec.md +++ b/docs/specs/CBG-PLAT-01/spec.md @@ -2,11 +2,11 @@ ## 1. Identity, status and authority -- **Revision:** proposed 0.1. **Work ID:** `CBG-PLAT-01`. +- **Revision:** 0.2, proposed implementation scope with **D01 policy approved**. **Work ID:** `CBG-PLAT-01`. - **Canonical Git path:** `docs/specs/CBG-PLAT-01/spec.md`. Supporting review evidence: [review-evidence.md](review-evidence.md) and [evidence/](evidence/). - **Delivery:** CodebaseGraph Linear workspace (`https://linear.app/codebasegraph`), existing **Maintenance** project `P-COD-2` (`https://linear.app/codebasegraph/project/maintenance-33932479ebd0`), team `COD`. This user-selected destination supersedes older project-routing advice. No new project is created. - **Baseline:** [PR #153](https://github.com/rabii-chaarani/codebaseGraph/pull/153), reviewed HEAD `862a8f88d485d5bd257ebd9456c194156fd4ee94`, version3.0.4. This evidence is not the prior checkout6aa5ba8 review. Revalidate changed source before implementation. -- **Approval:** the user requested “Create issues in Linear using the spec workflow. Create the issues in Maintenance project in CodebaseGraph Workspace.” This authorizes planning/specification publication and issue creation only. **Implementation, dependency policies, scope changes, merge, deployment and service restarts are not approved.** No approved full specification SHA exists yet; a docs commit/PR is not approval. S00 records explicit future approval of the actual committed revision/scope. +- **Approval:** the initial user request authorized planning/specification publication and issue creation. In the later D01 question, the user selected **A: bundle the required runtime libraries for Windows prebuilt releases**, including compatible redistributable libraries, licenses, checksums and controlled DLL loading, without manual OpenSSL/Visual C++ runtime installation. See [D01 decision record](decisions/d01-windows-runtime-bundling.md). This approves **D01 policy only**, not the whole specification or implementation start. D02–D05, implementation authorization, merge, deployment and service restarts remain unapproved. S00 records applicable exact-scope approvals without reopening D01. - **Closure owner:** repository maintainer/user; no automatic aggregate closure delegated. Assignees/dates/estimates remain unset. Draft requirements below are proposed, not approved acceptance changes. - **State separation:** proposed → exact-scope approved → implemented → native-platform qualified → maintainer closed. Linear Backlog, attached/configured tests, commits and percentages are not evidence of later states. @@ -33,7 +33,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract **Outcome:** Publish/pin the proposed specification and review evidence; resolve applicable decisions and obtain explicit exact-scope approval for selected dependent slices, while recording deferral of unrelated decisions. -**Problem/evidence:** The user approved creating issues/spec planning only. No current message approves implementation or chooses runtime dependency, discovery, lock or supported-environment policy. +**Problem/evidence:** Planning is authorized and D01 Windows prebuilt runtime bundling policy is approved. D02–D05 remain unresolved. No current message authorizes implementation, merge, deployment or service restart. **Requirements / criteria:** R01, R02, R03, R04, R05, R06, R07, R08, R09, R10 → A00. @@ -55,7 +55,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [docs/specs/CBG-COPY-01/resource-ceilings-approval.md:1–10](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/docs/specs/CBG-COPY-01/resource-ceilings-approval.md#L1-L10) - [README.md:45–65](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/README.md#L45-L65) -**Dependencies:** none; planning/approval only. **Open decisions:** D01, D02, D03, D04, D05. No task depends on a guessed implementation date. +**Dependencies:** none; planning/approval only. **Open decisions:** D02, D03, D04, D05. **Resolved:** D01 policy approved; no implementation start authorized. No task depends on a guessed implementation date. ### S01 — Isolate macOS directory enumeration cursors for nested cleanup scans @@ -95,18 +95,18 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract **Requirements / criteria:** R02 → A03, A04. -- Resolve D01: approved app-local compatible libraries with loader policy/licenses/checksums, or explicit supported external prerequisites with checking; do not silently choose. +- Implement the approved D01 policy for Windows prebuilt releases: bundle compatible redistributable non-system runtime libraries required by the shipped binaries and JSON/FTS extensions, including OpenSSL/VC runtime dependencies as applicable. Users must not install those runtimes separately. Include licenses, checksums and application-controlled DLL loading; do not substitute external prerequisites without a new user decision. - Keep NativeTarget/archive provenance as the single packaging authority; include all intentionally shipped sidecars in inventory and integrity verification. - Keep DLL resolution application-controlled; do not widen global PATH or load arbitrary caller-writable libraries as a fallback. **Acceptance (proposed):** -- **A03** — Given an approved clean Windows baseline without developer OpenSSL/VC PATH entries, the exact installed archive either supplies or verifies all declared native dependencies before reporting ready. +- **A03** — Given an approved clean Windows baseline without developer OpenSSL/VC PATH entries or separately installed required OpenSSL/VC runtimes, the exact installed prebuilt archive supplies its required compatible redistributable non-system native libraries and operates without manual runtime installation before reporting ready. The bundling policy is approved by D01; the exact consumer baseline remains D05. -- **A04** — Given real setup and queries, LOAD json, LOAD fts, graph build/reopen/search and k-wiki/MCP smoke succeed through installed binaries. Given a missing/incompatible declared prerequisite or sidecar, fail clearly without replacing a working installation or reporting qualification; include imports, archive hashes, licenses and loader policy in evidence. +- **A04** — Given real setup and queries, LOAD json, LOAD fts, graph build/reopen/search and k-wiki/MCP smoke succeed through installed binaries with bundled runtimes. Given a missing/incompatible bundled sidecar, fail clearly without replacing a working installation or reporting qualification; include imports, archive hashes, licenses and application-controlled loader policy in evidence. A packaging/licensing incompatibility blocks release; it does not authorize switching to manual prerequisite installation. -**Architectural context:** Graph Store resp-113; Release Gate resp-255, resp-256, resp-257, resp-258 and resp-16/resp-17. Runtime packaging policy is not yet approved; review any affected intent before coding. +**Architectural context:** Graph Store resp-113; Release Gate resp-255, resp-256, resp-257, resp-258 and resp-16/resp-17. D01 Windows prebuilt bundling policy is approved; implementation authorization, D05 baseline/source-install policy and applicable architectural reconciliation remain pending before coding. **Planned verification:** Inspect PE imports of exact final archive components and execute clean-consumer native Windows installation/JSON/FTS/reopen/CLI/MCP cases, including missing-dependency failure. @@ -116,7 +116,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [crates/xtask/src/main.rs:596–607](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/crates/xtask/src/main.rs#L596-L607) - [release/install/install.ps1:76–89](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/release/install/install.ps1#L76-L89) -**Dependencies:** S00. **Open decisions:** D01, D05. No task depends on a guessed implementation date. +**Dependencies:** S00. **Open decisions:** D05 and implementation authorization. **Resolved:** D01 Windows prebuilt runtime bundling. No task depends on a guessed implementation date. ### S03 — Remove undeclared Homebrew-path assumptions from macOS distribution @@ -363,7 +363,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract |---|---|---|---| | A00 | S00 / R01–R10 | Audit immutable spec/review links and explicit human approval | This proposal is not approved; planning only. | | A01–A02 | R01 / S01 | Exact rooted helper multi-batch nested test; production receipt-selection case; cancellation/namespace tests | Mac exact-source helper baseline200/outer85/inner200 fails. No complete collector-starvation/data-loss repro. Fixed native runs required. | -| A03–A04 | R02 / S02 | Final PE imports + installed clean Windows JSON/FTS/CLI/MCP and failure cases | Current asset imports inspected; no clean Windows missing-DLL execution. D01/D05 pending. | +| A03–A04 | R02 / S02 | Final PE imports + installed clean Windows JSON/FTS/CLI/MCP and failure cases | Current asset imports inspected; no clean Windows missing-DLL execution. D01 bundling policy approved; D05/implementation and actual native qualification pending. | | A05–A06 | R03 / S03 | Final release Mach-O/rpaths + clean approved ARM64 install/reopen/failure | Fresh debug CLI imports inspected only; no final release/clean consumer run. D02/D05 pending. | | A07–A08 | R04 / S04 | Process-level native Windows env/PATH/override cases and Mac regression | Fresh CLI portable-logic reproduction points user scope to dot with HOME absent. Not Windows execution. D03 pending. | | A09 | R05 / S05 | Native PowerShell valid-checksum/nonzero executable preflight/destination preservation | Source semantics only; pwsh unavailable locally. D05 pending. | @@ -381,10 +381,12 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio ### D01 — Windows native dependency delivery -- Affected: S02, S10. -- Recommendation/options: Prefer a verified app-local distribution/loader contract if license and dependency compatibility checks allow it. Alternative: explicit supported prerequisites checked before setup. -- Tradeoff/start constraint: Do not select app-local DLL placement, global PATH changes or implicit downloads without approval. Missing-library failure must be clear; exact final imports and load tests are required. -- Status: unanswered/proposed. No implementation approval recorded. +- Affected: S02, S10; Linear COD-53 and COD-61. +- **Decision: A — bundle required runtimes with Windows prebuilt releases.** Users must not separately install OpenSSL or the required Visual C++ runtime to use the prebuilt archive. +- Include compatible redistributable required non-system libraries, their licenses, checksums and an application-controlled DLL-loading policy. Preserve the existing security constraints: no global PATH widening or arbitrary caller-writable DLL fallback. +- Exact compatible versions, app-local layout and secure loading mechanism are implementation details to validate within this policy, not already approved code. If licensing/ABI/redistribution is infeasible, report a blocker rather than silently switch to option B. +- User decision: **“A”**, answering the immediately preceding explicit D01 A-versus-B question in this conversation. See [decision/approval record](decisions/d01-windows-runtime-bundling.md). +- **Status: policy approved.** Not approval of all R02/A03–A04 implementation, the rest of this specification, merge, deployment or service restart. D05 Cargo source-install recipe and consumer/OS qualification baseline remain open. ### D02 — macOS OpenSSL delivery @@ -424,4 +426,4 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio ### Planning authorization record -User request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. This is the sole new authorization recorded here; it is not a fabricated exact-revision sign-off. No product constants or implementation source changed by this planning work. +Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. The later explicit answer **“A”** selects D01 Windows prebuilt runtime bundling, as recorded in [D01](decisions/d01-windows-runtime-bundling.md). Neither request approves implementation of the whole spec. No product constants or implementation source changed by this planning/decision work. From f0b0cdefbfd4d655a776a6c4d0ca8d326d56a2cd Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Tue, 27 Oct 2026 08:40:06 +0930 Subject: [PATCH 04/17] docs(spec): record approved macOS OpenSSL bundling policy --- .../decisions/d02-macos-openssl-bundling.md | 23 +++++++++++++ docs/specs/CBG-PLAT-01/delivery.md | 2 +- docs/specs/CBG-PLAT-01/spec.md | 34 ++++++++++--------- 3 files changed, 42 insertions(+), 17 deletions(-) create mode 100644 docs/specs/CBG-PLAT-01/decisions/d02-macos-openssl-bundling.md diff --git a/docs/specs/CBG-PLAT-01/decisions/d02-macos-openssl-bundling.md b/docs/specs/CBG-PLAT-01/decisions/d02-macos-openssl-bundling.md new file mode 100644 index 00000000..e844267f --- /dev/null +++ b/docs/specs/CBG-PLAT-01/decisions/d02-macos-openssl-bundling.md @@ -0,0 +1,23 @@ +# D02 — macOS prebuilt OpenSSL dylib bundling decision + +## Approved scope and source proposal + +- Work: `CBG-PLAT-01/D02`; applies to S03/COD-54 and qualification S10/COD-61. +- Canonical proposal: `docs/specs/CBG-PLAT-01/spec.md`, revision0.2 at full Git commit `18d4f1e2e1e59f8c8ac05f90e9c8982b0af6c00c`, **D02 policy only**, not the whole specification or implementation. +- Immutable proposal: https://github.com/rabii-chaarani/codebaseGraph/blob/18d4f1e2e1e59f8c8ac05f90e9c8982b0af6c00c/docs/specs/CBG-PLAT-01/spec.md#d02--macos-openssl-delivery +- Decision reference: this conversation, immediately after the D02 question offered A (bundle OpenSSL dylibs), B (static OpenSSL), or C (require Homebrew OpenSSL). The user answered **“A”**. +- Decision status: **policy approved**. Revision0.3 records this selected option; the user did not approve the entire revised document. + +## Selected option A + +macOS **ARM64 prebuilt releases** bundle compatible redistributable OpenSSL dylibs. Users do not need Homebrew or a separately installed OpenSSL. Package the libraries with relative install names/runtime paths, license notices and checksums/integrity verification. The stated tradeoff is maintaining those libraries and their packaging while retaining the existing dynamic-linking design rather than a static-linking redesign. + +The exact supported library versions, archive layout, relative install-name/rpath strategy and tooling must be validated during authorized implementation. The final release archive, not only a debug executable, must be inspected and tested on a clean approved consumer baseline. Missing/corrupt/incompatible bundled libraries must fail clearly. If licensing, compatibility or redistribution prevents the selected policy, report a blocker rather than silently require Homebrew or switch to static linkage. + +## What this does not approve + +- Implementation start/completion for COD-54/R03/A05–A06, source changes, a model implementation claim or passing qualification. +- D03 Windows discovery, D04 lock mode, or D05 OS/PowerShell floors and Cargo source-install policy. +- Intel macOS/Linux support expansion, a dependency/extension ABI upgrade, global environment mutation, automatic downloads, merge, deployment or service restart. + +D01 remains approved independently. COD-51, COD-54 and COD-61 stay Backlog; no blocker or implementation gate is removed by this policy record alone. Reuse D02 in later exact-slice implementation approval without reopening the settled choice. diff --git a/docs/specs/CBG-PLAT-01/delivery.md b/docs/specs/CBG-PLAT-01/delivery.md index 7e2461fd..ab507a01 100644 --- a/docs/specs/CBG-PLAT-01/delivery.md +++ b/docs/specs/CBG-PLAT-01/delivery.md @@ -4,7 +4,7 @@ - Milestone: `CBG-PLAT-01 — PR #153 platform maintenance`, ID `ff37f4fc-4072-439a-8691-9c15dc739ddd`. - Proposed canonical specification: [rev0.1 at full commit 33360340379f878e93324e0829a1bb6f33eafc9d](https://github.com/rabii-chaarani/codebaseGraph/blob/33360340379f878e93324e0829a1bb6f33eafc9d/docs/specs/CBG-PLAT-01/spec.md). No approved specification SHA or implementation sign-off is recorded. - Draft docs-only publication: [PR155](https://github.com/rabii-chaarani/codebaseGraph/pull/155), stacked on PR153. No product source/constants changed. -- User initially authorized spec/backlog creation, then explicitly selected **D01 optionA: bundled runtimes for Windows prebuilt releases**; see [decision record](decisions/d01-windows-runtime-bundling.md). No implementation start is authorized. D02–D05 remain unresolved; Cargo source-install policy stays open. All issues remain Backlog with no dates, estimates or assignees invented. +- User initially authorized spec/backlog creation, then separately selected **D01 option A: bundled Windows prebuilt runtimes** ([record](decisions/d01-windows-runtime-bundling.md)) and **D02 option A: bundled macOS prebuilt OpenSSL dylibs with relative runtime paths** ([record](decisions/d02-macos-openssl-bundling.md)); no Homebrew prerequisite. No implementation start is authorized. D03–D05 remain unresolved; Cargo source-install policy stays open. All issues remain Backlog with no dates, estimates or assignees invented. | Work item | Linear | Outcome | Depends on | |---|---|---|---| diff --git a/docs/specs/CBG-PLAT-01/spec.md b/docs/specs/CBG-PLAT-01/spec.md index 74307fd0..c355af3c 100644 --- a/docs/specs/CBG-PLAT-01/spec.md +++ b/docs/specs/CBG-PLAT-01/spec.md @@ -2,11 +2,11 @@ ## 1. Identity, status and authority -- **Revision:** 0.2, proposed implementation scope with **D01 policy approved**. **Work ID:** `CBG-PLAT-01`. +- **Revision:** 0.3, proposed implementation scope with **D01 and D02 policies approved**. **Work ID:** `CBG-PLAT-01`. - **Canonical Git path:** `docs/specs/CBG-PLAT-01/spec.md`. Supporting review evidence: [review-evidence.md](review-evidence.md) and [evidence/](evidence/). - **Delivery:** CodebaseGraph Linear workspace (`https://linear.app/codebasegraph`), existing **Maintenance** project `P-COD-2` (`https://linear.app/codebasegraph/project/maintenance-33932479ebd0`), team `COD`. This user-selected destination supersedes older project-routing advice. No new project is created. - **Baseline:** [PR #153](https://github.com/rabii-chaarani/codebaseGraph/pull/153), reviewed HEAD `862a8f88d485d5bd257ebd9456c194156fd4ee94`, version3.0.4. This evidence is not the prior checkout6aa5ba8 review. Revalidate changed source before implementation. -- **Approval:** the initial user request authorized planning/specification publication and issue creation. In the later D01 question, the user selected **A: bundle the required runtime libraries for Windows prebuilt releases**, including compatible redistributable libraries, licenses, checksums and controlled DLL loading, without manual OpenSSL/Visual C++ runtime installation. See [D01 decision record](decisions/d01-windows-runtime-bundling.md). This approves **D01 policy only**, not the whole specification or implementation start. D02–D05, implementation authorization, merge, deployment and service restarts remain unapproved. S00 records applicable exact-scope approvals without reopening D01. +- **Approval:** the initial user request authorized planning/specification publication and issue creation. The user later selected **D01 option A: bundle required Windows prebuilt runtime libraries**, with licenses, checksums and controlled DLL loading, and **D02 option A: bundle OpenSSL dylibs for macOS prebuilt releases**, with relative runtime paths, licenses and checksums; no Homebrew prerequisite. See [D01](decisions/d01-windows-runtime-bundling.md) and [D02](decisions/d02-macos-openssl-bundling.md). These approve the two distribution policies only, not the entire specification or implementation start. D03–D05, implementation authorization, merge, deployment and service restarts remain unapproved. S00 records applicable exact-scope approvals without reopening D01/D02. - **Closure owner:** repository maintainer/user; no automatic aggregate closure delegated. Assignees/dates/estimates remain unset. Draft requirements below are proposed, not approved acceptance changes. - **State separation:** proposed → exact-scope approved → implemented → native-platform qualified → maintainer closed. Linear Backlog, attached/configured tests, commits and percentages are not evidence of later states. @@ -33,7 +33,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract **Outcome:** Publish/pin the proposed specification and review evidence; resolve applicable decisions and obtain explicit exact-scope approval for selected dependent slices, while recording deferral of unrelated decisions. -**Problem/evidence:** Planning is authorized and D01 Windows prebuilt runtime bundling policy is approved. D02–D05 remain unresolved. No current message authorizes implementation, merge, deployment or service restart. +**Problem/evidence:** Planning is authorized; D01 Windows prebuilt runtime bundling and D02 macOS prebuilt OpenSSL dylib bundling policies are approved. D03–D05 remain unresolved. No current message authorizes implementation, merge, deployment or service restart. **Requirements / criteria:** R01, R02, R03, R04, R05, R06, R07, R08, R09, R10 → A00. @@ -55,7 +55,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [docs/specs/CBG-COPY-01/resource-ceilings-approval.md:1–10](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/docs/specs/CBG-COPY-01/resource-ceilings-approval.md#L1-L10) - [README.md:45–65](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/README.md#L45-L65) -**Dependencies:** none; planning/approval only. **Open decisions:** D02, D03, D04, D05. **Resolved:** D01 policy approved; no implementation start authorized. No task depends on a guessed implementation date. +**Dependencies:** none; planning/approval only. **Open decisions:** D03, D04, D05. **Resolved:** D01 and D02 policies approved; no implementation start authorized. No task depends on a guessed implementation date. ### S01 — Isolate macOS directory enumeration cursors for nested cleanup scans @@ -126,20 +126,20 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract **Requirements / criteria:** R03 → A05, A06. -- Resolve D02: static linking, verified relocatable bundled dylibs/rpaths, or explicit supported prerequisite contract. +- Follow approved D02 option A for macOS ARM64 prebuilt releases: bundle compatible redistributable OpenSSL dylibs with relative install names/runtime paths, licenses and checksums. Users must not install Homebrew or OpenSSL separately. Do not switch to static linking or external prerequisites without a new user decision. - Retain exact-artifact checksums/provenance and inspect final release imports, not only a debug build. - Document the approved ARM64/minimum-OS dependency policy; do not restore intentionally removed Intel/Linux targets. **Acceptance (proposed):** -- **A05** — Given the approved consumer baseline, final installed ARM64 archive --help, graph/JSON/FTS build and reopen, k-wiki and MCP operate without undeclared producer-path dependencies. +- **A05** — Given the approved clean consumer baseline without Homebrew or a separately installed OpenSSL, the final installed ARM64 archive --help, graph/JSON/FTS build and reopen, k-wiki and MCP operate using the bundled compatible OpenSSL dylibs and relative runtime paths. No producer-specific absolute Homebrew path may be required. -- **A06** — Given external prerequisites are the approved policy, installation checks and documents their supported version/location and fails clearly when absent. Final archive otool dependency/install-name/rpath evidence matches the approved policy; licenses/checksums cover any bundled dylibs. +- **A06** — Final release archive otool dependency/install-name/rpath evidence confirms relative resolution of the bundled OpenSSL dylibs; licenses/checksums cover them. Given a missing, corrupt or incompatible bundled library, fail clearly without reporting readiness or qualification. A redistribution/compatibility blocker must be reported, not converted silently into a Homebrew prerequisite. -**Architectural context:** Release Gate resp-255–resp-258, resp-16/resp-17; Graph Store resp-113. Change only approved native distribution policy, not process containment. +**Architectural context:** Release Gate resp-255–resp-258, resp-16/resp-17; Graph Store resp-113. D02 dylib-bundling policy is approved; implementation authorization, D05 consumer/minimum-OS baseline and applicable architectural reconciliation remain pending. Do not change process containment. -**Planned verification:** Build the actual ARM64 release archive, inspect Mach-O imports/rpaths, then execute installed archive on a clean approved macOS consumer baseline and prerequisite-failure cases. +**Planned verification:** Build the actual ARM64 release archive, inspect Mach-O imports/install names/rpaths, then execute the installed archive on a clean approved macOS consumer baseline without Homebrew/OpenSSL and with missing/corrupt bundled-library negative cases. **Source orientation at the reviewed SHA:** - [build.rs:10–26](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/build.rs#L10-L26) @@ -147,7 +147,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [crates/xtask/src/main.rs:596–607](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/crates/xtask/src/main.rs#L596-L607) - [README.md:45–65](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/README.md#L45-L65) -**Dependencies:** S00. **Open decisions:** D02, D05. No task depends on a guessed implementation date. +**Dependencies:** S00. **Open decisions:** D05 and implementation authorization. **Resolved:** D02 macOS prebuilt OpenSSL dylib bundling. No task depends on a guessed implementation date. ### S04 — Use explicit Windows user-directory and executable discovery policy @@ -364,7 +364,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract | A00 | S00 / R01–R10 | Audit immutable spec/review links and explicit human approval | This proposal is not approved; planning only. | | A01–A02 | R01 / S01 | Exact rooted helper multi-batch nested test; production receipt-selection case; cancellation/namespace tests | Mac exact-source helper baseline200/outer85/inner200 fails. No complete collector-starvation/data-loss repro. Fixed native runs required. | | A03–A04 | R02 / S02 | Final PE imports + installed clean Windows JSON/FTS/CLI/MCP and failure cases | Current asset imports inspected; no clean Windows missing-DLL execution. D01 bundling policy approved; D05/implementation and actual native qualification pending. | -| A05–A06 | R03 / S03 | Final release Mach-O/rpaths + clean approved ARM64 install/reopen/failure | Fresh debug CLI imports inspected only; no final release/clean consumer run. D02/D05 pending. | +| A05–A06 | R03 / S03 | Final release Mach-O/rpaths + clean approved ARM64 install/reopen/failure | Fresh debug CLI imports inspected only; no final release/clean consumer run. D02 dylib-bundling policy approved; D05/implementation and actual native qualification pending. | | A07–A08 | R04 / S04 | Process-level native Windows env/PATH/override cases and Mac regression | Fresh CLI portable-logic reproduction points user scope to dot with HOME absent. Not Windows execution. D03 pending. | | A09 | R05 / S05 | Native PowerShell valid-checksum/nonzero executable preflight/destination preservation | Source semantics only; pwsh unavailable locally. D05 pending. | | A10 | R06 / S06 | Exact watch-help and adjacent behavior tests on both native targets | Fresh Mac failure; hosted Mac+Win failure. Fixed run pending. | @@ -390,10 +390,12 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio ### D02 — macOS OpenSSL delivery -- Affected: S03, S10. -- Recommendation/options: Choose static linkage or verified relative dylib/rpath packaging where feasible. Alternative: explicitly supported Homebrew prerequisite. -- Tradeoff/start constraint: A debug import list is not a release qualification. No undeclared producer-prefix dependency may be called portable. -- Status: unanswered/proposed. No implementation approval recorded. +- Affected: S03, S10; Linear COD-54 and COD-61. +- **Decision: A — bundle OpenSSL dylibs with macOS ARM64 prebuilt releases.** Users must not need Homebrew or a separate OpenSSL installation. +- Package compatible redistributable libraries with relative install names/runtime paths, licenses and checksums. This retains dynamic linking while removing the producer-specific Homebrew requirement. +- Exact library versions, archive layout, install-name/rpath tooling and release maintenance remain implementation details to validate within this policy. No static-linking redesign or external-prerequisite fallback was selected. +- User decision: **“A”**, answering the immediately preceding D02 A/B/C question (bundled dylibs/static linking/Homebrew prerequisites). See [decision/approval record](decisions/d02-macos-openssl-bundling.md). +- **Status: policy approved.** Not approval of all R03/A05–A06 implementation, the rest of this specification, merge, deployment or service restart. D05 consumer/OS qualification baseline remains open. ### D03 — Windows discovery precedence and command kinds @@ -426,4 +428,4 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio ### Planning authorization record -Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. The later explicit answer **“A”** selects D01 Windows prebuilt runtime bundling, as recorded in [D01](decisions/d01-windows-runtime-bundling.md). Neither request approves implementation of the whole spec. No product constants or implementation source changed by this planning/decision work. +Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. Later separate explicit answers **“A”** selected [D01 Windows runtime bundling](decisions/d01-windows-runtime-bundling.md) and [D02 macOS OpenSSL dylib bundling](decisions/d02-macos-openssl-bundling.md). These policy decisions do not approve implementation of the whole spec. No product constants or implementation source changed by this planning/decision work. From 950b09618b33b103ef766b308bb9413010dd4133 Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Tue, 27 Oct 2026 08:46:14 +0930 Subject: [PATCH 05/17] docs(spec): record approved Windows user-directory policy --- .../decisions/d03a-windows-user-directory.md | 27 +++++++++++++ docs/specs/CBG-PLAT-01/delivery.md | 2 +- docs/specs/CBG-PLAT-01/spec.md | 40 ++++++++++++------- 3 files changed, 53 insertions(+), 16 deletions(-) create mode 100644 docs/specs/CBG-PLAT-01/decisions/d03a-windows-user-directory.md diff --git a/docs/specs/CBG-PLAT-01/decisions/d03a-windows-user-directory.md b/docs/specs/CBG-PLAT-01/decisions/d03a-windows-user-directory.md new file mode 100644 index 00000000..5e8c2c69 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/decisions/d03a-windows-user-directory.md @@ -0,0 +1,27 @@ +# D03a — Windows user-directory selection decision + +## Approved scope and proposal + +- Work: `CBG-PLAT-01/D03a`; S04/COD-55 and qualification S10/COD-61. +- Proposal: `docs/specs/CBG-PLAT-01/spec.md`, revision0.3 at full Git commit `f0b0cdefbfd4d655a776a6c4d0ca8d326d56a2cd`, **Windows user-directory policy only**. +- Immutable proposal: https://github.com/rabii-chaarani/codebaseGraph/blob/f0b0cdefbfd4d655a776a6c4d0ca8d326d56a2cd/docs/specs/CBG-PLAT-01/spec.md#d03--windows-discovery-precedence-and-command-kinds +- Decision reference: this conversation, immediately after the D03a question offered A (native Windows profile default) versus B (HOME before Windows profile). The user answered **“A”**. The question explicitly deferred executable/.cmd handling. +- Status: **directory policy approved**. Revision0.4 records the selection; the user did not approve the entire revised document or implementation start. + +## Selected option A + +Windows user-scoped MCP/client configuration follows this precedence: + +1. Explicit configuration-path option. +2. Client-specific override, such as CODEX_HOME. +3. Native Windows user-profile directory. + +Ignore Unix-style HOME for the default Windows location. If no valid directory can be found, fail clearly; never fall back to the current working directory or repository. Preserve deliberate client-specific overrides, explicit paths and project-scoped behavior. The selected tradeoff favors ordinary Windows profile behavior over Git Bash/HOME-first defaults; users retain explicit/client-specific overrides. + +The exact native profile-resolution API/library and validation are implementation details to verify later. This does not approve a new dependency, a policy for invalid relative overrides, a change to macOS discovery, or an incidental change to Ladybug's native extension-cache home. + +## Remaining limits + +D03b executable suffix discovery, supported .cmd/.bat client shims, safe invocation/quoting and verification remain **unresolved**. They are not approved by the directory choice. D04 lock mode and D05 consumer/OS/PowerShell/Cargo recipe remain open. D01 and D02 remain approved independently. + +COD-51, COD-55 and COD-61 remain Backlog; no implementation blocker is removed, and no implementation, merge, deployment, service restart or passing native qualification is claimed. Later exact-slice approval can reuse D03a without reopening the directory choice. diff --git a/docs/specs/CBG-PLAT-01/delivery.md b/docs/specs/CBG-PLAT-01/delivery.md index ab507a01..6b1ca44e 100644 --- a/docs/specs/CBG-PLAT-01/delivery.md +++ b/docs/specs/CBG-PLAT-01/delivery.md @@ -4,7 +4,7 @@ - Milestone: `CBG-PLAT-01 — PR #153 platform maintenance`, ID `ff37f4fc-4072-439a-8691-9c15dc739ddd`. - Proposed canonical specification: [rev0.1 at full commit 33360340379f878e93324e0829a1bb6f33eafc9d](https://github.com/rabii-chaarani/codebaseGraph/blob/33360340379f878e93324e0829a1bb6f33eafc9d/docs/specs/CBG-PLAT-01/spec.md). No approved specification SHA or implementation sign-off is recorded. - Draft docs-only publication: [PR155](https://github.com/rabii-chaarani/codebaseGraph/pull/155), stacked on PR153. No product source/constants changed. -- User initially authorized spec/backlog creation, then separately selected **D01 option A: bundled Windows prebuilt runtimes** ([record](decisions/d01-windows-runtime-bundling.md)) and **D02 option A: bundled macOS prebuilt OpenSSL dylibs with relative runtime paths** ([record](decisions/d02-macos-openssl-bundling.md)); no Homebrew prerequisite. No implementation start is authorized. D03–D05 remain unresolved; Cargo source-install policy stays open. All issues remain Backlog with no dates, estimates or assignees invented. +- User initially authorized spec/backlog creation, then separately selected **D01 option A: bundled Windows prebuilt runtimes** ([record](decisions/d01-windows-runtime-bundling.md)) and **D02 option A: bundled macOS prebuilt OpenSSL dylibs with relative runtime paths** ([record](decisions/d02-macos-openssl-bundling.md)); no Homebrew prerequisite. The user also selected **D03a option A: explicit path → client override → native Windows profile**, ignoring HOME for the default and failing clearly rather than using CWD ([record](decisions/d03a-windows-user-directory.md)). No implementation start is authorized. D03b executable/batch handling, D04 and D05 remain unresolved; Cargo source-install policy stays open. All issues remain Backlog with no dates, estimates or assignees invented. | Work item | Linear | Outcome | Depends on | |---|---|---|---| diff --git a/docs/specs/CBG-PLAT-01/spec.md b/docs/specs/CBG-PLAT-01/spec.md index c355af3c..e9a64faf 100644 --- a/docs/specs/CBG-PLAT-01/spec.md +++ b/docs/specs/CBG-PLAT-01/spec.md @@ -2,11 +2,11 @@ ## 1. Identity, status and authority -- **Revision:** 0.3, proposed implementation scope with **D01 and D02 policies approved**. **Work ID:** `CBG-PLAT-01`. +- **Revision:** 0.4, proposed implementation scope with **D01, D02 and D03a policies approved**. **Work ID:** `CBG-PLAT-01`. - **Canonical Git path:** `docs/specs/CBG-PLAT-01/spec.md`. Supporting review evidence: [review-evidence.md](review-evidence.md) and [evidence/](evidence/). - **Delivery:** CodebaseGraph Linear workspace (`https://linear.app/codebasegraph`), existing **Maintenance** project `P-COD-2` (`https://linear.app/codebasegraph/project/maintenance-33932479ebd0`), team `COD`. This user-selected destination supersedes older project-routing advice. No new project is created. - **Baseline:** [PR #153](https://github.com/rabii-chaarani/codebaseGraph/pull/153), reviewed HEAD `862a8f88d485d5bd257ebd9456c194156fd4ee94`, version3.0.4. This evidence is not the prior checkout6aa5ba8 review. Revalidate changed source before implementation. -- **Approval:** the initial user request authorized planning/specification publication and issue creation. The user later selected **D01 option A: bundle required Windows prebuilt runtime libraries**, with licenses, checksums and controlled DLL loading, and **D02 option A: bundle OpenSSL dylibs for macOS prebuilt releases**, with relative runtime paths, licenses and checksums; no Homebrew prerequisite. See [D01](decisions/d01-windows-runtime-bundling.md) and [D02](decisions/d02-macos-openssl-bundling.md). These approve the two distribution policies only, not the entire specification or implementation start. D03–D05, implementation authorization, merge, deployment and service restarts remain unapproved. S00 records applicable exact-scope approvals without reopening D01/D02. +- **Approval:** the initial user request authorized planning/specification publication and issue creation. The user later selected **D01 option A: bundle required Windows prebuilt runtime libraries**, with licenses, checksums and controlled DLL loading, and **D02 option A: bundle OpenSSL dylibs for macOS prebuilt releases**, with relative runtime paths, licenses and checksums; no Homebrew prerequisite. See [D01](decisions/d01-windows-runtime-bundling.md) and [D02](decisions/d02-macos-openssl-bundling.md). The user also selected **D03a option A: explicit config path → client-specific override → native Windows user-profile directory**, ignoring HOME for the Windows default and failing clearly rather than falling back to CWD; see [D03a](decisions/d03a-windows-user-directory.md). These approve the selected policies only, not the entire specification or implementation start. D03b executable/batch handling, D04, D05, implementation authorization, merge, deployment and service restarts remain unapproved. S00 records applicable exact-scope approvals without reopening settled decisions. - **Closure owner:** repository maintainer/user; no automatic aggregate closure delegated. Assignees/dates/estimates remain unset. Draft requirements below are proposed, not approved acceptance changes. - **State separation:** proposed → exact-scope approved → implemented → native-platform qualified → maintainer closed. Linear Backlog, attached/configured tests, commits and percentages are not evidence of later states. @@ -33,7 +33,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract **Outcome:** Publish/pin the proposed specification and review evidence; resolve applicable decisions and obtain explicit exact-scope approval for selected dependent slices, while recording deferral of unrelated decisions. -**Problem/evidence:** Planning is authorized; D01 Windows prebuilt runtime bundling and D02 macOS prebuilt OpenSSL dylib bundling policies are approved. D03–D05 remain unresolved. No current message authorizes implementation, merge, deployment or service restart. +**Problem/evidence:** Planning and D01/D02 distribution policies plus D03a Windows user-directory policy are approved. D03b executable/batch handling, D04 and D05 remain unresolved. No current message authorizes implementation, merge, deployment or service restart. **Requirements / criteria:** R01, R02, R03, R04, R05, R06, R07, R08, R09, R10 → A00. @@ -55,7 +55,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [docs/specs/CBG-COPY-01/resource-ceilings-approval.md:1–10](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/docs/specs/CBG-COPY-01/resource-ceilings-approval.md#L1-L10) - [README.md:45–65](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/README.md#L45-L65) -**Dependencies:** none; planning/approval only. **Open decisions:** D03, D04, D05. **Resolved:** D01 and D02 policies approved; no implementation start authorized. No task depends on a guessed implementation date. +**Dependencies:** none; planning/approval only. **Open decisions:** D03b, D04, D05. **Resolved:** D01, D02 and D03a policies approved; no implementation start authorized. No task depends on a guessed implementation date. ### S01 — Isolate macOS directory enumeration cursors for nested cleanup scans @@ -157,18 +157,18 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract **Requirements / criteria:** R04 → A07, A08. -- Resolve D03 for HOME/USERPROFILE/explicit client-home override precedence and no-user-directory failure. Preserve project scope and explicit config paths. -- Support Windows executable suffix resolution under an explicit policy; distinguish .exe from batch/.cmd execution and quote safely rather than blindly invoking a shell. +- Follow approved D03a Windows user-scope precedence: explicit config-path option, then client-specific override such as CODEX_HOME, then the native Windows user-profile directory. Ignore Unix-style HOME for the default Windows location; if no valid user directory can be found, fail clearly rather than fall back to CWD/repository. Preserve project scope and explicit config paths. +- Resolve D03b for Windows executable suffix discovery and invocation: distinguish native .exe from batch/.cmd execution, with an explicitly approved safe command policy rather than blindly invoking a shell. - Consolidate shared discovery semantics across registration/verification; do not change Ladybug cache home unless its native contract agrees. **Acceptance (proposed):** -- **A07** — Given HOME absent and USERPROFILE present, a real Windows user-scope install/dry-run resolves the approved absolute user path, never the current repository by fallback. +- **A07** — Given real Windows user-scope install/dry-run, explicit config-path options take precedence over client-specific overrides, which take precedence over native Windows user-profile resolution. With HOME absent or pointing elsewhere, default resolution uses the native profile, never HOME/CWD/repository by fallback. When no valid directory can be found, fail clearly. Preserve project-scope and explicit-path behavior; verify with conflicting HOME/profile/override inputs. - **A08** — Given only a supported suffixed client on PATH, discovery and invocation/verification agree; spaced paths, arguments and explicit overrides round-trip. Given missing home, missing client or unsafe batch-command inputs, return the approved explicit result without corrupting unrelated config or silently selecting another user/project target. -**Architectural context:** Repository Lifecycle Service node-136: resp-25/resp-30/resp-31. No new platform framework; clarify discovery behavior before changing public defaults. +**Architectural context:** Repository Lifecycle Service node-136: resp-25/resp-30/resp-31. D03a directory policy is approved; D03b executable policy, implementation authorization and applicable reconciliation remain pending. No new platform framework; do not change macOS or native Ladybug cache-home contracts incidentally. **Planned verification:** Native Windows process-level tests with isolated HOME/USERPROFILE/PATH/CODEX_HOME and fixtures for .exe, batch shims only if allowed by D03, spaces, absent discovery and unchanged macOS/project/explicit-path cases. @@ -179,7 +179,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [src/adapters/mcp/daemon.rs:1838–1843](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/adapters/mcp/daemon.rs#L1838-L1843) - [.cargo/config.toml:1–3](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/.cargo/config.toml#L1-L3) -**Dependencies:** S00. **Open decisions:** D03. No task depends on a guessed implementation date. +**Dependencies:** S00. **Open decisions:** D03b and implementation authorization. **Resolved:** D03a Windows user-directory precedence. No task depends on a guessed implementation date. ### S05 — Reject failing native probes in the PowerShell installer @@ -365,7 +365,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract | A01–A02 | R01 / S01 | Exact rooted helper multi-batch nested test; production receipt-selection case; cancellation/namespace tests | Mac exact-source helper baseline200/outer85/inner200 fails. No complete collector-starvation/data-loss repro. Fixed native runs required. | | A03–A04 | R02 / S02 | Final PE imports + installed clean Windows JSON/FTS/CLI/MCP and failure cases | Current asset imports inspected; no clean Windows missing-DLL execution. D01 bundling policy approved; D05/implementation and actual native qualification pending. | | A05–A06 | R03 / S03 | Final release Mach-O/rpaths + clean approved ARM64 install/reopen/failure | Fresh debug CLI imports inspected only; no final release/clean consumer run. D02 dylib-bundling policy approved; D05/implementation and actual native qualification pending. | -| A07–A08 | R04 / S04 | Process-level native Windows env/PATH/override cases and Mac regression | Fresh CLI portable-logic reproduction points user scope to dot with HOME absent. Not Windows execution. D03 pending. | +| A07–A08 | R04 / S04 | Process-level native Windows env/PATH/override cases and Mac regression | Fresh CLI portable-logic reproduction points user scope to dot with HOME absent. Not Windows execution. D03a directory policy approved; D03b/implementation and native qualification pending. | | A09 | R05 / S05 | Native PowerShell valid-checksum/nonzero executable preflight/destination preservation | Source semantics only; pwsh unavailable locally. D05 pending. | | A10 | R06 / S06 | Exact watch-help and adjacent behavior tests on both native targets | Fresh Mac failure; hosted Mac+Win failure. Fixed run pending. | | A11 | R07 / S07 | Production-rendered path fixture + native Windows/Mac metadata/COPY tests | Mac passes; Windows unit shard1 fails raw path fixture. No production loading defect inferred. | @@ -399,10 +399,20 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio ### D03 — Windows discovery precedence and command kinds -- Affected: S04. -- Recommendation/options: Define HOME/USERPROFILE/client-specific override precedence and fail explicitly when no valid user directory exists. Resolve .exe directly; review batch shims separately. -- Tradeoff/start constraint: Do not silently change explicit paths/project scope or introduce unsafe shell fallback for .cmd/.bat. Current issue records a gap, not approval of a specific precedence policy. -- Status: unanswered/proposed. No implementation approval recorded. +- Affected: S04/COD-55 and qualification S10/COD-61. D03 is split into independent directory and executable decisions. + +#### D03a — User-directory selection (approved) + +- **Decision: A — native Windows profile default.** Precedence is explicit config-path option → client-specific override such as CODEX_HOME → native Windows user-profile directory. +- Ignore Unix-style HOME for the default Windows location. If no valid directory can be found, fail clearly; never fall back to the current working directory or repository. Preserve explicit paths and project-scope behavior. +- User decision: **“A”**, answering the immediately preceding D03a A/B question (native Windows profile default versus HOME-first). See [decision/approval record](decisions/d03a-windows-user-directory.md). +- **Status: directory policy approved only.** Native profile-resolution mechanism and validation are implementation details, not selected APIs/dependencies. No incidental change to macOS or Ladybug's native cache-home contract is approved. No implementation start authorized. + +#### D03b — Executable suffix and batch-command handling (open) + +- Decide supported Windows executable suffix resolution and whether/how .cmd/.bat client shims are invoked safely. Native executable discovery must agree with actual invocation/verification. +- Preserve arguments and spaced paths; do not introduce generic shell evaluation or unsafe metacharacter handling as a fallback. +- **Status: unanswered/proposed.** D03a does not implicitly approve executable or batch-script policy. Resolve D03b separately before implementing the full S04 scope. ### D04 — Direct read lock-mode contract @@ -428,4 +438,4 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio ### Planning authorization record -Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. Later separate explicit answers **“A”** selected [D01 Windows runtime bundling](decisions/d01-windows-runtime-bundling.md) and [D02 macOS OpenSSL dylib bundling](decisions/d02-macos-openssl-bundling.md). These policy decisions do not approve implementation of the whole spec. No product constants or implementation source changed by this planning/decision work. +Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. Later separate explicit answers **“A”** selected [D01 Windows runtime bundling](decisions/d01-windows-runtime-bundling.md), [D02 macOS OpenSSL dylib bundling](decisions/d02-macos-openssl-bundling.md), and [D03a Windows native-profile directory precedence](decisions/d03a-windows-user-directory.md). These policy decisions do not approve implementation of the whole spec; D03b command handling remains open. No product constants or implementation source changed by this planning/decision work. From b62dd75fc490d81484e8d235a01a4bc55833f517 Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Tue, 27 Oct 2026 09:06:22 +0930 Subject: [PATCH 06/17] docs(spec): record corrected Windows client shim policy --- .../d03b-windows-client-command-invocation.md | 23 ++++++++++++++ docs/specs/CBG-PLAT-01/delivery.md | 2 +- docs/specs/CBG-PLAT-01/spec.md | 31 ++++++++++--------- 3 files changed, 40 insertions(+), 16 deletions(-) create mode 100644 docs/specs/CBG-PLAT-01/decisions/d03b-windows-client-command-invocation.md diff --git a/docs/specs/CBG-PLAT-01/decisions/d03b-windows-client-command-invocation.md b/docs/specs/CBG-PLAT-01/decisions/d03b-windows-client-command-invocation.md new file mode 100644 index 00000000..f766d06f --- /dev/null +++ b/docs/specs/CBG-PLAT-01/decisions/d03b-windows-client-command-invocation.md @@ -0,0 +1,23 @@ +# D03b — Windows client-command invocation decision + +## Approved scope and proposal + +- Work: `CBG-PLAT-01/D03b`; S04/COD-55 and qualification S10/COD-61. +- Canonical proposal: `docs/specs/CBG-PLAT-01/spec.md`, revision0.4 at full Git commit `950b09618b33b103ef766b308bb9413010dd4133`, **Windows executable/client-shim policy only**. +- Immutable proposal: https://github.com/rabii-chaarani/codebaseGraph/blob/950b09618b33b103ef766b308bb9413010dd4133/docs/specs/CBG-PLAT-01/spec.md#d03b--executable-suffix-and-batch-command-handling-open +- Decision reference: this conversation, immediately after the D03b question offered A (native executables only) or B (native executables plus .cmd/.bat shims). The user first answered “A”, then immediately corrected it with **“no i meant B”**. The effective decision is **B**; it supersedes A. No native-only policy was committed. +- Status: **command policy approved**. Revision0.5 records the corrected choice; this is not approval of the entire revised document or implementation start. + +## Selected option B + +Support native `.exe` clients and `.cmd`/`.bat` client shims used by ordinary Windows client installations. Use a dedicated Windows invocation adapter with separate, tested argument handling for native executables and batch scripts. Discovery, actual invocation and verification must agree on supported command kinds. + +Preserve spaced paths, arguments and explicit overrides. Do not introduce generic shell-command evaluation or blind shell fallback. Unsupported or unsafe inputs must fail clearly rather than execute ambiguously. This permits safe invocation of the supported client shim, not evaluation of arbitrary caller-provided command strings. Additional implementation/testing work was an explicit tradeoff. + +The exact adapter APIs, command-line encoding and compatibility behavior must be verified during authorized implementation. Native Windows tests must capture exact arguments through controlled `.exe`, `.cmd` and `.bat` fixtures and cover quoting/metacharacter boundaries and rejection paths. This choice does not approve a particular dependency or implementation. + +## Remaining limits + +D03a user-directory precedence remains approved independently; it is not changed by this correction. D01/D02 distribution choices also remain approved. D04 Direct lock-mode policy and D05 supported consumer/OS/PowerShell/Cargo-install recipe remain open. + +COD-51, COD-55 and COD-61 remain Backlog. This record does not remove implementation gates, authorize code changes, claim tests passed, approve merge/deployment/service restart, or select a generic shell framework. Later exact-slice implementation approval can reuse D03b without reopening the settled native-plus-shim choice. diff --git a/docs/specs/CBG-PLAT-01/delivery.md b/docs/specs/CBG-PLAT-01/delivery.md index 6b1ca44e..dfc98507 100644 --- a/docs/specs/CBG-PLAT-01/delivery.md +++ b/docs/specs/CBG-PLAT-01/delivery.md @@ -4,7 +4,7 @@ - Milestone: `CBG-PLAT-01 — PR #153 platform maintenance`, ID `ff37f4fc-4072-439a-8691-9c15dc739ddd`. - Proposed canonical specification: [rev0.1 at full commit 33360340379f878e93324e0829a1bb6f33eafc9d](https://github.com/rabii-chaarani/codebaseGraph/blob/33360340379f878e93324e0829a1bb6f33eafc9d/docs/specs/CBG-PLAT-01/spec.md). No approved specification SHA or implementation sign-off is recorded. - Draft docs-only publication: [PR155](https://github.com/rabii-chaarani/codebaseGraph/pull/155), stacked on PR153. No product source/constants changed. -- User initially authorized spec/backlog creation, then separately selected **D01 option A: bundled Windows prebuilt runtimes** ([record](decisions/d01-windows-runtime-bundling.md)) and **D02 option A: bundled macOS prebuilt OpenSSL dylibs with relative runtime paths** ([record](decisions/d02-macos-openssl-bundling.md)); no Homebrew prerequisite. The user also selected **D03a option A: explicit path → client override → native Windows profile**, ignoring HOME for the default and failing clearly rather than using CWD ([record](decisions/d03a-windows-user-directory.md)). No implementation start is authorized. D03b executable/batch handling, D04 and D05 remain unresolved; Cargo source-install policy stays open. All issues remain Backlog with no dates, estimates or assignees invented. +- User initially authorized spec/backlog creation, then separately selected **D01 option A: bundled Windows prebuilt runtimes** ([record](decisions/d01-windows-runtime-bundling.md)) and **D02 option A: bundled macOS prebuilt OpenSSL dylibs with relative runtime paths** ([record](decisions/d02-macos-openssl-bundling.md)); no Homebrew prerequisite. The user also selected **D03a option A: explicit path → client override → native Windows profile**, ignoring HOME for the default and failing clearly rather than using CWD ([record](decisions/d03a-windows-user-directory.md)). No implementation start is authorized. The user corrected D03b to **option B: native .exe plus .cmd/.bat client shims through a dedicated safe Windows invocation adapter**, superseding the preceding A ([record](decisions/d03b-windows-client-command-invocation.md)). D04 and D05 remain unresolved; Cargo source-install policy stays open. All issues remain Backlog with no dates, estimates or assignees invented. | Work item | Linear | Outcome | Depends on | |---|---|---|---| diff --git a/docs/specs/CBG-PLAT-01/spec.md b/docs/specs/CBG-PLAT-01/spec.md index e9a64faf..0ffc5ece 100644 --- a/docs/specs/CBG-PLAT-01/spec.md +++ b/docs/specs/CBG-PLAT-01/spec.md @@ -2,11 +2,11 @@ ## 1. Identity, status and authority -- **Revision:** 0.4, proposed implementation scope with **D01, D02 and D03a policies approved**. **Work ID:** `CBG-PLAT-01`. +- **Revision:** 0.5, proposed implementation scope with **D01, D02, D03a and D03b policies approved**. **Work ID:** `CBG-PLAT-01`. - **Canonical Git path:** `docs/specs/CBG-PLAT-01/spec.md`. Supporting review evidence: [review-evidence.md](review-evidence.md) and [evidence/](evidence/). - **Delivery:** CodebaseGraph Linear workspace (`https://linear.app/codebasegraph`), existing **Maintenance** project `P-COD-2` (`https://linear.app/codebasegraph/project/maintenance-33932479ebd0`), team `COD`. This user-selected destination supersedes older project-routing advice. No new project is created. - **Baseline:** [PR #153](https://github.com/rabii-chaarani/codebaseGraph/pull/153), reviewed HEAD `862a8f88d485d5bd257ebd9456c194156fd4ee94`, version3.0.4. This evidence is not the prior checkout6aa5ba8 review. Revalidate changed source before implementation. -- **Approval:** the initial user request authorized planning/specification publication and issue creation. The user later selected **D01 option A: bundle required Windows prebuilt runtime libraries**, with licenses, checksums and controlled DLL loading, and **D02 option A: bundle OpenSSL dylibs for macOS prebuilt releases**, with relative runtime paths, licenses and checksums; no Homebrew prerequisite. See [D01](decisions/d01-windows-runtime-bundling.md) and [D02](decisions/d02-macos-openssl-bundling.md). The user also selected **D03a option A: explicit config path → client-specific override → native Windows user-profile directory**, ignoring HOME for the Windows default and failing clearly rather than falling back to CWD; see [D03a](decisions/d03a-windows-user-directory.md). These approve the selected policies only, not the entire specification or implementation start. D03b executable/batch handling, D04, D05, implementation authorization, merge, deployment and service restarts remain unapproved. S00 records applicable exact-scope approvals without reopening settled decisions. +- **Approval:** the initial user request authorized planning/specification publication and issue creation. The user later selected **D01 option A: bundle required Windows prebuilt runtime libraries**, with licenses, checksums and controlled DLL loading, and **D02 option A: bundle OpenSSL dylibs for macOS prebuilt releases**, with relative runtime paths, licenses and checksums; no Homebrew prerequisite. See [D01](decisions/d01-windows-runtime-bundling.md) and [D02](decisions/d02-macos-openssl-bundling.md). The user also selected **D03a option A: explicit config path → client-specific override → native Windows user-profile directory**, ignoring HOME for the Windows default and failing clearly rather than falling back to CWD; see [D03a](decisions/d03a-windows-user-directory.md). The user then selected **D03b option B: native .exe clients plus .cmd/.bat shims through a dedicated Windows invocation adapter**, with tested argument handling, no generic shell-command evaluation and clear rejection of unsupported/unsafe inputs; see [D03b](decisions/d03b-windows-client-command-invocation.md). The explicit correction “no i meant B” supersedes the preceding A. These approve the selected policies only, not the entire specification or implementation start. D04, D05, implementation authorization, merge, deployment and service restarts remain unapproved. S00 records applicable exact-scope approvals without reopening settled decisions. - **Closure owner:** repository maintainer/user; no automatic aggregate closure delegated. Assignees/dates/estimates remain unset. Draft requirements below are proposed, not approved acceptance changes. - **State separation:** proposed → exact-scope approved → implemented → native-platform qualified → maintainer closed. Linear Backlog, attached/configured tests, commits and percentages are not evidence of later states. @@ -33,7 +33,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract **Outcome:** Publish/pin the proposed specification and review evidence; resolve applicable decisions and obtain explicit exact-scope approval for selected dependent slices, while recording deferral of unrelated decisions. -**Problem/evidence:** Planning and D01/D02 distribution policies plus D03a Windows user-directory policy are approved. D03b executable/batch handling, D04 and D05 remain unresolved. No current message authorizes implementation, merge, deployment or service restart. +**Problem/evidence:** Planning and D01/D02 distribution plus D03a/D03b Windows discovery/invocation policies are approved. D04 and D05 remain unresolved. No current message authorizes implementation, merge, deployment or service restart. **Requirements / criteria:** R01, R02, R03, R04, R05, R06, R07, R08, R09, R10 → A00. @@ -55,7 +55,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [docs/specs/CBG-COPY-01/resource-ceilings-approval.md:1–10](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/docs/specs/CBG-COPY-01/resource-ceilings-approval.md#L1-L10) - [README.md:45–65](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/README.md#L45-L65) -**Dependencies:** none; planning/approval only. **Open decisions:** D03b, D04, D05. **Resolved:** D01, D02 and D03a policies approved; no implementation start authorized. No task depends on a guessed implementation date. +**Dependencies:** none; planning/approval only. **Open decisions:** D04, D05. **Resolved:** D01, D02, D03a and D03b policies approved; no implementation start authorized. No task depends on a guessed implementation date. ### S01 — Isolate macOS directory enumeration cursors for nested cleanup scans @@ -158,7 +158,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract **Requirements / criteria:** R04 → A07, A08. - Follow approved D03a Windows user-scope precedence: explicit config-path option, then client-specific override such as CODEX_HOME, then the native Windows user-profile directory. Ignore Unix-style HOME for the default Windows location; if no valid user directory can be found, fail clearly rather than fall back to CWD/repository. Preserve project scope and explicit config paths. -- Resolve D03b for Windows executable suffix discovery and invocation: distinguish native .exe from batch/.cmd execution, with an explicitly approved safe command policy rather than blindly invoking a shell. +- Follow approved D03b option B: discover/invoke native .exe clients and supported .cmd/.bat client shims through a dedicated Windows invocation adapter. Keep native and batch argument handling distinct and tested; no generic shell-command evaluation or blind shell fallback. Unsupported or unsafe inputs fail clearly rather than executing ambiguously. - Consolidate shared discovery semantics across registration/verification; do not change Ladybug cache home unless its native contract agrees. **Acceptance (proposed):** @@ -166,11 +166,11 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - **A07** — Given real Windows user-scope install/dry-run, explicit config-path options take precedence over client-specific overrides, which take precedence over native Windows user-profile resolution. With HOME absent or pointing elsewhere, default resolution uses the native profile, never HOME/CWD/repository by fallback. When no valid directory can be found, fail clearly. Preserve project-scope and explicit-path behavior; verify with conflicting HOME/profile/override inputs. -- **A08** — Given only a supported suffixed client on PATH, discovery and invocation/verification agree; spaced paths, arguments and explicit overrides round-trip. Given missing home, missing client or unsafe batch-command inputs, return the approved explicit result without corrupting unrelated config or silently selecting another user/project target. +- **A08** — Given a native .exe client or .cmd/.bat client shim on Windows PATH, discovery and actual invocation/verification agree. A dedicated Windows adapter preserves spaced paths, arguments and explicit overrides for both command kinds, without generic shell-command evaluation. Test controlled shim argument capture and metacharacter/quoting boundaries; unsupported or unsafe inputs fail clearly rather than execute ambiguously. Missing home/client must not corrupt unrelated config or silently select another user/project target. -**Architectural context:** Repository Lifecycle Service node-136: resp-25/resp-30/resp-31. D03a directory policy is approved; D03b executable policy, implementation authorization and applicable reconciliation remain pending. No new platform framework; do not change macOS or native Ladybug cache-home contracts incidentally. +**Architectural context:** Repository Lifecycle Service node-136: resp-25/resp-30/resp-31. D03a directory and D03b native-plus-batch invocation policies are approved; implementation authorization and applicable reconciliation remain pending. Use a narrow Windows adapter, not a general shell framework; do not change macOS or native Ladybug cache-home contracts incidentally. -**Planned verification:** Native Windows process-level tests with isolated HOME/USERPROFILE/PATH/CODEX_HOME and fixtures for .exe, batch shims only if allowed by D03, spaces, absent discovery and unchanged macOS/project/explicit-path cases. +**Planned verification:** Native Windows process-level tests with isolated HOME/USERPROFILE/PATH/CODEX_HOME; controlled .exe, .cmd and .bat clients capturing exact arguments; spaced paths, quoting/metacharacter boundaries, rejected unsafe inputs, absent discovery and unchanged macOS/project/explicit-path cases. Check discovery, registration and verification use the same command-kind policy. **Source orientation at the reviewed SHA:** - [src/api/lifecycle.rs:3312–3347](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/api/lifecycle.rs#L3312-L3347) @@ -179,7 +179,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [src/adapters/mcp/daemon.rs:1838–1843](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/adapters/mcp/daemon.rs#L1838-L1843) - [.cargo/config.toml:1–3](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/.cargo/config.toml#L1-L3) -**Dependencies:** S00. **Open decisions:** D03b and implementation authorization. **Resolved:** D03a Windows user-directory precedence. No task depends on a guessed implementation date. +**Dependencies:** S00. **Open decisions:** implementation authorization. **Resolved:** D03a Windows user-directory precedence and D03b option B native-plus-batch client invocation. No task depends on a guessed implementation date. ### S05 — Reject failing native probes in the PowerShell installer @@ -365,7 +365,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract | A01–A02 | R01 / S01 | Exact rooted helper multi-batch nested test; production receipt-selection case; cancellation/namespace tests | Mac exact-source helper baseline200/outer85/inner200 fails. No complete collector-starvation/data-loss repro. Fixed native runs required. | | A03–A04 | R02 / S02 | Final PE imports + installed clean Windows JSON/FTS/CLI/MCP and failure cases | Current asset imports inspected; no clean Windows missing-DLL execution. D01 bundling policy approved; D05/implementation and actual native qualification pending. | | A05–A06 | R03 / S03 | Final release Mach-O/rpaths + clean approved ARM64 install/reopen/failure | Fresh debug CLI imports inspected only; no final release/clean consumer run. D02 dylib-bundling policy approved; D05/implementation and actual native qualification pending. | -| A07–A08 | R04 / S04 | Process-level native Windows env/PATH/override cases and Mac regression | Fresh CLI portable-logic reproduction points user scope to dot with HOME absent. Not Windows execution. D03a directory policy approved; D03b/implementation and native qualification pending. | +| A07–A08 | R04 / S04 | Process-level native Windows env/PATH/override cases and Mac regression | Fresh CLI portable-logic reproduction points user scope to dot with HOME absent. Not Windows execution. D03a/D03b policies approved; implementation and native qualification pending. | | A09 | R05 / S05 | Native PowerShell valid-checksum/nonzero executable preflight/destination preservation | Source semantics only; pwsh unavailable locally. D05 pending. | | A10 | R06 / S06 | Exact watch-help and adjacent behavior tests on both native targets | Fresh Mac failure; hosted Mac+Win failure. Fixed run pending. | | A11 | R07 / S07 | Production-rendered path fixture + native Windows/Mac metadata/COPY tests | Mac passes; Windows unit shard1 fails raw path fixture. No production loading defect inferred. | @@ -408,11 +408,12 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio - User decision: **“A”**, answering the immediately preceding D03a A/B question (native Windows profile default versus HOME-first). See [decision/approval record](decisions/d03a-windows-user-directory.md). - **Status: directory policy approved only.** Native profile-resolution mechanism and validation are implementation details, not selected APIs/dependencies. No incidental change to macOS or Ladybug's native cache-home contract is approved. No implementation start authorized. -#### D03b — Executable suffix and batch-command handling (open) +#### D03b — Executable suffix and batch-command handling (approved) -- Decide supported Windows executable suffix resolution and whether/how .cmd/.bat client shims are invoked safely. Native executable discovery must agree with actual invocation/verification. -- Preserve arguments and spaced paths; do not introduce generic shell evaluation or unsafe metacharacter handling as a fallback. -- **Status: unanswered/proposed.** D03a does not implicitly approve executable or batch-script policy. Resolve D03b separately before implementing the full S04 scope. +- **Decision: B — native .exe clients plus .cmd/.bat client shims.** Support common Windows client installation methods through a dedicated Windows invocation adapter with separate, tested native/batch argument handling. +- Discovery, actual invocation and verification must agree. Preserve spaced executable/script paths and arguments; do not introduce generic shell-command evaluation or blind shell fallback. Unsupported or unsafe inputs fail clearly. Supporting shims does not authorize evaluating arbitrary command strings. +- User decision: initially “A”, immediately corrected to **“no i meant B”**. The correction is the effective choice and supersedes A; no native-only decision was committed. See [decision/approval record](decisions/d03b-windows-client-command-invocation.md). +- **Status: command policy approved only.** Exact adapter implementation, compatibility details and tests require validation during authorized implementation. No new dependency, general shell framework, implementation start, merge, deployment or service restart is approved. ### D04 — Direct read lock-mode contract @@ -438,4 +439,4 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio ### Planning authorization record -Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. Later separate explicit answers **“A”** selected [D01 Windows runtime bundling](decisions/d01-windows-runtime-bundling.md), [D02 macOS OpenSSL dylib bundling](decisions/d02-macos-openssl-bundling.md), and [D03a Windows native-profile directory precedence](decisions/d03a-windows-user-directory.md). These policy decisions do not approve implementation of the whole spec; D03b command handling remains open. No product constants or implementation source changed by this planning/decision work. +Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. Later separate explicit answers **“A”** selected [D01 Windows runtime bundling](decisions/d01-windows-runtime-bundling.md), [D02 macOS OpenSSL dylib bundling](decisions/d02-macos-openssl-bundling.md), and [D03a Windows native-profile directory precedence](decisions/d03a-windows-user-directory.md). The later D03b answer was explicitly corrected to **“no i meant B”**, selecting [native .exe plus .cmd/.bat client shims](decisions/d03b-windows-client-command-invocation.md) through a dedicated safe Windows adapter. These policy decisions do not approve implementation of the whole spec; D04/D05 remain open. No product constants or implementation source changed by this planning/decision work. From 9324a074953bdcea52d37050d39088ad5aca7ead Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Tue, 27 Oct 2026 09:11:10 +0930 Subject: [PATCH 07/17] docs(spec): record approved Windows exclusive lock-mode policy --- .../d04-windows-direct-exclusive-mode.md | 23 ++++++++++++++ docs/specs/CBG-PLAT-01/delivery.md | 4 +-- docs/specs/CBG-PLAT-01/spec.md | 31 ++++++++++--------- 3 files changed, 41 insertions(+), 17 deletions(-) create mode 100644 docs/specs/CBG-PLAT-01/decisions/d04-windows-direct-exclusive-mode.md diff --git a/docs/specs/CBG-PLAT-01/decisions/d04-windows-direct-exclusive-mode.md b/docs/specs/CBG-PLAT-01/decisions/d04-windows-direct-exclusive-mode.md new file mode 100644 index 00000000..25e3a6fd --- /dev/null +++ b/docs/specs/CBG-PLAT-01/decisions/d04-windows-direct-exclusive-mode.md @@ -0,0 +1,23 @@ +# D04 — Windows Direct-read exclusive-mode decision + +## Approved scope and proposal + +- Work: `CBG-PLAT-01/D04`; S09/COD-60 and its qualification/disposition in S10/COD-61. +- Canonical proposal: `docs/specs/CBG-PLAT-01/spec.md`, revision0.5 at full Git commit `b62dd75fc490d81484e8d235a01a4bc55833f517`, **Windows Direct-read lock-mode policy only**. +- Immutable proposal: https://github.com/rabii-chaarani/codebaseGraph/blob/b62dd75fc490d81484e8d235a01a4bc55833f517/docs/specs/CBG-PLAT-01/spec.md#d04--direct-read-lock-mode-contract +- Decision reference: this conversation, immediately after D04 offered A (keep Exclusive and report it accurately) versus B (release/reacquire/revalidate to Shared). The user answered **“A”**. +- Status: **policy approved**. Revision0.6 records the choice; the user has not approved the entire revised document or implementation start. + +## Selected option A + +For Windows Direct reads, retain the existing Exclusive lock and report/verify its actual Exclusive mode. Do not add a redundant Shared lock layer, an unlock/relock transition or a new concurrent-reader guarantee. The stated benefit is preserving current exclusion without introducing a transition race; the stated tradeoff is no concurrent-read improvement. + +Preserve publication/recovery safety, release behavior, and current macOS lock behavior. This choice does not approve applying Exclusive everywhere or changing the separate fresh-creation transition protocol. Exact code/API/name changes are implementation details, not preselected changes. + +Native Windows verification must show that an admitted read reports/holds Exclusive, both Shared and Exclusive second-handle attempts contend until release, and release permits intended later acquisition. Rerun affected Direct read/replay/writer-exclusion cases on Windows and macOS. No passing implementation test is claimed here. + +## Remaining limits + +COD-60 remains preexisting Low/P3 debt, not a cause of the currently failing CI. Selecting its policy does not silently include its implementation in a release or remove its approval gate. D01/D02/D03a/D03b remain approved independently; D05 consumer/OS/PowerShell/Cargo-install policy remains open. + +COD-51, COD-60 and COD-61 remain Backlog. No implementation start, source change, full-spec sign-off, qualification, merge, deployment or service restart is authorized. Later exact-slice approval may reuse this settled policy without reopening it. diff --git a/docs/specs/CBG-PLAT-01/delivery.md b/docs/specs/CBG-PLAT-01/delivery.md index dfc98507..581764df 100644 --- a/docs/specs/CBG-PLAT-01/delivery.md +++ b/docs/specs/CBG-PLAT-01/delivery.md @@ -4,7 +4,7 @@ - Milestone: `CBG-PLAT-01 — PR #153 platform maintenance`, ID `ff37f4fc-4072-439a-8691-9c15dc739ddd`. - Proposed canonical specification: [rev0.1 at full commit 33360340379f878e93324e0829a1bb6f33eafc9d](https://github.com/rabii-chaarani/codebaseGraph/blob/33360340379f878e93324e0829a1bb6f33eafc9d/docs/specs/CBG-PLAT-01/spec.md). No approved specification SHA or implementation sign-off is recorded. - Draft docs-only publication: [PR155](https://github.com/rabii-chaarani/codebaseGraph/pull/155), stacked on PR153. No product source/constants changed. -- User initially authorized spec/backlog creation, then separately selected **D01 option A: bundled Windows prebuilt runtimes** ([record](decisions/d01-windows-runtime-bundling.md)) and **D02 option A: bundled macOS prebuilt OpenSSL dylibs with relative runtime paths** ([record](decisions/d02-macos-openssl-bundling.md)); no Homebrew prerequisite. The user also selected **D03a option A: explicit path → client override → native Windows profile**, ignoring HOME for the default and failing clearly rather than using CWD ([record](decisions/d03a-windows-user-directory.md)). No implementation start is authorized. The user corrected D03b to **option B: native .exe plus .cmd/.bat client shims through a dedicated safe Windows invocation adapter**, superseding the preceding A ([record](decisions/d03b-windows-client-command-invocation.md)). D04 and D05 remain unresolved; Cargo source-install policy stays open. All issues remain Backlog with no dates, estimates or assignees invented. +- User initially authorized spec/backlog creation, then separately selected **D01 option A: bundled Windows prebuilt runtimes** ([record](decisions/d01-windows-runtime-bundling.md)) and **D02 option A: bundled macOS prebuilt OpenSSL dylibs with relative runtime paths** ([record](decisions/d02-macos-openssl-bundling.md)); no Homebrew prerequisite. The user also selected **D03a option A: explicit path → client override → native Windows profile**, ignoring HOME for the default and failing clearly rather than using CWD ([record](decisions/d03a-windows-user-directory.md)). No implementation start is authorized. The user corrected D03b to **option B: native .exe plus .cmd/.bat client shims through a dedicated safe Windows invocation adapter**, superseding the preceding A ([record](decisions/d03b-windows-client-command-invocation.md)). The user also selected **D04 option A: retain/report the Windows Direct-read Exclusive lock**, without an unlock/relock gap or new concurrency guarantee ([record](decisions/d04-windows-direct-exclusive-mode.md)). D05 remains unresolved; Cargo source-install policy stays open. All issues remain Backlog with no dates, estimates or assignees invented. | Work item | Linear | Outcome | Depends on | |---|---|---|---| @@ -20,7 +20,7 @@ | `CBG-PLAT-01/S09` | [COD-60](https://linear.app/codebasegraph/issue/COD-60/cbg-plat-01s09-make-windows-direct-lease-mode-truthful-after-relock) | Make Windows Direct lease mode truthful after relock_shared | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | | `CBG-PLAT-01/S10` | [COD-61](https://linear.app/codebasegraph/issue/COD-61/cbg-plat-01s10-qualify-the-corrected-native-revision-and-installed) | Qualify the corrected native revision and installed consumer archives | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record), [COD-52](https://linear.app/codebasegraph/issue/COD-52/cbg-plat-01s01-isolate-macos-directory-enumeration-cursors-for-nested), [COD-53](https://linear.app/codebasegraph/issue/COD-53/cbg-plat-01s02-define-and-satisfy-windows-archive-native-library), [COD-54](https://linear.app/codebasegraph/issue/COD-54/cbg-plat-01s03-remove-undeclared-homebrew-path-assumptions-from-macos), [COD-55](https://linear.app/codebasegraph/issue/COD-55/cbg-plat-01s04-use-explicit-windows-user-directory-and-executable), [COD-56](https://linear.app/codebasegraph/issue/COD-56/cbg-plat-01s05-reject-failing-native-probes-in-the-powershell), [COD-57](https://linear.app/codebasegraph/issue/COD-57/cbg-plat-01s06-restore-watch-help-documentation-of-the-parallel), [COD-58](https://linear.app/codebasegraph/issue/COD-58/cbg-plat-01s07-render-valid-windows-copy-paths-in-the-trace-metadata), [COD-59](https://linear.app/codebasegraph/issue/COD-59/cbg-plat-01s08-recognize-windows-fs2-contention-in-the-reference-epoch) | -S09 is related to S10 but not a cause of the current CI failures. Its inclusion or explicit maintainer deferral is required before aggregate closure; no unsafe lock transition is preapproved. +S09 is related to S10 but not a cause of the current CI failures. D04 approves truthful retained Windows Exclusive ownership, not an unlock/relock transition. Implementation still needs exact-scope authorization; its inclusion or explicit maintainer deferral is required before aggregate closure. S00 may record exact independent slice approvals/deferrals; unrelated unresolved policy must not be treated as a real product dependency. Implementation remains gated by the applicable approved content even if an issue status changes. diff --git a/docs/specs/CBG-PLAT-01/spec.md b/docs/specs/CBG-PLAT-01/spec.md index 0ffc5ece..46b15505 100644 --- a/docs/specs/CBG-PLAT-01/spec.md +++ b/docs/specs/CBG-PLAT-01/spec.md @@ -2,11 +2,11 @@ ## 1. Identity, status and authority -- **Revision:** 0.5, proposed implementation scope with **D01, D02, D03a and D03b policies approved**. **Work ID:** `CBG-PLAT-01`. +- **Revision:** 0.6, proposed implementation scope with **D01–D04 policies approved** (including D03a/D03b). **Work ID:** `CBG-PLAT-01`. - **Canonical Git path:** `docs/specs/CBG-PLAT-01/spec.md`. Supporting review evidence: [review-evidence.md](review-evidence.md) and [evidence/](evidence/). - **Delivery:** CodebaseGraph Linear workspace (`https://linear.app/codebasegraph`), existing **Maintenance** project `P-COD-2` (`https://linear.app/codebasegraph/project/maintenance-33932479ebd0`), team `COD`. This user-selected destination supersedes older project-routing advice. No new project is created. - **Baseline:** [PR #153](https://github.com/rabii-chaarani/codebaseGraph/pull/153), reviewed HEAD `862a8f88d485d5bd257ebd9456c194156fd4ee94`, version3.0.4. This evidence is not the prior checkout6aa5ba8 review. Revalidate changed source before implementation. -- **Approval:** the initial user request authorized planning/specification publication and issue creation. The user later selected **D01 option A: bundle required Windows prebuilt runtime libraries**, with licenses, checksums and controlled DLL loading, and **D02 option A: bundle OpenSSL dylibs for macOS prebuilt releases**, with relative runtime paths, licenses and checksums; no Homebrew prerequisite. See [D01](decisions/d01-windows-runtime-bundling.md) and [D02](decisions/d02-macos-openssl-bundling.md). The user also selected **D03a option A: explicit config path → client-specific override → native Windows user-profile directory**, ignoring HOME for the Windows default and failing clearly rather than falling back to CWD; see [D03a](decisions/d03a-windows-user-directory.md). The user then selected **D03b option B: native .exe clients plus .cmd/.bat shims through a dedicated Windows invocation adapter**, with tested argument handling, no generic shell-command evaluation and clear rejection of unsupported/unsafe inputs; see [D03b](decisions/d03b-windows-client-command-invocation.md). The explicit correction “no i meant B” supersedes the preceding A. These approve the selected policies only, not the entire specification or implementation start. D04, D05, implementation authorization, merge, deployment and service restarts remain unapproved. S00 records applicable exact-scope approvals without reopening settled decisions. +- **Approval:** the initial user request authorized planning/specification publication and issue creation. The user later selected **D01 option A: bundle required Windows prebuilt runtime libraries**, with licenses, checksums and controlled DLL loading, and **D02 option A: bundle OpenSSL dylibs for macOS prebuilt releases**, with relative runtime paths, licenses and checksums; no Homebrew prerequisite. See [D01](decisions/d01-windows-runtime-bundling.md) and [D02](decisions/d02-macos-openssl-bundling.md). The user also selected **D03a option A: explicit config path → client-specific override → native Windows user-profile directory**, ignoring HOME for the Windows default and failing clearly rather than falling back to CWD; see [D03a](decisions/d03a-windows-user-directory.md). The user then selected **D03b option B: native .exe clients plus .cmd/.bat shims through a dedicated Windows invocation adapter**, with tested argument handling, no generic shell-command evaluation and clear rejection of unsupported/unsafe inputs; see [D03b](decisions/d03b-windows-client-command-invocation.md). The explicit correction “no i meant B” supersedes the preceding A. The user also selected **D04 option A: retain and accurately report the Windows Direct-read Exclusive lock**, without a new unlock/relock transition or concurrent-reader guarantee; see [D04](decisions/d04-windows-direct-exclusive-mode.md). These approve the selected policies only, not the entire specification or implementation start. D05, implementation authorization, merge, deployment and service restarts remain unapproved. S00 records applicable exact-scope approvals without reopening settled decisions. - **Closure owner:** repository maintainer/user; no automatic aggregate closure delegated. Assignees/dates/estimates remain unset. Draft requirements below are proposed, not approved acceptance changes. - **State separation:** proposed → exact-scope approved → implemented → native-platform qualified → maintainer closed. Linear Backlog, attached/configured tests, commits and percentages are not evidence of later states. @@ -33,7 +33,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract **Outcome:** Publish/pin the proposed specification and review evidence; resolve applicable decisions and obtain explicit exact-scope approval for selected dependent slices, while recording deferral of unrelated decisions. -**Problem/evidence:** Planning and D01/D02 distribution plus D03a/D03b Windows discovery/invocation policies are approved. D04 and D05 remain unresolved. No current message authorizes implementation, merge, deployment or service restart. +**Problem/evidence:** Planning and D01/D02 distribution, D03a/D03b Windows discovery/invocation, and D04 truthful Windows Exclusive lock policies are approved. D05 remains unresolved. No current message authorizes implementation, merge, deployment or service restart. **Requirements / criteria:** R01, R02, R03, R04, R05, R06, R07, R08, R09, R10 → A00. @@ -55,7 +55,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [docs/specs/CBG-COPY-01/resource-ceilings-approval.md:1–10](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/docs/specs/CBG-COPY-01/resource-ceilings-approval.md#L1-L10) - [README.md:45–65](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/README.md#L45-L65) -**Dependencies:** none; planning/approval only. **Open decisions:** D04, D05. **Resolved:** D01, D02, D03a and D03b policies approved; no implementation start authorized. No task depends on a guessed implementation date. +**Dependencies:** none; planning/approval only. **Open decisions:** D05. **Resolved:** D01, D02, D03a, D03b and D04 policies approved; no implementation start authorized. No task depends on a guessed implementation date. ### S01 — Isolate macOS directory enumeration cursors for nested cleanup scans @@ -297,25 +297,25 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract **Requirements / criteria:** R09 → A13. -- Resolve D04: intentionally retain/report Exclusive, or implement a real Windows release/reacquire-and-revalidate transition consistent with publication safety. +- Follow approved D04 option A for Windows Direct reads: retain the existing Exclusive lock and report/verify Exclusive truthfully. Do not add a Shared layer, an unlock/relock transition or a new concurrent-reader guarantee; preserve publication/recovery exclusion. - Do not simply unlock before lock_shared across protected recovery state; an unvalidated gap can create a race. - Do not reuse the fresh-creation helper without proving its preconditions apply to committed reads. **Acceptance (proposed):** -- **A13** — Given the approved mode policy, a second native Windows handle observes the expected Shared/Exclusive contention behavior and mode/verifies reports the truth. Native Windows and Mac Direct read/replay/writer exclusion regressions pass, including transition contention and failure; no permanent lock leak or new concurrent-reader guarantee is implied. +- **A13** — Given an admitted Windows Direct read, its held OS lock and mode/verifies agree on Exclusive, and second-handle Shared/Exclusive attempts contend until release. No unlock/relock gap or redundant Shared lock layer is introduced. Native Windows and Mac Direct read/replay/writer-exclusion regressions pass; preserve current macOS behavior and release semantics. No new concurrent-reader guarantee or permanent-lock-leak claim is implied. -**Architectural context:** Graph Store resp-109. Existing invariant clarification; a changed concurrent-reader guarantee requires explicit contract review, not an incidental compatibility shim. +**Architectural context:** Graph Store resp-109. D04 approves truthful retention of Windows Exclusive ownership only. Implementation authorization and applicable reconciliation remain pending; a new concurrent-reader guarantee or macOS lock-policy change is outside this decision. -**Planned verification:** Native Windows second-handle lock-mode test plus affected Direct committed-read/recovery/writer-exclusion tests; check pinned fs2 semantics and failure/revalidation paths. +**Planned verification:** Native Windows second-handle Shared/Exclusive contention, truthful mode/verifies and release tests, plus affected Direct committed-read/recovery/writer-exclusion tests on both platforms. Verify no new unlock/relock gap and unchanged macOS behavior. **Source orientation at the reviewed SHA:** - [src/storage/locks.rs:87–96](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/locks.rs#L87-L96) - [src/storage/locks.rs:174–197](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/locks.rs#L174-L197) - [src/storage/direct.rs:206–229](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/storage/direct.rs#L206-L229) -**Dependencies:** S00. **Open decisions:** D04. No task depends on a guessed implementation date. +**Dependencies:** S00. **Open decisions:** implementation authorization. **Resolved:** D04 option A, retain/report Windows Exclusive. No task depends on a guessed implementation date. ### S10 — Qualify the corrected native revision and installed consumer archives @@ -370,7 +370,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract | A10 | R06 / S06 | Exact watch-help and adjacent behavior tests on both native targets | Fresh Mac failure; hosted Mac+Win failure. Fixed run pending. | | A11 | R07 / S07 | Production-rendered path fixture + native Windows/Mac metadata/COPY tests | Mac passes; Windows unit shard1 fails raw path fixture. No production loading defect inferred. | | A12 | R08 / S08 | Windows owned contention/release/timeout/noncontention cases + actual epoch publication case | Windows integration shard2 failed OS33; product classifier already handles raw fs2 errors. Lock duration not established. | -| A13 | R09 / S09 | Native Windows second-handle Shared/Exclusive behavior + Direct read/replay/exclusion | Static fs2 semantics; no Windows local execution. Existing admission already exclusive on both OSes. D04 pending. | +| A13 | R09 / S09 | Native Windows second-handle Shared/Exclusive behavior + Direct read/replay/exclusion | Static fs2 semantics; no Windows local execution. D04 retain/report Windows Exclusive approved; implementation and native qualification pending. | | A14–A15 | R10 / S10 | All required native cohorts/artifact jobs + exact installed clean-consumer success/failure; maintainer sign-off | Current CI40330652083 failed; both artifacts skipped. 145 selected local Mac passes are not qualification/closure. | Actual verification record: [review-evidence.md](review-evidence.md). SHA-bound failed CI tested a synthetic merge; only CHANGELOG differs from reviewed implementation. Later passing evidence must identify full source/merge SHA, native OS/toolchain, CLI/archive hashes, exact command/method, result and limits. Mark planned/ignored/unexecuted cases explicitly. Ingest JUnit into Scryer only where existing claims require it, after actual execution. @@ -417,10 +417,11 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio ### D04 — Direct read lock-mode contract -- Affected: S09. -- Recommendation/options: Prefer the smallest truthful mode behavior consistent with current exclusive admission; if true downgrade is required, specify revalidation around the Windows gap. -- Tradeoff/start constraint: Keeping/reporting Exclusive changes advertised mode; release/reacquire can race. No new concurrent-reader guarantee is approved by this backlog. -- Status: unanswered/proposed. No implementation approval recorded. +- Affected: S09/COD-60; disposition/qualification S10/COD-61. +- **Decision: A — retain the existing Windows Direct-read Exclusive lock and report it accurately.** Do not add an unlock/relock transition, a redundant Shared lock layer or a new concurrent-reader guarantee. +- Preserve publication/recovery exclusion and current macOS behavior. The narrower honest-mode fix does not approve a cross-platform read-concurrency redesign or changes to fresh-creation transition semantics. +- User decision: **“A”**, answering the immediately preceding D04 question offering truthful retained Exclusive versus genuine release/reacquire/revalidated Shared. See [decision/approval record](decisions/d04-windows-direct-exclusive-mode.md). +- **Status: lock policy approved only.** Exact code/visibility/name changes and native tests remain to be verified during authorized implementation. No implementation start, merge, deployment or service restart is authorized. S09 remains preexisting low-priority debt, not a cause of current CI failures. ### D05 — Supported consumer qualification matrix and Cargo-install recipe @@ -439,4 +440,4 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio ### Planning authorization record -Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. Later separate explicit answers **“A”** selected [D01 Windows runtime bundling](decisions/d01-windows-runtime-bundling.md), [D02 macOS OpenSSL dylib bundling](decisions/d02-macos-openssl-bundling.md), and [D03a Windows native-profile directory precedence](decisions/d03a-windows-user-directory.md). The later D03b answer was explicitly corrected to **“no i meant B”**, selecting [native .exe plus .cmd/.bat client shims](decisions/d03b-windows-client-command-invocation.md) through a dedicated safe Windows adapter. These policy decisions do not approve implementation of the whole spec; D04/D05 remain open. No product constants or implementation source changed by this planning/decision work. +Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. Later separate explicit answers **“A”** selected [D01 Windows runtime bundling](decisions/d01-windows-runtime-bundling.md), [D02 macOS OpenSSL dylib bundling](decisions/d02-macos-openssl-bundling.md), and [D03a Windows native-profile directory precedence](decisions/d03a-windows-user-directory.md). The later D03b answer was explicitly corrected to **“no i meant B”**, selecting [native .exe plus .cmd/.bat client shims](decisions/d03b-windows-client-command-invocation.md) through a dedicated safe Windows adapter. The subsequent **“A”** selects [D04 truthful retained Windows Exclusive mode](decisions/d04-windows-direct-exclusive-mode.md). These policy decisions do not approve implementation of the whole spec; D05 remains open. No product constants or implementation source changed by this planning/decision work. From 4c63ddff0c3722604c082409765e92aa5b4c5568 Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Tue, 27 Oct 2026 09:15:20 +0930 Subject: [PATCH 08/17] docs(spec): record approved macOS minimum support policy --- .../decisions/d05a-macos-supported-minimum.md | 23 ++++++++ docs/specs/CBG-PLAT-01/delivery.md | 2 +- docs/specs/CBG-PLAT-01/spec.md | 52 +++++++++++++------ 3 files changed, 60 insertions(+), 17 deletions(-) create mode 100644 docs/specs/CBG-PLAT-01/decisions/d05a-macos-supported-minimum.md diff --git a/docs/specs/CBG-PLAT-01/decisions/d05a-macos-supported-minimum.md b/docs/specs/CBG-PLAT-01/decisions/d05a-macos-supported-minimum.md new file mode 100644 index 00000000..36c5d2a9 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/decisions/d05a-macos-supported-minimum.md @@ -0,0 +1,23 @@ +# D05a — macOS supported minimum and qualification decision + +## Approved scope and proposal + +- Work: `CBG-PLAT-01/D05a`; S03/COD-54 and qualification S10/COD-61. +- Canonical proposal: `docs/specs/CBG-PLAT-01/spec.md`, revision0.6 at full Git commit `9324a074953bdcea52d37050d39088ad5aca7ead`, **macOS minimum/qualification policy only**. +- Immutable proposal: https://github.com/rabii-chaarani/codebaseGraph/blob/9324a074953bdcea52d37050d39088ad5aca7ead/docs/specs/CBG-PLAT-01/spec.md#d05--supported-consumer-qualification-matrix-and-cargo-install-recipe +- Decision reference: this conversation, immediately after D05a offered A (target macOS 13.3+ Apple Silicon, with minimum/current release tests before claiming support) versus B (target macOS 14+). The user answered **“A”**. +- Status: **target/qualification policy approved**. Revision0.7 records this choice; the user has not approved the entire revised specification or implementation start. + +## Selected option A + +Target macOS **13.3 or newer on Apple Silicon (ARM64)**. Qualify the actual final installed archive on the declared minimum, macOS 13.3, and a current macOS release before claiming support. Name the exact current release/build tested. Keep the approved D02 bundled-OpenSSL/relative-runtime-path policy: no Homebrew/OpenSSL prerequisite on these clean consumer environments. + +The current native extension deployment minimum is not an executed support result. Verify every shipped native component's minimum-OS compatibility, final archive imports/install names/rpaths, actual CLI/graph/JSON/FTS/reopen/wiki/MCP behavior, and applicable failure paths. Capture native OS/build, source/CLI/archive hashes, exact command/method/result and limits. This is a selected qualification requirement, not a claim those checks have passed. + +If a minimum-version native environment is unavailable, keep minimum qualification explicitly pending. Do not silently raise the floor to14+, substitute only current-host CI, weaken required checks or call metadata passing execution. + +## Remaining limits + +D05b Windows consumer OS baseline, D05c PowerShell hosts, and D05d Cargo source-install recipe remain open. D01–D04 remain independently approved; D05a does not restore Intel/Linux targets or decide Windows support by inference. + +COD-51, COD-54 and COD-61 remain Backlog. No implementation start, production constants/source changes, platform qualification, release approval, merge, deployment or service restart is authorized. Later exact-slice approval may reuse this settled target policy without reopening it. diff --git a/docs/specs/CBG-PLAT-01/delivery.md b/docs/specs/CBG-PLAT-01/delivery.md index 581764df..55f9fa83 100644 --- a/docs/specs/CBG-PLAT-01/delivery.md +++ b/docs/specs/CBG-PLAT-01/delivery.md @@ -4,7 +4,7 @@ - Milestone: `CBG-PLAT-01 — PR #153 platform maintenance`, ID `ff37f4fc-4072-439a-8691-9c15dc739ddd`. - Proposed canonical specification: [rev0.1 at full commit 33360340379f878e93324e0829a1bb6f33eafc9d](https://github.com/rabii-chaarani/codebaseGraph/blob/33360340379f878e93324e0829a1bb6f33eafc9d/docs/specs/CBG-PLAT-01/spec.md). No approved specification SHA or implementation sign-off is recorded. - Draft docs-only publication: [PR155](https://github.com/rabii-chaarani/codebaseGraph/pull/155), stacked on PR153. No product source/constants changed. -- User initially authorized spec/backlog creation, then separately selected **D01 option A: bundled Windows prebuilt runtimes** ([record](decisions/d01-windows-runtime-bundling.md)) and **D02 option A: bundled macOS prebuilt OpenSSL dylibs with relative runtime paths** ([record](decisions/d02-macos-openssl-bundling.md)); no Homebrew prerequisite. The user also selected **D03a option A: explicit path → client override → native Windows profile**, ignoring HOME for the default and failing clearly rather than using CWD ([record](decisions/d03a-windows-user-directory.md)). No implementation start is authorized. The user corrected D03b to **option B: native .exe plus .cmd/.bat client shims through a dedicated safe Windows invocation adapter**, superseding the preceding A ([record](decisions/d03b-windows-client-command-invocation.md)). The user also selected **D04 option A: retain/report the Windows Direct-read Exclusive lock**, without an unlock/relock gap or new concurrency guarantee ([record](decisions/d04-windows-direct-exclusive-mode.md)). D05 remains unresolved; Cargo source-install policy stays open. All issues remain Backlog with no dates, estimates or assignees invented. +- User initially authorized spec/backlog creation, then separately selected **D01 option A: bundled Windows prebuilt runtimes** ([record](decisions/d01-windows-runtime-bundling.md)) and **D02 option A: bundled macOS prebuilt OpenSSL dylibs with relative runtime paths** ([record](decisions/d02-macos-openssl-bundling.md)); no Homebrew prerequisite. The user also selected **D03a option A: explicit path → client override → native Windows profile**, ignoring HOME for the default and failing clearly rather than using CWD ([record](decisions/d03a-windows-user-directory.md)). No implementation start is authorized. The user corrected D03b to **option B: native .exe plus .cmd/.bat client shims through a dedicated safe Windows invocation adapter**, superseding the preceding A ([record](decisions/d03b-windows-client-command-invocation.md)). The user also selected **D04 option A: retain/report the Windows Direct-read Exclusive lock**, without an unlock/relock gap or new concurrency guarantee ([record](decisions/d04-windows-direct-exclusive-mode.md)). The user also selected **D05a option A: target macOS 13.3+ on Apple Silicon, with minimum/current-release execution before claiming support** ([record](decisions/d05a-macos-supported-minimum.md)). D05b Windows, D05c PowerShell and D05d Cargo source-install policies remain open; actual macOS qualification is not established by the decision. All issues remain Backlog with no dates, estimates or assignees invented. | Work item | Linear | Outcome | Depends on | |---|---|---|---| diff --git a/docs/specs/CBG-PLAT-01/spec.md b/docs/specs/CBG-PLAT-01/spec.md index 46b15505..1023c6e4 100644 --- a/docs/specs/CBG-PLAT-01/spec.md +++ b/docs/specs/CBG-PLAT-01/spec.md @@ -2,11 +2,11 @@ ## 1. Identity, status and authority -- **Revision:** 0.6, proposed implementation scope with **D01–D04 policies approved** (including D03a/D03b). **Work ID:** `CBG-PLAT-01`. +- **Revision:** 0.7, proposed implementation scope with **D01–D04 and D05a policies approved** (including D03a/D03b). **Work ID:** `CBG-PLAT-01`. - **Canonical Git path:** `docs/specs/CBG-PLAT-01/spec.md`. Supporting review evidence: [review-evidence.md](review-evidence.md) and [evidence/](evidence/). - **Delivery:** CodebaseGraph Linear workspace (`https://linear.app/codebasegraph`), existing **Maintenance** project `P-COD-2` (`https://linear.app/codebasegraph/project/maintenance-33932479ebd0`), team `COD`. This user-selected destination supersedes older project-routing advice. No new project is created. - **Baseline:** [PR #153](https://github.com/rabii-chaarani/codebaseGraph/pull/153), reviewed HEAD `862a8f88d485d5bd257ebd9456c194156fd4ee94`, version3.0.4. This evidence is not the prior checkout6aa5ba8 review. Revalidate changed source before implementation. -- **Approval:** the initial user request authorized planning/specification publication and issue creation. The user later selected **D01 option A: bundle required Windows prebuilt runtime libraries**, with licenses, checksums and controlled DLL loading, and **D02 option A: bundle OpenSSL dylibs for macOS prebuilt releases**, with relative runtime paths, licenses and checksums; no Homebrew prerequisite. See [D01](decisions/d01-windows-runtime-bundling.md) and [D02](decisions/d02-macos-openssl-bundling.md). The user also selected **D03a option A: explicit config path → client-specific override → native Windows user-profile directory**, ignoring HOME for the Windows default and failing clearly rather than falling back to CWD; see [D03a](decisions/d03a-windows-user-directory.md). The user then selected **D03b option B: native .exe clients plus .cmd/.bat shims through a dedicated Windows invocation adapter**, with tested argument handling, no generic shell-command evaluation and clear rejection of unsupported/unsafe inputs; see [D03b](decisions/d03b-windows-client-command-invocation.md). The explicit correction “no i meant B” supersedes the preceding A. The user also selected **D04 option A: retain and accurately report the Windows Direct-read Exclusive lock**, without a new unlock/relock transition or concurrent-reader guarantee; see [D04](decisions/d04-windows-direct-exclusive-mode.md). These approve the selected policies only, not the entire specification or implementation start. D05, implementation authorization, merge, deployment and service restarts remain unapproved. S00 records applicable exact-scope approvals without reopening settled decisions. +- **Approval:** the initial user request authorized planning/specification publication and issue creation. The user later selected **D01 option A: bundle required Windows prebuilt runtime libraries**, with licenses, checksums and controlled DLL loading, and **D02 option A: bundle OpenSSL dylibs for macOS prebuilt releases**, with relative runtime paths, licenses and checksums; no Homebrew prerequisite. See [D01](decisions/d01-windows-runtime-bundling.md) and [D02](decisions/d02-macos-openssl-bundling.md). The user also selected **D03a option A: explicit config path → client-specific override → native Windows user-profile directory**, ignoring HOME for the Windows default and failing clearly rather than falling back to CWD; see [D03a](decisions/d03a-windows-user-directory.md). The user then selected **D03b option B: native .exe clients plus .cmd/.bat shims through a dedicated Windows invocation adapter**, with tested argument handling, no generic shell-command evaluation and clear rejection of unsupported/unsafe inputs; see [D03b](decisions/d03b-windows-client-command-invocation.md). The explicit correction “no i meant B” supersedes the preceding A. The user also selected **D04 option A: retain and accurately report the Windows Direct-read Exclusive lock**, without a new unlock/relock transition or concurrent-reader guarantee; see [D04](decisions/d04-windows-direct-exclusive-mode.md). The user also selected **D05a option A: target macOS 13.3+ on Apple Silicon**, requiring execution on the declared minimum and a current macOS release before claiming support; see [D05a](decisions/d05a-macos-supported-minimum.md). These approve the selected policies only, not the entire specification or implementation start. D05b Windows baseline, D05c PowerShell baseline, D05d Cargo source-install policy, implementation authorization, merge, deployment and service restarts remain unapproved. S00 records applicable exact-scope approvals without reopening settled decisions. - **Closure owner:** repository maintainer/user; no automatic aggregate closure delegated. Assignees/dates/estimates remain unset. Draft requirements below are proposed, not approved acceptance changes. - **State separation:** proposed → exact-scope approved → implemented → native-platform qualified → maintainer closed. Linear Backlog, attached/configured tests, commits and percentages are not evidence of later states. @@ -33,7 +33,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract **Outcome:** Publish/pin the proposed specification and review evidence; resolve applicable decisions and obtain explicit exact-scope approval for selected dependent slices, while recording deferral of unrelated decisions. -**Problem/evidence:** Planning and D01/D02 distribution, D03a/D03b Windows discovery/invocation, and D04 truthful Windows Exclusive lock policies are approved. D05 remains unresolved. No current message authorizes implementation, merge, deployment or service restart. +**Problem/evidence:** Planning, D01–D04 policies and D05a macOS 13.3+ Apple Silicon target policy are approved. D05b–D05d remain unresolved. Minimum/current macOS execution has not been established by this policy decision. No current message authorizes implementation, merge, deployment or service restart. **Requirements / criteria:** R01, R02, R03, R04, R05, R06, R07, R08, R09, R10 → A00. @@ -55,7 +55,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [docs/specs/CBG-COPY-01/resource-ceilings-approval.md:1–10](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/docs/specs/CBG-COPY-01/resource-ceilings-approval.md#L1-L10) - [README.md:45–65](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/README.md#L45-L65) -**Dependencies:** none; planning/approval only. **Open decisions:** D05. **Resolved:** D01, D02, D03a, D03b and D04 policies approved; no implementation start authorized. No task depends on a guessed implementation date. +**Dependencies:** none; planning/approval only. **Open decisions:** D05b, D05c, D05d. **Resolved:** D01, D02, D03a, D03b, D04 and D05a policies approved; no implementation start authorized. No task depends on a guessed implementation date. ### S01 — Isolate macOS directory enumeration cursors for nested cleanup scans @@ -128,18 +128,18 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - Follow approved D02 option A for macOS ARM64 prebuilt releases: bundle compatible redistributable OpenSSL dylibs with relative install names/runtime paths, licenses and checksums. Users must not install Homebrew or OpenSSL separately. Do not switch to static linking or external prerequisites without a new user decision. - Retain exact-artifact checksums/provenance and inspect final release imports, not only a debug build. -- Document the approved ARM64/minimum-OS dependency policy; do not restore intentionally removed Intel/Linux targets. +- Target macOS 13.3+ on Apple Silicon under approved D05a. Execute the actual final archive on the declared minimum and a current macOS release before claiming support; an extension deployment target or current-host green build alone is insufficient. Do not restore intentionally removed Intel/Linux targets. **Acceptance (proposed):** -- **A05** — Given the approved clean consumer baseline without Homebrew or a separately installed OpenSSL, the final installed ARM64 archive --help, graph/JSON/FTS build and reopen, k-wiki and MCP operate using the bundled compatible OpenSSL dylibs and relative runtime paths. No producer-specific absolute Homebrew path may be required. +- **A05** — Given clean Apple Silicon consumer environments on macOS 13.3 and a current macOS release without Homebrew or a separately installed OpenSSL, the final installed ARM64 archive --help, graph/JSON/FTS build and reopen, k-wiki and MCP operate using the bundled compatible OpenSSL dylibs and relative runtime paths. Record the exact current release/build tested. No producer-specific absolute Homebrew path may be required; a 13.3 deployment target alone is not execution evidence. - **A06** — Final release archive otool dependency/install-name/rpath evidence confirms relative resolution of the bundled OpenSSL dylibs; licenses/checksums cover them. Given a missing, corrupt or incompatible bundled library, fail clearly without reporting readiness or qualification. A redistribution/compatibility blocker must be reported, not converted silently into a Homebrew prerequisite. -**Architectural context:** Release Gate resp-255–resp-258, resp-16/resp-17; Graph Store resp-113. D02 dylib-bundling policy is approved; implementation authorization, D05 consumer/minimum-OS baseline and applicable architectural reconciliation remain pending. Do not change process containment. +**Architectural context:** Release Gate resp-255–resp-258, resp-16/resp-17; Graph Store resp-113. D02 dylib-bundling and D05a macOS 13.3+ Apple Silicon target policies are approved; implementation authorization, actual minimum/current release qualification and applicable architectural reconciliation remain pending. D05d source-install recipe remains separate. Do not change process containment. -**Planned verification:** Build the actual ARM64 release archive, inspect Mach-O imports/install names/rpaths, then execute the installed archive on a clean approved macOS consumer baseline without Homebrew/OpenSSL and with missing/corrupt bundled-library negative cases. +**Planned verification:** Build the actual ARM64 release archive, inspect Mach-O imports/install names/rpaths and minimum-OS compatibility of every shipped native component, then execute it on clean Apple Silicon macOS 13.3 and a current macOS release without Homebrew/OpenSSL. Include missing/corrupt bundled-library negative cases and record real OS/build results, not only deployment-target metadata. **Source orientation at the reviewed SHA:** - [build.rs:10–26](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/build.rs#L10-L26) @@ -147,7 +147,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [crates/xtask/src/main.rs:596–607](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/crates/xtask/src/main.rs#L596-L607) - [README.md:45–65](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/README.md#L45-L65) -**Dependencies:** S00. **Open decisions:** D05 and implementation authorization. **Resolved:** D02 macOS prebuilt OpenSSL dylib bundling. No task depends on a guessed implementation date. +**Dependencies:** S00. **Open decisions:** implementation authorization; D05d only for a separately included Cargo source-install scope. **Resolved:** D02 macOS prebuilt OpenSSL dylib bundling and D05a macOS 13.3+ Apple Silicon target. Native minimum/current execution remains pending. No task depends on a guessed implementation date. ### S04 — Use explicit Windows user-directory and executable discovery policy @@ -328,7 +328,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - Preserve serial discovered inventories, bounded Windows sharding, captured CLI hashes, ignored-case accounting and fail-closed artifact gates. - Run native Mac ARM64 and Windows x64 checks on the selected corrected revision; bind head/synthetic merge, binary hashes, archive hashes and environment. - Execute real installation/upgrade/failure paths and installed CLI/MCP/JSON/FTS/reopen under approved clean-consumer and prerequisite policies. Reconcile stale four-target release documentation with the two-target scope; this qualification does not duplicate or close the broader DC-S5 cleanup/rollout programme. -- Resolve D05 and document the actual tested OS/PowerShell floors and source-install feature recipe; do not restore removed platforms or workload ceilings. +- Follow approved D05a macOS 13.3+ Apple Silicon target and require actual final-archive execution on the minimum and a current macOS release before claiming support. Resolve D05b Windows, D05c PowerShell and D05d source-install recipe separately; document exact tested versions and do not restore removed platforms or workload ceilings. **Acceptance (proposed):** @@ -364,7 +364,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract | A00 | S00 / R01–R10 | Audit immutable spec/review links and explicit human approval | This proposal is not approved; planning only. | | A01–A02 | R01 / S01 | Exact rooted helper multi-batch nested test; production receipt-selection case; cancellation/namespace tests | Mac exact-source helper baseline200/outer85/inner200 fails. No complete collector-starvation/data-loss repro. Fixed native runs required. | | A03–A04 | R02 / S02 | Final PE imports + installed clean Windows JSON/FTS/CLI/MCP and failure cases | Current asset imports inspected; no clean Windows missing-DLL execution. D01 bundling policy approved; D05/implementation and actual native qualification pending. | -| A05–A06 | R03 / S03 | Final release Mach-O/rpaths + clean approved ARM64 install/reopen/failure | Fresh debug CLI imports inspected only; no final release/clean consumer run. D02 dylib-bundling policy approved; D05/implementation and actual native qualification pending. | +| A05–A06 | R03 / S03 | Final release Mach-O/rpaths + clean approved ARM64 install/reopen/failure | Fresh debug CLI imports inspected only; no final release/clean consumer run. D02 bundling and D05a macOS 13.3+ target policies approved; implementation and actual minimum/current native qualification pending. | | A07–A08 | R04 / S04 | Process-level native Windows env/PATH/override cases and Mac regression | Fresh CLI portable-logic reproduction points user scope to dot with HOME absent. Not Windows execution. D03a/D03b policies approved; implementation and native qualification pending. | | A09 | R05 / S05 | Native PowerShell valid-checksum/nonzero executable preflight/destination preservation | Source semantics only; pwsh unavailable locally. D05 pending. | | A10 | R06 / S06 | Exact watch-help and adjacent behavior tests on both native targets | Fresh Mac failure; hosted Mac+Win failure. Fixed run pending. | @@ -425,10 +425,30 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio ### D05 — Supported consumer qualification matrix and Cargo-install recipe -- Affected: S02, S03, S05, S10. -- Recommendation/options: Name tested macOS ARM64/Windows x64 OS and PowerShell baselines; honor macOS13.3 native extension floor and explicitly select/document source-install bundled-feature behavior. -- Tradeoff/start constraint: No platform expansion, implicit minimum-OS guarantee, resource-ceiling restoration, blanket timeout increase or weakened test gate. -- Status: unanswered/proposed. No implementation approval recorded. +- Affected: S02, S03, S05, S10. Split target policy from actual qualification and from unrelated installation choices. +- No platform expansion, implicit passing support claim, workload-ceiling restoration, blanket timeout increase or weakened test gate is approved. + +#### D05a — macOS minimum and qualification (approved) + +- **Decision: A — target macOS 13.3+ on Apple Silicon (ARM64).** Require tests of the final installed archive on macOS 13.3 and a current macOS release before claiming support. +- The current native extensions' 13.3 minimum is build metadata, not evidence that 13.3 was tested. Record exact native OS/builds, binaries and archive hashes in qualification; missing minimum-environment access leaves qualification pending rather than silently raising the floor or accepting current-host CI as proof. +- User decision: **“A”**, answering the preceding D05a A/B question (target macOS 13.3+ versus macOS 14+). See [decision/approval record](decisions/d05a-macos-supported-minimum.md). +- **Status: target/qualification policy approved only.** No actual minimum/current execution, implementation start, release approval, merge, deployment or service restart is claimed. + +#### D05b — Windows consumer baseline (open) + +- Choose the supported Windows x86_64 client OS baseline and require native desktop consumer execution, not just a Windows Server CI build host. +- **Status: unanswered/proposed.** No Windows version floor is selected by D05a. + +#### D05c — PowerShell baseline (open) + +- Choose the Windows PowerShell/PowerShell hosts claimed for installer and client-invocation qualification; verify their native exit/argument behavior. +- **Status: unanswered/proposed.** D03b shim support does not choose PowerShell versions. + +#### D05d — Cargo source-install recipe (open) + +- Select/document source-build prerequisites and Windows bundled-extension feature behavior separately from approved prebuilt-runtime bundling. +- **Status: unanswered/proposed.** Do not claim plain Cargo install reproduces the qualified native archive recipe until its policy and actual checks agree. ## 8. Handoff, dependencies and closure @@ -440,4 +460,4 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio ### Planning authorization record -Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. Later separate explicit answers **“A”** selected [D01 Windows runtime bundling](decisions/d01-windows-runtime-bundling.md), [D02 macOS OpenSSL dylib bundling](decisions/d02-macos-openssl-bundling.md), and [D03a Windows native-profile directory precedence](decisions/d03a-windows-user-directory.md). The later D03b answer was explicitly corrected to **“no i meant B”**, selecting [native .exe plus .cmd/.bat client shims](decisions/d03b-windows-client-command-invocation.md) through a dedicated safe Windows adapter. The subsequent **“A”** selects [D04 truthful retained Windows Exclusive mode](decisions/d04-windows-direct-exclusive-mode.md). These policy decisions do not approve implementation of the whole spec; D05 remains open. No product constants or implementation source changed by this planning/decision work. +Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. Later separate explicit answers **“A”** selected [D01 Windows runtime bundling](decisions/d01-windows-runtime-bundling.md), [D02 macOS OpenSSL dylib bundling](decisions/d02-macos-openssl-bundling.md), and [D03a Windows native-profile directory precedence](decisions/d03a-windows-user-directory.md). The later D03b answer was explicitly corrected to **“no i meant B”**, selecting [native .exe plus .cmd/.bat client shims](decisions/d03b-windows-client-command-invocation.md) through a dedicated safe Windows adapter. The subsequent **“A”** selects [D04 truthful retained Windows Exclusive mode](decisions/d04-windows-direct-exclusive-mode.md). The subsequent **“A”** selects [D05a macOS 13.3+ Apple Silicon with minimum/current qualification](decisions/d05a-macos-supported-minimum.md). These policy decisions do not approve implementation of the whole spec; D05b–D05d remain open. No product constants or implementation source changed by this planning/decision work. From 5917e450816abf7761f4adfa1cedd4072bd7c1d6 Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Tue, 27 Oct 2026 09:21:25 +0930 Subject: [PATCH 09/17] docs(spec): record approved Windows 11 consumer policy --- .../d05b-windows-consumer-baseline.md | 21 ++++++++++++ docs/specs/CBG-PLAT-01/delivery.md | 2 +- docs/specs/CBG-PLAT-01/spec.md | 32 ++++++++++--------- 3 files changed, 39 insertions(+), 16 deletions(-) create mode 100644 docs/specs/CBG-PLAT-01/decisions/d05b-windows-consumer-baseline.md diff --git a/docs/specs/CBG-PLAT-01/decisions/d05b-windows-consumer-baseline.md b/docs/specs/CBG-PLAT-01/decisions/d05b-windows-consumer-baseline.md new file mode 100644 index 00000000..7638ac4e --- /dev/null +++ b/docs/specs/CBG-PLAT-01/decisions/d05b-windows-consumer-baseline.md @@ -0,0 +1,21 @@ +# D05b — Windows consumer baseline decision + +## Approved scope and proposal + +- Work: `CBG-PLAT-01/D05b`; S02/COD-53, S05/COD-56 and qualification S10/COD-61. +- Canonical proposal: `docs/specs/CBG-PLAT-01/spec.md`, revision0.7 at full Git commit `4c63ddff0c3722604c082409765e92aa5b4c5568`, **Windows consumer target/qualification policy only**. +- Immutable proposal: https://github.com/rabii-chaarani/codebaseGraph/blob/4c63ddff0c3722604c082409765e92aa5b4c5568/docs/specs/CBG-PLAT-01/spec.md#d05b--windows-consumer-baseline-open +- Decision reference: this conversation, immediately after D05b offered A (Microsoft-supported Windows 11 x86_64 releases) versus B (Windows 10 and11 x86_64). The user answered **“A”**. +- Status: **consumer target/qualification policy approved**. Revision0.8 records the selection; this is not full-spec approval or implementation authorization. + +## Selected option A + +Target Microsoft-supported **Windows 11 x86_64 client releases**. Qualify actual desktop installation and operation of the final installed archive under the approved bundled-runtime policy. Record exact native edition/release/build, source/binary/archive identities, executed methods/results and limitations. Do not infer passing support from a selected policy or a PE subsystem version. + +Windows Server CI remains native build/test evidence, not a substitute for desktop consumer qualification. This choice excludes Windows 10 and does not add Windows ARM64 or Windows Server consumer support. No particular Windows 11 edition, patch build or automated desktop test mechanism was selected by the user; the recorded execution must identify what was actually tested and any coverage limits. + +## Remaining limits + +D05c PowerShell/installer hosts and D05d Cargo source-install recipe remain open. Earlier D01–D04 and D05a decisions remain approved independently. D05b does not approve implementation, claim desktop tests passed, change source/constants, authorize merge/deployment/service restart or remove COD-51 gates. A desktop environment unavailable for testing leaves qualification pending; do not substitute Server-only CI or silently broaden support. + +COD-51, COD-53, COD-56 and COD-61 remain Backlog. Later exact-slice implementation approval can reuse this settled Windows consumer policy without reopening it. diff --git a/docs/specs/CBG-PLAT-01/delivery.md b/docs/specs/CBG-PLAT-01/delivery.md index 55f9fa83..ed628aef 100644 --- a/docs/specs/CBG-PLAT-01/delivery.md +++ b/docs/specs/CBG-PLAT-01/delivery.md @@ -4,7 +4,7 @@ - Milestone: `CBG-PLAT-01 — PR #153 platform maintenance`, ID `ff37f4fc-4072-439a-8691-9c15dc739ddd`. - Proposed canonical specification: [rev0.1 at full commit 33360340379f878e93324e0829a1bb6f33eafc9d](https://github.com/rabii-chaarani/codebaseGraph/blob/33360340379f878e93324e0829a1bb6f33eafc9d/docs/specs/CBG-PLAT-01/spec.md). No approved specification SHA or implementation sign-off is recorded. - Draft docs-only publication: [PR155](https://github.com/rabii-chaarani/codebaseGraph/pull/155), stacked on PR153. No product source/constants changed. -- User initially authorized spec/backlog creation, then separately selected **D01 option A: bundled Windows prebuilt runtimes** ([record](decisions/d01-windows-runtime-bundling.md)) and **D02 option A: bundled macOS prebuilt OpenSSL dylibs with relative runtime paths** ([record](decisions/d02-macos-openssl-bundling.md)); no Homebrew prerequisite. The user also selected **D03a option A: explicit path → client override → native Windows profile**, ignoring HOME for the default and failing clearly rather than using CWD ([record](decisions/d03a-windows-user-directory.md)). No implementation start is authorized. The user corrected D03b to **option B: native .exe plus .cmd/.bat client shims through a dedicated safe Windows invocation adapter**, superseding the preceding A ([record](decisions/d03b-windows-client-command-invocation.md)). The user also selected **D04 option A: retain/report the Windows Direct-read Exclusive lock**, without an unlock/relock gap or new concurrency guarantee ([record](decisions/d04-windows-direct-exclusive-mode.md)). The user also selected **D05a option A: target macOS 13.3+ on Apple Silicon, with minimum/current-release execution before claiming support** ([record](decisions/d05a-macos-supported-minimum.md)). D05b Windows, D05c PowerShell and D05d Cargo source-install policies remain open; actual macOS qualification is not established by the decision. All issues remain Backlog with no dates, estimates or assignees invented. +- User initially authorized spec/backlog creation, then separately selected **D01 option A: bundled Windows prebuilt runtimes** ([record](decisions/d01-windows-runtime-bundling.md)) and **D02 option A: bundled macOS prebuilt OpenSSL dylibs with relative runtime paths** ([record](decisions/d02-macos-openssl-bundling.md)); no Homebrew prerequisite. The user also selected **D03a option A: explicit path → client override → native Windows profile**, ignoring HOME for the default and failing clearly rather than using CWD ([record](decisions/d03a-windows-user-directory.md)). No implementation start is authorized. The user corrected D03b to **option B: native .exe plus .cmd/.bat client shims through a dedicated safe Windows invocation adapter**, superseding the preceding A ([record](decisions/d03b-windows-client-command-invocation.md)). The user also selected **D04 option A: retain/report the Windows Direct-read Exclusive lock**, without an unlock/relock gap or new concurrency guarantee ([record](decisions/d04-windows-direct-exclusive-mode.md)). The user also selected **D05a option A: target macOS 13.3+ on Apple Silicon, with minimum/current-release execution before claiming support** ([record](decisions/d05a-macos-supported-minimum.md)). The user also selected **D05b option A: Microsoft-supported Windows 11 x86_64 client releases with real desktop qualification, not Server CI alone** ([record](decisions/d05b-windows-consumer-baseline.md)). D05c PowerShell and D05d Cargo source-install policies remain open; neither target selection establishes actual native/consumer qualification. All issues remain Backlog with no dates, estimates or assignees invented. | Work item | Linear | Outcome | Depends on | |---|---|---|---| diff --git a/docs/specs/CBG-PLAT-01/spec.md b/docs/specs/CBG-PLAT-01/spec.md index 1023c6e4..f4990df3 100644 --- a/docs/specs/CBG-PLAT-01/spec.md +++ b/docs/specs/CBG-PLAT-01/spec.md @@ -2,11 +2,11 @@ ## 1. Identity, status and authority -- **Revision:** 0.7, proposed implementation scope with **D01–D04 and D05a policies approved** (including D03a/D03b). **Work ID:** `CBG-PLAT-01`. +- **Revision:** 0.8, proposed implementation scope with **D01–D04 and D05a/D05b policies approved** (including D03a/D03b). **Work ID:** `CBG-PLAT-01`. - **Canonical Git path:** `docs/specs/CBG-PLAT-01/spec.md`. Supporting review evidence: [review-evidence.md](review-evidence.md) and [evidence/](evidence/). - **Delivery:** CodebaseGraph Linear workspace (`https://linear.app/codebasegraph`), existing **Maintenance** project `P-COD-2` (`https://linear.app/codebasegraph/project/maintenance-33932479ebd0`), team `COD`. This user-selected destination supersedes older project-routing advice. No new project is created. - **Baseline:** [PR #153](https://github.com/rabii-chaarani/codebaseGraph/pull/153), reviewed HEAD `862a8f88d485d5bd257ebd9456c194156fd4ee94`, version3.0.4. This evidence is not the prior checkout6aa5ba8 review. Revalidate changed source before implementation. -- **Approval:** the initial user request authorized planning/specification publication and issue creation. The user later selected **D01 option A: bundle required Windows prebuilt runtime libraries**, with licenses, checksums and controlled DLL loading, and **D02 option A: bundle OpenSSL dylibs for macOS prebuilt releases**, with relative runtime paths, licenses and checksums; no Homebrew prerequisite. See [D01](decisions/d01-windows-runtime-bundling.md) and [D02](decisions/d02-macos-openssl-bundling.md). The user also selected **D03a option A: explicit config path → client-specific override → native Windows user-profile directory**, ignoring HOME for the Windows default and failing clearly rather than falling back to CWD; see [D03a](decisions/d03a-windows-user-directory.md). The user then selected **D03b option B: native .exe clients plus .cmd/.bat shims through a dedicated Windows invocation adapter**, with tested argument handling, no generic shell-command evaluation and clear rejection of unsupported/unsafe inputs; see [D03b](decisions/d03b-windows-client-command-invocation.md). The explicit correction “no i meant B” supersedes the preceding A. The user also selected **D04 option A: retain and accurately report the Windows Direct-read Exclusive lock**, without a new unlock/relock transition or concurrent-reader guarantee; see [D04](decisions/d04-windows-direct-exclusive-mode.md). The user also selected **D05a option A: target macOS 13.3+ on Apple Silicon**, requiring execution on the declared minimum and a current macOS release before claiming support; see [D05a](decisions/d05a-macos-supported-minimum.md). These approve the selected policies only, not the entire specification or implementation start. D05b Windows baseline, D05c PowerShell baseline, D05d Cargo source-install policy, implementation authorization, merge, deployment and service restarts remain unapproved. S00 records applicable exact-scope approvals without reopening settled decisions. +- **Approval:** the initial user request authorized planning/specification publication and issue creation. The user later selected **D01 option A: bundle required Windows prebuilt runtime libraries**, with licenses, checksums and controlled DLL loading, and **D02 option A: bundle OpenSSL dylibs for macOS prebuilt releases**, with relative runtime paths, licenses and checksums; no Homebrew prerequisite. See [D01](decisions/d01-windows-runtime-bundling.md) and [D02](decisions/d02-macos-openssl-bundling.md). The user also selected **D03a option A: explicit config path → client-specific override → native Windows user-profile directory**, ignoring HOME for the Windows default and failing clearly rather than falling back to CWD; see [D03a](decisions/d03a-windows-user-directory.md). The user then selected **D03b option B: native .exe clients plus .cmd/.bat shims through a dedicated Windows invocation adapter**, with tested argument handling, no generic shell-command evaluation and clear rejection of unsupported/unsafe inputs; see [D03b](decisions/d03b-windows-client-command-invocation.md). The explicit correction “no i meant B” supersedes the preceding A. The user also selected **D04 option A: retain and accurately report the Windows Direct-read Exclusive lock**, without a new unlock/relock transition or concurrent-reader guarantee; see [D04](decisions/d04-windows-direct-exclusive-mode.md). The user also selected **D05a option A: target macOS 13.3+ on Apple Silicon**, requiring execution on the declared minimum and a current macOS release before claiming support; see [D05a](decisions/d05a-macos-supported-minimum.md). The user also selected **D05b option A: Microsoft-supported Windows 11 x86_64 client releases**, requiring actual desktop installation/runtime qualification rather than Windows Server CI alone; see [D05b](decisions/d05b-windows-consumer-baseline.md). These approve the selected policies only, not the entire specification or implementation start. D05c PowerShell baseline, D05d Cargo source-install policy, implementation authorization, merge, deployment and service restarts remain unapproved. S00 records applicable exact-scope approvals without reopening settled decisions. - **Closure owner:** repository maintainer/user; no automatic aggregate closure delegated. Assignees/dates/estimates remain unset. Draft requirements below are proposed, not approved acceptance changes. - **State separation:** proposed → exact-scope approved → implemented → native-platform qualified → maintainer closed. Linear Backlog, attached/configured tests, commits and percentages are not evidence of later states. @@ -33,7 +33,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract **Outcome:** Publish/pin the proposed specification and review evidence; resolve applicable decisions and obtain explicit exact-scope approval for selected dependent slices, while recording deferral of unrelated decisions. -**Problem/evidence:** Planning, D01–D04 policies and D05a macOS 13.3+ Apple Silicon target policy are approved. D05b–D05d remain unresolved. Minimum/current macOS execution has not been established by this policy decision. No current message authorizes implementation, merge, deployment or service restart. +**Problem/evidence:** Planning, D01–D04 policies, D05a macOS 13.3+ Apple Silicon and D05b Microsoft-supported Windows 11 x86_64 consumer policies are approved. D05c/D05d remain unresolved. Actual native/consumer qualification is not established by selecting these policies. No current message authorizes implementation, merge, deployment or service restart. **Requirements / criteria:** R01, R02, R03, R04, R05, R06, R07, R08, R09, R10 → A00. @@ -55,7 +55,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [docs/specs/CBG-COPY-01/resource-ceilings-approval.md:1–10](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/docs/specs/CBG-COPY-01/resource-ceilings-approval.md#L1-L10) - [README.md:45–65](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/README.md#L45-L65) -**Dependencies:** none; planning/approval only. **Open decisions:** D05b, D05c, D05d. **Resolved:** D01, D02, D03a, D03b, D04 and D05a policies approved; no implementation start authorized. No task depends on a guessed implementation date. +**Dependencies:** none; planning/approval only. **Open decisions:** D05c, D05d. **Resolved:** D01, D02, D03a, D03b, D04, D05a and D05b policies approved; no implementation start authorized. No task depends on a guessed implementation date. ### S01 — Isolate macOS directory enumeration cursors for nested cleanup scans @@ -102,13 +102,13 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract **Acceptance (proposed):** -- **A03** — Given an approved clean Windows baseline without developer OpenSSL/VC PATH entries or separately installed required OpenSSL/VC runtimes, the exact installed prebuilt archive supplies its required compatible redistributable non-system native libraries and operates without manual runtime installation before reporting ready. The bundling policy is approved by D01; the exact consumer baseline remains D05. +- **A03** — Given a clean Microsoft-supported Windows 11 x86_64 desktop consumer environment without developer OpenSSL/VC PATH entries or separately installed required OpenSSL/VC runtimes, the exact installed prebuilt archive supplies its compatible redistributable required non-system libraries and operates without manual runtime installation before reporting ready. D01 approves bundling and D05b approves the Windows 11 consumer scope; record actual tested edition/release/build. Windows Server CI alone is not desktop qualification. - **A04** — Given real setup and queries, LOAD json, LOAD fts, graph build/reopen/search and k-wiki/MCP smoke succeed through installed binaries with bundled runtimes. Given a missing/incompatible bundled sidecar, fail clearly without replacing a working installation or reporting qualification; include imports, archive hashes, licenses and application-controlled loader policy in evidence. A packaging/licensing incompatibility blocks release; it does not authorize switching to manual prerequisite installation. -**Architectural context:** Graph Store resp-113; Release Gate resp-255, resp-256, resp-257, resp-258 and resp-16/resp-17. D01 Windows prebuilt bundling policy is approved; implementation authorization, D05 baseline/source-install policy and applicable architectural reconciliation remain pending before coding. +**Architectural context:** Graph Store resp-113; Release Gate resp-255, resp-256, resp-257, resp-258 and resp-16/resp-17. D01 bundling and D05b Windows 11 x86_64 consumer policies are approved. D05c installer shell, D05d source-install policy, implementation authorization and applicable reconciliation remain pending; native desktop qualification is not supplied by this decision. -**Planned verification:** Inspect PE imports of exact final archive components and execute clean-consumer native Windows installation/JSON/FTS/reopen/CLI/MCP cases, including missing-dependency failure. +**Planned verification:** Inspect exact final archive PE imports and execute clean Microsoft-supported Windows 11 x86_64 desktop installation/JSON/FTS/reopen/CLI/MCP cases, including missing-dependency failure. Record native client edition/release/build and exact artifacts. Retain Server CI as build/test evidence only, not a substitute for desktop consumer execution. **Source orientation at the reviewed SHA:** - [src/db_writer/extensions.rs:98–110](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/src/db_writer/extensions.rs#L98-L110) @@ -116,7 +116,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [crates/xtask/src/main.rs:596–607](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/crates/xtask/src/main.rs#L596-L607) - [release/install/install.ps1:76–89](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/release/install/install.ps1#L76-L89) -**Dependencies:** S00. **Open decisions:** D05 and implementation authorization. **Resolved:** D01 Windows prebuilt runtime bundling. No task depends on a guessed implementation date. +**Dependencies:** S00. **Open decisions:** D05c, D05d and implementation authorization. **Resolved:** D01 runtime bundling and D05b Windows 11 x86_64 client scope. No task depends on a guessed implementation date. ### S03 — Remove undeclared Homebrew-path assumptions from macOS distribution @@ -200,13 +200,13 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract **Architectural context:** Release Gate resp-16, resp-256; existing installer validation behavior restoration, no invented model claim required. -**Planned verification:** Native Windows installer tests using checksum-valid controlled executables with success/nonzero exits, DryRun, real destination-preservation and checksum-failure paths. +**Planned verification:** Native Windows 11 x86_64 desktop installer tests under the separately approved D05c shell hosts, using checksum-valid controlled executables with success/nonzero exits, DryRun, destination preservation and checksum-failure paths. Server CI alone does not establish desktop installer qualification. **Source orientation at the reviewed SHA:** - [release/install/install.ps1:27–47](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/release/install/install.ps1#L27-L47) - [release/install/install.ps1:76–89](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/release/install/install.ps1#L76-L89) -**Dependencies:** S00. **Open decisions:** D05. No task depends on a guessed implementation date. +**Dependencies:** S00. **Open decisions:** D05c and implementation authorization. **Resolved:** D05b Windows 11 x86_64 consumer scope. No task depends on a guessed implementation date. ### S06 — Restore watch help documentation of the parallel default @@ -328,7 +328,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - Preserve serial discovered inventories, bounded Windows sharding, captured CLI hashes, ignored-case accounting and fail-closed artifact gates. - Run native Mac ARM64 and Windows x64 checks on the selected corrected revision; bind head/synthetic merge, binary hashes, archive hashes and environment. - Execute real installation/upgrade/failure paths and installed CLI/MCP/JSON/FTS/reopen under approved clean-consumer and prerequisite policies. Reconcile stale four-target release documentation with the two-target scope; this qualification does not duplicate or close the broader DC-S5 cleanup/rollout programme. -- Follow approved D05a macOS 13.3+ Apple Silicon target and require actual final-archive execution on the minimum and a current macOS release before claiming support. Resolve D05b Windows, D05c PowerShell and D05d source-install recipe separately; document exact tested versions and do not restore removed platforms or workload ceilings. +- Follow approved D05a macOS 13.3+ Apple Silicon minimum/current-release qualification and D05b Microsoft-supported Windows 11 x86_64 client scope. Require actual final installed archive desktop execution; Server CI is build evidence, not Windows consumer qualification. Resolve D05c PowerShell and D05d source-install recipe separately; record exact tested versions without restoring removed platforms or workload ceilings. **Acceptance (proposed):** @@ -435,10 +435,12 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio - User decision: **“A”**, answering the preceding D05a A/B question (target macOS 13.3+ versus macOS 14+). See [decision/approval record](decisions/d05a-macos-supported-minimum.md). - **Status: target/qualification policy approved only.** No actual minimum/current execution, implementation start, release approval, merge, deployment or service restart is claimed. -#### D05b — Windows consumer baseline (open) +#### D05b — Windows consumer baseline (approved) -- Choose the supported Windows x86_64 client OS baseline and require native desktop consumer execution, not just a Windows Server CI build host. -- **Status: unanswered/proposed.** No Windows version floor is selected by D05a. +- **Decision: A — Microsoft-supported Windows 11 x86_64 client releases.** Require actual desktop installation and runtime qualification of the final installed archive; record the tested edition/release/build and artifact identity. +- Windows Server CI remains useful native build/test evidence but cannot by itself establish Windows desktop consumer qualification. No Windows 10, Windows ARM64 or Windows Server consumer support is added by this choice. +- User decision: **“A”**, answering the preceding D05b A/B question (Windows 11 only versus Windows 10 and11). See [decision/approval record](decisions/d05b-windows-consumer-baseline.md). +- **Status: consumer target/qualification policy approved only.** No desktop execution, implementation start or release approval is claimed. D05c shell hosts and D05d source-install recipe remain separate. #### D05c — PowerShell baseline (open) @@ -460,4 +462,4 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio ### Planning authorization record -Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. Later separate explicit answers **“A”** selected [D01 Windows runtime bundling](decisions/d01-windows-runtime-bundling.md), [D02 macOS OpenSSL dylib bundling](decisions/d02-macos-openssl-bundling.md), and [D03a Windows native-profile directory precedence](decisions/d03a-windows-user-directory.md). The later D03b answer was explicitly corrected to **“no i meant B”**, selecting [native .exe plus .cmd/.bat client shims](decisions/d03b-windows-client-command-invocation.md) through a dedicated safe Windows adapter. The subsequent **“A”** selects [D04 truthful retained Windows Exclusive mode](decisions/d04-windows-direct-exclusive-mode.md). The subsequent **“A”** selects [D05a macOS 13.3+ Apple Silicon with minimum/current qualification](decisions/d05a-macos-supported-minimum.md). These policy decisions do not approve implementation of the whole spec; D05b–D05d remain open. No product constants or implementation source changed by this planning/decision work. +Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. Later separate explicit answers **“A”** selected [D01 Windows runtime bundling](decisions/d01-windows-runtime-bundling.md), [D02 macOS OpenSSL dylib bundling](decisions/d02-macos-openssl-bundling.md), and [D03a Windows native-profile directory precedence](decisions/d03a-windows-user-directory.md). The later D03b answer was explicitly corrected to **“no i meant B”**, selecting [native .exe plus .cmd/.bat client shims](decisions/d03b-windows-client-command-invocation.md) through a dedicated safe Windows adapter. The subsequent **“A”** selects [D04 truthful retained Windows Exclusive mode](decisions/d04-windows-direct-exclusive-mode.md). The subsequent **“A”** selects [D05a macOS 13.3+ Apple Silicon with minimum/current qualification](decisions/d05a-macos-supported-minimum.md). The subsequent **“A”** selects [D05b Microsoft-supported Windows 11 x86_64 desktop consumer scope](decisions/d05b-windows-consumer-baseline.md). These policy decisions do not approve implementation of the whole spec; D05c/D05d remain open. No product constants or implementation source changed by this planning/decision work. From d9541d4ef2302d19f36ee4fe222eaf55a88e583a Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Tue, 27 Oct 2026 09:24:40 +0930 Subject: [PATCH 10/17] docs(spec): record approved PowerShell installer compatibility --- .../d05c-powershell-installer-hosts.md | 21 ++++++++++++ docs/specs/CBG-PLAT-01/delivery.md | 2 +- docs/specs/CBG-PLAT-01/spec.md | 32 ++++++++++--------- 3 files changed, 39 insertions(+), 16 deletions(-) create mode 100644 docs/specs/CBG-PLAT-01/decisions/d05c-powershell-installer-hosts.md diff --git a/docs/specs/CBG-PLAT-01/decisions/d05c-powershell-installer-hosts.md b/docs/specs/CBG-PLAT-01/decisions/d05c-powershell-installer-hosts.md new file mode 100644 index 00000000..c03e0613 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/decisions/d05c-powershell-installer-hosts.md @@ -0,0 +1,21 @@ +# D05c — PowerShell installer-host compatibility decision + +## Approved scope and proposal + +- Work: `CBG-PLAT-01/D05c`; S05/COD-56 and qualification S10/COD-61; relevant to the Windows prebuilt installation path in S02/COD-53. +- Canonical proposal: `docs/specs/CBG-PLAT-01/spec.md`, revision0.8 at full Git commit `5917e450816abf7761f4adfa1cedd4072bd7c1d6`, **installer shell compatibility policy only**. +- Immutable proposal: https://github.com/rabii-chaarani/codebaseGraph/blob/5917e450816abf7761f4adfa1cedd4072bd7c1d6/docs/specs/CBG-PLAT-01/spec.md#d05c--powershell-baseline-open +- Decision reference: this conversation, immediately after D05c offered A (built-in Windows PowerShell 5.1 plus supported PowerShell 7 releases) versus B (PowerShell 7 only). The user answered **“A”**. +- Status: **installer compatibility policy approved**. Revision0.9 records the choice; this is not full-spec approval or implementation authorization. + +## Selected option A + +Support the installer under **built-in Windows PowerShell 5.1 and Microsoft-supported PowerShell 7 releases** on the approved Windows 11 x86_64 desktop scope. Users need not install a second shell before running the installer. The stated tradeoff is compatibility and actual tests under both shell families. + +Verify native exit codes, arguments, checksum checks and destination preservation consistently under both. A correctly hashed executable that launches but returns nonzero must fail DryRun and real preflight before existing destination binaries change. Include successful controls and missing/corrupt-file failures, recording exact PowerShell versions, native OS/build, binary/archive identities, commands/results and limits. The policy choice is not passing execution evidence. + +## Separate contracts and limits + +D03b independently approves native .exe plus .cmd/.bat client shims through a dedicated safe Windows invocation adapter. **D05c does not select that adapter's implementation mechanism, require PowerShell for client-shim execution, or authorize generic shell-command evaluation.** It selects installer compatibility only. + +D05d Cargo source-install recipe remains open. Earlier decisions remain approved independently. No implementation start, source/constants change, passing qualification, merge, deployment or service restart is authorized. Keep COD-51, COD-56 and COD-61 Backlog until their actual remaining gates are met; later exact-slice implementation approval can reuse this settled shell policy. diff --git a/docs/specs/CBG-PLAT-01/delivery.md b/docs/specs/CBG-PLAT-01/delivery.md index ed628aef..7179ca7b 100644 --- a/docs/specs/CBG-PLAT-01/delivery.md +++ b/docs/specs/CBG-PLAT-01/delivery.md @@ -4,7 +4,7 @@ - Milestone: `CBG-PLAT-01 — PR #153 platform maintenance`, ID `ff37f4fc-4072-439a-8691-9c15dc739ddd`. - Proposed canonical specification: [rev0.1 at full commit 33360340379f878e93324e0829a1bb6f33eafc9d](https://github.com/rabii-chaarani/codebaseGraph/blob/33360340379f878e93324e0829a1bb6f33eafc9d/docs/specs/CBG-PLAT-01/spec.md). No approved specification SHA or implementation sign-off is recorded. - Draft docs-only publication: [PR155](https://github.com/rabii-chaarani/codebaseGraph/pull/155), stacked on PR153. No product source/constants changed. -- User initially authorized spec/backlog creation, then separately selected **D01 option A: bundled Windows prebuilt runtimes** ([record](decisions/d01-windows-runtime-bundling.md)) and **D02 option A: bundled macOS prebuilt OpenSSL dylibs with relative runtime paths** ([record](decisions/d02-macos-openssl-bundling.md)); no Homebrew prerequisite. The user also selected **D03a option A: explicit path → client override → native Windows profile**, ignoring HOME for the default and failing clearly rather than using CWD ([record](decisions/d03a-windows-user-directory.md)). No implementation start is authorized. The user corrected D03b to **option B: native .exe plus .cmd/.bat client shims through a dedicated safe Windows invocation adapter**, superseding the preceding A ([record](decisions/d03b-windows-client-command-invocation.md)). The user also selected **D04 option A: retain/report the Windows Direct-read Exclusive lock**, without an unlock/relock gap or new concurrency guarantee ([record](decisions/d04-windows-direct-exclusive-mode.md)). The user also selected **D05a option A: target macOS 13.3+ on Apple Silicon, with minimum/current-release execution before claiming support** ([record](decisions/d05a-macos-supported-minimum.md)). The user also selected **D05b option A: Microsoft-supported Windows 11 x86_64 client releases with real desktop qualification, not Server CI alone** ([record](decisions/d05b-windows-consumer-baseline.md)). D05c PowerShell and D05d Cargo source-install policies remain open; neither target selection establishes actual native/consumer qualification. All issues remain Backlog with no dates, estimates or assignees invented. +- User initially authorized spec/backlog creation, then separately selected **D01 option A: bundled Windows prebuilt runtimes** ([record](decisions/d01-windows-runtime-bundling.md)) and **D02 option A: bundled macOS prebuilt OpenSSL dylibs with relative runtime paths** ([record](decisions/d02-macos-openssl-bundling.md)); no Homebrew prerequisite. The user also selected **D03a option A: explicit path → client override → native Windows profile**, ignoring HOME for the default and failing clearly rather than using CWD ([record](decisions/d03a-windows-user-directory.md)). No implementation start is authorized. The user corrected D03b to **option B: native .exe plus .cmd/.bat client shims through a dedicated safe Windows invocation adapter**, superseding the preceding A ([record](decisions/d03b-windows-client-command-invocation.md)). The user also selected **D04 option A: retain/report the Windows Direct-read Exclusive lock**, without an unlock/relock gap or new concurrency guarantee ([record](decisions/d04-windows-direct-exclusive-mode.md)). The user also selected **D05a option A: target macOS 13.3+ on Apple Silicon, with minimum/current-release execution before claiming support** ([record](decisions/d05a-macos-supported-minimum.md)). The user also selected **D05b option A: Microsoft-supported Windows 11 x86_64 client releases with real desktop qualification, not Server CI alone** ([record](decisions/d05b-windows-consumer-baseline.md)). The user also selected **D05c option A: built-in Windows PowerShell 5.1 plus Microsoft-supported PowerShell 7 releases, tested under both installer hosts** ([record](decisions/d05c-powershell-installer-hosts.md)); this does not choose .cmd/.bat invocation mechanics. D05d Cargo source-install policy remains open; no target/shell choice establishes passing qualification. All issues remain Backlog with no dates, estimates or assignees invented. | Work item | Linear | Outcome | Depends on | |---|---|---|---| diff --git a/docs/specs/CBG-PLAT-01/spec.md b/docs/specs/CBG-PLAT-01/spec.md index f4990df3..51f4925f 100644 --- a/docs/specs/CBG-PLAT-01/spec.md +++ b/docs/specs/CBG-PLAT-01/spec.md @@ -2,11 +2,11 @@ ## 1. Identity, status and authority -- **Revision:** 0.8, proposed implementation scope with **D01–D04 and D05a/D05b policies approved** (including D03a/D03b). **Work ID:** `CBG-PLAT-01`. +- **Revision:** 0.9, proposed implementation scope with **D01–D04 and D05a–D05c policies approved** (including D03a/D03b). **Work ID:** `CBG-PLAT-01`. - **Canonical Git path:** `docs/specs/CBG-PLAT-01/spec.md`. Supporting review evidence: [review-evidence.md](review-evidence.md) and [evidence/](evidence/). - **Delivery:** CodebaseGraph Linear workspace (`https://linear.app/codebasegraph`), existing **Maintenance** project `P-COD-2` (`https://linear.app/codebasegraph/project/maintenance-33932479ebd0`), team `COD`. This user-selected destination supersedes older project-routing advice. No new project is created. - **Baseline:** [PR #153](https://github.com/rabii-chaarani/codebaseGraph/pull/153), reviewed HEAD `862a8f88d485d5bd257ebd9456c194156fd4ee94`, version3.0.4. This evidence is not the prior checkout6aa5ba8 review. Revalidate changed source before implementation. -- **Approval:** the initial user request authorized planning/specification publication and issue creation. The user later selected **D01 option A: bundle required Windows prebuilt runtime libraries**, with licenses, checksums and controlled DLL loading, and **D02 option A: bundle OpenSSL dylibs for macOS prebuilt releases**, with relative runtime paths, licenses and checksums; no Homebrew prerequisite. See [D01](decisions/d01-windows-runtime-bundling.md) and [D02](decisions/d02-macos-openssl-bundling.md). The user also selected **D03a option A: explicit config path → client-specific override → native Windows user-profile directory**, ignoring HOME for the Windows default and failing clearly rather than falling back to CWD; see [D03a](decisions/d03a-windows-user-directory.md). The user then selected **D03b option B: native .exe clients plus .cmd/.bat shims through a dedicated Windows invocation adapter**, with tested argument handling, no generic shell-command evaluation and clear rejection of unsupported/unsafe inputs; see [D03b](decisions/d03b-windows-client-command-invocation.md). The explicit correction “no i meant B” supersedes the preceding A. The user also selected **D04 option A: retain and accurately report the Windows Direct-read Exclusive lock**, without a new unlock/relock transition or concurrent-reader guarantee; see [D04](decisions/d04-windows-direct-exclusive-mode.md). The user also selected **D05a option A: target macOS 13.3+ on Apple Silicon**, requiring execution on the declared minimum and a current macOS release before claiming support; see [D05a](decisions/d05a-macos-supported-minimum.md). The user also selected **D05b option A: Microsoft-supported Windows 11 x86_64 client releases**, requiring actual desktop installation/runtime qualification rather than Windows Server CI alone; see [D05b](decisions/d05b-windows-consumer-baseline.md). These approve the selected policies only, not the entire specification or implementation start. D05c PowerShell baseline, D05d Cargo source-install policy, implementation authorization, merge, deployment and service restarts remain unapproved. S00 records applicable exact-scope approvals without reopening settled decisions. +- **Approval:** the initial user request authorized planning/specification publication and issue creation. The user later selected **D01 option A: bundle required Windows prebuilt runtime libraries**, with licenses, checksums and controlled DLL loading, and **D02 option A: bundle OpenSSL dylibs for macOS prebuilt releases**, with relative runtime paths, licenses and checksums; no Homebrew prerequisite. See [D01](decisions/d01-windows-runtime-bundling.md) and [D02](decisions/d02-macos-openssl-bundling.md). The user also selected **D03a option A: explicit config path → client-specific override → native Windows user-profile directory**, ignoring HOME for the Windows default and failing clearly rather than falling back to CWD; see [D03a](decisions/d03a-windows-user-directory.md). The user then selected **D03b option B: native .exe clients plus .cmd/.bat shims through a dedicated Windows invocation adapter**, with tested argument handling, no generic shell-command evaluation and clear rejection of unsupported/unsafe inputs; see [D03b](decisions/d03b-windows-client-command-invocation.md). The explicit correction “no i meant B” supersedes the preceding A. The user also selected **D04 option A: retain and accurately report the Windows Direct-read Exclusive lock**, without a new unlock/relock transition or concurrent-reader guarantee; see [D04](decisions/d04-windows-direct-exclusive-mode.md). The user also selected **D05a option A: target macOS 13.3+ on Apple Silicon**, requiring execution on the declared minimum and a current macOS release before claiming support; see [D05a](decisions/d05a-macos-supported-minimum.md). The user also selected **D05b option A: Microsoft-supported Windows 11 x86_64 client releases**, requiring actual desktop installation/runtime qualification rather than Windows Server CI alone; see [D05b](decisions/d05b-windows-consumer-baseline.md). The user also selected **D05c option A: built-in Windows PowerShell 5.1 plus Microsoft-supported PowerShell 7 releases**, with installer tests under both; see [D05c](decisions/d05c-powershell-installer-hosts.md). This does not choose the .cmd/.bat invocation mechanism. These approve the selected policies only, not the entire specification or implementation start. D05d Cargo source-install policy, implementation authorization, merge, deployment and service restarts remain unapproved. S00 records applicable exact-scope approvals without reopening settled decisions. - **Closure owner:** repository maintainer/user; no automatic aggregate closure delegated. Assignees/dates/estimates remain unset. Draft requirements below are proposed, not approved acceptance changes. - **State separation:** proposed → exact-scope approved → implemented → native-platform qualified → maintainer closed. Linear Backlog, attached/configured tests, commits and percentages are not evidence of later states. @@ -33,7 +33,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract **Outcome:** Publish/pin the proposed specification and review evidence; resolve applicable decisions and obtain explicit exact-scope approval for selected dependent slices, while recording deferral of unrelated decisions. -**Problem/evidence:** Planning, D01–D04 policies, D05a macOS 13.3+ Apple Silicon and D05b Microsoft-supported Windows 11 x86_64 consumer policies are approved. D05c/D05d remain unresolved. Actual native/consumer qualification is not established by selecting these policies. No current message authorizes implementation, merge, deployment or service restart. +**Problem/evidence:** Planning, D01–D04 policies, D05a/D05b native consumer targets and D05c Windows PowerShell 5.1/supported PowerShell 7 installer compatibility policies are approved. D05d remains unresolved. Actual native/consumer/shell qualification is not established by selecting policies. No current message authorizes implementation, merge, deployment or service restart. **Requirements / criteria:** R01, R02, R03, R04, R05, R06, R07, R08, R09, R10 → A00. @@ -55,7 +55,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [docs/specs/CBG-COPY-01/resource-ceilings-approval.md:1–10](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/docs/specs/CBG-COPY-01/resource-ceilings-approval.md#L1-L10) - [README.md:45–65](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/README.md#L45-L65) -**Dependencies:** none; planning/approval only. **Open decisions:** D05c, D05d. **Resolved:** D01, D02, D03a, D03b, D04, D05a and D05b policies approved; no implementation start authorized. No task depends on a guessed implementation date. +**Dependencies:** none; planning/approval only. **Open decisions:** D05d. **Resolved:** D01, D02, D03a, D03b, D04, D05a, D05b and D05c policies approved; no implementation start authorized. No task depends on a guessed implementation date. ### S01 — Isolate macOS directory enumeration cursors for nested cleanup scans @@ -106,7 +106,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - **A04** — Given real setup and queries, LOAD json, LOAD fts, graph build/reopen/search and k-wiki/MCP smoke succeed through installed binaries with bundled runtimes. Given a missing/incompatible bundled sidecar, fail clearly without replacing a working installation or reporting qualification; include imports, archive hashes, licenses and application-controlled loader policy in evidence. A packaging/licensing incompatibility blocks release; it does not authorize switching to manual prerequisite installation. -**Architectural context:** Graph Store resp-113; Release Gate resp-255, resp-256, resp-257, resp-258 and resp-16/resp-17. D01 bundling and D05b Windows 11 x86_64 consumer policies are approved. D05c installer shell, D05d source-install policy, implementation authorization and applicable reconciliation remain pending; native desktop qualification is not supplied by this decision. +**Architectural context:** Graph Store resp-113; Release Gate resp-255, resp-256, resp-257, resp-258 and resp-16/resp-17. D01 bundling and D05b Windows 11 x86_64 consumer policies are approved. D05c Windows PowerShell 5.1/supported PowerShell 7 installer policy is also approved. D05d source-install policy, implementation authorization and applicable reconciliation remain pending; actual desktop/shell qualification is not supplied by the decisions. **Planned verification:** Inspect exact final archive PE imports and execute clean Microsoft-supported Windows 11 x86_64 desktop installation/JSON/FTS/reopen/CLI/MCP cases, including missing-dependency failure. Record native client edition/release/build and exact artifacts. Retain Server CI as build/test evidence only, not a substitute for desktop consumer execution. @@ -116,7 +116,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [crates/xtask/src/main.rs:596–607](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/crates/xtask/src/main.rs#L596-L607) - [release/install/install.ps1:76–89](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/release/install/install.ps1#L76-L89) -**Dependencies:** S00. **Open decisions:** D05c, D05d and implementation authorization. **Resolved:** D01 runtime bundling and D05b Windows 11 x86_64 client scope. No task depends on a guessed implementation date. +**Dependencies:** S00. **Open decisions:** D05d and implementation authorization. **Resolved:** D01 runtime bundling, D05b Windows 11 x86_64 client scope and D05c installer hosts. Actual native/desktop/shell qualification remains pending. No task depends on a guessed implementation date. ### S03 — Remove undeclared Homebrew-path assumptions from macOS distribution @@ -196,17 +196,17 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract **Acceptance (proposed):** -- **A09** — Given a valid checksum but a --help/--version probe returning nonzero, both DryRun and real install fail and existing destination binaries stay byte-identical. Given successful probes for both binaries, intended installation succeeds; missing/corrupt files still fail before replacement. Execute on the approved Windows PowerShell baseline and any separately claimed PowerShell version; record real exit and destination evidence. +- **A09** — Under built-in Windows PowerShell 5.1 and Microsoft-supported PowerShell 7 on the approved Windows desktop scope, a valid-checksum executable whose --help/--version probe exits nonzero causes both DryRun and real install to fail while destination binaries remain byte-identical. Successful probes for both binaries allow intended installation; missing/corrupt files still fail before replacement. Record exact shell versions, native exits and destination evidence under both shell families. Shell selection does not determine the .cmd/.bat client invocation mechanism. **Architectural context:** Release Gate resp-16, resp-256; existing installer validation behavior restoration, no invented model claim required. -**Planned verification:** Native Windows 11 x86_64 desktop installer tests under the separately approved D05c shell hosts, using checksum-valid controlled executables with success/nonzero exits, DryRun, destination preservation and checksum-failure paths. Server CI alone does not establish desktop installer qualification. +**Planned verification:** Native Windows 11 x86_64 desktop installer tests under built-in Windows PowerShell 5.1 and Microsoft-supported PowerShell 7 releases, using checksum-valid controlled executables with success/nonzero exits, DryRun, destination preservation and checksum-failure paths. Record exact shell versions and run the same checks under both families; Server CI alone does not establish desktop installer qualification. **Source orientation at the reviewed SHA:** - [release/install/install.ps1:27–47](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/release/install/install.ps1#L27-L47) - [release/install/install.ps1:76–89](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/release/install/install.ps1#L76-L89) -**Dependencies:** S00. **Open decisions:** D05c and implementation authorization. **Resolved:** D05b Windows 11 x86_64 consumer scope. No task depends on a guessed implementation date. +**Dependencies:** S00. **Open decisions:** implementation authorization. **Resolved:** D05b Windows 11 x86_64 consumer scope and D05c Windows PowerShell 5.1 plus supported PowerShell 7 installer hosts. Actual qualification remains pending. No task depends on a guessed implementation date. ### S06 — Restore watch help documentation of the parallel default @@ -328,7 +328,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - Preserve serial discovered inventories, bounded Windows sharding, captured CLI hashes, ignored-case accounting and fail-closed artifact gates. - Run native Mac ARM64 and Windows x64 checks on the selected corrected revision; bind head/synthetic merge, binary hashes, archive hashes and environment. - Execute real installation/upgrade/failure paths and installed CLI/MCP/JSON/FTS/reopen under approved clean-consumer and prerequisite policies. Reconcile stale four-target release documentation with the two-target scope; this qualification does not duplicate or close the broader DC-S5 cleanup/rollout programme. -- Follow approved D05a macOS 13.3+ Apple Silicon minimum/current-release qualification and D05b Microsoft-supported Windows 11 x86_64 client scope. Require actual final installed archive desktop execution; Server CI is build evidence, not Windows consumer qualification. Resolve D05c PowerShell and D05d source-install recipe separately; record exact tested versions without restoring removed platforms or workload ceilings. +- Follow approved D05a macOS 13.3+ Apple Silicon minimum/current-release qualification and D05b Microsoft-supported Windows 11 x86_64 client scope. Require actual final installed archive desktop execution; Server CI is build evidence, not Windows consumer qualification. Follow D05c Windows PowerShell 5.1 plus supported PowerShell 7 installer compatibility and execute tests under both; this does not select the .cmd/.bat invocation mechanism. Resolve D05d source-install recipe separately; record exact tested versions without restoring removed platforms or workload ceilings. **Acceptance (proposed):** @@ -366,7 +366,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract | A03–A04 | R02 / S02 | Final PE imports + installed clean Windows JSON/FTS/CLI/MCP and failure cases | Current asset imports inspected; no clean Windows missing-DLL execution. D01 bundling policy approved; D05/implementation and actual native qualification pending. | | A05–A06 | R03 / S03 | Final release Mach-O/rpaths + clean approved ARM64 install/reopen/failure | Fresh debug CLI imports inspected only; no final release/clean consumer run. D02 bundling and D05a macOS 13.3+ target policies approved; implementation and actual minimum/current native qualification pending. | | A07–A08 | R04 / S04 | Process-level native Windows env/PATH/override cases and Mac regression | Fresh CLI portable-logic reproduction points user scope to dot with HOME absent. Not Windows execution. D03a/D03b policies approved; implementation and native qualification pending. | -| A09 | R05 / S05 | Native PowerShell valid-checksum/nonzero executable preflight/destination preservation | Source semantics only; pwsh unavailable locally. D05 pending. | +| A09 | R05 / S05 | Native PowerShell valid-checksum/nonzero executable preflight/destination preservation | Source semantics only; no local PowerShell execution. D05b Windows 11 and D05c Windows PowerShell 5.1/supported PowerShell 7 policies approved; implementation/real desktop-shell evidence pending. | | A10 | R06 / S06 | Exact watch-help and adjacent behavior tests on both native targets | Fresh Mac failure; hosted Mac+Win failure. Fixed run pending. | | A11 | R07 / S07 | Production-rendered path fixture + native Windows/Mac metadata/COPY tests | Mac passes; Windows unit shard1 fails raw path fixture. No production loading defect inferred. | | A12 | R08 / S08 | Windows owned contention/release/timeout/noncontention cases + actual epoch publication case | Windows integration shard2 failed OS33; product classifier already handles raw fs2 errors. Lock duration not established. | @@ -442,10 +442,12 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio - User decision: **“A”**, answering the preceding D05b A/B question (Windows 11 only versus Windows 10 and11). See [decision/approval record](decisions/d05b-windows-consumer-baseline.md). - **Status: consumer target/qualification policy approved only.** No desktop execution, implementation start or release approval is claimed. D05c shell hosts and D05d source-install recipe remain separate. -#### D05c — PowerShell baseline (open) +#### D05c — PowerShell installer hosts (approved) -- Choose the Windows PowerShell/PowerShell hosts claimed for installer and client-invocation qualification; verify their native exit/argument behavior. -- **Status: unanswered/proposed.** D03b shim support does not choose PowerShell versions. +- **Decision: A — built-in Windows PowerShell 5.1 plus Microsoft-supported PowerShell 7 releases.** Users need not install another shell to run the installer; require actual installer tests under both shell families on the approved Windows desktop scope. +- Preserve consistent checksum, native exit-code, argument and destination-preservation behavior across claimed hosts; record exact versions tested. A launched native command returning nonzero must not pass preflight under either host's defaults. +- User decision: **“A”**, answering the preceding D05c A/B question (Windows PowerShell 5.1 plus supported PowerShell 7 versus PowerShell 7 only). See [decision/approval record](decisions/d05c-powershell-installer-hosts.md). +- **Status: installer compatibility policy approved only.** D03b .cmd/.bat client support remains separately approved but this choice does not select its invocation mechanism or require PowerShell as that adapter. No implementation start or passing shell qualification is claimed. #### D05d — Cargo source-install recipe (open) @@ -462,4 +464,4 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio ### Planning authorization record -Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. Later separate explicit answers **“A”** selected [D01 Windows runtime bundling](decisions/d01-windows-runtime-bundling.md), [D02 macOS OpenSSL dylib bundling](decisions/d02-macos-openssl-bundling.md), and [D03a Windows native-profile directory precedence](decisions/d03a-windows-user-directory.md). The later D03b answer was explicitly corrected to **“no i meant B”**, selecting [native .exe plus .cmd/.bat client shims](decisions/d03b-windows-client-command-invocation.md) through a dedicated safe Windows adapter. The subsequent **“A”** selects [D04 truthful retained Windows Exclusive mode](decisions/d04-windows-direct-exclusive-mode.md). The subsequent **“A”** selects [D05a macOS 13.3+ Apple Silicon with minimum/current qualification](decisions/d05a-macos-supported-minimum.md). The subsequent **“A”** selects [D05b Microsoft-supported Windows 11 x86_64 desktop consumer scope](decisions/d05b-windows-consumer-baseline.md). These policy decisions do not approve implementation of the whole spec; D05c/D05d remain open. No product constants or implementation source changed by this planning/decision work. +Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. Later separate explicit answers **“A”** selected [D01 Windows runtime bundling](decisions/d01-windows-runtime-bundling.md), [D02 macOS OpenSSL dylib bundling](decisions/d02-macos-openssl-bundling.md), and [D03a Windows native-profile directory precedence](decisions/d03a-windows-user-directory.md). The later D03b answer was explicitly corrected to **“no i meant B”**, selecting [native .exe plus .cmd/.bat client shims](decisions/d03b-windows-client-command-invocation.md) through a dedicated safe Windows adapter. The subsequent **“A”** selects [D04 truthful retained Windows Exclusive mode](decisions/d04-windows-direct-exclusive-mode.md). The subsequent **“A”** selects [D05a macOS 13.3+ Apple Silicon with minimum/current qualification](decisions/d05a-macos-supported-minimum.md). The subsequent **“A”** selects [D05b Microsoft-supported Windows 11 x86_64 desktop consumer scope](decisions/d05b-windows-consumer-baseline.md). The subsequent **“A”** selects [D05c Windows PowerShell 5.1 plus supported PowerShell 7 installer hosts](decisions/d05c-powershell-installer-hosts.md). These policy decisions do not approve implementation of the whole spec; D05d remains open. No product constants or implementation source changed by this planning/decision work. From 1a9db7b558b60248888408daa6268a3b45f2f0df Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Tue, 27 Oct 2026 09:36:42 +0930 Subject: [PATCH 11/17] docs(spec): record approved Windows Cargo default extensions --- .../d05d-windows-cargo-default-extensions.md | 23 +++++++++++ docs/specs/CBG-PLAT-01/delivery.md | 2 +- docs/specs/CBG-PLAT-01/spec.md | 40 +++++++++++-------- 3 files changed, 47 insertions(+), 18 deletions(-) create mode 100644 docs/specs/CBG-PLAT-01/decisions/d05d-windows-cargo-default-extensions.md diff --git a/docs/specs/CBG-PLAT-01/decisions/d05d-windows-cargo-default-extensions.md b/docs/specs/CBG-PLAT-01/decisions/d05d-windows-cargo-default-extensions.md new file mode 100644 index 00000000..39a55d5f --- /dev/null +++ b/docs/specs/CBG-PLAT-01/decisions/d05d-windows-cargo-default-extensions.md @@ -0,0 +1,23 @@ +# D05d — Windows Cargo default extension-bundling decision + +## Approved scope and proposal + +- Work: `CBG-PLAT-01/D05d`; source-install part of S02/COD-53 and qualification S10/COD-61. +- Canonical proposal: `docs/specs/CBG-PLAT-01/spec.md`, revision0.9 at full Git commit `d9541d4ef2302d19f36ee4fe222eaf55a88e583a`, **Windows Cargo source-install/default extension-byte policy only**. +- Immutable proposal: https://github.com/rabii-chaarani/codebaseGraph/blob/d9541d4ef2302d19f36ee4fe222eaf55a88e583a/docs/specs/CBG-PLAT-01/spec.md#d05d--cargo-source-install-recipe-open +- Decision reference: this conversation, immediately after D05d offered A (bundle Windows extensions by default for plain Cargo install) versus B (keep the bundled-windows-extensions feature opt-in). The user answered **“A”**. +- Status: **source-install policy approved**. Revision0.10 records the choice. This is not approval of the full revised specification, all source-install implementation details, or implementation start. + +## Selected option A + +Plain Windows `cargo install codebase-graph` includes the required JSON/FTS extension bytes by default, without a separate feature flag or runtime extension download for normal operation. The stated tradeoff is a larger binary and consistent default extension availability. + +Cargo still compiles from source. The source-install guide and verification must state the required compiler/native build tools, native libraries and runtime DLL prerequisites. Default extension bytes do not satisfy their imported DLLs automatically, make source installs self-contained, or promise byte/provenance equivalence with a prebuilt release. Recommend prebuilt archives for users without a native build environment; preserve D01's stronger bundled-runtime prebuilt policy rather than weakening it. + +During authorized implementation, choose the smallest compatible additive Cargo feature/target-conditional mechanism and test the real default source-install command on Windows 11 x86_64 with documented prerequisites. Use an isolated empty extension cache and disabled runtime extension downloads to establish that normal graph/JSON/FTS/reopen/search behavior uses bundled bytes. Record exact source/package/features/toolchain and prerequisite identities and clear missing-prerequisite failure evidence. No passing execution is claimed by this decision. + +## Remaining limits + +All listed D01–D05 policy choices are now selected, including corrected D03b **B**. This does not authorize implementation, an ABI/dependency upgrade, implicit Cargo publication, a new macOS source-build contract, merge, deployment, service restart or aggregate closure. Explicit implementation scope/approval, applicable architectural reconciliation, actual native/consumer/shell/source-install evidence and S09 inclusion/deferral are still required. + +COD-51, COD-53 and COD-61 remain Backlog. Preserve exact historical decisions and implementation gates; do not reopen settled policy choices or claim all gates complete from this last policy answer alone. diff --git a/docs/specs/CBG-PLAT-01/delivery.md b/docs/specs/CBG-PLAT-01/delivery.md index 7179ca7b..0046563e 100644 --- a/docs/specs/CBG-PLAT-01/delivery.md +++ b/docs/specs/CBG-PLAT-01/delivery.md @@ -4,7 +4,7 @@ - Milestone: `CBG-PLAT-01 — PR #153 platform maintenance`, ID `ff37f4fc-4072-439a-8691-9c15dc739ddd`. - Proposed canonical specification: [rev0.1 at full commit 33360340379f878e93324e0829a1bb6f33eafc9d](https://github.com/rabii-chaarani/codebaseGraph/blob/33360340379f878e93324e0829a1bb6f33eafc9d/docs/specs/CBG-PLAT-01/spec.md). No approved specification SHA or implementation sign-off is recorded. - Draft docs-only publication: [PR155](https://github.com/rabii-chaarani/codebaseGraph/pull/155), stacked on PR153. No product source/constants changed. -- User initially authorized spec/backlog creation, then separately selected **D01 option A: bundled Windows prebuilt runtimes** ([record](decisions/d01-windows-runtime-bundling.md)) and **D02 option A: bundled macOS prebuilt OpenSSL dylibs with relative runtime paths** ([record](decisions/d02-macos-openssl-bundling.md)); no Homebrew prerequisite. The user also selected **D03a option A: explicit path → client override → native Windows profile**, ignoring HOME for the default and failing clearly rather than using CWD ([record](decisions/d03a-windows-user-directory.md)). No implementation start is authorized. The user corrected D03b to **option B: native .exe plus .cmd/.bat client shims through a dedicated safe Windows invocation adapter**, superseding the preceding A ([record](decisions/d03b-windows-client-command-invocation.md)). The user also selected **D04 option A: retain/report the Windows Direct-read Exclusive lock**, without an unlock/relock gap or new concurrency guarantee ([record](decisions/d04-windows-direct-exclusive-mode.md)). The user also selected **D05a option A: target macOS 13.3+ on Apple Silicon, with minimum/current-release execution before claiming support** ([record](decisions/d05a-macos-supported-minimum.md)). The user also selected **D05b option A: Microsoft-supported Windows 11 x86_64 client releases with real desktop qualification, not Server CI alone** ([record](decisions/d05b-windows-consumer-baseline.md)). The user also selected **D05c option A: built-in Windows PowerShell 5.1 plus Microsoft-supported PowerShell 7 releases, tested under both installer hosts** ([record](decisions/d05c-powershell-installer-hosts.md)); this does not choose .cmd/.bat invocation mechanics. D05d Cargo source-install policy remains open; no target/shell choice establishes passing qualification. All issues remain Backlog with no dates, estimates or assignees invented. +- User initially authorized spec/backlog creation, then separately selected **D01 option A: bundled Windows prebuilt runtimes** ([record](decisions/d01-windows-runtime-bundling.md)) and **D02 option A: bundled macOS prebuilt OpenSSL dylibs with relative runtime paths** ([record](decisions/d02-macos-openssl-bundling.md)); no Homebrew prerequisite. The user also selected **D03a option A: explicit path → client override → native Windows profile**, ignoring HOME for the default and failing clearly rather than using CWD ([record](decisions/d03a-windows-user-directory.md)). No implementation start is authorized. The user corrected D03b to **option B: native .exe plus .cmd/.bat client shims through a dedicated safe Windows invocation adapter**, superseding the preceding A ([record](decisions/d03b-windows-client-command-invocation.md)). The user also selected **D04 option A: retain/report the Windows Direct-read Exclusive lock**, without an unlock/relock gap or new concurrency guarantee ([record](decisions/d04-windows-direct-exclusive-mode.md)). The user also selected **D05a option A: target macOS 13.3+ on Apple Silicon, with minimum/current-release execution before claiming support** ([record](decisions/d05a-macos-supported-minimum.md)). The user also selected **D05b option A: Microsoft-supported Windows 11 x86_64 client releases with real desktop qualification, not Server CI alone** ([record](decisions/d05b-windows-consumer-baseline.md)). The user also selected **D05c option A: built-in Windows PowerShell 5.1 plus Microsoft-supported PowerShell 7 releases, tested under both installer hosts** ([record](decisions/d05c-powershell-installer-hosts.md)); this does not choose .cmd/.bat invocation mechanics. The user also selected **D05d option A: plain Windows Cargo installs include required JSON/FTS extension bytes by default, with native build/runtime prerequisites documented and verified separately** ([record](decisions/d05d-windows-cargo-default-extensions.md)). All listed policy choices are resolved; implementation scope/approval, actual qualification and S09 inclusion/deferral remain outstanding. All issues remain Backlog with no dates, estimates or assignees invented. | Work item | Linear | Outcome | Depends on | |---|---|---|---| diff --git a/docs/specs/CBG-PLAT-01/spec.md b/docs/specs/CBG-PLAT-01/spec.md index 51f4925f..3e3bc035 100644 --- a/docs/specs/CBG-PLAT-01/spec.md +++ b/docs/specs/CBG-PLAT-01/spec.md @@ -2,11 +2,11 @@ ## 1. Identity, status and authority -- **Revision:** 0.9, proposed implementation scope with **D01–D04 and D05a–D05c policies approved** (including D03a/D03b). **Work ID:** `CBG-PLAT-01`. +- **Revision:** 0.10, proposed implementation scope with **all D01–D05 policies approved** (including D03a/D03b and D05a–D05d). **Work ID:** `CBG-PLAT-01`. - **Canonical Git path:** `docs/specs/CBG-PLAT-01/spec.md`. Supporting review evidence: [review-evidence.md](review-evidence.md) and [evidence/](evidence/). - **Delivery:** CodebaseGraph Linear workspace (`https://linear.app/codebasegraph`), existing **Maintenance** project `P-COD-2` (`https://linear.app/codebasegraph/project/maintenance-33932479ebd0`), team `COD`. This user-selected destination supersedes older project-routing advice. No new project is created. - **Baseline:** [PR #153](https://github.com/rabii-chaarani/codebaseGraph/pull/153), reviewed HEAD `862a8f88d485d5bd257ebd9456c194156fd4ee94`, version3.0.4. This evidence is not the prior checkout6aa5ba8 review. Revalidate changed source before implementation. -- **Approval:** the initial user request authorized planning/specification publication and issue creation. The user later selected **D01 option A: bundle required Windows prebuilt runtime libraries**, with licenses, checksums and controlled DLL loading, and **D02 option A: bundle OpenSSL dylibs for macOS prebuilt releases**, with relative runtime paths, licenses and checksums; no Homebrew prerequisite. See [D01](decisions/d01-windows-runtime-bundling.md) and [D02](decisions/d02-macos-openssl-bundling.md). The user also selected **D03a option A: explicit config path → client-specific override → native Windows user-profile directory**, ignoring HOME for the Windows default and failing clearly rather than falling back to CWD; see [D03a](decisions/d03a-windows-user-directory.md). The user then selected **D03b option B: native .exe clients plus .cmd/.bat shims through a dedicated Windows invocation adapter**, with tested argument handling, no generic shell-command evaluation and clear rejection of unsupported/unsafe inputs; see [D03b](decisions/d03b-windows-client-command-invocation.md). The explicit correction “no i meant B” supersedes the preceding A. The user also selected **D04 option A: retain and accurately report the Windows Direct-read Exclusive lock**, without a new unlock/relock transition or concurrent-reader guarantee; see [D04](decisions/d04-windows-direct-exclusive-mode.md). The user also selected **D05a option A: target macOS 13.3+ on Apple Silicon**, requiring execution on the declared minimum and a current macOS release before claiming support; see [D05a](decisions/d05a-macos-supported-minimum.md). The user also selected **D05b option A: Microsoft-supported Windows 11 x86_64 client releases**, requiring actual desktop installation/runtime qualification rather than Windows Server CI alone; see [D05b](decisions/d05b-windows-consumer-baseline.md). The user also selected **D05c option A: built-in Windows PowerShell 5.1 plus Microsoft-supported PowerShell 7 releases**, with installer tests under both; see [D05c](decisions/d05c-powershell-installer-hosts.md). This does not choose the .cmd/.bat invocation mechanism. These approve the selected policies only, not the entire specification or implementation start. D05d Cargo source-install policy, implementation authorization, merge, deployment and service restarts remain unapproved. S00 records applicable exact-scope approvals without reopening settled decisions. +- **Approval:** the initial user request authorized planning/specification publication and issue creation. The user later selected **D01 option A: bundle required Windows prebuilt runtime libraries**, with licenses, checksums and controlled DLL loading, and **D02 option A: bundle OpenSSL dylibs for macOS prebuilt releases**, with relative runtime paths, licenses and checksums; no Homebrew prerequisite. See [D01](decisions/d01-windows-runtime-bundling.md) and [D02](decisions/d02-macos-openssl-bundling.md). The user also selected **D03a option A: explicit config path → client-specific override → native Windows user-profile directory**, ignoring HOME for the Windows default and failing clearly rather than falling back to CWD; see [D03a](decisions/d03a-windows-user-directory.md). The user then selected **D03b option B: native .exe clients plus .cmd/.bat shims through a dedicated Windows invocation adapter**, with tested argument handling, no generic shell-command evaluation and clear rejection of unsupported/unsafe inputs; see [D03b](decisions/d03b-windows-client-command-invocation.md). The explicit correction “no i meant B” supersedes the preceding A. The user also selected **D04 option A: retain and accurately report the Windows Direct-read Exclusive lock**, without a new unlock/relock transition or concurrent-reader guarantee; see [D04](decisions/d04-windows-direct-exclusive-mode.md). The user also selected **D05a option A: target macOS 13.3+ on Apple Silicon**, requiring execution on the declared minimum and a current macOS release before claiming support; see [D05a](decisions/d05a-macos-supported-minimum.md). The user also selected **D05b option A: Microsoft-supported Windows 11 x86_64 client releases**, requiring actual desktop installation/runtime qualification rather than Windows Server CI alone; see [D05b](decisions/d05b-windows-consumer-baseline.md). The user also selected **D05c option A: built-in Windows PowerShell 5.1 plus Microsoft-supported PowerShell 7 releases**, with installer tests under both; see [D05c](decisions/d05c-powershell-installer-hosts.md). This does not choose the .cmd/.bat invocation mechanism. The user also selected **D05d option A: include the required Windows JSON/FTS extension bytes by default in plain Cargo installs**, without an extra feature flag or runtime extension download; source compiler/native-library/DLL prerequisites remain documented and verified separately from the prebuilt archive, as recorded in [D05d](decisions/d05d-windows-cargo-default-extensions.md). All listed policy choices are now settled, but the entire specification, implementation start, release/milestone inclusion of S09, merge, deployment and service restarts are not approved. S00 records applicable exact-scope approvals without reopening settled decisions. - **Closure owner:** repository maintainer/user; no automatic aggregate closure delegated. Assignees/dates/estimates remain unset. Draft requirements below are proposed, not approved acceptance changes. - **State separation:** proposed → exact-scope approved → implemented → native-platform qualified → maintainer closed. Linear Backlog, attached/configured tests, commits and percentages are not evidence of later states. @@ -33,7 +33,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract **Outcome:** Publish/pin the proposed specification and review evidence; resolve applicable decisions and obtain explicit exact-scope approval for selected dependent slices, while recording deferral of unrelated decisions. -**Problem/evidence:** Planning, D01–D04 policies, D05a/D05b native consumer targets and D05c Windows PowerShell 5.1/supported PowerShell 7 installer compatibility policies are approved. D05d remains unresolved. Actual native/consumer/shell qualification is not established by selecting policies. No current message authorizes implementation, merge, deployment or service restart. +**Problem/evidence:** Planning and all D01–D05 policies are approved, including D05d default Windows Cargo JSON/FTS extension bytes. Actual implementation, native/consumer/shell/source-install qualification and aggregate closure are not established by selecting policies. No current message authorizes implementation, merge, deployment or service restart. **Requirements / criteria:** R01, R02, R03, R04, R05, R06, R07, R08, R09, R10 → A00. @@ -55,7 +55,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [docs/specs/CBG-COPY-01/resource-ceilings-approval.md:1–10](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/docs/specs/CBG-COPY-01/resource-ceilings-approval.md#L1-L10) - [README.md:45–65](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/README.md#L45-L65) -**Dependencies:** none; planning/approval only. **Open decisions:** D05d. **Resolved:** D01, D02, D03a, D03b, D04, D05a, D05b and D05c policies approved; no implementation start authorized. No task depends on a guessed implementation date. +**Dependencies:** none; planning/approval only. **Open decisions:** exact implementation scope/authorization and S09 inclusion or deferral for closure. **Resolved:** all D01–D05 policies, including D03a/D03b and D05a–D05d; no implementation start authorized. No task depends on a guessed implementation date. ### S01 — Isolate macOS directory enumeration cursors for nested cleanup scans @@ -89,15 +89,16 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract ### S02 — Define and satisfy Windows archive native-library dependencies -**Outcome:** The installed Windows archive can load required JSON/FTS native components under an explicit approved runtime-dependency contract. +**Outcome:** The Windows prebuilt archive supplies its required native runtimes under D01, and plain Windows Cargo source installs include required JSON/FTS extension bytes by default under D05d, with source-build/runtime prerequisites stated separately. **Problem/evidence:** Exact checked-in Windows JSON/FTS extension PE imports require OpenSSL3 and VC runtime DLLs. Current archive allowlist/installer contains only two EXEs, checksums and installers; static EXE linkage does not satisfy extension DLL imports. No clean-Windows load failure was locally executed. -**Requirements / criteria:** R02 → A03, A04. +**Requirements / criteria:** R02 → A03, A04, A16. - Implement the approved D01 policy for Windows prebuilt releases: bundle compatible redistributable non-system runtime libraries required by the shipped binaries and JSON/FTS extensions, including OpenSSL/VC runtime dependencies as applicable. Users must not install those runtimes separately. Include licenses, checksums and application-controlled DLL loading; do not substitute external prerequisites without a new user decision. - Keep NativeTarget/archive provenance as the single packaging authority; include all intentionally shipped sidecars in inventory and integrity verification. - Keep DLL resolution application-controlled; do not widen global PATH or load arbitrary caller-writable libraries as a fallback. +- Follow approved D05d option A for Windows Cargo source installs: plain `cargo install codebase-graph` includes required JSON/FTS extension bytes without a separate feature flag or runtime extension download. Document and verify source compiler/native-library/runtime DLL prerequisites; this does not make Cargo installs self-contained or identical to the prebuilt archive. Recommend prebuilt archives to users without a native build environment. **Acceptance (proposed):** @@ -106,7 +107,10 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - **A04** — Given real setup and queries, LOAD json, LOAD fts, graph build/reopen/search and k-wiki/MCP smoke succeed through installed binaries with bundled runtimes. Given a missing/incompatible bundled sidecar, fail clearly without replacing a working installation or reporting qualification; include imports, archive hashes, licenses and application-controlled loader policy in evidence. A packaging/licensing incompatibility blocks release; it does not authorize switching to manual prerequisite installation. -**Architectural context:** Graph Store resp-113; Release Gate resp-255, resp-256, resp-257, resp-258 and resp-16/resp-17. D01 bundling and D05b Windows 11 x86_64 consumer policies are approved. D05c Windows PowerShell 5.1/supported PowerShell 7 installer policy is also approved. D05d source-install policy, implementation authorization and applicable reconciliation remain pending; actual desktop/shell qualification is not supplied by the decisions. + +- **A16** — Given a documented Windows 11 x86_64 native source-build environment with declared compiler, native-library and DLL prerequisites, plain `cargo install codebase-graph` without an extension feature flag installs a binary carrying the required JSON/FTS extension bytes. With an isolated empty extension cache and runtime extension downloads disabled, normal graph build/reopen/search and the applicable extension-loading tests succeed using those bundled bytes. Record exact source/package/features/toolchain and prerequisite identities. No same-byte native-archive equivalence or self-contained Cargo runtime distribution is promised; missing source/runtime prerequisites fail clearly. + +**Architectural context:** Graph Store resp-113; Release Gate resp-255, resp-256, resp-257, resp-258 and resp-16/resp-17. D01 prebuilt runtimes and D05b/D05c/D05d consumer/shell/default-source-extension policies are approved. Implementation authorization and applicable reconciliation remain pending. No particular Cargo feature mechanism/dependency-version change or passing desktop/source-install qualification is supplied by the decisions. **Planned verification:** Inspect exact final archive PE imports and execute clean Microsoft-supported Windows 11 x86_64 desktop installation/JSON/FTS/reopen/CLI/MCP cases, including missing-dependency failure. Record native client edition/release/build and exact artifacts. Retain Server CI as build/test evidence only, not a substitute for desktop consumer execution. @@ -116,7 +120,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [crates/xtask/src/main.rs:596–607](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/crates/xtask/src/main.rs#L596-L607) - [release/install/install.ps1:76–89](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/release/install/install.ps1#L76-L89) -**Dependencies:** S00. **Open decisions:** D05d and implementation authorization. **Resolved:** D01 runtime bundling, D05b Windows 11 x86_64 client scope and D05c installer hosts. Actual native/desktop/shell qualification remains pending. No task depends on a guessed implementation date. +**Dependencies:** S00. **Open decisions:** implementation scope/authorization. **Resolved:** D01 prebuilt runtimes and D05b/D05c/D05d Windows consumer/shell/default Cargo extension policies. Actual native/desktop/shell/source-install qualification remains pending. No task depends on a guessed implementation date. ### S03 — Remove undeclared Homebrew-path assumptions from macOS distribution @@ -137,7 +141,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - **A06** — Final release archive otool dependency/install-name/rpath evidence confirms relative resolution of the bundled OpenSSL dylibs; licenses/checksums cover them. Given a missing, corrupt or incompatible bundled library, fail clearly without reporting readiness or qualification. A redistribution/compatibility blocker must be reported, not converted silently into a Homebrew prerequisite. -**Architectural context:** Release Gate resp-255–resp-258, resp-16/resp-17; Graph Store resp-113. D02 dylib-bundling and D05a macOS 13.3+ Apple Silicon target policies are approved; implementation authorization, actual minimum/current release qualification and applicable architectural reconciliation remain pending. D05d source-install recipe remains separate. Do not change process containment. +**Architectural context:** Release Gate resp-255–resp-258, resp-16/resp-17; Graph Store resp-113. D02 dylib-bundling and D05a macOS 13.3+ Apple Silicon target policies are approved; implementation authorization, actual minimum/current release qualification and applicable architectural reconciliation remain pending. Approved D05d Windows source-install policy remains separate and does not impose a new macOS Cargo recipe. Do not change process containment. **Planned verification:** Build the actual ARM64 release archive, inspect Mach-O imports/install names/rpaths and minimum-OS compatibility of every shipped native component, then execute it on clean Apple Silicon macOS 13.3 and a current macOS release without Homebrew/OpenSSL. Include missing/corrupt bundled-library negative cases and record real OS/build results, not only deployment-target metadata. @@ -147,7 +151,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [crates/xtask/src/main.rs:596–607](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/crates/xtask/src/main.rs#L596-L607) - [README.md:45–65](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/README.md#L45-L65) -**Dependencies:** S00. **Open decisions:** implementation authorization; D05d only for a separately included Cargo source-install scope. **Resolved:** D02 macOS prebuilt OpenSSL dylib bundling and D05a macOS 13.3+ Apple Silicon target. Native minimum/current execution remains pending. No task depends on a guessed implementation date. +**Dependencies:** S00. **Open decisions:** implementation scope/authorization. **Resolved:** D02 macOS prebuilt OpenSSL dylib bundling and D05a macOS 13.3+ Apple Silicon target; D05d Windows source policy is separate. Native minimum/current execution remains pending. No task depends on a guessed implementation date. ### S04 — Use explicit Windows user-directory and executable discovery policy @@ -328,7 +332,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - Preserve serial discovered inventories, bounded Windows sharding, captured CLI hashes, ignored-case accounting and fail-closed artifact gates. - Run native Mac ARM64 and Windows x64 checks on the selected corrected revision; bind head/synthetic merge, binary hashes, archive hashes and environment. - Execute real installation/upgrade/failure paths and installed CLI/MCP/JSON/FTS/reopen under approved clean-consumer and prerequisite policies. Reconcile stale four-target release documentation with the two-target scope; this qualification does not duplicate or close the broader DC-S5 cleanup/rollout programme. -- Follow approved D05a macOS 13.3+ Apple Silicon minimum/current-release qualification and D05b Microsoft-supported Windows 11 x86_64 client scope. Require actual final installed archive desktop execution; Server CI is build evidence, not Windows consumer qualification. Follow D05c Windows PowerShell 5.1 plus supported PowerShell 7 installer compatibility and execute tests under both; this does not select the .cmd/.bat invocation mechanism. Resolve D05d source-install recipe separately; record exact tested versions without restoring removed platforms or workload ceilings. +- Follow approved D05a macOS 13.3+ Apple Silicon minimum/current-release qualification and D05b Microsoft-supported Windows 11 x86_64 client scope. Require actual final installed archive desktop execution; Server CI is build evidence, not Windows consumer qualification. Follow D05c Windows PowerShell 5.1 plus supported PowerShell 7 installer compatibility and execute tests under both; this does not select the .cmd/.bat invocation mechanism. Follow approved D05d default JSON/FTS extension bytes for plain Windows Cargo installs; execute the documented source-build recipe separately from prebuilt archive qualification and record native compiler/library/DLL prerequisites. Do not infer self-contained source installs, restore removed platforms or workload ceilings. **Acceptance (proposed):** @@ -346,7 +350,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [crates/xtask/src/native_tests.rs:148–187](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/crates/xtask/src/native_tests.rs#L148-L187) - [crates/xtask/src/native_tests/shards.rs:28–64](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/crates/xtask/src/native_tests/shards.rs#L28-L64) -**Dependencies:** S01, S02, S03, S04, S05, S06, S07, S08. **Open decisions:** D05. No task depends on a guessed implementation date. +**Dependencies:** S01, S02, S03, S04, S05, S06, S07, S08. **Open decisions:** implementation scope/authorization and explicit S09 inclusion/deferral before aggregate closure; all D01–D05 policies are settled. No task depends on a guessed implementation date. ## 5. Failure/recovery and compatibility invariants @@ -363,7 +367,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract |---|---|---|---| | A00 | S00 / R01–R10 | Audit immutable spec/review links and explicit human approval | This proposal is not approved; planning only. | | A01–A02 | R01 / S01 | Exact rooted helper multi-batch nested test; production receipt-selection case; cancellation/namespace tests | Mac exact-source helper baseline200/outer85/inner200 fails. No complete collector-starvation/data-loss repro. Fixed native runs required. | -| A03–A04 | R02 / S02 | Final PE imports + installed clean Windows JSON/FTS/CLI/MCP and failure cases | Current asset imports inspected; no clean Windows missing-DLL execution. D01 bundling policy approved; D05/implementation and actual native qualification pending. | +| A03–A04, A16 | R02 / S02 | Final PE imports/installed clean Windows archive cases; separate plain Cargo source-build/default-byte/empty-cache offline-extension test with documented prerequisites | Current imports inspected; no clean Windows or plain Cargo source-install qualification executed. D01/D05b–D05d policies approved; implementation and actual evidence pending. | | A05–A06 | R03 / S03 | Final release Mach-O/rpaths + clean approved ARM64 install/reopen/failure | Fresh debug CLI imports inspected only; no final release/clean consumer run. D02 bundling and D05a macOS 13.3+ target policies approved; implementation and actual minimum/current native qualification pending. | | A07–A08 | R04 / S04 | Process-level native Windows env/PATH/override cases and Mac regression | Fresh CLI portable-logic reproduction points user scope to dot with HOME absent. Not Windows execution. D03a/D03b policies approved; implementation and native qualification pending. | | A09 | R05 / S05 | Native PowerShell valid-checksum/nonzero executable preflight/destination preservation | Source semantics only; no local PowerShell execution. D05b Windows 11 and D05c Windows PowerShell 5.1/supported PowerShell 7 policies approved; implementation/real desktop-shell evidence pending. | @@ -449,10 +453,12 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio - User decision: **“A”**, answering the preceding D05c A/B question (Windows PowerShell 5.1 plus supported PowerShell 7 versus PowerShell 7 only). See [decision/approval record](decisions/d05c-powershell-installer-hosts.md). - **Status: installer compatibility policy approved only.** D03b .cmd/.bat client support remains separately approved but this choice does not select its invocation mechanism or require PowerShell as that adapter. No implementation start or passing shell qualification is claimed. -#### D05d — Cargo source-install recipe (open) +#### D05d — Windows Cargo source-install recipe (approved) -- Select/document source-build prerequisites and Windows bundled-extension feature behavior separately from approved prebuilt-runtime bundling. -- **Status: unanswered/proposed.** Do not claim plain Cargo install reproduces the qualified native archive recipe until its policy and actual checks agree. +- **Decision: A — bundle required Windows JSON/FTS extension bytes by default.** Plain `cargo install codebase-graph` must include the extensions needed for normal operation without a separate feature flag or runtime extension download. +- Cargo remains a native source build. Document/verify compiler, native-library and runtime DLL prerequisites separately; recommend the prebuilt archive for users who do not want a native build environment. Default extension bytes do not make the Cargo binary self-contained or imply identical distribution/provenance to a prebuilt archive. +- User decision: **“A”**, answering the preceding D05d A/B question (default bundling versus opt-in feature flag). See [decision/approval record](decisions/d05d-windows-cargo-default-extensions.md). +- **Status: source-install policy approved only.** Exact additive Cargo feature/target-conditional mechanism and dependency compatibility remain implementation details to verify. No new macOS source-build contract, ABI upgrade, implicit package publication, implementation start or passing source-install qualification is claimed. ## 8. Handoff, dependencies and closure @@ -464,4 +470,4 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio ### Planning authorization record -Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. Later separate explicit answers **“A”** selected [D01 Windows runtime bundling](decisions/d01-windows-runtime-bundling.md), [D02 macOS OpenSSL dylib bundling](decisions/d02-macos-openssl-bundling.md), and [D03a Windows native-profile directory precedence](decisions/d03a-windows-user-directory.md). The later D03b answer was explicitly corrected to **“no i meant B”**, selecting [native .exe plus .cmd/.bat client shims](decisions/d03b-windows-client-command-invocation.md) through a dedicated safe Windows adapter. The subsequent **“A”** selects [D04 truthful retained Windows Exclusive mode](decisions/d04-windows-direct-exclusive-mode.md). The subsequent **“A”** selects [D05a macOS 13.3+ Apple Silicon with minimum/current qualification](decisions/d05a-macos-supported-minimum.md). The subsequent **“A”** selects [D05b Microsoft-supported Windows 11 x86_64 desktop consumer scope](decisions/d05b-windows-consumer-baseline.md). The subsequent **“A”** selects [D05c Windows PowerShell 5.1 plus supported PowerShell 7 installer hosts](decisions/d05c-powershell-installer-hosts.md). These policy decisions do not approve implementation of the whole spec; D05d remains open. No product constants or implementation source changed by this planning/decision work. +Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. Later separate explicit answers **“A”** selected [D01 Windows runtime bundling](decisions/d01-windows-runtime-bundling.md), [D02 macOS OpenSSL dylib bundling](decisions/d02-macos-openssl-bundling.md), and [D03a Windows native-profile directory precedence](decisions/d03a-windows-user-directory.md). The later D03b answer was explicitly corrected to **“no i meant B”**, selecting [native .exe plus .cmd/.bat client shims](decisions/d03b-windows-client-command-invocation.md) through a dedicated safe Windows adapter. The subsequent **“A”** selects [D04 truthful retained Windows Exclusive mode](decisions/d04-windows-direct-exclusive-mode.md). The subsequent **“A”** selects [D05a macOS 13.3+ Apple Silicon with minimum/current qualification](decisions/d05a-macos-supported-minimum.md). The subsequent **“A”** selects [D05b Microsoft-supported Windows 11 x86_64 desktop consumer scope](decisions/d05b-windows-consumer-baseline.md). The subsequent **“A”** selects [D05c Windows PowerShell 5.1 plus supported PowerShell 7 installer hosts](decisions/d05c-powershell-installer-hosts.md). The subsequent **“A”** selects [D05d plain Windows Cargo default JSON/FTS extension bytes](decisions/d05d-windows-cargo-default-extensions.md), with separate documented source-build/runtime prerequisites. All listed policies are settled; they do not approve implementation of the whole spec, S09 release/milestone inclusion, merge, deployment or service restart. No product constants or implementation source changed by this planning/decision work. From 7650f264fe0cbfa7fa328840722929feac1f32df Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Tue, 27 Oct 2026 09:43:23 +0930 Subject: [PATCH 12/17] docs(spec): record CI-only implementation approval --- .../CBG-PLAT-01/approvals/ci-only-s06-s08.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 docs/specs/CBG-PLAT-01/approvals/ci-only-s06-s08.md diff --git a/docs/specs/CBG-PLAT-01/approvals/ci-only-s06-s08.md b/docs/specs/CBG-PLAT-01/approvals/ci-only-s06-s08.md new file mode 100644 index 00000000..5496f12c --- /dev/null +++ b/docs/specs/CBG-PLAT-01/approvals/ci-only-s06-s08.md @@ -0,0 +1,15 @@ +# CBG-PLAT-01 — CI-only S06–S08 implementation approval + +- Approved canonical specification: [spec.md at revision0.10](https://github.com/rabii-chaarani/codebaseGraph/blob/1a9db7b558b60248888408daa6268a3b45f2f0df/docs/specs/CBG-PLAT-01/spec.md), full Git commit `1a9db7b558b60248888408daa6268a3b45f2f0df`. +- Canonical path: `docs/specs/CBG-PLAT-01/spec.md`; SHA-256 `13aa21bb99084865557b8f9db2d39d51298e27e28ce9f60c2c6de4b7ae540030`. +- **Exact approved scope:** S06/COD-57/R06/A10 (watch help states existing parallel default), S07/COD-58/R07/A11 (COPY metadata fixture uses production-rendered Windows paths with unchanged four-byte oracle), S08/COD-59/R08/A12 (reference-epoch test observer recognizes fs2 Windows contention, retaining the five-second deadline and epoch/birth assertions). Verification and normal Git/PR delivery for these fixes are included. +- User decision: **“I approve CI-only implementation scope”**, immediately answering the assistant's proposal to implement COD-57/COD-58/COD-59 first under the linked revision0.10 and rerun affected checks. +- Source baseline rechecked before implementation: PR153 remains `862a8f88d485d5bd257ebd9456c194156fd4ee94` (3.0.4). Docs decisions live in PR155; do not substitute old review code or unrelated pending Scryer/resource-ceiling work. +- **Excluded:** S01–S05, S09/S10 implementation, runtime packaging/dependencies, discovery/shim behavior, lock-mode changes, directory-cursor repair, broad qualification closure, unrelated specs, merge, deployment and live-service restarts. Existing D01–D05 policy decisions remain selected, not newly implemented by this approval. +- Scryer ledger: `chg-pzt87f`, signed off for this exact fixes/docs/tests scope. No new responsibilities/topology are needed: these restore existing help/test contracts. The configured Scryer project is repository-bound rather than this PR worktree; no current-PR model implementation/reconciliation result is claimed. + +## Verification and closure limits + +Keep the source/library mutation behavior unchanged. Do not change production COPY SQL/parser/lock policy to accommodate invalid fixture inputs, delete meaningful assertions, increase the five-second observer deadline, bypass required CI, or mark Windows/platform qualification passed without execution. If real contention still exceeds the existing deadline, investigate and report it separately. + +Record actual source/binary hashes, environment, commands and results; distinguish local macOS checks from hosted Windows/native cohorts and from previously failed CI. Move only these implementation records to active/review states as evidence warrants. COD-51 remains the gate for all unapproved implementation slices; it is not globally completed by this subset approval. No aggregate milestone closure, merge/deployment or service restart is authorized. From de416a4d0b01731f7c9f9387bc45cd6606a87400 Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Tue, 27 Oct 2026 09:54:43 +0930 Subject: [PATCH 13/17] docs(test): record CI-only fix execution and native limits --- .../ci-only-evidence/ci-only-review.md | 28 ++++ .../execution/ci-only-evidence/cli-build.log | 2 + .../ci-only-evidence/clippy-final.log | 5 + .../epoch-publication-integration-final.log | 7 + .../ci-only-evidence/epoch-worker.md | 131 ++++++++++++++++++ .../ci-only-evidence/focused-unit-tests.log | 49 +++++++ .../execution/ci-only-evidence/format.log | 0 .../observer-fixture-tests.log | 10 ++ .../ci-only-evidence/provenance.json | 29 ++++ .../CBG-PLAT-01/execution/ci-only-s06-s08.md | 46 ++++++ 10 files changed, 307 insertions(+) create mode 100644 docs/specs/CBG-PLAT-01/execution/ci-only-evidence/ci-only-review.md create mode 100644 docs/specs/CBG-PLAT-01/execution/ci-only-evidence/cli-build.log create mode 100644 docs/specs/CBG-PLAT-01/execution/ci-only-evidence/clippy-final.log create mode 100644 docs/specs/CBG-PLAT-01/execution/ci-only-evidence/epoch-publication-integration-final.log create mode 100644 docs/specs/CBG-PLAT-01/execution/ci-only-evidence/epoch-worker.md create mode 100644 docs/specs/CBG-PLAT-01/execution/ci-only-evidence/focused-unit-tests.log create mode 100644 docs/specs/CBG-PLAT-01/execution/ci-only-evidence/format.log create mode 100644 docs/specs/CBG-PLAT-01/execution/ci-only-evidence/observer-fixture-tests.log create mode 100644 docs/specs/CBG-PLAT-01/execution/ci-only-evidence/provenance.json create mode 100644 docs/specs/CBG-PLAT-01/execution/ci-only-s06-s08.md diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/ci-only-review.md b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/ci-only-review.md new file mode 100644 index 00000000..d037e802 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/ci-only-review.md @@ -0,0 +1,28 @@ +# CI-only review — COD-57/COD-58/COD-59 + +## Result + +No confirmed correctness, contract, or portability findings in the stable five-file S06–S08 diff. + +Baseline: `862a8f88d485d5bd257ebd9456c194156fd4ee94`. +Approved scope supplied by parent: spec0.10 S06–S08 at `1a9db7b558b60248888408daa6268a3b45f2f0df`. +Reviewed parent-produced `working-diff.patch`, SHA-256 `5f1a99d7168d2934bf683c80f45c6e57ebdddbdfa73c4d7987ae360135fe66cf`, against current source. No repository edits, Git, remote/CI calls, Cargo, or build/test execution by this reviewer. + +## Checks + +- **S06:** Only watch help text changes. `WatchOptions::parse` still delegates to `MaterializeOptions`, whose unchanged default is `parallel: true`; `--single-thread` still opts out. The help states existing behavior, not a new default. +- **S07:** The trace test creates an actual `rows with spaces.json` file containing exactly `b"[{}]"`. It renders the path with the same `files::copy_path` implementation used by production COPY generation, requires metadata resolution, compares canonical paths, and separately asserts **4 bytes**. This avoids treating Windows slash/prefix spelling as file identity. Outside that test, only crate-internal helper visibility and a `#[cfg(test)]` re-export change. The production renderer body, metadata parser, and COPY execution/mutation paths are unchanged. +- **S08:** Only the fixture observer's contention predicate changes. It accepts existing `WouldBlock` or a **present** raw OS code equal to `fs2::lock_contended_error().raw_os_error()`, not every `Other`/permission error. fs2 0.4.3 uses `ERROR_LOCK_VIOLATION` on Windows and `EWOULDBLOCK` on Unix. The **5-second** deadline, **10-ms** retry interval, error propagation, held shared-lock lifetime, epoch envelope/checksum/version/coverage, creation nonce, publication binding, receipt checks, and epoch-advance assertions remain unchanged. +- The Windows-only regression uses a real exclusive fs2 lock and a separate probe handle, observes contention, checks no result while held, then unlocks and requires the observer's unchanged invalid-epoch check. The scoped thread borrows only shareable fixture/path/JSON/sender values; receivers stay on the caller thread. Result types support the assertions, and these standard-library APIs fit Rust 1.82. No static Windows compile or locking-semantics defect found. The cross-platform missing-lock case exercises immediate error propagation. + +## Limits and assumptions + +Windows compile/runtime execution was not performed by this reviewer; parent owns builds/tests, including any native Windows validation. Approval scope and baseline are the supplied ones, and `working-diff.patch` is treated as the complete parent-generated baseline diff. No production constants changed; the existing 5-second bound and 10-ms interval were preserved. New regression synchronization waits are test-only (100 ms held-result check; 2-second channel waits). + +## Reviewed file hashes + +- `src/adapters/cli/format/help.rs`: `e54503d12a43a5f8696ddc9d72b14dda8083fb862a65f063af57410ce043d9b5` +- `src/db_writer/phase.rs`: `a300d4a31f0117e52288de82b9407a6db45d11973b73cc17ad9f0a4111288c83` +- `src/staging_writer/files.rs`: `b725202bdcf4390666b80fdb1f7a3fde0e8542b13c46b9be655b2dbff63c82c7` +- `src/staging_writer/mod.rs`: `86560ac2d5d9c28178a9149093da63179bb39fdb049413635f94f1152e0a6ebd` +- `tests/support/storage_maintenance/process.rs`: `afe27d7a70da62177242bc477ab391a7926d428e52418665e33ae00da1a72a31` diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/cli-build.log b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/cli-build.log new file mode 100644 index 00000000..d7697f12 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/cli-build.log @@ -0,0 +1,2 @@ + Compiling codebase-graph v3.0.4 (/private/tmp/codebasegraph-pr153-ci-only-source) + Finished `dev` profile [unoptimized + debuginfo] target(s) in 15.86s diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/clippy-final.log b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/clippy-final.log new file mode 100644 index 00000000..69c79c0f --- /dev/null +++ b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/clippy-final.log @@ -0,0 +1,5 @@ + Blocking waiting for file lock on package cache + Blocking waiting for file lock on package cache + Blocking waiting for file lock on build directory + Checking codebase-graph v3.0.4 (/private/tmp/codebasegraph-pr153-ci-only-source) + Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.36s diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/epoch-publication-integration-final.log b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/epoch-publication-integration-final.log new file mode 100644 index 00000000..e6337fbe --- /dev/null +++ b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/epoch-publication-integration-final.log @@ -0,0 +1,7 @@ + Finished `test` profile [unoptimized + debuginfo] target(s) in 0.14s + Running tests/storage_maintenance.rs (/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/storage_maintenance-926da32abefb62ce) + +running 1 test +test isolated_worker_first_creation_and_followup_keep_same_covered_publication_birth ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 10 filtered out; finished in 69.46s diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/epoch-worker.md b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/epoch-worker.md new file mode 100644 index 00000000..0ceffdb8 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/epoch-worker.md @@ -0,0 +1,131 @@ +# CBG-PLAT-01 S08 / COD-59 epoch observer fixture + +## Scope and assumptions + +- Worked only on `tests/support/storage_maintenance/process.rs` in `/tmp/codebasegraph-pr153-ci-only-source`. +- Parent-supplied baseline: `862a8f88d485d5bd257ebd9456c194156fd4ee94`, branch `fix/pr153-ci-maintenance`. +- Parent-supplied approved spec SHA: `1a9db7b558b60248888408daa6268a3b45f2f0df`. +- Did not invoke Git, Cargo/builds, remote services, Linear, model or wiki tools. +- Assumed CI-only approval permits regression tests local to this fixture. Parent explicitly approved no helper extraction. + +## Change + +The existing `CoveredEpochObservation::observe` retry guard now accepts either `ErrorKind::WouldBlock` or a present raw OS error equal to `fs2::lock_contended_error().raw_os_error()`. This exactly follows the classifier in `src/storage/locks.rs::is_lock_contended` without changing product code. + +The existing five-second deadline, ten-millisecond retry delay, terminal error propagation, epoch checksum/covered checks, coordination creation header checks, publication binding and receipt/payload checks, and same-birth/advanced-epoch assertions are unchanged. + +Added two fixture regressions: + +1. `fixture::process::tests::covered_epoch_observer_retries_actual_contention_until_release` (`cfg(windows)`): owns an exclusive lock and checks an independently opened handle returns the real fs2 raw contention error; handshakes with the observer worker, requires no observer result while the lock remains held, releases the owner, then requires the observer reaches the unchanged `actual epoch envelope invalid` check on deliberately invalid fixture-owned epoch bytes. No native graph is fabricated. +2. `fixture::process::tests::covered_epoch_observer_propagates_missing_serial_lock`: requires actual missing-lock open error propagation rather than fabricated success or epoch observation. + +New test-only bounds are two seconds for channel handshake and post-release receipt and 100 milliseconds for the held-lock result receive. These are not fixture/product lock deadlines. There are no sleeps or elapsed-time assertions in the regressions. + +## Validation and recommended narrow commands + +The worker did static source/diff inspection only, and left formatting, Cargo and execution to the parent as instructed. Suggested commands (from project root, use parent's existing target/environment): + +```text +cargo fmt --all -- --check +cargo test --test storage_maintenance fixture::process::tests::covered_epoch_observer_propagates_missing_serial_lock -- --exact +cargo test --test storage_maintenance isolated_worker_first_creation_and_followup_keep_same_covered_publication_birth -- --exact +# Native Windows only: +cargo test --test storage_maintenance fixture::process::tests::covered_epoch_observer_retries_actual_contention_until_release -- --exact +``` + +## Limits + +- Native Windows compilation and execution are pending parent/CI validation. +- The cross-platform missing-lock case checks real observer input/error propagation, but does not force a noncontention failure from inside `try_lock_shared`; injecting that would require helper extraction or OS manipulation beyond this narrow change. The unmatched error branch is unchanged. +- The Windows worker handshake proves real independent-handle contention immediately before calling the uninstrumented observer. It cannot prove the scheduler has entered the internal retry loop before the parent's bounded receive; eliminating that black-box scheduling limit would require instrumentation/helper extraction explicitly declined for this task. + +## Worker diff + +```diff +--- a/tests/support/storage_maintenance/process.rs ++++ b/tests/support/storage_maintenance/process.rs +@@ -734,7 +734,10 @@ + match fs2::FileExt::try_lock_shared(&serial) { + Ok(()) => break, + Err(error) +- if error.kind() == std::io::ErrorKind::WouldBlock ++ if (error.kind() == std::io::ErrorKind::WouldBlock ++ || (error.raw_os_error().is_some() ++ && error.raw_os_error() ++ == fs2::lock_contended_error().raw_os_error())) + && Instant::now() < lock_deadline => + { + thread::sleep(Duration::from_millis(10)) +@@ -851,3 +854,71 @@ + ); + } + } ++ ++#[cfg(test)] ++mod tests { ++ use super::*; ++ ++ #[cfg(windows)] ++ #[test] ++ fn covered_epoch_observer_retries_actual_contention_until_release() { ++ use std::sync::mpsc::{self, RecvTimeoutError}; ++ ++ let root = FixtureRoot::new("epoch-observer-contention").unwrap(); ++ let artifacts = root.path().join("artifacts"); ++ fs::create_dir(&artifacts).unwrap(); ++ let lock_path = artifacts.join(".reference-epoch.lock"); ++ let owner = fs::OpenOptions::new() ++ .read(true) ++ .write(true) ++ .create_new(true) ++ .open(&lock_path) ++ .unwrap(); ++ fs2::FileExt::try_lock_exclusive(&owner).unwrap(); ++ // After release, the real observer must reach its unchanged integrity check. ++ fs::write(artifacts.join(".reference-epoch"), b"invalid fixture epoch").unwrap(); ++ let health = serde_json::json!({ "storage_root": root.path() }); ++ let (contended_tx, contended_rx) = mpsc::channel(); ++ let (result_tx, result_rx) = mpsc::channel(); ++ ++ thread::scope(|scope| { ++ let observer = scope.spawn(|| { ++ let probe = fs::File::open(&lock_path).unwrap(); ++ let error = fs2::FileExt::try_lock_shared(&probe).unwrap_err(); ++ assert!(error.raw_os_error().is_some()); ++ assert_eq!( ++ error.raw_os_error(), ++ fs2::lock_contended_error().raw_os_error() ++ ); ++ drop(probe); ++ contended_tx.send(()).unwrap(); ++ result_tx ++ .send(CoveredEpochObservation::observe(&root, &health).map(|_| ())) ++ .unwrap(); ++ }); ++ contended_rx.recv_timeout(Duration::from_secs(2)).unwrap(); ++ let held_result = result_rx.recv_timeout(Duration::from_millis(100)); ++ fs2::FileExt::unlock(&owner).unwrap(); ++ let released_result = result_rx.recv_timeout(Duration::from_secs(2)); ++ observer.join().unwrap(); ++ assert_eq!(held_result, Err(RecvTimeoutError::Timeout)); ++ assert_eq!( ++ released_result.unwrap().unwrap_err(), ++ "actual epoch envelope invalid" ++ ); ++ }); ++ } ++ ++ #[test] ++ fn covered_epoch_observer_propagates_missing_serial_lock() { ++ let root = FixtureRoot::new("epoch-observer-missing-lock").unwrap(); ++ let artifacts = root.path().join("artifacts"); ++ fs::create_dir(&artifacts).unwrap(); ++ let expected = fs::File::open(artifacts.join(".reference-epoch.lock")).unwrap_err(); ++ let health = serde_json::json!({ "storage_root": root.path() }); ++ let error = CoveredEpochObservation::observe(&root, &health) ++ .err() ++ .expect("missing serial lock must fail"); ++ assert_eq!(error, expected.to_string()); ++ } ++} +``` diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/focused-unit-tests.log b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/focused-unit-tests.log new file mode 100644 index 00000000..b5598eef --- /dev/null +++ b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/focused-unit-tests.log @@ -0,0 +1,49 @@ + Compiling codebase-graph v3.0.4 (/private/tmp/codebasegraph-pr153-ci-only-source) + Finished `test` profile [unoptimized + debuginfo] target(s) in 27.01s + Running unittests src/lib.rs (/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/codebase_graph-ffa80bf96221ee79) + +running 42 tests +test adapters::cli::tests::dispatch_materialize::git_diff_plan_scopes_to_changed_paths ... ok +test adapters::cli::tests::dispatch_materialize::materialize_css_source_root_without_profiles ... ok +test adapters::cli::tests::dispatch_materialize::materialize_defaults_to_parallel_builds ... ok +test adapters::cli::tests::dispatch_materialize::materialize_empty_project_from_native_request ... ok +test adapters::cli::tests::dispatch_materialize::materialize_help_is_product_command_help ... ok +test adapters::cli::tests::dispatch_materialize::materialize_honors_config_excludes ... ok +test adapters::cli::tests::dispatch_materialize::materialize_html_source_root_without_profiles ... ok +test adapters::cli::tests::dispatch_materialize::materialize_javascript_source_root_without_profiles ... ok +test adapters::cli::tests::dispatch_materialize::materialize_parallel_flag_is_accepted_as_no_op ... ok +test adapters::cli::tests::dispatch_materialize::materialize_python_source_root_without_python_request ... ok +test adapters::cli::tests::dispatch_materialize::materialize_single_thread_disables_parallel_builds ... ok +test adapters::cli::tests::dispatch_materialize::materialize_typescript_and_tsx_source_root_without_profiles ... ok +test adapters::cli::tests::dispatch_materialize::materialize_webassembly_source_root_without_profiles ... ok +test adapters::cli::tests::dispatch_materialize::old_command_names_are_rejected ... ok +test adapters::cli::tests::dispatch_materialize::parallel_materialize_reports_progress_events ... ok +test adapters::cli::tests::dispatch_materialize::plan_includes_source_directories_named_build ... ok +test adapters::cli::tests::dispatch_materialize::plan_lists_rebuild_delete_skip_and_ignore_paths ... ok +test adapters::cli::tests::dispatch_materialize::prints_top_level_help ... ok +test adapters::cli::tests::dispatch_materialize::prints_top_level_help_without_args ... ok +test adapters::cli::tests::dispatch_materialize::reinstall_help_is_product_command_help ... ok +test adapters::cli::tests::dispatch_materialize::retired_semantic_options_are_absent_from_all_materialization_help ... ok +test adapters::cli::tests::dispatch_materialize::retired_semantic_options_are_rejected_by_each_affected_parser ... ok +test adapters::cli::tests::dispatch_materialize::setup_defaults_repo_root_to_auto_detection ... ok +test adapters::cli::tests::dispatch_materialize::setup_help_is_product_command_help ... ok +test adapters::cli::tests::dispatch_materialize::setup_materializes_graph_and_writes_config ... ok +test adapters::cli::tests::dispatch_materialize::setup_parses_agent_hook_selection ... ok +test adapters::cli::tests::dispatch_materialize::setup_parses_explicit_mcp_transport_and_daemon_port ... ok +test adapters::cli::tests::dispatch_materialize::watch_help_documents_parallel_default_and_opt_out ... ok +test db_writer::phase::tests::copy_trace_metadata_reports_generated_file_bytes ... ok +test db_writer::phase::tests::error_tail_reader_requests_no_more_than_the_limit ... ok +test db_writer::phase::tests::error_tail_reads_at_most_the_limit_and_decodes_utf8_lossily ... ok +test db_writer::phase::tests::isolated_error_keeps_context_inside_the_cap ... ok +test db_writer::phase::tests::oversized_native_error_preserves_query_vs_explicit_checkpoint_boundary ... ok +test db_writer::phase::tests::phase_protocol_requires_v2_containment_contract ... ok +test db_writer::phase::tests::phase_query_keeps_successful_if_not_exists_idempotence_but_surfaces_native_error ... ok +test db_writer::phase::tests::phase_registry_scope_restores_nested_and_unwound_contexts ... ok +test db_writer::phase::tests::phase_request_v2_preserves_thread_setting ... ok +test db_writer::phase::tests::phase_test_allocation_is_scoped_to_the_ready_loader ... ok +test db_writer::phase::tests::phase_test_allocation_requires_trigger_and_rejects_unbounded_memory ... ok +test db_writer::phase::tests::scoped_phase_request_lives_outside_candidate_and_preserves_database_path ... ok +test staging_writer::tests::copy_path_normalizes_windows_separators_for_ladybug ... ok +test staging_writer::tests::copy_path_strips_windows_extended_prefix_for_ladybug ... ok + +test result: ok. 42 passed; 0 failed; 0 ignored; 0 measured; 800 filtered out; finished in 64.85s diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/format.log b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/format.log new file mode 100644 index 00000000..e69de29b diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/observer-fixture-tests.log b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/observer-fixture-tests.log new file mode 100644 index 00000000..564de818 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/observer-fixture-tests.log @@ -0,0 +1,10 @@ + Blocking waiting for file lock on package cache + Blocking waiting for file lock on package cache + Compiling codebase-graph v3.0.4 (/private/tmp/codebasegraph-pr153-ci-only-source) + Finished `test` profile [unoptimized + debuginfo] target(s) in 1.08s + Running tests/storage_maintenance.rs (/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target/debug/deps/storage_maintenance-926da32abefb62ce) + +running 1 test +test fixture::process::tests::covered_epoch_observer_propagates_missing_serial_lock ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 10 filtered out; finished in 0.00s diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/provenance.json b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/provenance.json new file mode 100644 index 00000000..96bdad2f --- /dev/null +++ b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/provenance.json @@ -0,0 +1,29 @@ +{ + "spec_sha": "1a9db7b558b60248888408daa6268a3b45f2f0df", + "approval_sha": "7650f264fe0cbfa7fa328840722929feac1f32df", + "approval_url": "https://github.com/rabii-chaarani/codebaseGraph/blob/7650f264fe0cbfa7fa328840722929feac1f32df/docs/specs/CBG-PLAT-01/approvals/ci-only-s06-s08.md", + "source_base": "862a8f88d485d5bd257ebd9456c194156fd4ee94", + "branch": "fix/pr153-ci-maintenance", + "code_root": "/tmp/codebasegraph-pr153-ci-only-source", + "target_dir": "/tmp/codebasegraph-pr153-platform-862a8f88d485/cargo-target", + "normal_cli_sha256": "a6c8042acc1bbc1f8b709cfe53fa009dbf4edff081a504e41b001ccb28ed491e", + "scope": [ + "COD-57", + "COD-58", + "COD-59" + ], + "out_of_scope": [ + "COD-52", + "COD-53", + "COD-54", + "COD-55", + "COD-56", + "COD-60", + "COD-61 aggregate closure", + "merge", + "deployment", + "service restart" + ], + "focused_unit_result": "42 passed on macOS ARM64; no native Windows execution yet", + "model_change": "chg-pzt87f,0 entries, user scope signed off" +} diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-s06-s08.md b/docs/specs/CBG-PLAT-01/execution/ci-only-s06-s08.md new file mode 100644 index 00000000..60df1ef5 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/execution/ci-only-s06-s08.md @@ -0,0 +1,46 @@ +# CBG-PLAT-01 — CI-only S06–S08 execution + +## Identity and authority + +- Source baseline: PR153 `862a8f88d485d5bd257ebd9456c194156fd4ee94`. Delivered fixes: [`d6dd34493e9da6f80847240bafcc92dbcaed2c38`](https://github.com/rabii-chaarani/codebaseGraph/commit/d6dd34493e9da6f80847240bafcc92dbcaed2c38) in [existing PR153](https://github.com/rabii-chaarani/codebaseGraph/pull/153). +- Exact user approval: [CI-only S06–S08 record](https://github.com/rabii-chaarani/codebaseGraph/blob/7650f264fe0cbfa7fa328840722929feac1f32df/docs/specs/CBG-PLAT-01/approvals/ci-only-s06-s08.md), approved spec0.10 full SHA `1a9db7b558b60248888408daa6268a3b45f2f0df`. User: **“I approve CI-only implementation scope”**. +- Issues: [COD-57](https://linear.app/codebasegraph/issue/COD-57), [COD-58](https://linear.app/codebasegraph/issue/COD-58), [COD-59](https://linear.app/codebasegraph/issue/COD-59), all **In Review**, not Done. COD-51 remains Backlog for other implementation scope. No other slices, packaging, runtime policy changes, full-platform closure, merge/deployment/restart included. +- Changed source: only `src/adapters/cli/format/help.rs`, `src/db_writer/phase.rs` test, `src/staging_writer/files.rs` internal visibility, `src/staging_writer/mod.rs` test-only re-export and `tests/support/storage_maintenance/process.rs` fixture/tests. + +## Implemented behavior + +| Slice/criterion | Delivered change | +|---|---| +| S06 / R06 / A10 / COD-57 | Watch help states existing parallel default; parser/default/opt-out behavior unchanged. Existing test retained. | +| S07 / R07 / A11 / COD-58 | Fixture renders the actual production COPY path via an internal test re-export, creates a spaced filename, checks actual canonical file identity and exact4-byte metadata. No production renderer/parser/COPY mutation change. | +| S08 / R08 / A12 / COD-59 | Test observer accepts WouldBlock or a present raw OS code matching fs2 contention. Original5-second deadline,10-ms interval and complete epoch/birth/integrity assertions preserved. Added Windows real independent-handle contention/release regression and cross-platform missing-lock propagation. | + +No production constants changed. The new regression's100-ms held-result receive and2-second channel receives are test-only synchronization, not new observer timeouts. The black-box Windows test has an ordinary scheduling caveat: its independent contention handshake establishes the owned lock state but cannot instrument the observer's exact internal try-lock instant. No helper instrumentation/general framework was added purely for this test. + +## Executed local checks + +Host: aarch64-apple-darwin, Rust/Cargo1.96.0, source native Cargo environment in isolated worktree. A prior exact-PR review target directory was reused for dependency compilation; Cargo rebuilt this checkout's changed crate/CLI. Normal CLI SHA-256: `a6c8042acc1bbc1f8b709cfe53fa009dbf4edff081a504e41b001ccb28ed491e`. This is not a frozen previous-branch binary. + +| Command/method | Actual result | Evidence | +|---|---|---| +| `cargo test --locked -p codebase-graph --lib -- adapters::cli::tests::dispatch_materialize:: db_writer::phase::tests:: staging_writer::tests::copy_path_ --test-threads=1` |42 passed|[focused-unit-tests.log](ci-only-evidence/focused-unit-tests.log)| +| `cargo test --locked -p codebase-graph --test storage_maintenance covered_epoch_observer -- --test-threads=1` |1 passed on Mac; Windows-only contention case not compiled/executed here|[observer-fixture-tests.log](ci-only-evidence/observer-fixture-tests.log)| +| `cargo test --locked -p codebase-graph --test storage_maintenance isolated_worker_first_creation_and_followup_keep_same_covered_publication_birth -- --exact --test-threads=1`, with explicit newly built `CARGO_BIN_EXE_codebase-graph` |1 passed on final complete fixture snapshot (69.46s); earlier same case also passed69.96s, not double-counted|[epoch-publication-integration-final.log](ci-only-evidence/epoch-publication-integration-final.log)| +| `cargo build --locked --bin codebase-graph` |passed|[cli-build.log](ci-only-evidence/cli-build.log)| +| `cargo fmt --check` and `git diff --check` |passed after worker formatting; no deadline/assertion relaxation|[format.log](ci-only-evidence/format.log)| +| `cargo clippy --workspace --all-targets --all-features --locked -- -D warnings` |passed final snapshot|[clippy-final.log](ci-only-evidence/clippy-final.log)| +| Fresh independent read-only focused review |no confirmed stable-diff findings; native Windows execution not performed by reviewer|[ci-only-review.md](ci-only-evidence/ci-only-review.md)| + +**44 distinct selected tests passed locally.** Full workspace and native Windows runtime were not executed locally. Stable source hashes/diff are in [review](ci-only-evidence/ci-only-review.md), [worker report](ci-only-evidence/epoch-worker.md), [exact delivered code diff](https://github.com/rabii-chaarani/codebaseGraph/commit/d6dd34493e9da6f80847240bafcc92dbcaed2c38.diff) and [provenance](ci-only-evidence/provenance.json). Saved text logs omit redundant trailing blank lines only. + +## Qualification and delivery limits + +Push updated existing PR153 to the exact code SHA above; no force push or merge. The automatic head-bound native CI must execute Windows unit shard1 (COPY), Windows unit shard4 + Mac unit (help), Windows integration shard2 (epoch) and the new Windows-only case, plus ordinary required cohort/artifact gates. No old green/failed run or skipped artifact counts as current passing execution. A normal automatic push trigger is not a manual CI rerun. Initial immediate post-push check discovery had no runs yet; later status must be fetched and recorded honestly. + +If actual contention still exceeds five seconds after classification is fixed, investigate separately; do not silently increase deadline or weaken assertions. Archive/clean-consumer/milestone qualification remains outside this CI-only implementation approval. Do not close issues until their native criteria/review/verification are satisfied. + +## Architecture/procedure reconciliation + +Scryer ledger `chg-pzt87f` was opened/signed off for this approved docs/test-restoration scope, with0 model entries. `locate` confirmed these fixture/help edits add no modeled responsibilities and do not change anchored `run_isolated_phase` behavior. The empty ledger was closed under proportional rules (tool labels empty closure abandoned); no intent implementation, current-PR source-map sync or broad drift reconciliation is claimed. Configured graph/model remained bound to the older main checkout; exact source/test evidence governs this PR worktree. No unrelated pending resource-ceiling claims were consumed. + +Reusable-knowledge assessment: existing fs2 contention and platform-path lessons already cover the narrow procedure; this record preserves executed evidence rather than duplicating transient status into memory. No generated wiki state or implementation source outside the five files changed. From 5408bf354be208d15fb89daf88a1910d1a2d67f7 Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Tue, 27 Oct 2026 11:18:11 +0930 Subject: [PATCH 14/17] docs(test): record passing native CI for approved fixes --- docs/specs/CBG-PLAT-01/delivery.md | 10 +- .../head-vs-successful-ci-merge.json | 1 + .../ci-only-evidence/hosted-case-excerpts.txt | 132 +++++++++++ .../hosted-case-verification.md | 72 ++++++ .../ci-only-evidence/hosted-ci-summary.json | 223 ++++++++++++++++++ .../issue-acceptance-trace.json | 29 +++ .../ci-only-evidence/retrieval-manifest.json | 79 +++++++ .../execution/ci-only-hosted-qualification.md | 64 +++++ .../CBG-PLAT-01/execution/ci-only-s06-s08.md | 4 +- 9 files changed, 607 insertions(+), 7 deletions(-) create mode 100644 docs/specs/CBG-PLAT-01/execution/ci-only-evidence/head-vs-successful-ci-merge.json create mode 100644 docs/specs/CBG-PLAT-01/execution/ci-only-evidence/hosted-case-excerpts.txt create mode 100644 docs/specs/CBG-PLAT-01/execution/ci-only-evidence/hosted-case-verification.md create mode 100644 docs/specs/CBG-PLAT-01/execution/ci-only-evidence/hosted-ci-summary.json create mode 100644 docs/specs/CBG-PLAT-01/execution/ci-only-evidence/issue-acceptance-trace.json create mode 100644 docs/specs/CBG-PLAT-01/execution/ci-only-evidence/retrieval-manifest.json create mode 100644 docs/specs/CBG-PLAT-01/execution/ci-only-hosted-qualification.md diff --git a/docs/specs/CBG-PLAT-01/delivery.md b/docs/specs/CBG-PLAT-01/delivery.md index 0046563e..34a33000 100644 --- a/docs/specs/CBG-PLAT-01/delivery.md +++ b/docs/specs/CBG-PLAT-01/delivery.md @@ -4,7 +4,7 @@ - Milestone: `CBG-PLAT-01 — PR #153 platform maintenance`, ID `ff37f4fc-4072-439a-8691-9c15dc739ddd`. - Proposed canonical specification: [rev0.1 at full commit 33360340379f878e93324e0829a1bb6f33eafc9d](https://github.com/rabii-chaarani/codebaseGraph/blob/33360340379f878e93324e0829a1bb6f33eafc9d/docs/specs/CBG-PLAT-01/spec.md). No approved specification SHA or implementation sign-off is recorded. - Draft docs-only publication: [PR155](https://github.com/rabii-chaarani/codebaseGraph/pull/155), stacked on PR153. No product source/constants changed. -- User initially authorized spec/backlog creation, then separately selected **D01 option A: bundled Windows prebuilt runtimes** ([record](decisions/d01-windows-runtime-bundling.md)) and **D02 option A: bundled macOS prebuilt OpenSSL dylibs with relative runtime paths** ([record](decisions/d02-macos-openssl-bundling.md)); no Homebrew prerequisite. The user also selected **D03a option A: explicit path → client override → native Windows profile**, ignoring HOME for the default and failing clearly rather than using CWD ([record](decisions/d03a-windows-user-directory.md)). No implementation start is authorized. The user corrected D03b to **option B: native .exe plus .cmd/.bat client shims through a dedicated safe Windows invocation adapter**, superseding the preceding A ([record](decisions/d03b-windows-client-command-invocation.md)). The user also selected **D04 option A: retain/report the Windows Direct-read Exclusive lock**, without an unlock/relock gap or new concurrency guarantee ([record](decisions/d04-windows-direct-exclusive-mode.md)). The user also selected **D05a option A: target macOS 13.3+ on Apple Silicon, with minimum/current-release execution before claiming support** ([record](decisions/d05a-macos-supported-minimum.md)). The user also selected **D05b option A: Microsoft-supported Windows 11 x86_64 client releases with real desktop qualification, not Server CI alone** ([record](decisions/d05b-windows-consumer-baseline.md)). The user also selected **D05c option A: built-in Windows PowerShell 5.1 plus Microsoft-supported PowerShell 7 releases, tested under both installer hosts** ([record](decisions/d05c-powershell-installer-hosts.md)); this does not choose .cmd/.bat invocation mechanics. The user also selected **D05d option A: plain Windows Cargo installs include required JSON/FTS extension bytes by default, with native build/runtime prerequisites documented and verified separately** ([record](decisions/d05d-windows-cargo-default-extensions.md)). All listed policy choices are resolved; implementation scope/approval, actual qualification and S09 inclusion/deferral remain outstanding. All issues remain Backlog with no dates, estimates or assignees invented. +- User initially authorized spec/backlog creation, then separately selected **D01 option A: bundled Windows prebuilt runtimes** ([record](decisions/d01-windows-runtime-bundling.md)) and **D02 option A: bundled macOS prebuilt OpenSSL dylibs with relative runtime paths** ([record](decisions/d02-macos-openssl-bundling.md)); no Homebrew prerequisite. The user also selected **D03a option A: explicit path → client override → native Windows profile**, ignoring HOME for the default and failing clearly rather than using CWD ([record](decisions/d03a-windows-user-directory.md)). At initial planning, no implementation start was authorized. The later [explicit CI-only approval](approvals/ci-only-s06-s08.md) authorized S06–S08/COD-57–COD-59 only; other implementation scope remains gated. The user corrected D03b to **option B: native .exe plus .cmd/.bat client shims through a dedicated safe Windows invocation adapter**, superseding the preceding A ([record](decisions/d03b-windows-client-command-invocation.md)). The user also selected **D04 option A: retain/report the Windows Direct-read Exclusive lock**, without an unlock/relock gap or new concurrency guarantee ([record](decisions/d04-windows-direct-exclusive-mode.md)). The user also selected **D05a option A: target macOS 13.3+ on Apple Silicon, with minimum/current-release execution before claiming support** ([record](decisions/d05a-macos-supported-minimum.md)). The user also selected **D05b option A: Microsoft-supported Windows 11 x86_64 client releases with real desktop qualification, not Server CI alone** ([record](decisions/d05b-windows-consumer-baseline.md)). The user also selected **D05c option A: built-in Windows PowerShell 5.1 plus Microsoft-supported PowerShell 7 releases, tested under both installer hosts** ([record](decisions/d05c-powershell-installer-hosts.md)); this does not choose .cmd/.bat invocation mechanics. The user also selected **D05d option A: plain Windows Cargo installs include required JSON/FTS extension bytes by default, with native build/runtime prerequisites documented and verified separately** ([record](decisions/d05d-windows-cargo-default-extensions.md)). All listed policy choices are resolved. Only S06–S08/COD-57–COD-59 implementation was subsequently approved and delivered at `d6dd34493e9da6f80847240bafcc92dbcaed2c38`; [hosted CI verification](execution/ci-only-hosted-qualification.md) records all22 successful jobs and actual passing Mac/Windows testcase execution. COD-57, COD-58 and COD-59 are complete for this approved CI-only scope. Remaining implementation, clean-consumer qualification, S09 inclusion/deferral and aggregate closure stay outstanding; COD-51 remains Backlog. No dates, estimates or assignees were invented. | Work item | Linear | Outcome | Depends on | |---|---|---|---| @@ -14,9 +14,9 @@ | `CBG-PLAT-01/S03` | [COD-54](https://linear.app/codebasegraph/issue/COD-54/cbg-plat-01s03-remove-undeclared-homebrew-path-assumptions-from-macos) | Remove undeclared Homebrew-path assumptions from macOS distribution | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | | `CBG-PLAT-01/S04` | [COD-55](https://linear.app/codebasegraph/issue/COD-55/cbg-plat-01s04-use-explicit-windows-user-directory-and-executable) | Use explicit Windows user-directory and executable discovery policy | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | | `CBG-PLAT-01/S05` | [COD-56](https://linear.app/codebasegraph/issue/COD-56/cbg-plat-01s05-reject-failing-native-probes-in-the-powershell) | Reject failing native probes in the PowerShell installer | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | -| `CBG-PLAT-01/S06` | [COD-57](https://linear.app/codebasegraph/issue/COD-57/cbg-plat-01s06-restore-watch-help-documentation-of-the-parallel) | Restore watch help documentation of the parallel default | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | -| `CBG-PLAT-01/S07` | [COD-58](https://linear.app/codebasegraph/issue/COD-58/cbg-plat-01s07-render-valid-windows-copy-paths-in-the-trace-metadata) | Render valid Windows COPY paths in the trace-metadata fixture | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | -| `CBG-PLAT-01/S08` | [COD-59](https://linear.app/codebasegraph/issue/COD-59/cbg-plat-01s08-recognize-windows-fs2-contention-in-the-reference-epoch) | Recognize Windows fs2 contention in the reference-epoch observer | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | +| `CBG-PLAT-01/S06` | [COD-57](https://linear.app/codebasegraph/issue/COD-57/cbg-plat-01s06-restore-watch-help-documentation-of-the-parallel) | Restore watch help documentation of the parallel default | COD-51 subset prerequisite satisfied by [CI-only approval](approvals/ci-only-s06-s08.md); affected native verification recorded | +| `CBG-PLAT-01/S07` | [COD-58](https://linear.app/codebasegraph/issue/COD-58/cbg-plat-01s07-render-valid-windows-copy-paths-in-the-trace-metadata) | Render valid Windows COPY paths in the trace-metadata fixture | COD-51 subset prerequisite satisfied by [CI-only approval](approvals/ci-only-s06-s08.md); affected native verification recorded | +| `CBG-PLAT-01/S08` | [COD-59](https://linear.app/codebasegraph/issue/COD-59/cbg-plat-01s08-recognize-windows-fs2-contention-in-the-reference-epoch) | Recognize Windows fs2 contention in the reference-epoch observer | COD-51 subset prerequisite satisfied by [CI-only approval](approvals/ci-only-s06-s08.md); affected native verification recorded | | `CBG-PLAT-01/S09` | [COD-60](https://linear.app/codebasegraph/issue/COD-60/cbg-plat-01s09-make-windows-direct-lease-mode-truthful-after-relock) | Make Windows Direct lease mode truthful after relock_shared | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record) | | `CBG-PLAT-01/S10` | [COD-61](https://linear.app/codebasegraph/issue/COD-61/cbg-plat-01s10-qualify-the-corrected-native-revision-and-installed) | Qualify the corrected native revision and installed consumer archives | [COD-51](https://linear.app/codebasegraph/issue/COD-51/cbg-plat-01s00-publish-the-proposed-platform-contracts-and-record), [COD-52](https://linear.app/codebasegraph/issue/COD-52/cbg-plat-01s01-isolate-macos-directory-enumeration-cursors-for-nested), [COD-53](https://linear.app/codebasegraph/issue/COD-53/cbg-plat-01s02-define-and-satisfy-windows-archive-native-library), [COD-54](https://linear.app/codebasegraph/issue/COD-54/cbg-plat-01s03-remove-undeclared-homebrew-path-assumptions-from-macos), [COD-55](https://linear.app/codebasegraph/issue/COD-55/cbg-plat-01s04-use-explicit-windows-user-directory-and-executable), [COD-56](https://linear.app/codebasegraph/issue/COD-56/cbg-plat-01s05-reject-failing-native-probes-in-the-powershell), [COD-57](https://linear.app/codebasegraph/issue/COD-57/cbg-plat-01s06-restore-watch-help-documentation-of-the-parallel), [COD-58](https://linear.app/codebasegraph/issue/COD-58/cbg-plat-01s07-render-valid-windows-copy-paths-in-the-trace-metadata), [COD-59](https://linear.app/codebasegraph/issue/COD-59/cbg-plat-01s08-recognize-windows-fs2-contention-in-the-reference-epoch) | @@ -26,4 +26,4 @@ S00 may record exact independent slice approvals/deferrals; unrelated unresolved The configured live Scryer/Wiki instances supplied intended context only; this delivery index does not claim PR-head model reconciliation or implementation. Revalidate claims/directives proportionately at implementation start. -Verification of this planning task: existing team/project/archived records searched; all created issue IDs, project/state/milestone/links and actual blocking relationships read back through Linear before handoff. Git spec/evidence links were verified remotely available. No fix or passing future qualification is claimed. +Planning originally searched existing/archived records and verified project/state/milestone/links/dependencies. The subsequent approved CI-only execution and head-bound native results are recorded in [local execution](execution/ci-only-s06-s08.md) and [hosted verification](execution/ci-only-hosted-qualification.md); passing CI does not close COD-51, COD-61 or the milestone, implement other fixes, or authorize merge/deployment/service restart. diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/head-vs-successful-ci-merge.json b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/head-vs-successful-ci-merge.json new file mode 100644 index 00000000..0f02c2b6 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/head-vs-successful-ci-merge.json @@ -0,0 +1 @@ +{"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/compare/d6dd34493e9da6f80847240bafcc92dbcaed2c38...af71103436086bff1189e67e0f5f03464e977bd4","html_url":"https://github.com/rabii-chaarani/codebaseGraph/compare/d6dd34493e9da6f80847240bafcc92dbcaed2c38...af71103436086bff1189e67e0f5f03464e977bd4","permalink_url":"https://github.com/rabii-chaarani/codebaseGraph/compare/rabii-chaarani:d6dd344...rabii-chaarani:af71103","diff_url":"https://github.com/rabii-chaarani/codebaseGraph/compare/d6dd34493e9da6f80847240bafcc92dbcaed2c38...af71103436086bff1189e67e0f5f03464e977bd4.diff","patch_url":"https://github.com/rabii-chaarani/codebaseGraph/compare/d6dd34493e9da6f80847240bafcc92dbcaed2c38...af71103436086bff1189e67e0f5f03464e977bd4.patch","base_commit":{"sha":"d6dd34493e9da6f80847240bafcc92dbcaed2c38","node_id":"C_kwDOSZ0WutoAKGQ2ZGQzNDQ5M2U5ZGE2ZjgwODQ3MjQwYmFmY2M5MmRiY2FlZDJjMzg","commit":{"author":{"name":"rabii-chaarani","email":"rabii.chaarani@monash.edu","date":"2026-10-27T00:22:31Z"},"committer":{"name":"rabii-chaarani","email":"rabii.chaarani@monash.edu","date":"2026-10-27T00:22:31Z"},"message":"fix(ci): repair native help and Windows fixture contracts","tree":{"sha":"5865a5227177897e1ee7e66769e03ed24932b9a0","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/git/trees/5865a5227177897e1ee7e66769e03ed24932b9a0"},"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/git/commits/d6dd34493e9da6f80847240bafcc92dbcaed2c38","comment_count":0,"verification":{"verified":false,"reason":"unsigned","signature":null,"payload":null,"verified_at":null}},"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/d6dd34493e9da6f80847240bafcc92dbcaed2c38","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/d6dd34493e9da6f80847240bafcc92dbcaed2c38","comments_url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/d6dd34493e9da6f80847240bafcc92dbcaed2c38/comments","author":{"login":"rabii-chaarani","id":50892556,"node_id":"MDQ6VXNlcjUwODkyNTU2","avatar_url":"https://avatars.githubusercontent.com/u/50892556?v=4","gravatar_id":"","url":"https://api.github.com/users/rabii-chaarani","html_url":"https://github.com/rabii-chaarani","followers_url":"https://api.github.com/users/rabii-chaarani/followers","following_url":"https://api.github.com/users/rabii-chaarani/following{/other_user}","gists_url":"https://api.github.com/users/rabii-chaarani/gists{/gist_id}","starred_url":"https://api.github.com/users/rabii-chaarani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rabii-chaarani/subscriptions","organizations_url":"https://api.github.com/users/rabii-chaarani/orgs","repos_url":"https://api.github.com/users/rabii-chaarani/repos","events_url":"https://api.github.com/users/rabii-chaarani/events{/privacy}","received_events_url":"https://api.github.com/users/rabii-chaarani/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"rabii-chaarani","id":50892556,"node_id":"MDQ6VXNlcjUwODkyNTU2","avatar_url":"https://avatars.githubusercontent.com/u/50892556?v=4","gravatar_id":"","url":"https://api.github.com/users/rabii-chaarani","html_url":"https://github.com/rabii-chaarani","followers_url":"https://api.github.com/users/rabii-chaarani/followers","following_url":"https://api.github.com/users/rabii-chaarani/following{/other_user}","gists_url":"https://api.github.com/users/rabii-chaarani/gists{/gist_id}","starred_url":"https://api.github.com/users/rabii-chaarani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rabii-chaarani/subscriptions","organizations_url":"https://api.github.com/users/rabii-chaarani/orgs","repos_url":"https://api.github.com/users/rabii-chaarani/repos","events_url":"https://api.github.com/users/rabii-chaarani/events{/privacy}","received_events_url":"https://api.github.com/users/rabii-chaarani/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"862a8f88d485d5bd257ebd9456c194156fd4ee94","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/862a8f88d485d5bd257ebd9456c194156fd4ee94","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/862a8f88d485d5bd257ebd9456c194156fd4ee94"}]},"merge_base_commit":{"sha":"d6dd34493e9da6f80847240bafcc92dbcaed2c38","node_id":"C_kwDOSZ0WutoAKGQ2ZGQzNDQ5M2U5ZGE2ZjgwODQ3MjQwYmFmY2M5MmRiY2FlZDJjMzg","commit":{"author":{"name":"rabii-chaarani","email":"rabii.chaarani@monash.edu","date":"2026-10-27T00:22:31Z"},"committer":{"name":"rabii-chaarani","email":"rabii.chaarani@monash.edu","date":"2026-10-27T00:22:31Z"},"message":"fix(ci): repair native help and Windows fixture contracts","tree":{"sha":"5865a5227177897e1ee7e66769e03ed24932b9a0","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/git/trees/5865a5227177897e1ee7e66769e03ed24932b9a0"},"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/git/commits/d6dd34493e9da6f80847240bafcc92dbcaed2c38","comment_count":0,"verification":{"verified":false,"reason":"unsigned","signature":null,"payload":null,"verified_at":null}},"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/d6dd34493e9da6f80847240bafcc92dbcaed2c38","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/d6dd34493e9da6f80847240bafcc92dbcaed2c38","comments_url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/d6dd34493e9da6f80847240bafcc92dbcaed2c38/comments","author":{"login":"rabii-chaarani","id":50892556,"node_id":"MDQ6VXNlcjUwODkyNTU2","avatar_url":"https://avatars.githubusercontent.com/u/50892556?v=4","gravatar_id":"","url":"https://api.github.com/users/rabii-chaarani","html_url":"https://github.com/rabii-chaarani","followers_url":"https://api.github.com/users/rabii-chaarani/followers","following_url":"https://api.github.com/users/rabii-chaarani/following{/other_user}","gists_url":"https://api.github.com/users/rabii-chaarani/gists{/gist_id}","starred_url":"https://api.github.com/users/rabii-chaarani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rabii-chaarani/subscriptions","organizations_url":"https://api.github.com/users/rabii-chaarani/orgs","repos_url":"https://api.github.com/users/rabii-chaarani/repos","events_url":"https://api.github.com/users/rabii-chaarani/events{/privacy}","received_events_url":"https://api.github.com/users/rabii-chaarani/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"rabii-chaarani","id":50892556,"node_id":"MDQ6VXNlcjUwODkyNTU2","avatar_url":"https://avatars.githubusercontent.com/u/50892556?v=4","gravatar_id":"","url":"https://api.github.com/users/rabii-chaarani","html_url":"https://github.com/rabii-chaarani","followers_url":"https://api.github.com/users/rabii-chaarani/followers","following_url":"https://api.github.com/users/rabii-chaarani/following{/other_user}","gists_url":"https://api.github.com/users/rabii-chaarani/gists{/gist_id}","starred_url":"https://api.github.com/users/rabii-chaarani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rabii-chaarani/subscriptions","organizations_url":"https://api.github.com/users/rabii-chaarani/orgs","repos_url":"https://api.github.com/users/rabii-chaarani/repos","events_url":"https://api.github.com/users/rabii-chaarani/events{/privacy}","received_events_url":"https://api.github.com/users/rabii-chaarani/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"862a8f88d485d5bd257ebd9456c194156fd4ee94","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/862a8f88d485d5bd257ebd9456c194156fd4ee94","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/862a8f88d485d5bd257ebd9456c194156fd4ee94"}]},"status":"ahead","ahead_by":2,"behind_by":0,"total_commits":2,"commits":[{"sha":"ca115690b226384164cf364458a0e3255b8908d3","node_id":"C_kwDOSZ0WutoAKGNhMTE1NjkwYjIyNjM4NDE2NGNmMzY0NDU4YTBlMzI1NWI4OTA4ZDM","commit":{"author":{"name":"Rabii Chaarani","email":"50892556+rabii-chaarani@users.noreply.github.com","date":"2026-10-21T03:11:11Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-10-21T03:11:11Z"},"message":"chore(main): reissue release 3.0.4 (#154)\n\nRefresh the unpublished 3.0.4 notes from patched main so the replacement\nrelease includes ammonia 4.1.8 and the recovery regressions from #152.\nKeep package and release-manifest versions at 3.0.4.","tree":{"sha":"1008eeb9da57767696a2700696261bbe3fa33419","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/git/trees/1008eeb9da57767696a2700696261bbe3fa33419"},"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/git/commits/ca115690b226384164cf364458a0e3255b8908d3","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJq2C1QCRC1aQ7uu5UhlAAAMWsQAEm1k6PIFeykZ4DoBzjy4t62\noKSAvKlJeDpETYsLfVNuCf55RZfPRrZjGHeL5RSusKwjNPYaxBgikWjjx5ZsX9hm\nxD5SaFJBX0+jgTSPEAWX3UNxhIj0JTz0BAZXWeBnJJgd++0YKEod3LQkYp3g/luX\n376iLDnd24BZxzrcqht+z/LVYQR0Do0KQjLBNdW0NEbCxbjG4Kuc17QDfLGGsmqC\naVeeeZQ/U1LdqbbdYmVhrVNx405tkipbWwYzSDSv4AaHvX+S8dYJP/BDaxwN9kSy\n5+OX822kvSHfm6nadh5nbDR/9/q7lkPdbetr8o9kW/bnvad9swXSAbrHlY1Sqix5\nifvvhTojvtIHuAGy7jYdRqHnb6bduuWtGMZYHVJcJtOcPC6UkF94p8Ygpm8WpDui\n9WgzDfxjHou9IYun+M+Xna1YXSUZVEpFwhDccrHr5LygG19I1YS0OK+rmet81B1H\nufSkitb5Ij0/SaskUjminxHI93uul+ZWD7EQ1G9sE/EZfSmmWFZO8OsA3V9YW1cQ\nqxxo6C+v363vscMTXIdyyCCuXy4+ozw5UZx02JUKvM8pGRUwD1bM2ZvZmC338NJL\nrenwhjtpGfrLI+epHtSRhst6hlTFUvJ5o59BNGQVuTa2ogq8eld1OxMgFLd6Ctuj\nabOs/Sf+fV9WcW/urSy5\n=KMb/\n-----END PGP SIGNATURE-----\n","payload":"tree 1008eeb9da57767696a2700696261bbe3fa33419\nparent 018df35e72447fc3e014e950d1d3c6648bbd4820\nauthor Rabii Chaarani <50892556+rabii-chaarani@users.noreply.github.com> 1792552271 +0930\ncommitter GitHub 1792552271 +0930\n\nchore(main): reissue release 3.0.4 (#154)\n\nRefresh the unpublished 3.0.4 notes from patched main so the replacement\nrelease includes ammonia 4.1.8 and the recovery regressions from #152.\nKeep package and release-manifest versions at 3.0.4.","verified_at":"2026-10-21T03:11:12Z"}},"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/ca115690b226384164cf364458a0e3255b8908d3","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/ca115690b226384164cf364458a0e3255b8908d3","comments_url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/ca115690b226384164cf364458a0e3255b8908d3/comments","author":{"login":"rabii-chaarani","id":50892556,"node_id":"MDQ6VXNlcjUwODkyNTU2","avatar_url":"https://avatars.githubusercontent.com/u/50892556?v=4","gravatar_id":"","url":"https://api.github.com/users/rabii-chaarani","html_url":"https://github.com/rabii-chaarani","followers_url":"https://api.github.com/users/rabii-chaarani/followers","following_url":"https://api.github.com/users/rabii-chaarani/following{/other_user}","gists_url":"https://api.github.com/users/rabii-chaarani/gists{/gist_id}","starred_url":"https://api.github.com/users/rabii-chaarani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rabii-chaarani/subscriptions","organizations_url":"https://api.github.com/users/rabii-chaarani/orgs","repos_url":"https://api.github.com/users/rabii-chaarani/repos","events_url":"https://api.github.com/users/rabii-chaarani/events{/privacy}","received_events_url":"https://api.github.com/users/rabii-chaarani/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"018df35e72447fc3e014e950d1d3c6648bbd4820","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/018df35e72447fc3e014e950d1d3c6648bbd4820","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/018df35e72447fc3e014e950d1d3c6648bbd4820"}]},{"sha":"af71103436086bff1189e67e0f5f03464e977bd4","node_id":"C_kwDOSZ0WutoAKGFmNzExMDM0MzYwODZiZmYxMTg5ZTY3ZTBmNWYwMzQ2NGU5NzdiZDQ","commit":{"author":{"name":"Rabii Chaarani","email":"50892556+rabii-chaarani@users.noreply.github.com","date":"2026-10-27T00:22:49Z"},"committer":{"name":"GitHub","email":"noreply@github.com","date":"2026-10-27T00:22:49Z"},"message":"Merge d6dd34493e9da6f80847240bafcc92dbcaed2c38 into ca115690b226384164cf364458a0e3255b8908d3","tree":{"sha":"d9cc61172c7f4aa28cc174254ffcb020c5b24b75","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/git/trees/d9cc61172c7f4aa28cc174254ffcb020c5b24b75"},"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/git/commits/af71103436086bff1189e67e0f5f03464e977bd4","comment_count":0,"verification":{"verified":true,"reason":"valid","signature":"-----BEGIN PGP SIGNATURE-----\n\nwsFcBAABCAAQBQJq3+7ZCRC1aQ7uu5UhlAAA8x0QAHo3c0ozGBsKawmmS74B3XLk\n148Y9YXPlLBS9yctPv6bqCxE8T6ET7HWrUMbVUCpgJgYmFjdrpXbPicGTCwiWvf5\nyTKGzfMj6tS9RZ9ZAPOQX0h4d6IwrzYs/w8kQcxP+i9WnvgR52bu7fcxSomNmPyo\nIBhhSU6/b4CwbtEuNsx/FbqeES+ALZS0bOCbxhx55tVrBEzvjLk1Yfx2Tcx7vOz9\n5PixxI3INQFgtJWhj7fNfp7efYa8SHzftUViC+oIt4OwKl0iXcyW7ZG5jMKDdTv1\nXlHfcUTWcDuHaCuKYOOE1lO+chiOf5a7/SVGZcQejw7JJjKShwY0qc3aTHm1fsXG\nNz6JDyhsUYjVar436fz1O6tfnLaoLJHcC6Rz/LB/Gg+xUjBdCB+GaFAEclS9LSXB\nLmXv0bKFqxyxA7gAZw1SH8yWV8/jgn08e3lBClYLhmMQQp1ljmViXp6G583e1skE\nEvTxKUPhQ8MidvVZJs7o5xjiOAQv6ZlpSQRYggoueNkkk0dEMV6bMsSj08rmnhcS\nTa6ZDXsmQ1hXqMZux/cGffzOgLG+YDIHPfpoYBJoxPcTlFGF6fmGLioTPlwQgVfp\niF3qvDSzNeyvwqQsBmfWPWQAGyeXjBOtyfwFg3QW0lhZ7/swj2JlawWgvzSUtGK3\niPKIBCGlnwegztERvc5H\n=S9Wa\n-----END PGP SIGNATURE-----\n","payload":"tree d9cc61172c7f4aa28cc174254ffcb020c5b24b75\nparent ca115690b226384164cf364458a0e3255b8908d3\nparent d6dd34493e9da6f80847240bafcc92dbcaed2c38\nauthor Rabii Chaarani <50892556+rabii-chaarani@users.noreply.github.com> 1793060569 +0000\ncommitter GitHub 1793060569 +0000\n\nMerge d6dd34493e9da6f80847240bafcc92dbcaed2c38 into ca115690b226384164cf364458a0e3255b8908d3\n","verified_at":"2026-10-27T00:22:49Z"}},"url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/af71103436086bff1189e67e0f5f03464e977bd4","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/af71103436086bff1189e67e0f5f03464e977bd4","comments_url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/af71103436086bff1189e67e0f5f03464e977bd4/comments","author":{"login":"rabii-chaarani","id":50892556,"node_id":"MDQ6VXNlcjUwODkyNTU2","avatar_url":"https://avatars.githubusercontent.com/u/50892556?v=4","gravatar_id":"","url":"https://api.github.com/users/rabii-chaarani","html_url":"https://github.com/rabii-chaarani","followers_url":"https://api.github.com/users/rabii-chaarani/followers","following_url":"https://api.github.com/users/rabii-chaarani/following{/other_user}","gists_url":"https://api.github.com/users/rabii-chaarani/gists{/gist_id}","starred_url":"https://api.github.com/users/rabii-chaarani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rabii-chaarani/subscriptions","organizations_url":"https://api.github.com/users/rabii-chaarani/orgs","repos_url":"https://api.github.com/users/rabii-chaarani/repos","events_url":"https://api.github.com/users/rabii-chaarani/events{/privacy}","received_events_url":"https://api.github.com/users/rabii-chaarani/received_events","type":"User","user_view_type":"public","site_admin":false},"committer":{"login":"web-flow","id":19864447,"node_id":"MDQ6VXNlcjE5ODY0NDQ3","avatar_url":"https://avatars.githubusercontent.com/u/19864447?v=4","gravatar_id":"","url":"https://api.github.com/users/web-flow","html_url":"https://github.com/web-flow","followers_url":"https://api.github.com/users/web-flow/followers","following_url":"https://api.github.com/users/web-flow/following{/other_user}","gists_url":"https://api.github.com/users/web-flow/gists{/gist_id}","starred_url":"https://api.github.com/users/web-flow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/web-flow/subscriptions","organizations_url":"https://api.github.com/users/web-flow/orgs","repos_url":"https://api.github.com/users/web-flow/repos","events_url":"https://api.github.com/users/web-flow/events{/privacy}","received_events_url":"https://api.github.com/users/web-flow/received_events","type":"User","user_view_type":"public","site_admin":false},"parents":[{"sha":"ca115690b226384164cf364458a0e3255b8908d3","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/ca115690b226384164cf364458a0e3255b8908d3","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/ca115690b226384164cf364458a0e3255b8908d3"},{"sha":"d6dd34493e9da6f80847240bafcc92dbcaed2c38","url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/commits/d6dd34493e9da6f80847240bafcc92dbcaed2c38","html_url":"https://github.com/rabii-chaarani/codebaseGraph/commit/d6dd34493e9da6f80847240bafcc92dbcaed2c38"}]}],"files":[{"sha":"174dbfd0e344fb76a2b695b182a28c2266c1e694","filename":"CHANGELOG.md","status":"modified","additions":6,"deletions":1,"changes":7,"blob_url":"https://github.com/rabii-chaarani/codebaseGraph/blob/af71103436086bff1189e67e0f5f03464e977bd4/CHANGELOG.md","raw_url":"https://github.com/rabii-chaarani/codebaseGraph/raw/af71103436086bff1189e67e0f5f03464e977bd4/CHANGELOG.md","contents_url":"https://api.github.com/repos/rabii-chaarani/codebaseGraph/contents/CHANGELOG.md?ref=af71103436086bff1189e67e0f5f03464e977bd4","patch":"@@ -1,12 +1,17 @@\n # Changelog\n \n-## [3.0.4](https://github.com/rabii-chaarani/codebaseGraph/compare/v3.0.3...v3.0.4) (2026-10-16)\n+## [3.0.4](https://github.com/rabii-chaarani/codebaseGraph/compare/v3.0.3...v3.0.4) (2026-10-21)\n \n \n ### Bug Fixes\n \n+* **deps:** update ammonia to the patched 4.1.8 release ([#152](https://github.com/rabii-chaarani/codebaseGraph/pull/152))\n * **k-wiki:** close diagnostic gaps and add regression coverage ([#149](https://github.com/rabii-chaarani/codebaseGraph/issues/149)) ([98ff47a](https://github.com/rabii-chaarani/codebaseGraph/commit/98ff47aee385366f5884193f70f050da79169e71))\n \n+### Tests\n+\n+* Verify stale-worker recovery and native-phase teardown across manual graph publication ([#152](https://github.com/rabii-chaarani/codebaseGraph/pull/152)).\n+\n ## [3.0.3](https://github.com/rabii-chaarani/codebaseGraph/compare/v3.0.2...v3.0.3) (2026-10-15)\n \n "}]} diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/hosted-case-excerpts.txt b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/hosted-case-excerpts.txt new file mode 100644 index 00000000..b7c318a4 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/hosted-case-excerpts.txt @@ -0,0 +1,132 @@ +=== watch-help-macos: job 121931860962 === +URL: https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860962 +Raw log: /tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931860962.log +L33: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T00:22:56.4487210Z Uses: rabii-chaarani/codebaseGraph/.github/workflows/native.yml@refs/pull/153/merge (af71103436086bff1189e67e0f5f03464e977bd4) +L36: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T00:22:56.4492350Z source-sha: af71103436086bff1189e67e0f5f03464e977bd4 +L44: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T00:22:56.5230420Z ref: af71103436086bff1189e67e0f5f03464e977bd4 +L118: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T00:22:59.1496910Z af71103436086bff1189e67e0f5f03464e977bd4 +L125: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T00:22:59.1702070Z [command]/opt/homebrew/bin/git checkout --progress --force af71103436086bff1189e67e0f5f03464e977bd4 +L126: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T00:22:59.4185980Z HEAD is now at af71103 Merge d6dd34493e9da6f80847240bafcc92dbcaed2c38 into ca115690b226384164cf364458a0e3255b8908d3 +L128: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T00:22:59.4328760Z [command]/opt/homebrew/bin/git log -1 --format=%H +L129: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T00:22:59.4429460Z af71103436086bff1189e67e0f5f03464e977bd4 +L249: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T00:23:03.2889040Z SOURCE_SHA: af71103436086bff1189e67e0f5f03464e977bd4 +L554: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T00:24:04.0225170Z Compiling codebase-graph v3.0.4 (/Users/runner/work/codebaseGraph/codebaseGraph) +L661: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T00:29:13.5275160Z Finished `native-tests` profile [optimized] target(s) in 5m 52s +L662: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T00:29:24.0649070Z native-test CLI compiler artifact: /var/folders/n6/hn37q6pj7sj_9dmqqc2113800000gn/T/native-test-cli-1582-1793060953683846000/codebase-graph sha256=5a82f6fbf69cea32c6b8341e3725bc9ef041033b0119e9c5ba3b1bfde22dfb1d +L663: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T00:29:24.9294400Z native test command 1: cargo test --workspace --locked --profile native-tests --lib --bins --examples +L665: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T00:29:25.2235700Z Running unittests src/lib.rs (target/native-tests/deps/codebase_graph-bfdd253a54eaf67a) +L667: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T00:29:25.2544210Z running 842 tests +L699: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T00:29:50.6256800Z test adapters::cli::tests::dispatch_materialize::watch_help_documents_parallel_default_and_opt_out ... ok +L1621: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T01:01:03.3212240Z test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 841 filtered out; finished in 0.00s +L1791: native (macos-arm64) / native tests (macos-arm64, unit) UNKNOWN STEP 2026-10-27T01:01:07.8311880Z native test command 1 finished in 1902.901s: Ok(()) + +=== watch-help-windows: job 121931860936 === +URL: https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860936 +Raw log: /tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931860936.log +L33: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:22:55.1230163Z Uses: rabii-chaarani/codebaseGraph/.github/workflows/native.yml@refs/pull/153/merge (af71103436086bff1189e67e0f5f03464e977bd4) +L36: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:22:55.1235297Z source-sha: af71103436086bff1189e67e0f5f03464e977bd4 +L44: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:22:55.2433445Z ref: af71103436086bff1189e67e0f5f03464e977bd4 +L104: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:23:02.2924093Z af71103436086bff1189e67e0f5f03464e977bd4 +L111: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:23:02.3555708Z [command]"C:\Program Files\Git\bin\git.exe" checkout --progress --force af71103436086bff1189e67e0f5f03464e977bd4 +L129: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:23:02.6073269Z HEAD is now at af71103 Merge d6dd34493e9da6f80847240bafcc92dbcaed2c38 into ca115690b226384164cf364458a0e3255b8908d3 +L131: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:23:02.6661632Z [command]"C:\Program Files\Git\bin\git.exe" log -1 --format=%H +L132: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:23:02.6925891Z af71103436086bff1189e67e0f5f03464e977bd4 +L384: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:28:22.3766360Z SOURCE_SHA: af71103436086bff1189e67e0f5f03464e977bd4 +L692: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:30:01.3319612Z Compiling codebase-graph v3.0.4 (D:\a\codebaseGraph\codebaseGraph) +L837: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:36:45.3788746Z Finished `native-tests` profile [optimized] target(s) in 7m 43s +L838: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:36:49.5264618Z native-test CLI compiler artifact: D:\a\_temp\native-test-cli-8080-1793061405458419200\codebase-graph.exe sha256=fb7387eb7abedba3902e8a3f331e6f0d08baa656f9ab74a3a486663867c5246a +L839: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:36:50.8285236Z native test command 1: cargo test --workspace --locked --profile native-tests --features codebase-graph/bundled-windows-extensions,k-wiki/bundled-windows-extensions --lib --bins --examples --no-fail-fast -- --exact adapters::cli::materialization_input::tests::materialize_request_maps_command_options_to_public_contract adapters::cli::tests::dispatch_materialize::materialize_empty_project_from_native_request adapters::cli::tests::dispatch_materialize::materialize_javascript_source_root_without_profiles adapters::cli::tests::dispatch_materialize::materialize_typescript_and_tsx_source_root_without_profiles adapters::cli::tests::dispatch_materialize::plan_includes_source_directories_named_build adapters::cli::tests::dispatch_materialize::reinstall_help_is_product_command_help adapters::cli::tests::dispatch_materialize::setup_help_is_product_command_help adapters::cli::tests::dispatch_materialize::watch_help_documents_parallel_default_and_opt_out adapters::cli::tests::graph::graph_health_keeps_legacy_storage_readable_but_requires_reinstall_for_writes adapters::cli::tests::graph::graph_query_binds_json_parameters adapters::cli::tests::graph::graph_query_reports_truncation_without_materializing_all_rows adapters::cli::tests::graph::graph_syntax_outputs_language_catalog_and_validates_language adapters::cli::tests::install::install_rejects_legacy_v1_state_until_reinstall adapters::cli::tests::install::mcp_install_preserves_explicit_stdio_compatibility adapters::cli::tests::install::reinstall_hook_selection_removes_only_deselected_managed_clients adapters::cli::tests::install::uninstall_dry_run_reports_without_removing_files adapters::cli::tests::mcp::mcp_http_enforces_bearer_token_when_configured adapters::cli::tests::mcp::mcp_options_resolve_config_defaults_and_cli_overrides adapters::cli::tests::watch::unchanged_refresh_keeps_generation_but_explicit_build_still_publishes adapters::cli::tests::watch::watch_batch_coalesces_queued_events_into_follow_up_refresh adapters::cli::tests::watch::watch_batch_overflow_collapses_to_one_full_rescan_marker adapters::cli::tests::watch::watch_filter_always_admits_configuration_triggers adapters::cli::tests::watch::watch_filter_rejects_unsupported_files_when_unignored adapters::cli::tests::watch::watch_poll_backend_refreshes_after_create adapters::cli::tests::watch::watch_probe_discards_probe_events_and_queues_real_events adapters::cli::tests::watch::watch_rejects_legacy_v1_before_creating_probe adapters::install::tests::install_repository_upserts_separate_wiki_and_memory_workflows_in_both_instruction_files adapters::mcp::daemon::tests::reconciliation_is_idempotent_and_fails_closed_on_identity_mismatch adapters::mcp::dispatcher::tests::fast_reader_receives_large_response_within_write_deadline adapters::mcp::dispatcher::tests::partial_headers_and_bodies_expire_from_connection_acceptance adapters::mcp::http::tests::hook_deadline_is_clamped_and_includes_time_spent_receiving adapters::mcp::state::tests::entropy_failure_does_not_change_sessions adapters::mcp::tools::tests::mcp_specs_are_generated_from_registered_operation_metadata agent_hooks::tests::copilot_cache_claim_is_atomic_across_concurrent_tool_hooks agent_hooks::tests::copilot_native_payloads_infer_events_without_an_event_name agent_hooks::tests::missing_freshness_is_explicitly_advisory api::boundary_tests::command_subadapters_do_not_import_sibling_behavior api::boundary_tests::transport_adapters_use_only_the_public_api_facade api::catalog::tests::syntax_catalog_describes_css_stylesheet_nodes api::catalog::tests::syntax_catalog_distinguishes_typescript_and_tsx_grammars api::context::tests::bind_repo_selector_preserves_explicit_direct_path_spelling api::context::tests::dc_epoch_optional_direct_cleanup_keeps_both_runtime_selectors_readable_and_pending api::context::tests::install_config_deserializes_partial_mcp_defaults api::context::tests::resolve_runtime_reads_managed_v2_active_generation api::contracts::tests::public_materialization_lifecycle_and_refresh_requests_ignore_retired_fields api::core::tests::health_schema_documents_explicit_default_false_quiescence api::core::tests::operation_registry_is_unique_and_sorted api::core::tests::resolve_unknown_operation_is_none api::facade::tests::execute_operation_delegates_exactly_once api::lifecycle::tests::cloud_targets_require_public_https_without_exposing_loopback api::lifecycle::tests::dry_run_language_detection_recognizes_webassembly_case_insensitively api::lifecycle::tests::http_registration_can_be_inspected_renamed_and_removed api::lifecycle::tests::json_reject_different_leaves_existing_file_byte_identical api::lifecycle::tests::native_client_commands_preserve_every_server_argument api::lifecycle::tests::reinstall_activation_boundary_keeps_new_state_on_post_activation_failure api::lifecycle::tests::resolve_mcp_target_rejects_aggregate_unknown_and_invalid_scope_targets api::materialization::tests::committed_direct_graph_survives_deferred_artifact_collection api::materialization::tests::deferred_artifact_collection_preserves_unregistered_foreign_state api::materialization::tests::managed_native_postreconcile_active_change_remains_primary api::materialization::tests::prepublication_failures_close_managed_runs_and_clean_legacy_direct_run_state api::normalization::tests::agent_hook_selection_is_normalized_and_validated api::normalization::tests::prepare_operation_request_applies_canonical_registered_input_defaults api::presenter::tests::health_block_surfaces_refresh_error_and_retains_structured_payload api::refresh::owned_refresh_tests::refresh_owned_join_waits_for_resource_drop_without_early_stopped_or_status_lock api::refresh::tests::configuration_change_restarts_before_a_failed_refresh_attempt api::refresh::tests::poll_snapshot_keeps_default_config_trigger_outside_protected_source_selection api::refresh::tests::refresh_runtime_releases_direct_read_lease_before_entering_a_watch_loop api::refresh::tests::refresh_status_reports_configured_limits_and_worker_placeholders api::refresh::tests::watch_filter_never_admits_configured_storage_root artifact_store::tests::artifact_store_rejects_prior_format_envelopes artifact_store::tests::corrupt_existing_artifact_is_preserved_on_prepublication_failure artifact_store::tests::dc_origin_missing_payload_is_republished_without_adopting_retained_directory artifact_store::tests::dc_origin_parallel_parser_publications_both_retain_real_creation_receipts artifact_store::tests::streaming_partition_checksum_matches_the_legacy_canonical_payload coordinator::tests::ambiguous_operation_disconnect_is_not_replayed_or_retryable coordinator::tests::drain_waits_for_active_execution_after_the_caller_times_out coordinator::tests::follower_takes_over_after_owner_release coordinator::tests::joined_maintenance_driver::dc_joined_driver_start_limit_and_factory_failure_are_truthful coordinator::tests::maintenance_permit_blocks_real_execution_until_actual_drop coordinator::tests::refresh_owned_join::refresh_join_self_identity_survives_handle_taken_by_another_drainer coordinator::tests::refresh_owned_join::refresh_owner_executor_start_failure_and_stop_before_api_start_join_refresh db_writer::extensions::tests::supports_prebuilt_and_source_built_ladybug_extension_cache_versions db_writer::phase::tests::isolated_error_keeps_context_inside_the_cap db_writer::phase::tests::phase_registry_scope_restores_nested_and_unwound_contexts db_writer::phase::tests::scoped_phase_request_lives_outside_candidate_and_preserves_database_path db_writer::schema::tests::disabled_fts_filters_provided_extension_and_index_statements db_writer::tests::guarded_database_native_path_rejects_transforms_before_filesystem_effects db_writer::tests::guarded_database_windows_canonicalized_parent_native_use_retains_exclusion db_writer::tests::guarded_database_windows_preserves_disk_unc_and_canonical_namespace_spelling db_writer::tests::transient_database_retry_replays_operation_until_success +L865: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:36:51.0450197Z Running unittests src\lib.rs (target\native-tests\deps\codebase_graph-c56ba430bcacd3a9.exe) +L867: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:36:51.0606825Z running 89 tests +L875: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:36:59.3961399Z test adapters::cli::tests::dispatch_materialize::watch_help_documents_parallel_default_and_opt_out ... ok +L967: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:37:45.9238386Z test result: ok. 89 passed; 0 failed; 0 ignored; 0 measured; 738 filtered out; finished in 54.87s +L994: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) UNKNOWN STEP 2026-10-27T00:37:45.9865148Z native test command 1 finished in 55.174s: Ok(()) + +=== copy-trace-windows: job 121931861177 === +URL: https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861177 +Raw log: /tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931861177.log +L33: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:22:54.6190908Z Uses: rabii-chaarani/codebaseGraph/.github/workflows/native.yml@refs/pull/153/merge (af71103436086bff1189e67e0f5f03464e977bd4) +L36: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:22:54.6197139Z source-sha: af71103436086bff1189e67e0f5f03464e977bd4 +L44: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:22:54.7441857Z ref: af71103436086bff1189e67e0f5f03464e977bd4 +L104: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:22:59.2662212Z af71103436086bff1189e67e0f5f03464e977bd4 +L111: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:22:59.3544037Z [command]"C:\Program Files\Git\bin\git.exe" checkout --progress --force af71103436086bff1189e67e0f5f03464e977bd4 +L129: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:22:59.6303355Z HEAD is now at af71103 Merge d6dd34493e9da6f80847240bafcc92dbcaed2c38 into ca115690b226384164cf364458a0e3255b8908d3 +L131: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:22:59.6708402Z [command]"C:\Program Files\Git\bin\git.exe" log -1 --format=%H +L132: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:22:59.6981297Z af71103436086bff1189e67e0f5f03464e977bd4 +L384: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:29:12.3196362Z SOURCE_SHA: af71103436086bff1189e67e0f5f03464e977bd4 +L692: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:30:50.9130646Z Compiling codebase-graph v3.0.4 (D:\a\codebaseGraph\codebaseGraph) +L837: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:39:08.9481327Z Finished `native-tests` profile [optimized] target(s) in 9m 23s +L838: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:39:13.5289062Z native-test CLI compiler artifact: D:\a\_temp\native-test-cli-7336-1793061548995039300\codebase-graph.exe sha256=d44206b167a44b6c0dfe5215ed895cbe9bdc5fa72e44772754f9f3d933d2adac +L864: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:39:15.3281383Z Finished `native-tests` profile [optimized] target(s) in 0.20s +L2891: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:53:15.2177763Z native test command 2: cargo test --workspace --locked --profile native-tests --features codebase-graph/bundled-windows-extensions,k-wiki/bundled-windows-extensions --lib --bins --examples --no-fail-fast -- --exact adapters::cli::agent_hooks::tests::options_resolve_repo_local_config_by_default adapters::cli::tests::dispatch_materialize::git_diff_plan_scopes_to_changed_paths adapters::cli::tests::dispatch_materialize::materialize_help_is_product_command_help adapters::cli::tests::dispatch_materialize::materialize_parallel_flag_is_accepted_as_no_op adapters::cli::tests::dispatch_materialize::materialize_webassembly_source_root_without_profiles adapters::cli::tests::dispatch_materialize::plan_lists_rebuild_delete_skip_and_ignore_paths adapters::cli::tests::dispatch_materialize::retired_semantic_options_are_absent_from_all_materialization_help adapters::cli::tests::dispatch_materialize::setup_materializes_graph_and_writes_config adapters::cli::tests::graph::graph_architecture_queries_filters_by_group adapters::cli::tests::graph::graph_health_reports_native_database adapters::cli::tests::graph::graph_query_helpers_outputs_helper_catalog adapters::cli::tests::graph::graph_schema_outputs_block_and_json adapters::cli::tests::graph::setup_indexes_documented_language_defaults adapters::cli::tests::install::install_skips_materialization_when_graph_state_already_exists adapters::cli::tests::install::mcp_install_reports_copilot_studio_metadata adapters::cli::tests::install::reinstall_recreates_graph_state_and_materializes_again adapters::cli::tests::install::uninstall_removes_recorded_hooks_independent_of_mcp_client adapters::cli::tests::mcp::mcp_http_handles_initialize_list_call_and_protocol_errors adapters::cli::tests::mcp::mcp_stdio_refresh_policy_off_is_watcher_free adapters::cli::tests::watch::watch_auto_backend_refreshes_after_probe_resolution adapters::cli::tests::watch::watch_batch_counts_filtered_paths_without_retaining_them adapters::cli::tests::watch::watch_batch_propagates_watcher_errors adapters::cli::tests::watch::watch_filter_honors_ignore_config_and_cli_excludes adapters::cli::tests::watch::watch_materialize_options_accept_single_thread_opt_out adapters::cli::tests::watch::watch_poll_batch_flushes_under_sustained_churn adapters::cli::tests::watch::watch_probe_discards_verbatim_absolute_probe_events adapters::cli::watch::command::tests::watch_error_reason_compacts_multiline_errors adapters::mcp::daemon::tests::failure_snapshot_is_bounded_private_and_replaced_atomically adapters::mcp::daemon::tests::service_manifests_quote_paths_and_request_single_instance_restart adapters::mcp::dispatcher::tests::header_parser_preserves_absolute_content_length_without_body_buffering adapters::mcp::dispatcher::tests::response_deadline_is_absolute_even_when_a_peer_never_reads adapters::mcp::http::tests::hook_deadline_rejects_malformed_or_unbounded_tools adapters::mcp::state::tests::generated_session_id_collision_does_not_change_sessions adapters::mcp::tools::tests::public_errors_map_to_mcp_failures_without_changing_codes agent_hooks::tests::copilot_cache_claim_lock_is_stable_and_survives_purge agent_hooks::tests::hook_target_paths_are_repository_local agent_hooks::tests::multi_client_reconciliation_preflights_every_file_before_writing api::boundary_tests::mcp_tools_leave_product_request_and_refresh_policy_in_the_api api::catalog::support::tests::declared_schema_includes_ordered_syntax_relationship_columns api::catalog::tests::syntax_catalog_describes_html_document_nodes api::catalog::tests::syntax_catalog_rejects_missing_and_unsupported_languages api::context::tests::bind_repo_selector_rejects_managed_root_config_mismatch api::context::tests::dc_epoch_optional_managed_cleanup_keeps_runtime_readable_and_pending api::context::tests::repository_identity_rejects_config_direct_path_rebind api::context::tests::resolve_runtime_recovers_direct_pair_before_returning_read_lease api::contracts::tests::public_operation_contracts_round_trip_without_transport_types api::core::tests::legacy_materialize_rejects_but_plan_is_still_allowed api::core::tests::refresh_health_classification_requires_live_acknowledged_reconciliation api::core::tests::syntax_operation_publishes_the_selected_language_catalog api::facade::tests::facade_dispatches_each_request_exactly_once api::lifecycle::tests::codex_toml_block_round_trips_windows_style_arguments api::lifecycle::tests::hermes_install_migrates_singular_marker_blocks_without_dropping_existing_entries api::lifecycle::tests::http_registration_migrates_only_the_recognized_stdio_entry api::lifecycle::tests::managed_instruction_block_replaces_stale_guidance_and_preserves_surrounding_text api::lifecycle::tests::refresh_failure_classifier_retries_source_changes_and_worker_exit api::lifecycle::tests::reinstall_activation_boundary_restores_backup_on_activation_failure api::lifecycle::tests::resolve_mcp_target_treats_explicit_paths_inside_repo_as_local_and_outside_as_shared api::materialization::tests::committed_direct_graph_survives_real_workspace_cleanup_failure api::materialization::tests::direct_abort_retains_candidate_staging_and_phase_evidence_while_lease_is_held api::materialization::tests::managed_native_verification_snapshot_drops_before_writer_release api::materialization::tests::public_materialization_request_preserves_transport_fields_without_preparation api::normalization::tests::health_confirmation_defaults_false_and_accepts_only_explicit_booleans api::normalization::tests::validate_request_rejects_invalid_operation_rules_before_execution api::presenter::tests::selected_output_format_presents_typed_or_block_response api::refresh::owned_refresh_tests::refresh_owned_precancelled_startup_skips_resolution_and_resources api::refresh::tests::configuration_fingerprint_detects_same_size_replacement api::refresh::tests::refresh_execution_plan_reresolves_managed_v2_active_generation api::refresh::tests::refresh_runtime_releases_startup_read_lease_before_entering_a_watch_loop api::refresh::tests::scheduler_waits_for_the_announced_blocked_retry_deadline api::registry::tests::registry_is_sorted_unique_and_advertises_exact_mcp_surface artifact_store::tests::artifact_store_rejects_wrong_expected_content artifact_store::tests::dc_origin_actual_fresh_publication_reuse_bounded_receipt_and_old_load_no_attestation artifact_store::tests::dc_origin_missing_payload_refuses_unstamped_or_spoofed_receipt_birth artifact_store::tests::dc_origin_unproven_empty_or_different_canonical_is_never_moved_or_overwritten artifact_store::tests::transient_fallback_selects_only_explicit_canonical_payload_conflict coordinator::tests::caller_deadline_does_not_release_the_real_execution_permit coordinator::tests::elapsed_receive_deadline_is_not_extended_by_trickled_frame_bytes coordinator::tests::joined_maintenance_driver::dc_joined_driver_advisory_finish_allows_real_requests_then_drops_work_before_recovery coordinator::tests::joined_maintenance_driver::dc_joined_driver_stop_or_rebind_winning_postpermit_gate_has_no_mutation coordinator::tests::maintenance_permit_is_exclusive_during_simultaneous_grant_requests coordinator::tests::refresh_owned_join::refresh_join_two_drainers_wait_for_payload_drop_and_wake_after_unwind coordinator::tests::request_receive_failure_is_retryable_before_dispatch db_writer::phase::tests::copy_trace_metadata_reports_generated_file_bytes db_writer::phase::tests::oversized_native_error_preserves_query_vs_explicit_checkpoint_boundary db_writer::phase::tests::phase_request_v2_preserves_thread_setting db_writer::rss::tests::allocator_pressure_relief_is_safe_at_phase_boundaries db_writer::schema::tests::extension_setup_is_always_pre_copy db_writer::tests::guarded_database_native_path_rejects_unsupported_windows_prefixes db_writer::tests::guarded_database_windows_encoding_policy_checks_the_complete_native_path db_writer::tests::native_writer_loads_json_staging_through_ladybug_copy db_writer::write::tests::isolated_phase_schedule_stops_after_first_error_without_replay +L2917: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:53:15.4801617Z Running unittests src\lib.rs (target\native-tests\deps\codebase_graph-c56ba430bcacd3a9.exe) +L2919: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:53:15.4802242Z running 89 tests +L3022: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:54:33.5239111Z test db_writer::phase::tests::copy_trace_metadata_reports_generated_file_bytes ... ok +L3032: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:54:34.0245589Z test result: ok. 89 passed; 0 failed; 0 ignored; 0 measured; 738 filtered out; finished in 78.54s +L3060: native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) UNKNOWN STEP 2026-10-27T00:54:34.0871066Z native test command 2 finished in 78.861s: Ok(()) + +=== isolated-worker-windows: job 121931861293 === +URL: https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861293 +Raw log: /tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931861293.log +L33: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:22:55.9685628Z Uses: rabii-chaarani/codebaseGraph/.github/workflows/native.yml@refs/pull/153/merge (af71103436086bff1189e67e0f5f03464e977bd4) +L36: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:22:55.9692088Z source-sha: af71103436086bff1189e67e0f5f03464e977bd4 +L44: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:22:56.1580604Z ref: af71103436086bff1189e67e0f5f03464e977bd4 +L104: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:23:01.5147479Z af71103436086bff1189e67e0f5f03464e977bd4 +L111: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:23:01.5893781Z [command]"C:\Program Files\Git\bin\git.exe" checkout --progress --force af71103436086bff1189e67e0f5f03464e977bd4 +L129: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:23:01.9012567Z HEAD is now at af71103 Merge d6dd34493e9da6f80847240bafcc92dbcaed2c38 into ca115690b226384164cf364458a0e3255b8908d3 +L131: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:23:01.9447554Z [command]"C:\Program Files\Git\bin\git.exe" log -1 --format=%H +L132: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:23:01.9726529Z af71103436086bff1189e67e0f5f03464e977bd4 +L384: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:29:25.2245075Z SOURCE_SHA: af71103436086bff1189e67e0f5f03464e977bd4 +L692: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:31:06.1026408Z Compiling codebase-graph v3.0.4 (D:\a\codebaseGraph\codebaseGraph) +L837: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:39:21.1415399Z Finished `native-tests` profile [optimized] target(s) in 9m 23s +L838: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:39:25.7232060Z native-test CLI compiler artifact: D:\a\_temp\native-test-cli-8036-1793061561174106800\codebase-graph.exe sha256=c9839f2b76302c6d9bfbb66db6e276b4bd8e8bde3f6361700aa785eee5bc1d9d +L839: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:42:36.5004249Z native test command 1: cargo test --locked --profile native-tests --features codebase-graph/bundled-windows-extensions --package codebase-graph --test agent_hooks_process --test auto_repo_root --test coordinator_process --test copy_phase_process --test http_admission_process --test http_daemon_process --test native_request_identity --test refresh_recovery_process --test storage_foundation --test storage_maintenance --no-fail-fast -- --exact build_and_plan_auto_detect_git_root_from_nested_directory copilot_cached_context_claim_lock_is_process_safe direct_committed_registered_pair_reads_after_publication direct_recovery_replays_every_rename_and_checkpoint direct_write_session_holds_writer_lock_and_drop_cleans_unpublished_candidates final_containment_verification_requires_prior_retirement_without_writing fixture::workload::tests::oracle_rejects_missing_response_fields_and_preserves_context_multiplicity health_preserves_legacy_fields_and_marks_unobserved_maintenance_unknown initial_build_retry_requires_exact_transient_and_empty_cleanup isolated_worker_first_creation_and_followup_keep_same_covered_publication_birth lifecycle_faults::authenticated_cancellation_cleans_loader_and_retries_pending_edit lifecycle_faults::fixture_cleanup_keeps_unproven_or_locked_containment lifecycle_faults::owner_exit_after_state_before_start_cleans_gated_tree lifecycle_faults::standalone_owner_loss_preserves_candidate_while_guardian_is_unavailable managed_begin_write_holds_writer_lock_and_marks_candidate_ready_explicitly managed_cleanup_recovers_publishing_crash_before_generation_rename managed_metadata_sizes_include_db_sidecars_and_allocated_bytes managed_store_rejects_untrusted_generation_ids missing_lease_with_any_launch_evidence_remains_unknown one_http_daemon_serves_multiple_sessions_and_rejects_duplicate_owner phase_registry_collection_retains_unknown_siblings_then_reclaims_empty_orphans process_lifecycle::tests::retired_startup_rejects_late_guardian_before_child_creation process_lifecycle::windows::tests::private_file_is_exclusive_noninherited_and_has_protected_dacl process_rss::tests::allocator_pressure_relief_is_safe_at_phase_boundaries relative_barrier_subprocess_fixture run_workspace_cleanup_rejects_symlink_content storage::containment::tests::windows_job_name_does_not_expose_or_depend_on_control_nonce storage::inventory::tests::configured_ancestor_root_is_rejected_without_scanning_sources storage::inventory::tests::dc_s1_a3_invalid_pointer_and_foreign_direct_are_retained storage::inventory::tests::dc_s1_windows_prefix_only_malformed_roots_are_rejected_without_io storage::inventory::tests::recognized_direct_pair_uses_repository_identity storage::inventory::tests::review_configured_storage_cannot_be_overridden_with_unselected_local_root storage::inventory::tests::review_explicit_direct_alongside_managed_is_current storage::inventory::tests::review_managed_root_inside_direct_cache_is_rejected storage::locks::fixed_control_tests::dc_control_scratch_uses_small_worker_frame_and_retains_reserved_path_storage storage::locks::fixed_control_tests::dc_fixed_stamp_path_free_lock_release_and_identity_composition storage::locks::rooted_directory_tests::dc_directory_hints_keep_verified_directories_and_reject_file_aliases storage::locks::rooted_directory_tests::dc_rooted_namespace_no_replace_and_exact_empty_removal_preserve_foreign_entries storage::locks::rooted_directory_tests::metadata_nonce_remains_readable_under_an_exclusive_owner storage::maintenance_admission::tests::canonical_large_registry_is_bounded_nonmutating_and_unknown_siblings_survive storage::maintenance_admission::tests::canonical_small_grant_and_panic_drop_actual_authority_before_work storage::maintenance_admission::tests::local_epoch_invalidates_current_counter_while_unrelated_shared_producer_stays_live storage::maintenance_admission::tests::private_metadata_partial_frame_and_reset_preserve_unknown_bytes storage::maintenance_admission::tests::target_binding_duplicate_retains_actual_legacy_objects_and_same_challenge storage::maintenance_budget::tests::dc_memory_box_fieldwise_large_initialization_is_charged_and_drops_once storage::maintenance_budget::tests::dc_memory_split_failure_and_account_lifetime storage::maintenance_controls::tests::dc_control_independent_regions_recover_every_partial_write_cut storage::maintenance_json::tests::dc_json_low_ceiling_releases_failed_construction storage::maintenance_legacy_guard::source_observation_layout_tests::prepared_source_observation_keeps_snapshot_and_recovery_images_boxed storage::maintenance_origin::tests::dc_origin_actual_creation_frames_interrupted_publication_and_torn_prefix storage::maintenance_origin::workspace_origin_tests::workspace_frames_bind_exact_creation_and_completed_bytes storage::maintenance_ownership::tests::dc_epoch_collector_composes_owned_exclusive_root_without_reacquisition storage::maintenance_ownership::tests::dc_epoch_initial_creator_excludes_fresh_coverage_until_effects_finish storage::maintenance_ownership::tests::dc_epoch_missing_or_unwritable_control_never_repairs_recognized_proof storage::maintenance_ownership::tests::dc_epoch_optional_managed_cleanup_preserves_committed_read_and_residue storage::maintenance_ownership::tests::dc_epoch_scoped_run_lifetime_and_orphan_removal_invalidate storage::maintenance_ownership::tests::dc_fixed_epoch_cohort_or_control_replacement_rejects_before_effect storage::maintenance_ownership::tests::dc_fixed_epoch_preparation_delay_does_not_consume_fresh_mutation_grant storage::maintenance_ownership::tests::dc_fixed_epoch_stale_preparation_never_adopts_an_unrelated_increment storage::maintenance_ownership::tests::dc_s2_cohort_unknown_or_corrupt_creation_header_never_repairs_on_use_or_observation storage::maintenance_ownership::tests::dc_s2_exact_borrowed_writer_requires_exclusive_exact_destination storage::maintenance_ownership::tests::dc_s2_family_group_deduplicates_same_parent_and_retains_all_guards storage::maintenance_ownership::tests::dc_s2_family_replaced_parent_incarnation_invalidates_held_use storage::maintenance_ownership::tests::dc_s2_inventory_cohort_observer_is_noncreating_and_validates_lock_identity storage::maintenance_ownership::tests::dc_s2_optional_producer_capability_never_repairs_untracked_or_corrupt_proof storage::maintenance_ownership::tests::dc_s2_producer_capability_borrows_live_tracked_root_and_activity storage::maintenance_ownership::tests::dc_s2_replaced_writer_inode_does_not_validate_borrowed_authority storage::maintenance_ownership::tests::dc_s2_review_publication_proof_does_not_bless_legacy_destination_or_sibling storage::maintenance_ownership::tests::dc_s2_shared_manifest_registration_across_database_parents_is_retained storage::maintenance_ownership::tests::dc_s2_workspace_live_output_prevents_terminal_and_preserves_root storage::maintenance_ownership::tests::dc_workspace_root_removal_unknown_sibling_never_starts_intent storage::maintenance_projection::tests::dc_projection_requires_complete_object_and_preserves_loader_depth_errors storage::maintenance_projection::tests::projection_rejects_changed_content_when_the_metadata_stamp_matches storage::managed::transaction_janitor_tests::managed_absent_read_probe_preserves_genuine_first_producer_root_creation storage::managed::transaction_janitor_tests::managed_typed_ambiguous_pointer_error_retains_bytes_and_requires_durability_recovery storage::managed::transaction_janitor_tests::managed_typed_recovery_accepts_staged_only_and_published_only_seams storage::run_workspace::tests::confined_run_cleanup_is_idempotent unrelated_worker_pid_fixture +L995: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:49:20.0240858Z Running tests\storage_maintenance.rs (target\native-tests\deps\storage_maintenance-3a0b83c19e697dd3.exe) +L997: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:49:20.0393851Z running 3 tests +L1000: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:50:24.7300571Z test isolated_worker_first_creation_and_followup_keep_same_covered_publication_birth ... ok +L1002: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:50:24.7302146Z test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 9 filtered out; finished in 64.69s +L1004: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) UNKNOWN STEP 2026-10-27T00:50:24.7425721Z native test command 1 finished in 468.247s: Ok(()) + +=== actual-contention-windows: job 121931860919 === +URL: https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860919 +Raw log: /tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931860919.log +L33: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:22:54.6145735Z Uses: rabii-chaarani/codebaseGraph/.github/workflows/native.yml@refs/pull/153/merge (af71103436086bff1189e67e0f5f03464e977bd4) +L36: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:22:54.6154288Z source-sha: af71103436086bff1189e67e0f5f03464e977bd4 +L44: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:22:54.7493356Z ref: af71103436086bff1189e67e0f5f03464e977bd4 +L104: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:22:59.8868636Z af71103436086bff1189e67e0f5f03464e977bd4 +L111: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:22:59.9629314Z [command]"C:\Program Files\Git\bin\git.exe" checkout --progress --force af71103436086bff1189e67e0f5f03464e977bd4 +L129: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:23:00.2497714Z HEAD is now at af71103 Merge d6dd34493e9da6f80847240bafcc92dbcaed2c38 into ca115690b226384164cf364458a0e3255b8908d3 +L131: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:23:00.3089281Z [command]"C:\Program Files\Git\bin\git.exe" log -1 --format=%H +L132: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:23:00.3377364Z af71103436086bff1189e67e0f5f03464e977bd4 +L383: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:29:20.5888662Z SOURCE_SHA: af71103436086bff1189e67e0f5f03464e977bd4 +L691: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:31:01.1941614Z Compiling codebase-graph v3.0.4 (D:\a\codebaseGraph\codebaseGraph) +L836: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:39:38.9344635Z Finished `native-tests` profile [optimized] target(s) in 9m 44s +L837: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:39:43.5320699Z native-test CLI compiler artifact: D:\a\_temp\native-test-cli-4600-1793061578984576700\codebase-graph.exe sha256=095d8e5fe195215e1250c876325af5903281a3b90bb3fe51706dcafe2e3a7400 +L838: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:42:57.2859201Z native test command 1: cargo test --locked --profile native-tests --features codebase-graph/bundled-windows-extensions --package codebase-graph --test agent_hooks_process --test auto_repo_root --test coordinator_process --test copy_phase_process --test http_admission_process --test http_daemon_process --test native_request_identity --test refresh_recovery_process --test storage_foundation --test storage_maintenance --no-fail-fast -- --exact bound_native_request_source_mismatch_is_rejected_before_direct_publication config_only_daemon_from_unrelated_cwd_tracks_source_changes direct_committed_read_preserves_corrupt_registration direct_phase_unknown_preserves_base_and_blocks_publish_replay_and_cleanup direct_store_recovers_interrupted_publication_with_sidecars_and_split_parents error::tests::source_change_failure_has_a_stable_machine_readable_message fixture::process::tests::covered_epoch_observer_retries_actual_contention_until_release fixture::workload::tests::search_oracle_omits_only_incarnation_ids_and_keeps_rank_spans_and_content http_daemon_restart_recovers_sessions_without_reusing_old_ids install_auto_detects_git_root_from_nested_directory legacy_memory_fields_do_not_block_refresh_of_larger_source lifecycle_faults::fixture_cleanup_accepts_only_unlocked_empty_preexecution_lease lifecycle_faults::manual_publication_waits_for_failed_phase_tree_to_exit lifecycle_faults::owner_exit_cleans_paused_worker_and_loader_before_recovery lifecycle_faults::verified_abandoned_guardian_is_terminated_before_automatic_refresh managed_cleanup_recovers_publishing_crash_after_active_pointer_write managed_control_lock_paths_are_stable_and_role_scoped managed_publish_reconciles_an_error_after_active_pointer_commit manual_publication_does_not_prevent_later_legacy_pid_recovery native_phase_owner_death_preserves_prior_graph_and_retries_without_source_edit persisted_relative_barrier_survives_cleanup_from_a_different_process_cwd process_lifecycle::tests::accepted_nonblocking_socket_is_normalized_for_control_frames process_lifecycle::tests::workspace_without_global_state_remains_protected_by_guardian_lease process_lifecycle::windows::tests::quoting_preserves_unpaired_surrogates_and_rejects_nul prompt_hook_uses_one_loopback_session_for_health_and_semantic_search repeated_health_entries_preserve_source_and_foreign_sentinels standalone_native_request_uses_its_source_root_from_an_unrelated_cwd storage::inventory::tests::bounded_detailed_inventory_retains_overdeep_state_and_reports_unknown_totals storage::inventory::tests::dc_s1_a2_missing_and_dropped_observations_do_not_create_or_repair storage::inventory::tests::dc_s1_windows_canonical_prefix_is_probed_only_as_complete_root storage::inventory::tests::dc_s1_windows_root_prefix_fix_keeps_symlink_ancestor_rejection storage::inventory::tests::review_case_alias_roots_are_rejected_without_double_counting storage::inventory::tests::review_default_direct_only_is_current_graph_and_cache storage::inventory::tests::review_external_current_direct_config_observes_exact_bundle_without_local_state storage::inventory::tests::review_real_directory_dot_parent_config_paths_remain_supported storage::locks::fixed_control_tests::dc_fixed_stamp_facts_cross_threads_but_actual_authority_cannot storage::locks::fixed_control_tests::dc_fixed_stamp_same_length_write_with_restored_mtime_stays_changed storage::locks::rooted_directory_tests::dc_rooted_component_validation_is_noncreating_and_accepts_exact_key64 storage::locks::rooted_directory_tests::dc_rooted_readonly_payload_access_needs_no_payload_write_permission storage::locks::rooted_directory_tests::namespace_flush_accepts_an_existing_readonly_directory_anchor storage::maintenance_admission::tests::canonical_metadata_composition_rejects_another_root_before_callback storage::maintenance_admission::tests::legacy_request_source_missing_cache_is_noncreating_and_cannot_approve_later_birth storage::maintenance_admission::tests::private_metadata_composes_actual_owned_root_without_reacquisition storage::maintenance_admission::tests::private_metadata_stages_over_one_hundred_frames_without_advancing_source_epoch storage::maintenance_budget::tests::dc_memory_box_alignment_exact_charge_and_drop_order storage::maintenance_budget::tests::dc_memory_checks_layout_overflow_and_duplicate_buffers storage::maintenance_controls::factory_codec_tests::dc_control_binding_modes_are_explicit_and_reserve_unknown_bytes storage::maintenance_json::tests::dc_json_differential_producer_whitespace_hash storage::maintenance_json::tests::dc_json_rejects_malformed_trailing_utf8_and_matches_loader_depth storage::maintenance_legacy_guard::tests::dc_legacy_staging_custom_root_is_not_enrolled_or_created storage::maintenance_origin::workspace_origin_tests::workspace_control_binds_only_two_exact_names_and_never_complete storage::maintenance_ownership::legacy_coverage::staged_gate_tests::staged_generation_gate_authenticates_each_restart_prefix_until_activation storage::maintenance_ownership::tests::dc_epoch_direct_recovery_invalidates_and_idle_read_does_not storage::maintenance_ownership::tests::dc_epoch_managed_recovery_promotion_invalidates_before_references_change storage::maintenance_ownership::tests::dc_epoch_observer_is_noncreating_and_does_not_advance storage::maintenance_ownership::tests::dc_epoch_root_creation_nonce_is_bound_beyond_recycled_numeric_metadata storage::maintenance_ownership::tests::dc_fixed_epoch_activity_contention_returns_and_preserves_caller_ownership storage::maintenance_ownership::tests::dc_fixed_epoch_exact_compare_precedes_increment_and_retains_real_controls storage::maintenance_ownership::tests::dc_fixed_epoch_rejects_shared_writer_and_shared_root_without_reacquiring_them storage::maintenance_ownership::tests::dc_s2_cache_consumer_is_existing_readonly_and_does_not_advance_or_decode_optional_proof storage::maintenance_ownership::tests::dc_s2_direct_borrowed_session_truthfully_defers_active_companions storage::maintenance_ownership::tests::dc_s2_factory_creates_bound_fixed_names_before_tracked_producer_use storage::maintenance_ownership::tests::dc_s2_family_producer_conversion_holds_parent_until_session_release storage::maintenance_ownership::tests::dc_s2_fresh_creation_header_is_bound_and_really_downgraded_to_shared storage::maintenance_ownership::tests::dc_s2_managed_borrowed_session_defers_active_reference_use_without_deadlock storage::maintenance_ownership::tests::dc_s2_preexisting_root_never_becomes_modern_from_guard_acquisition storage::maintenance_ownership::tests::dc_s2_publication_nonce_proof_is_optional_but_never_numeric_only storage::maintenance_ownership::tests::dc_s2_review_legacy_database_new_cache_requires_destination_migration_proof storage::maintenance_ownership::tests::dc_s2_review_windows_case_alias_shares_resource_coordination storage::maintenance_ownership::tests::dc_s2_worker_launch_evidence_without_lifecycle_is_unknown storage::maintenance_ownership::tests::dc_s2_writer_worker_and_startup_contention_are_nonblocking storage::maintenance_projection::tests::dc_projection_matches_current_config_scalars_duplicates_and_escaped_keys storage::maintenance_projection::tests::dc_projection_validates_long_ignored_numbers_like_ordinary_loader_without_cutoff storage::maintenance_retirement::tests::direct_marker_record_generation_and_corruption_are_checked storage::managed::transaction_janitor_tests::managed_read_recovery_does_not_recreate_a_partially_retired_run_lease storage::managed::transaction_janitor_tests::managed_typed_merge_preserves_first_issue_with_a_complete_latest_report storage::run_workspace::retain_recovery_tests::retain_for_recovery_preserves_journal_and_payload_but_releases_actual_lease twenty_mcp_clients_share_one_coordinator_worker_and_take_over +L990: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:57:06.4910051Z Running tests\storage_maintenance.rs (target\native-tests\deps\storage_maintenance-3a0b83c19e697dd3.exe) +L992: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:57:06.4910802Z running 4 tests +L993: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:57:06.6173135Z test fixture::process::tests::covered_epoch_observer_retries_actual_contention_until_release ... ok +L998: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:57:26.4303482Z test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 8 filtered out; finished in 19.94s +L1000: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) UNKNOWN STEP 2026-10-27T00:57:26.4456489Z native test command 1 finished in 869.172s: Ok(()) + +=== missing-serial-lock-windows: job 121931861193 === +URL: https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861193 +Raw log: /tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931861193.log +L33: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:22:55.9849260Z Uses: rabii-chaarani/codebaseGraph/.github/workflows/native.yml@refs/pull/153/merge (af71103436086bff1189e67e0f5f03464e977bd4) +L36: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:22:55.9855593Z source-sha: af71103436086bff1189e67e0f5f03464e977bd4 +L44: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:22:56.1121308Z ref: af71103436086bff1189e67e0f5f03464e977bd4 +L104: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:23:01.3678055Z af71103436086bff1189e67e0f5f03464e977bd4 +L111: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:23:01.4422757Z [command]"C:\Program Files\Git\bin\git.exe" checkout --progress --force af71103436086bff1189e67e0f5f03464e977bd4 +L129: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:23:01.7189084Z HEAD is now at af71103 Merge d6dd34493e9da6f80847240bafcc92dbcaed2c38 into ca115690b226384164cf364458a0e3255b8908d3 +L131: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:23:01.7775026Z [command]"C:\Program Files\Git\bin\git.exe" log -1 --format=%H +L132: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:23:01.8056957Z af71103436086bff1189e67e0f5f03464e977bd4 +L385: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:29:23.8344151Z SOURCE_SHA: af71103436086bff1189e67e0f5f03464e977bd4 +L693: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:31:05.6267889Z Compiling codebase-graph v3.0.4 (D:\a\codebaseGraph\codebaseGraph) +L838: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:39:33.0590399Z Finished `native-tests` profile [optimized] target(s) in 9m 36s +L839: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:39:37.6734796Z native-test CLI compiler artifact: D:\a\_temp\native-test-cli-4804-1793061573122463500\codebase-graph.exe sha256=b7a51d019091e868e5796f1936b7e47705d2c365777449948a71355e0c363c4d +L840: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:42:59.4856587Z native test command 1: cargo test --locked --profile native-tests --features codebase-graph/bundled-windows-extensions --package codebase-graph --test agent_hooks_process --test auto_repo_root --test coordinator_process --test copy_phase_process --test http_admission_process --test http_daemon_process --test native_request_identity --test refresh_recovery_process --test storage_foundation --test storage_maintenance --no-fail-fast -- --exact atomic_write_failure_preserves_existing_file_and_cleans_temp config_hot_reload_applies_excludes_while_cli_policy_and_backend_overrides_persist copilot_cloud_environment_is_an_explicit_noop direct_control_lock_paths_are_stable_and_destination_scoped direct_store_recovers_database_manifest_and_committed_journal_phases empty_prelease_startup_is_retired_and_does_not_block_next_writer fixture::process::tests::covered_epoch_observer_propagates_missing_serial_lock fixture::workload::tests::schedule_covers_twenty_updates_and_each_required_interruption_boundary http_admission_bounds_idle_clients_and_expires_stalled_requests install_all_clients_preserves_foreign_hooks_and_is_idempotent jumbo_staged_row_survives_real_copy_and_fresh_process_read lifecycle_faults::control_reply_does_not_wait_for_connection_eof lifecycle_faults::loader_allocation_is_observed_without_resource_budget_cancellation lifecycle_faults::owner_exit_before_guardian_readiness_cleans_gated_tree lifecycle_faults::unavailable_guardian_preserves_paused_tree_evidence_until_emptiness_is_proven managed_cleanup_recovers_published_crash_after_active_pointer_write managed_cleanup_reports_and_later_removes_locked_runs managed_phase_unknown_preserves_candidate_and_active_read_until_empty managed_writer_is_serialized_across_sessions native_copy_acknowledgement_failure_preserves_managed_and_direct_bundles owned_writer_cleanup_reports_readers_and_collects_after_their_release phase_registry_probe_never_recreates_missing_roots_or_locks process_lifecycle::tests::slow_trickle_cannot_extend_control_frame_deadline process_lifecycle::windows::tests::quoting_preserves_empty_quotes_and_trailing_backslashes process_rss::tests::sampler_reports_current_process_memory_charge relative_registry_probe_matches_absolute_private_descriptor runner_fail_open_handles_malformed_oversized_and_missing_daemon_inputs storage::containment::tests::windows_job_name_rejects_malformed_build_identity storage::inventory::tests::dc_s1_a1_classifies_and_counts_active_live_recovery_and_legacy storage::inventory::tests::dc_s1_a4_repeat_observation_is_deterministic storage::inventory::tests::dc_s1_windows_prefix_only_unavailable_unc_root_is_rejected storage::inventory::tests::review_bound_external_store_survives_missing_conventional_state storage::inventory::tests::review_current_configuration_is_revalidated_on_every_observation storage::inventory::tests::review_external_config_requires_matching_repository_binding storage::inventory::tests::review_raw_config_direct_spelling_selects_matching_cache storage::locks::fixed_control_tests::dc_coordination_nonce_initializes_only_exclusive_empty_creation_and_is_immutable storage::locks::fixed_control_tests::dc_fixed_stamp_rejects_in_place_change_and_new_public_incarnation storage::locks::rooted_directory_tests::dc_nonce_promotion_requires_the_exact_existing_creation_tag storage::locks::rooted_directory_tests::dc_rooted_nonfollowing_open_rejects_symlinks_and_hardlinked_controls storage::locks::rooted_directory_tests::metadata_validation_preserves_private_creator_sharing_and_identity storage::maintenance_admission::tests::canonical_live_producer_is_nonblocking_and_preparation_does_not_spend_grant storage::maintenance_admission::tests::canonical_stale_epoch_and_changed_config_never_enter_callback storage::maintenance_admission::tests::private_metadata_composes_actual_canonical_root_and_selector_without_reacquisition storage::maintenance_admission::tests::private_metadata_resumes_each_durable_control_cut_from_same_bound_files storage::maintenance_budget::tests::dc_grant_zero_entry101_deadline_and_atomic_transition storage::maintenance_budget::tests::dc_memory_box_into_inner_transfers_drop_once_and_releases_exact_charge storage::maintenance_budget::tests::dc_memory_work_types_cross_threads storage::maintenance_controls::tests::dc_control_invalid_witnesses_and_unrelated_generations_stay_unknown storage::maintenance_json::tests::dc_json_producer_defaults_and_nonfinite_are_only_facts storage::maintenance_legacy_guard::tests::dc_legacy_staging_closed_record_refuses_new_actual_producer storage::maintenance_origin::tests::dc_origin_frames_fail_closed_on_wrong_key_scope_identity_and_extra_bytes storage::maintenance_origin::workspace_origin_tests::workspace_matching_partial_completion_is_creation_only storage::maintenance_ownership::tests::dc_epoch_crash_before_effect_invalidates_prior_snapshot storage::maintenance_ownership::tests::dc_epoch_managed_publication_reader_drop_and_generation_removal storage::maintenance_ownership::tests::dc_epoch_new_cache_cannot_initialize_old_reference_domain storage::maintenance_ownership::tests::dc_epoch_retained_observation_does_not_block_current_writer_or_reader storage::maintenance_ownership::tests::dc_epoch_unassociated_old_orphan_is_preserved_without_repair storage::maintenance_ownership::tests::dc_fixed_epoch_complete_effect_reservation_allows_its_last_reserved_entry storage::maintenance_ownership::tests::dc_fixed_epoch_preparation_is_noncreating_and_rejects_exhausted_or_oversized_controls storage::maintenance_ownership::tests::dc_fixed_epoch_zero_and_short_grants_have_no_epoch_effect storage::maintenance_ownership::tests::dc_s2_current_v2_receipt_and_unknown_v1_follow_existing_guardian_policy storage::maintenance_ownership::tests::dc_s2_external_bound_managed_store_does_not_require_local_state storage::maintenance_ownership::tests::dc_s2_family_group_handles_distinct_parents_and_duplicate_resource_keys storage::maintenance_ownership::tests::dc_s2_family_windows_shared_readonly_coordination_requires_no_write_permission storage::maintenance_ownership::tests::dc_s2_legacy_cohort_v1_is_not_upgraded_by_read_or_guard_acquisition storage::maintenance_ownership::tests::dc_s2_owned_state_transition_never_waits_or_holds_state_during_validation storage::maintenance_ownership::tests::dc_s2_producer_capability_uses_actual_borrowed_exclusive_root storage::maintenance_ownership::tests::dc_s2_review_hardlinked_coordination_invalidates_held_authority storage::maintenance_ownership::tests::dc_s2_review_unreadable_windows_worker_state_is_unknown_and_preserved storage::maintenance_ownership::tests::dc_s2_waiter_on_detached_incarnation_cannot_write_fresh_public_root storage::maintenance_ownership::tests::dc_s2_workspace_terminal_admission_preserves_local_source_with_unrelated_producer storage::maintenance_projection::tests::dc_projection_decodes_utf8_surrogates_and_all_json_escapes_exactly storage::maintenance_projection::tests::dc_projection_streams_large_ignored_keys_values_and_limits_only_decoded_storage storage::maintenance_retirement::tests::direct_marker_fixed_slots_preserve_full_native_pair_identity storage::managed::transaction_janitor_tests::managed_read_recovery_closes_registered_run_without_replaying storage::managed::transaction_janitor_tests::managed_typed_generation_issue_never_preempts_required_replay_or_its_error storage::managed::transaction_janitor_tests::managed_typed_required_corrupt_or_missing_evidence_is_not_an_absent_alternative storage::run_workspace::tests::unanchored_persisted_barrier_cannot_authorize_orphan_cleanup verify_requires_a_managed_handler_for_every_required_event +L1009: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:53:26.5227121Z Running tests\storage_maintenance.rs (target\native-tests\deps\storage_maintenance-3a0b83c19e697dd3.exe) +L1011: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:53:26.5227697Z running 2 tests +L1012: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:53:26.5228474Z test fixture::process::tests::covered_epoch_observer_propagates_missing_serial_lock ... ok +L1015: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:53:26.5231286Z test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 10 filtered out; finished in 0.00s +L1017: native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) UNKNOWN STEP 2026-10-27T00:53:26.5380882Z native test command 1 finished in 627.057s: Ok(()) diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/hosted-case-verification.md b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/hosted-case-verification.md new file mode 100644 index 00000000..146a4654 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/hosted-case-verification.md @@ -0,0 +1,72 @@ +# PR #153 — hosted testcase verification + +- Run: [40426019260](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260); completed `success`; 22 / 22 jobs succeeded (from `hosted-ci-completed.json`). +- Run head: `d6dd34493e9da6f80847240bafcc92dbcaed2c38`. +- Actual tested checkout: synthetic PR merge `af71103436086bff1189e67e0f5f03464e977bd4`, not the bare head. Every downloaded job reports that full `source-sha`, checkout ref, and `git log -1` output. Checkout message: `Merge d6dd34493e9da6f80847240bafcc92dbcaed2c38 into ca115690b226384164cf364458a0e3255b8908d3`. +- Read-only retrieval: fresh completed logs fetched with `gh run view 40426019260 --repo rabii-chaarani/codebaseGraph --job --log`. No old run logs, source edits, CI reruns, or remote writes were used. + +## Actual testcase outcomes + +Each item has an explicit Rust harness `test ... ok` record, the relevant executable, a nonzero passed-test summary, and successful enclosing command. These are not inferred from green job status or filter/list output. + +| Platform / lane | Exact testcase | Result UTC | Job / raw-log line | +|---|---|---|---| +| macOS arm64 / unit | `adapters::cli::tests::dispatch_materialize::watch_help_documents_parallel_default_and_opt_out` | **PASS** `2026-10-27T00:29:50.6256800Z` | [121931860962](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860962), L699 | +| Windows x86_64 / unit, shard 4 | `adapters::cli::tests::dispatch_materialize::watch_help_documents_parallel_default_and_opt_out` | **PASS** `2026-10-27T00:36:59.3961399Z` | [121931860936](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860936), L875 | +| Windows x86_64 / unit, shard 1 | `db_writer::phase::tests::copy_trace_metadata_reports_generated_file_bytes` | **PASS** `2026-10-27T00:54:33.5239111Z` | [121931861177](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861177), L3022 | +| Windows x86_64 / integration, shard 4 | `isolated_worker_first_creation_and_followup_keep_same_covered_publication_birth` | **PASS** `2026-10-27T00:50:24.7300571Z` | [121931861293](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861293), L1000 | +| Windows x86_64 / integration, shard 2 | `fixture::process::tests::covered_epoch_observer_retries_actual_contention_until_release` | **PASS** `2026-10-27T00:57:06.6173135Z` | [121931860919](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860919), L993 | +| Windows x86_64 / integration, shard 1 | `fixture::process::tests::covered_epoch_observer_propagates_missing_serial_lock` | **PASS** `2026-10-27T00:53:26.5228474Z` | [121931861193](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861193), L1012 | + +**NOT_EXECUTED: none among the requested platform/test combinations.** The new Windows contention test executed on integration shard 2; missing-serial-lock executed on integration shard 1; the real isolated-worker test executed on integration shard 4. + +### Exact result records + +The following are verbatim timestamp-and-message suffixes from the saved logs; unchanged complete lines with job prefixes and original line numbers are in the per-case extracts. + +```text +2026-10-27T00:29:50.6256800Z test adapters::cli::tests::dispatch_materialize::watch_help_documents_parallel_default_and_opt_out ... ok +2026-10-27T00:36:59.3961399Z test adapters::cli::tests::dispatch_materialize::watch_help_documents_parallel_default_and_opt_out ... ok +2026-10-27T00:54:33.5239111Z test db_writer::phase::tests::copy_trace_metadata_reports_generated_file_bytes ... ok +2026-10-27T00:50:24.7300571Z test isolated_worker_first_creation_and_followup_keep_same_covered_publication_birth ... ok +2026-10-27T00:57:06.6173135Z test fixture::process::tests::covered_epoch_observer_retries_actual_contention_until_release ... ok +2026-10-27T00:53:26.5228474Z test fixture::process::tests::covered_epoch_observer_propagates_missing_serial_lock ... ok +``` + +## Command and binary provenance + +- macOS unit command 1 (L663): `cargo test --workspace --locked --profile native-tests --lib --bins --examples`; unfiltered. Test executable: `target/native-tests/deps/codebase_graph-bfdd253a54eaf67a`. Its summary: `840 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out`. +- Windows unit shard 4 command 1 (L839) and unit shard 1 command 2 (L2891): `cargo test --workspace --locked --profile native-tests --features codebase-graph/bundled-windows-extensions,k-wiki/bundled-windows-extensions --lib --bins --examples --no-fail-fast -- --exact `. Each requested exact filter is present. Both use `target\native-tests\deps\codebase_graph-c56ba430bcacd3a9.exe`; each relevant harness reports `89 passed; 0 failed; 0 ignored; 0 measured; 738 filtered out`. +- Windows integration shards 1/2/4 command 1: `cargo test --locked --profile native-tests --features codebase-graph/bundled-windows-extensions --package codebase-graph --test agent_hooks_process --test auto_repo_root --test coordinator_process --test copy_phase_process --test http_admission_process --test http_daemon_process --test native_request_identity --test refresh_recovery_process --test storage_foundation --test storage_maintenance --no-fail-fast -- --exact `. Every requested filter is present. All three requested integration cases execute in `target\native-tests\deps\storage_maintenance-3a0b83c19e697dd3.exe`; relevant summaries are respectively `2 passed / 0 failed / 0 ignored`, `4 passed / 0 failed / 0 ignored`, and `3 passed / 0 failed / 0 ignored`. +- The complete, unabridged command/filter identity, source checkout, project compilation, `Running` binary path, result and summary lines are saved in each bounded per-case extract below. The `` notation above is a report abbreviation, not a modified command or independent test invocation. +- The jobs also log a separate compiler-produced CLI artifact and SHA-256. These identify the CLI used by native process tests; they are not hashes of the Rust harness executables or release artifacts. No cross-job byte identity is assumed. + +| Job | Compiler CLI SHA-256 | +|---|---| +| 121931860962 | `5a82f6fbf69cea32c6b8341e3725bc9ef041033b0119e9c5ba3b1bfde22dfb1d` | +| 121931860936 | `fb7387eb7abedba3902e8a3f331e6f0d08baa656f9ab74a3a486663867c5246a` | +| 121931861177 | `d44206b167a44b6c0dfe5215ed895cbe9bdc5fa72e44772754f9f3d933d2adac` | +| 121931861293 | `c9839f2b76302c6d9bfbb66db6e276b4bd8e8bde3f6361700aa785eee5bc1d9d` | +| 121931860919 | `095d8e5fe195215e1250c876325af5903281a3b90bb3fe51706dcafe2e3a7400` | +| 121931861193 | `b7a51d019091e868e5796f1936b7e47705d2c365777449948a71355e0c363c4d` | + +## Saved evidence + +- Directory: `/tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/`. +- `retrieval-manifest.json`: download commands, job URLs, exit codes, raw-log SHA-256, byte and line counts. +- Fresh raw logs: `job-121931860962.log`, `job-121931860936.log`, `job-121931861177.log`, and all four Windows integration shards (`job-121931861193.log`, `job-121931860919.log`, `job-121931861031.log`, `job-121931861293.log`). +- Combined bounded, exact, line-numbered evidence: `/tmp/codebasegraph-pr153-ci-only-evidence/hosted-case-excerpts.txt`. +- Bounded, exact, line-numbered per-case extracts: + - `watch-help-macos-exact-evidence.txt` (3,335 bytes). + - `watch-help-windows-exact-evidence.txt` (11,424 bytes). + - `copy-trace-windows-exact-evidence.txt` (11,657 bytes). + - `isolated-worker-windows-exact-evidence.txt` (11,199 bytes). + - `actual-contention-windows-exact-evidence.txt` (11,365 bytes). + - `missing-serial-lock-windows-exact-evidence.txt` (11,243 bytes). + +## Scope and remaining uncertainty + +- All requested actual execution checks are verified. No missing execution or failed requested testcase was found. +- Hosted CI proves the tests on the synthetic merge containing the exact approved head, not a standalone-head build. Provenance comes from hosted checkout/build/execution logs, not an independent binary attestation. +- Native artifact jobs `121950333792` (macOS arm64) and `121951853727` (Windows x86_64) are `success` in `hosted-ci-completed.json`. This report does not independently inspect artifact smoke logs; it makes no extra smoke-execution claim. +- Assumption: the supplied completed run JSON is the authoritative run/job metadata; downloaded logs are from that same explicitly selected run and job IDs. No constants were changed. diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/hosted-ci-summary.json b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/hosted-ci-summary.json new file mode 100644 index 00000000..28b0b3c4 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/hosted-ci-summary.json @@ -0,0 +1,223 @@ +{ + "run": { + "databaseId": 40426019260, + "headSha": "d6dd34493e9da6f80847240bafcc92dbcaed2c38", + "headBranch": "codex/automatic-graph-disk-cleanup", + "event": "pull_request", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260", + "createdAt": "2026-10-27T00:22:51Z", + "updatedAt": "2026-10-27T01:42:13Z" + }, + "attempt": 1, + "expected_code_sha": "d6dd34493e9da6f80847240bafcc92dbcaed2c38", + "all_22_jobs_succeeded": true, + "jobs": [ + { + "databaseId": 121931860390, + "name": "cargo clippy", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860390", + "startedAt": "2026-10-27T00:22:53Z", + "completedAt": "2026-10-27T00:23:56Z" + }, + { + "databaseId": 121931860543, + "name": "cargo audit", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860543", + "startedAt": "2026-10-27T00:22:53Z", + "completedAt": "2026-10-27T00:23:12Z" + }, + { + "databaseId": 121931860630, + "name": "native (macos-arm64) / native tests (macos-arm64, integration)", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860630", + "startedAt": "2026-10-27T00:22:54Z", + "completedAt": "2026-10-27T01:16:30Z" + }, + { + "databaseId": 121931860656, + "name": "cargo publish dry-run", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860656", + "startedAt": "2026-10-27T00:22:53Z", + "completedAt": "2026-10-27T00:23:50Z" + }, + { + "databaseId": 121931860705, + "name": "cargo fmt", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860705", + "startedAt": "2026-10-27T00:22:53Z", + "completedAt": "2026-10-27T00:22:59Z" + }, + { + "databaseId": 121931860919, + "name": "native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2)", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860919", + "startedAt": "2026-10-27T00:22:53Z", + "completedAt": "2026-10-27T00:57:34Z" + }, + { + "databaseId": 121931860936, + "name": "native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4)", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860936", + "startedAt": "2026-10-27T00:22:53Z", + "completedAt": "2026-10-27T00:47:59Z" + }, + { + "databaseId": 121931860962, + "name": "native (macos-arm64) / native tests (macos-arm64, unit)", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860962", + "startedAt": "2026-10-27T00:22:54Z", + "completedAt": "2026-10-27T01:01:19Z" + }, + { + "databaseId": 121931861031, + "name": "native (windows-x86_64) / native tests (windows-x86_64, integration, shard 3)", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861031", + "startedAt": "2026-10-27T00:22:53Z", + "completedAt": "2026-10-27T00:52:31Z" + }, + { + "databaseId": 121931861045, + "name": "native (macos-arm64) / native tests (macos-arm64, generation)", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861045", + "startedAt": "2026-10-27T00:22:53Z", + "completedAt": "2026-10-27T00:41:32Z" + }, + { + "databaseId": 121931861091, + "name": "native (windows-x86_64) / native tests (windows-x86_64, generation, shard 3)", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861091", + "startedAt": "2026-10-27T00:22:53Z", + "completedAt": "2026-10-27T00:52:00Z" + }, + { + "databaseId": 121931861092, + "name": "native (windows-x86_64) / native tests (windows-x86_64, generation, shard 1)", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861092", + "startedAt": "2026-10-27T00:22:54Z", + "completedAt": "2026-10-27T00:50:47Z" + }, + { + "databaseId": 121931861146, + "name": "native (windows-x86_64) / native tests (windows-x86_64, generation, shard 4)", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861146", + "startedAt": "2026-10-27T00:22:53Z", + "completedAt": "2026-10-27T01:17:37Z" + }, + { + "databaseId": 121931861177, + "name": "native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1)", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861177", + "startedAt": "2026-10-27T00:22:53Z", + "completedAt": "2026-10-27T01:06:07Z" + }, + { + "databaseId": 121931861193, + "name": "native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1)", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861193", + "startedAt": "2026-10-27T00:22:54Z", + "completedAt": "2026-10-27T00:53:47Z" + }, + { + "databaseId": 121931861212, + "name": "native (windows-x86_64) / native tests (windows-x86_64, generation, shard 2)", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861212", + "startedAt": "2026-10-27T00:22:54Z", + "completedAt": "2026-10-27T00:38:42Z" + }, + { + "databaseId": 121931861239, + "name": "native (windows-x86_64) / native tests (windows-x86_64, unit, shard 3)", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861239", + "startedAt": "2026-10-27T00:22:53Z", + "completedAt": "2026-10-27T01:21:11Z" + }, + { + "databaseId": 121931861245, + "name": "native (windows-x86_64) / native tests (windows-x86_64, unit, shard 2)", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861245", + "startedAt": "2026-10-27T00:22:53Z", + "completedAt": "2026-10-27T00:41:07Z" + }, + { + "databaseId": 121931861293, + "name": "native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4)", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861293", + "startedAt": "2026-10-27T00:22:54Z", + "completedAt": "2026-10-27T00:51:07Z" + }, + { + "databaseId": 121950333792, + "name": "native (macos-arm64) / native artifact (macos-arm64)", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121950333792", + "startedAt": "2026-10-27T01:16:33Z", + "completedAt": "2026-10-27T01:21:35Z" + }, + { + "databaseId": 121951853727, + "name": "native (windows-x86_64) / native artifact (windows-x86_64)", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121951853727", + "startedAt": "2026-10-27T01:21:14Z", + "completedAt": "2026-10-27T01:42:07Z" + }, + { + "databaseId": 121958592900, + "name": "required", + "status": "completed", + "conclusion": "success", + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121958592900", + "startedAt": "2026-10-27T01:42:09Z", + "completedAt": "2026-10-27T01:42:13Z" + } + ], + "qualification_scope": "current exact-head native CI/packaged build-host smoke; not clean desktop consumers, policy packaging fixes, merge/deploy, or milestone closure", + "actual_tested_merge_sha": "af71103436086bff1189e67e0f5f03464e977bd4", + "actual_tested_merge_base": "ca115690b226384164cf364458a0e3255b8908d3", + "head_to_merge_differing_files": [ + "CHANGELOG.md" + ], + "case_verification": "named actual PASS records checked; requested execution none missing" +} diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/issue-acceptance-trace.json b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/issue-acceptance-trace.json new file mode 100644 index 00000000..78dc0722 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/issue-acceptance-trace.json @@ -0,0 +1,29 @@ +{ + "COD-57": { + "criterion": "A10", + "case": "adapters::cli::tests::dispatch_materialize::watch_help_documents_parallel_default_and_opt_out", + "required_platforms": [ + "macos-arm64", + "windows-x86_64" + ] + }, + "COD-58": { + "criterion": "A11", + "case": "db_writer::phase::tests::copy_trace_metadata_reports_generated_file_bytes", + "required_platforms": [ + "macos-arm64", + "windows-x86_64" + ] + }, + "COD-59": { + "criterion": "A12", + "case": "isolated_worker_first_creation_and_followup_keep_same_covered_publication_birth", + "new_windows_case": "fixture::process::tests::covered_epoch_observer_retries_actual_contention_until_release", + "other_case": "fixture::process::tests::covered_epoch_observer_propagates_missing_serial_lock", + "required_platforms": [ + "windows-x86_64" + ], + "preserved_deadline_seconds": 5, + "unchanged_epoch_integrity_and_birth_assertions": true + } +} diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/retrieval-manifest.json b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/retrieval-manifest.json new file mode 100644 index 00000000..d5c899f5 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/execution/ci-only-evidence/retrieval-manifest.json @@ -0,0 +1,79 @@ +{ + "retrievedAt": "2026-10-27T01:45:34.079687+00:00", + "run": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260", + "runId": 40426019260, + "headSha": "d6dd34493e9da6f80847240bafcc92dbcaed2c38", + "syntheticMergeSha": "af71103436086bff1189e67e0f5f03464e977bd4", + "logs": [ + { + "jobId": 121931860962, + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860962", + "command": "gh run view 40426019260 --repo rabii-chaarani/codebaseGraph --job 121931860962 --log > \"/tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931860962.log\"", + "exitCode": 0, + "path": "/tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931860962.log", + "sha256": "f971ee4520c23e9f4a673160ddbd2b89d245eb7a4e31dd96aef71cad69e13b20", + "bytes": 322285, + "lines": 1859 + }, + { + "jobId": 121931860936, + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860936", + "command": "gh run view 40426019260 --repo rabii-chaarani/codebaseGraph --job 121931860936 --log > \"/tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931860936.log\"", + "exitCode": 0, + "path": "/tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931860936.log", + "sha256": "906d1322079416a37f86a6fc3a79540597269f1ec4b8941b9b581e111f5dcd17", + "bytes": 577347, + "lines": 2531 + }, + { + "jobId": 121931861177, + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861177", + "command": "gh run view 40426019260 --repo rabii-chaarani/codebaseGraph --job 121931861177 --log > \"/tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931861177.log\"", + "exitCode": 0, + "path": "/tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931861177.log", + "sha256": "ee5a142a2bd5f8a29476a4149ac26df73f8026682b1272e32e041882d80ff25e", + "bytes": 1387645, + "lines": 5497 + }, + { + "jobId": 121931861193, + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861193", + "command": "gh run view 40426019260 --repo rabii-chaarani/codebaseGraph --job 121931861193 --log > \"/tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931861193.log\"", + "exitCode": 0, + "path": "/tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931861193.log", + "sha256": "2dc4b119d2adc1f55012bc63ed6a7ecb12dbd1b8ab636fdc1bf1a732d76b5ec5", + "bytes": 228454, + "lines": 1284 + }, + { + "jobId": 121931860919, + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860919", + "command": "gh run view 40426019260 --repo rabii-chaarani/codebaseGraph --job 121931860919 --log > \"/tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931860919.log\"", + "exitCode": 0, + "path": "/tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931860919.log", + "sha256": "23707309f748750146c415280b5a192bf061bdc34bcbebf77a5b45656a366a1b", + "bytes": 214266, + "lines": 1203 + }, + { + "jobId": 121931861031, + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861031", + "command": "gh run view 40426019260 --repo rabii-chaarani/codebaseGraph --job 121931861031 --log > \"/tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931861031.log\"", + "exitCode": 0, + "path": "/tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931861031.log", + "sha256": "67660f039f94538a01e42258ee3606119d4ba5676fa91fba53601e0859fd7f36", + "bytes": 223062, + "lines": 1229 + }, + { + "jobId": 121931861293, + "url": "https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861293", + "command": "gh run view 40426019260 --repo rabii-chaarani/codebaseGraph --job 121931861293 --log > \"/tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931861293.log\"", + "exitCode": 0, + "path": "/tmp/codebasegraph-pr153-ci-only-evidence/hosted-completed-logs/job-121931861293.log", + "sha256": "75b8034df38c20e0dfeaf7489268d3414301cc8282d80a3a0ec75a33cd187731", + "bytes": 216087, + "lines": 1206 + } + ] +} diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-hosted-qualification.md b/docs/specs/CBG-PLAT-01/execution/ci-only-hosted-qualification.md new file mode 100644 index 00000000..e0505334 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/execution/ci-only-hosted-qualification.md @@ -0,0 +1,64 @@ +# CBG-PLAT-01 — CI-only hosted verification at d6dd344 + +## Outcome + +The approved CI-only fixes **COD-57, COD-58 and COD-59 satisfy their affected native checks** at the delivered source below. The independently verified logs show named test execution, not only green job status. These three implementation issues can close; the broader COD-51 approval gate, other maintenance fixes, COD-61 clean-consumer qualification and milestone remain open. + +## Exact scope and source + +- Approved implementation: S06/COD-57/R06/A10, S07/COD-58/R07/A11 and S08/COD-59/R08/A12 only, under [spec0.10 at full SHA1a9db7b558b60248888408daa6268a3b45f2f0df](https://github.com/rabii-chaarani/codebaseGraph/blob/1a9db7b558b60248888408daa6268a3b45f2f0df/docs/specs/CBG-PLAT-01/spec.md) and the [explicit user approval](../approvals/ci-only-s06-s08.md). +- Source baseline: `862a8f88d485d5bd257ebd9456c194156fd4ee94`. Fix source: [`d6dd34493e9da6f80847240bafcc92dbcaed2c38`](https://github.com/rabii-chaarani/codebaseGraph/commit/d6dd34493e9da6f80847240bafcc92dbcaed2c38); existing [PR153](https://github.com/rabii-chaarani/codebaseGraph/pull/153) remains open/unmerged and its head was rechecked equal to this fix SHA when CI completed. +- Independent focused code review and44 selected local macOS tests were already recorded in [local execution](ci-only-s06-s08.md). All five reviewed source hashes still match the delivered source. No further implementation changes were made in response to this verification. + +## Completed hosted CI — actual success, not configured or skipped + +[Run 40426019260, attempt1](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260), event `pull_request`, is completed **success**, with GitHub `headSha=d6dd34493e9da6f80847240bafcc92dbcaed2c38`. Created `2026-10-27T00:22:51Z`; completed/updated `2026-10-27T01:42:13Z`. + +**Actual hosted checkout:** synthetic PR merge `af71103436086bff1189e67e0f5f03464e977bd4`, merging `d6dd34493e9da6f80847240bafcc92dbcaed2c38` into `ca115690b226384164cf364458a0e3255b8908d3`; not a bare-head build. Every retrieved relevant job records the full merge ref and checkout commit. A read-only [head-to-tested-merge comparison](ci-only-evidence/head-vs-successful-ci-merge.json) shows **only `CHANGELOG.md` differs** from the delivered head, so the implementation/tests/workflow files match the reviewed code. Preserve that distinction rather than attributing this to an isolated-head build. + +All **22 jobs** completed successfully: + +| Job | Result / exact log | +|---|---| +| cargo clippy | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860390) | +| cargo audit | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860543) | +| native (macos-arm64) / native tests (macos-arm64, integration) | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860630) | +| cargo publish dry-run | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860656) | +| cargo fmt | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860705) | +| native (windows-x86_64) / native tests (windows-x86_64, integration, shard 2) | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860919) | +| native (windows-x86_64) / native tests (windows-x86_64, unit, shard 4) | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860936) | +| native (macos-arm64) / native tests (macos-arm64, unit) | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931860962) | +| native (windows-x86_64) / native tests (windows-x86_64, integration, shard 3) | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861031) | +| native (macos-arm64) / native tests (macos-arm64, generation) | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861045) | +| native (windows-x86_64) / native tests (windows-x86_64, generation, shard 3) | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861091) | +| native (windows-x86_64) / native tests (windows-x86_64, generation, shard 1) | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861092) | +| native (windows-x86_64) / native tests (windows-x86_64, generation, shard 4) | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861146) | +| native (windows-x86_64) / native tests (windows-x86_64, unit, shard 1) | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861177) | +| native (windows-x86_64) / native tests (windows-x86_64, integration, shard 1) | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861193) | +| native (windows-x86_64) / native tests (windows-x86_64, generation, shard 2) | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861212) | +| native (windows-x86_64) / native tests (windows-x86_64, unit, shard 3) | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861239) | +| native (windows-x86_64) / native tests (windows-x86_64, unit, shard 2) | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861245) | +| native (windows-x86_64) / native tests (windows-x86_64, integration, shard 4) | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121931861293) | +| native (macos-arm64) / native artifact (macos-arm64) | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121950333792) | +| native (windows-x86_64) / native artifact (windows-x86_64) | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121951853727) | +| required | [success](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40426019260/job/121958592900) | + +The macOS and Windows artifact build-and-smoke jobs **executed and passed**; they were not skipped as in the old failed run. The final `required` aggregate passed. Cohort discovery, native CLI capture, inventories and artifact policy were not weakened to obtain this result. + +## Case-level verification + +The saved [case verification](ci-only-evidence/hosted-case-verification.md) and bounded [case/command excerpts](ci-only-evidence/hosted-case-excerpts.txt) distinguish actual named test execution from job-level success. Source checkout/merge, full command filters, nonzero harness summaries and per-native compiler-captured CLI hashes are retained there. Actual `test ... ok` was verified for: + +| Acceptance | Actual current execution | +|---|---| +| A10 / COD-57 | Watch-help contract passed macOS unit121931860962 and Windows unit shard4/job121931860936. | +| A11 / COD-58 | Production-rendered COPY metadata fixture passed Windows unit shard1/job121931861177; the unchanged4-byte/physical-path oracle passed locally on Mac and the native Mac unit job passed. | +| A12 / COD-59 | Real first-creation/followup publication-birth test passed Windows integration shard4/job121931861293; new owned actual-contention/release regression passed integration shard2/job121931860919; missing-serial-lock propagation passed integration shard1/job121931861193. | + +No requested testcase was merely discovered/filtered out. The Windows-only case actually ran and its enclosing storage-maintenance harness reported4 passed/0 failed/0 ignored. The existing five-second timeout/error branch and actual epoch/birth checks remain unchanged and reviewed; no new permanent-contention exhaustion test was executed or claimed. The controlled test also reaches the unchanged invalid-envelope rejection after release. Job retrieval hashes and exact extracts are in [retrieval-manifest.json](ci-only-evidence/retrieval-manifest.json); raw full logs remain at their GitHub job URLs and in the local retrieval directory, while the bounded exact excerpts are Git-tracked here. + +## Closure limits + +This evidence resolves the CI-only fixes' affected native checks. It does **not** implement or qualify the outstanding runtime packaging, directory-cursor, discovery, lock-mode or Cargo-default work; it does not fulfill S10/COD-61 clean-consumer/OS-floor/PowerShell/source-install qualification or close the maintenance milestone. Windows Server native CI is not Windows11 desktop consumer evidence. Hosted macOS latest is not macOS13.3 minimum testing. An artifact smoke on a prepared build host does not establish clean installed consumer support. + +Do not reopen already settled policy decisions or treat these passing jobs as approval of additional implementation scope. COD-51 remains the gate for the other slices. No merge, deployment, service restart or manual CI rerun was performed. Existing five-second observer deadline,10-ms retry, epoch/birth/integrity assertions and production constants remain unchanged. diff --git a/docs/specs/CBG-PLAT-01/execution/ci-only-s06-s08.md b/docs/specs/CBG-PLAT-01/execution/ci-only-s06-s08.md index 60df1ef5..6c9534be 100644 --- a/docs/specs/CBG-PLAT-01/execution/ci-only-s06-s08.md +++ b/docs/specs/CBG-PLAT-01/execution/ci-only-s06-s08.md @@ -4,7 +4,7 @@ - Source baseline: PR153 `862a8f88d485d5bd257ebd9456c194156fd4ee94`. Delivered fixes: [`d6dd34493e9da6f80847240bafcc92dbcaed2c38`](https://github.com/rabii-chaarani/codebaseGraph/commit/d6dd34493e9da6f80847240bafcc92dbcaed2c38) in [existing PR153](https://github.com/rabii-chaarani/codebaseGraph/pull/153). - Exact user approval: [CI-only S06–S08 record](https://github.com/rabii-chaarani/codebaseGraph/blob/7650f264fe0cbfa7fa328840722929feac1f32df/docs/specs/CBG-PLAT-01/approvals/ci-only-s06-s08.md), approved spec0.10 full SHA `1a9db7b558b60248888408daa6268a3b45f2f0df`. User: **“I approve CI-only implementation scope”**. -- Issues: [COD-57](https://linear.app/codebasegraph/issue/COD-57), [COD-58](https://linear.app/codebasegraph/issue/COD-58), [COD-59](https://linear.app/codebasegraph/issue/COD-59), all **In Review**, not Done. COD-51 remains Backlog for other implementation scope. No other slices, packaging, runtime policy changes, full-platform closure, merge/deployment/restart included. +- Issues: [COD-57](https://linear.app/codebasegraph/issue/COD-57), [COD-58](https://linear.app/codebasegraph/issue/COD-58), [COD-59](https://linear.app/codebasegraph/issue/COD-59) were delivered In Review pending native CI. The subsequent exact-head [hosted verification](ci-only-hosted-qualification.md) records their final affected-native results/status. COD-51 remains Backlog for other implementation scope. No other slices, packaging, runtime policy changes, full-platform closure, merge/deployment/restart included. - Changed source: only `src/adapters/cli/format/help.rs`, `src/db_writer/phase.rs` test, `src/staging_writer/files.rs` internal visibility, `src/staging_writer/mod.rs` test-only re-export and `tests/support/storage_maintenance/process.rs` fixture/tests. ## Implemented behavior @@ -35,7 +35,7 @@ Host: aarch64-apple-darwin, Rust/Cargo1.96.0, source native Cargo environment in ## Qualification and delivery limits -Push updated existing PR153 to the exact code SHA above; no force push or merge. The automatic head-bound native CI must execute Windows unit shard1 (COPY), Windows unit shard4 + Mac unit (help), Windows integration shard2 (epoch) and the new Windows-only case, plus ordinary required cohort/artifact gates. No old green/failed run or skipped artifact counts as current passing execution. A normal automatic push trigger is not a manual CI rerun. Initial immediate post-push check discovery had no runs yet; later status must be fetched and recorded honestly. +Push updated existing PR153 to the exact code SHA above; no force push or merge. Initial post-push discovery had no runs yet. The subsequent [head-bound hosted verification](ci-only-hosted-qualification.md) records run40426019260 and actual named testcase/native cohort/artifact outcomes. No old green/failed run or skipped artifact counts as current passing execution. A normal automatic push trigger is not a manual CI rerun. If actual contention still exceeds five seconds after classification is fixed, investigate separately; do not silently increase deadline or weaken assertions. Archive/clean-consumer/milestone qualification remains outside this CI-only implementation approval. Do not close issues until their native criteria/review/verification are satisfied. From 839c95b17c9a8e30bcbc30cb3fe22d7524174e08 Mon Sep 17 00:00:00 2001 From: Rabii Chaarani <50892556+rabii-chaarani@users.noreply.github.com> Date: Tue, 27 Oct 2026 13:16:15 +0930 Subject: [PATCH 15/17] docs(knowledge): publish wiki source updates Publish the 43 selected knowledge Markdown files. Validated with the recommended wiki profile and link check; rebuilt the wiki site. --- .../graph-disk-cleanup-contract.md | 53 +++++++- .../architecture/graph-freshness-recovery.md | 6 +- .../architecture/graph-storage-lifecycle.md | 10 +- .../graph-watcher-stall-review-2026-10-20.md | 88 +++++++++++++ ...-prebuilt-installation-study-2026-10-20.md | 120 ++++++++++++++++++ ...s-refresh-worker-termination-2026-10-15.md | 43 +++++++ ...ks-mask-project-scryer-hooks-2026-09-22.md | 36 ++++++ ...ore-first-coordination-mkdir-2026-10-21.md | 47 +++++++ ...ndering-boundary-regressions-2026-10-16.md | 59 +++++++++ ...an-look-like-refresh-failure-2026-10-15.md | 43 +++++++ ...e-recovery-observation-races-2026-10-16.md | 50 ++++++++ ...use-blocks-automatic-refresh-2026-10-15.md | 46 +++++++ ...not-qualify-consumer-install-2026-10-20.md | 40 ++++++ ...ty-and-destination-ownership-2026-10-20.md | 46 +++++++ ...t-not-recreate-retired-lease-2026-10-24.md | 44 +++++++ ...-version-release-replacement-2026-10-21.md | 50 ++++++++ ...s-require-siginfo-exit-class-2026-10-24.md | 44 +++++++ ...ke-source-fallback-diagnosis-2026-10-20.md | 46 +++++++ ...ar-codebasegraph-cod-project-2026-10-23.md | 44 +++++++ ...or-can-follow-durable-commit-2026-10-26.md | 53 ++++++++ ...ailure-has-uncertain-outcome-2026-10-26.md | 49 +++++++ 21 files changed, 1010 insertions(+), 7 deletions(-) create mode 100644 knowledge/architecture/graph-watcher-stall-review-2026-10-20.md create mode 100644 knowledge/architecture/windows-prebuilt-installation-study-2026-10-20.md create mode 100644 knowledge/memory/episodic/database-phase-child-survives-refresh-worker-termination-2026-10-15.md create mode 100644 knowledge/memory/episodic/empty-user-codex-hooks-mask-project-scryer-hooks-2026-09-22.md create mode 100644 knowledge/memory/episodic/fresh-graph-ownership-before-first-coordination-mkdir-2026-10-21.md create mode 100644 knowledge/memory/episodic/k-wiki-rendering-boundary-regressions-2026-10-16.md create mode 100644 knowledge/memory/episodic/large-graph-publication-delay-can-look-like-refresh-failure-2026-10-15.md create mode 100644 knowledge/memory/episodic/lifecycle-recovery-observation-races-2026-10-16.md create mode 100644 knowledge/memory/episodic/stale-worker-pid-reuse-blocks-automatic-refresh-2026-10-15.md create mode 100644 knowledge/memory/episodic/windows-build-host-smoke-does-not-qualify-consumer-install-2026-10-20.md create mode 100644 knowledge/memory/procedural/graph-disk-cleanup-requires-reachability-and-destination-ownership-2026-10-20.md create mode 100644 knowledge/memory/procedural/managed-recovery-must-not-recreate-retired-lease-2026-10-24.md create mode 100644 knowledge/memory/procedural/preflight-unpublished-same-version-release-replacement-2026-10-21.md create mode 100644 knowledge/memory/procedural/unix-exit-peeks-require-siginfo-exit-class-2026-10-24.md create mode 100644 knowledge/memory/procedural/windows-cargo-cmake-source-fallback-diagnosis-2026-10-20.md create mode 100644 knowledge/memory/semantic/cbg-c4-01-linear-codebasegraph-cod-project-2026-10-23.md create mode 100644 knowledge/memory/semantic/copy-query-error-can-follow-durable-commit-2026-10-26.md create mode 100644 knowledge/memory/semantic/ladybug-copy-failure-has-uncertain-outcome-2026-10-26.md diff --git a/knowledge/architecture/graph-disk-cleanup-contract.md b/knowledge/architecture/graph-disk-cleanup-contract.md index f6500278..49ac5a54 100644 --- a/knowledge/architecture/graph-disk-cleanup-contract.md +++ b/knowledge/architecture/graph-disk-cleanup-contract.md @@ -23,11 +23,11 @@ An unanswered prompt, a preselected answer, approval of another step, or earlier | Step | Revision | Status | User decision reference | Implementation/evidence | | --- | --- | --- | --- | --- | -| DC-S1 — Inventory and retention | 0.1 | Locally implemented and independently reviewed | Explicit all-step instruction, 2026-10-21 | 29 passing inventory tests; platform and aggregate qualification pending | -| DC-S2 — Ownership and recovery authority | 0.2 | Locally reviewed foundations; authority integration continuing | Explicit all-step instruction and amendment approval, 2026-10-21 | Guarded native wrapper, fixed epoch transition and nonce restoration reviewed; complete admission pending | -| DC-S3 — Collection and migration | 0.2 | Bounded facts/codecs reviewed; production collection pending | Explicit all-step instruction and amendment approval, 2026-10-21 | 78 independently passing pure-facts tests plus differential probes; origin, publication and retirement effects pending | -| DC-S4 — Automatic operation and reporting | 0.2 | Joined driver reviewed; lifecycle integration underway | Explicit all-step instruction and amendment approval, 2026-10-21 | 31 driver/coordinator tests plus independent failure/allocation probes; actual collection wiring pending | -| DC-S5 — Qualification and rollout gates | 0.1 | Qualification harness reviewed; full acceptance pending | Explicit all-step instruction, 2026-10-21 | Fresh-compiler and debug-assertion counterexamples corrected and independently verified; churn/native/full matrix pending | +| DC-S1 — Inventory and retention | 0.1 | Implemented; local verification recorded below | Explicit all-step instruction, 2026-10-21 | Final capture and requirement trace in `docs/testing/graph-disk-cleanup-v2-evidence/final-local-verification.json`; platform/aggregate closure separate | +| DC-S2 — Ownership and recovery authority | 0.2 | Implemented; local verification recorded below | Explicit all-step instruction and amendment approval, 2026-10-21 | Guarded native lifetimes, existing-only recovery, fixed admission and controlled migration; platform/aggregate closure separate | +| DC-S3 — Collection and migration | 0.2 | Implemented; local verification recorded below | Explicit all-step instruction and amendment approval, 2026-10-21 | Actual origin/reference checks, resumable artifact/backup/run/generation/legacy/Direct collection; live migration not performed | +| DC-S4 — Automatic operation and reporting | 0.2 | Implemented; local verification recorded below | Explicit all-step instruction and amendment approval, 2026-10-21 | Joined driver, lifecycle/periodic/no-edit requests, additive CLI/MCP reporting and separate cleanup outcomes | +| DC-S5 — Qualification and rollout gates | 0.1 | Local qualification recorded below; platform/rollout/aggregate gates remain separate | Explicit all-step instruction, 2026-10-21; later one-ordinary-review override | Exact compiler/source/binary/native inputs, actual churn/clean-control and recovery reports; no live deployment or maintainer aggregate closure asserted | Closure owner remains the repository maintainer/user. The later implementation task owns aggregate closure and must retain these IDs rather than renumbering them. @@ -380,3 +380,46 @@ These reports and failure histories are indexed by `s2-cap-controls-manifest.jso ## Completion workflow — user direction 2026-10-21 The user directed completion of all approved steps, with only one final review and a push to existing PR #153. This replaces repeated intermediate review rounds; approved behavior and acceptance criteria remain unchanged. The current implementation assignments and private interfaces remain in Scryer. Historical continuation evidence through `61c9d26` is preserved byte-for-byte in `docs/testing/graph-disk-cleanup-v2-evidence/continuation-foundations-61c9d26.tar.gz`, indexed by `continuation-evidence.json`. Extract that archive into the evidence directory to resolve the six continuation manifests' original relative paths. Its internal `archive-members.json` records every member identity. This historical archive does not establish final collector or platform qualification. + + +## Implemented delivery and versioned qualification — 2026-10-24 + +All five approved steps are implemented and pushed to [PR 153](https://github.com/rabii-chaarani/codebaseGraph/pull/153). The implementation commit is `77941df52e50ded170d70dd4969b16ff5640cfa7`; subsequent committed corrections include existing-only Managed recovery, platform stack preparation, precise stopped-child exit classification, and lossless package recompression. The current correction head is `84190d33b5ebad671f91509ab5b175dadfaf62aa`. These are delivery/evidence updates within the approved requirements, not a change to retention, ownership, budgets, migration permission or aggregate closure ownership. + +The user's later direction to finish without adversarial reviews supersedes the earlier review method in DC-S5-R7. One fresh ordinary GPT-6.1 Sol / Max integrated review examined capture 248; its three confirmed P2 findings were corrected, and the same reviewer performed focused source verification. Later concrete compiler/runtime/CI failures were corrected and tested without additional broad/adversarial review rounds. The review record is repository artifact `docs/testing/graph-disk-cleanup-v2-evidence/final-ordinary-review.md`. + +Executed evidence remains versioned. Capture 256 ran all 1,293 normally enabled local workspace instances: 1,292 passed and one real Darwin stopped-worker failure was preserved. Both twenty-update clean-control/equivalence cases, shipping ten-update physical convergence, migration, Direct retirement and every other cleanup case passed on that snapshot. Capture 257 passes the original Darwin failure after a native exit-class fix, seven focused platform cases, workspace build/Clippy, and three guarded-API doctests. Capture 258 passes nine removal/accounting cases and all three actual native lease/FIFO/multigrant-removal paths; two invalid new test-only relative layout comparisons are preserved as failures. Capture 259 replaces only that cfg(test) comparison body with the absolute 4 KiB guard and boxed-field type checks; both test instances pass. It does not relabel the earlier snapshot as wholly passing or claim another full final-source rerun. Thirty qualification-harness tests pass. + +Actual Linux GDB traces exposed two 256 KiB worker-boundary failures: generation preparation and terminal workspace removal. Charged boxes and separated preparation stages reduce the corresponding private unoptimized Darwin live chains by 72,736 and 67,568 bytes respectively; these are separate diagnostic measurements, not additive whole-process or Linux-pass claims. The stack remains 256 KiB, cleanup memory remains the shared 8 MiB requested-layout account, the payload descriptor cap remains three, and fresh mutation grants remain 100 entries/100 ms. No optimization or release gate was weakened. + +The package retains every supported platform asset and every source/test member. All ten recompressed XZ streams decode through the actual runtime decoder to identical payload hashes, use only LZMA2/CRC64, and require lower dictionaries. The measured package is 10,480,188 bytes against the unchanged 10,485,760-byte cap. CI format, Clippy, audit and package checks pass at the correction head. Native Linux, macOS ARM and Windows execution is still in progress at this evidence revision; macOS Intel build/smoke qualification passes. No final whole-platform, release or aggregate closure is asserted. + +Scryer change `chg-6vx5tj` is fully folded and closed with the seven new claims' real implementation anchors and executed evidence. Mechanical internal-symbol mapping now names the actual shipping admission/epoch helpers rather than test-only compatibility adapters; approved responsibilities and identities are unchanged. Evidence ingestion retains historical passes only when all matching implementation/test files are byte-identical to current files. The scoped implementation model has zero pending intent, zero untested claims, zero drift and zero broken anchors; eight unrelated existing missing verdicts remain separately visible. This architectural reconciliation does not close platform or operational gates. + +The durable handoff is repository directory `docs/testing/graph-disk-cleanup-v2-evidence/`, especially `final-implementation-report.md`, `final-local-verification.json`, `final-requirement-trace.json`, `pre-platform-fixes-256.json`, `platform-corrections-257.json`, `workspace-corrections-258-259.json` and `package-recompression.json`. Archive indexes retain source/compiler/binary/native identities, exact commands, JUnit, actual failures/interruption records, source reconstruction and platform limits. The trace preserves all 41 requirement IDs and 21 acceptance IDs. + +The verified noncreating-recovery lesson is recorded in active memory [Managed recovery must not recreate a cooperatively removed lease](../memory/procedural/managed-recovery-must-not-recreate-retired-lease-2026-10-24.md). Wiki validation/link/build results accompany the final handoff. Linear synchronization remains pending because the connected integration previously misrouted CodebaseGraph records into unrelated LoopAI tracking; no further Linear calls or integration changes were made. No installed helper upgrade, daemon shutdown, live graph migration or graph-data deletion occurred. The maintainer remains the aggregate/milestone/release closure owner. + + +### Platform continuation at `515d96b` + +The terminal-removal correction passes all three actual native lease/FIFO/multigrant paths in capture 258; the corrected fixed-owner test passes in both targets in capture 259. A further Linux trace then reached an accepted legacy-cohort observer with a 127,104-byte frame. Capture 260 verifies the charged, boxed administrative-cohort owner and direct return path with five focused checks plus actual old-CURRENT migration and Direct rebuild protection; the corresponding private Darwin frame-chain reduction is 63,392 bytes, and the measured owner is 1,584 bytes under its 2 KiB bound. + +Linux subsequently reached a deeper legacy source-observation/capsule result-copy chain. The correction in pushed commit `515d96b44cf17470bc4e0eba9a35b7c3a151179a` keeps hot snapshot/codec bodies byte-identical and moves only off-permit prepared observations/recovery images into charged owners. Capture 261 passes seven recovery/layout/account checks plus actual old-CURRENT migration (176.111 s), Direct retire/rebuild protection (38.562 s), and copied-staging one-confirmation/default-false retry migration (363.544 s). Source/native/binary inputs stayed unchanged throughout those executions. The corresponding private unoptimized Darwin frame-chain reduction is 61,488 bytes; owners measured 48 and 224 bytes satisfy verified absolute bounds. These are measured corrections and local executions, not a claim that all native platforms passed. + +The package still retains all 209 members and every supported native payload; its measured size after this correction is 10,481,556 bytes, 4,204 bytes below the unchanged cap. All original/rewritten payloads decode identically through the actual runtime decoder. Format, Clippy, audit and package CI gates pass on the newer correction series. Actual Linux/macOS ARM/Windows runtime qualification of the latest head is still open. The automatic failure-only Linux debugger now selects the exact reported failing harness case from the preserved original log and verifies its binary inventory, while preserving the original failure exit code, profile and resource limits. + +The updated repository handoff files preserve all source/snapshot distinctions and raw failures. Source code is delivered; this platform continuation neither approves deployment nor closes the maintainer-owned aggregate/milestone/release gates. + + +### Platform continuation at `073f0fb` + +Two further measured Linux preparation chains reached the unchanged 256 KiB worker boundary: legacy staging scope and private metadata. Charged boxed bindings, scratch and epoch owners, plus separated projection/action preparation, reduce live by-value frames. The staging action now retains the original captured metadata through the guarded handoff; it cannot reprepare a newer source and relabel an older action. Exact source stamps, immutable source version, scope checks, stream/slot validation, shared memory accounting and payload descriptor limits remain enforced. + +Capture 262 passes five staging/source/layout checks and actual incomplete-bundle preservation (73.830 s) and positive copied-staging migration (362.541 s). Capture 263 passes nineteen metadata/source-race/slot-recovery/layout checks, real FIFO handling (31.461 s) and positive copied-staging migration (361.844 s), with clean workspace Clippy/build and unchanged source/native/binary inputs throughout each execution. These focused passes supplement, rather than relabel, the preserved capture 256 full-suite result and the later platform corrections. There is no claimed latest-source whole-suite rerun. + +The separate Linux FIFO assertion occurred before containment qualification because the native test runner lacked the captured shipping CLI path. Commit `073f0fb91e8a866d31e5f01a07a20898c3eb2370` captures the unique normal CLI compiler artifact from the same source manifest, native-test command, profile and platform features, supplies that path to the actual test process, and verifies its SHA-256 before/after execution. Missing or ambiguous artifacts fail explicitly. All 33 runner Cargo tests and all 33 runner Nextest cases pass with zero skips, and runner Clippy passes with warnings denied. JUnit SHA-256 is `41c5183887514e34d075b59e9ec0b9314934f7ef4f507ec4c993c79971a4afd0`; the verified runner source SHA-256 is `3b773093e53006acdfa586fd7f54d219d5791cf65f5c6397ea09b516095b593e`. This is runner/parser evidence; whole native runner execution remains a CI gate. + +At this evidence update, [CI run 40074045438](https://github.com/rabii-chaarani/codebaseGraph/actions/runs/40074045438) for the pushed head passes formatting, Clippy, audit and publish dry-run; the four native platform jobs are still running. The package is 10,482,710 bytes under the unchanged 10,485,760-byte limit, with all 209 members and supported payloads retained. Handoff records `staging-corrections-262.json` and `metadata-corrections-263.json` preserve the exact local reports and source identities. No Linux/Windows or final native-matrix pass is inferred from Darwin execution. + +Scryer is reconciled at this head with zero pending intent, untested claims, drift, changed/broken anchors, failing or stale recorded verdicts; 262 claims have passing executed verdicts. Eight preexisting missing verdicts across five test files remain distinct from new implementation acceptance. Linear synchronization remains pending, and no further Linear calls, live helper installation/shutdown, migration or user-graph deletion occurred. The maintainer still owns aggregate, milestone and release closure. diff --git a/knowledge/architecture/graph-freshness-recovery.md b/knowledge/architecture/graph-freshness-recovery.md index c97081a8..7b450639 100644 --- a/knowledge/architecture/graph-freshness-recovery.md +++ b/knowledge/architecture/graph-freshness-recovery.md @@ -6,7 +6,7 @@ tags: - graph-runtime - recovery - refresh -timestamp: 2026-10-15 +timestamp: 2026-10-20 title: Graph Freshness and Recovery type: architecture --- @@ -24,6 +24,10 @@ The coordinator pins repository identity without retaining a graph read lease. S Direct storage retains the existing spelling of its destination paths for journal and lock recovery: those filenames historically hash the database/manifest path strings. Canonicalizing `/var/...` into `/private/var/...` at that boundary would miss existing recovery journals. Identity validation preserves this provenance. Genuinely unbound standalone native requests with explicit direct destinations retain their own source-root authority; managed or explicitly bound requests must match the selected repository. +## Implementation qualification — 2026-10-20 + +The [graph watcher stall review](./graph-watcher-stall-review-2026-10-20.md) verified that runtime revision `6aa5ba8bd99c3071e106a8bfc7a408652a8e4bb5` and the observed Qunys v3.0.2 daemon still use version-1 numeric-PID worker metadata and direct-child termination. The version-2 guardian, authenticated containment and descendant-teardown descriptions below are not implemented safeguards in that reviewed snapshot. The review reproduced stale-PID recovery blocking and traced escaped loader lifetimes; it also distinguished slow whole-generation publication from a stopped watcher. This qualification records implementation evidence; Scryer retains authority for intended responsibilities and boundaries. + ## Refresh lifecycle One refresh lease holder runs source monitoring and reconciliation. Native event collection starts before startup catch-up. Native, polling, and CLI watch paths also reconcile periodically, so notifications improve latency without being the sole correctness mechanism. diff --git a/knowledge/architecture/graph-storage-lifecycle.md b/knowledge/architecture/graph-storage-lifecycle.md index c7fe407f..663642f0 100644 --- a/knowledge/architecture/graph-storage-lifecycle.md +++ b/knowledge/architecture/graph-storage-lifecycle.md @@ -172,4 +172,12 @@ Lifecycle regressions cover failure at parsing, staging, search construction, is The churn acceptance test performs 10–20 updates. At idle it must leave one managed generation and no run directories, preserve graph results, and keep final physical database size within the greater of 10% or 8 MiB above a clean-control rebuild. -Related: [Graph Runtime](./graph-runtime.md), [Materialization Pipeline](./materialization-pipeline.md), [Public Operations and Runtime Paths](./operation-paths.md), and [Architecture Invariants](./invariants.md). \ No newline at end of file +Related: [Graph Runtime](./graph-runtime.md), [Materialization Pipeline](./materialization-pipeline.md), [Public Operations and Runtime Paths](./operation-paths.md), and [Architecture Invariants](./invariants.md). + +## Disk retention review qualification — 2026-10-20 + +The [disk retention review and cleanup proposal](./graph-disk-retention-review-2026-10-20.md) measured legacy staging, active artifact reachability, current build space and a separate former Direct destination. At source revision `6aa5ba8bd99c3071e106a8bfc7a408652a8e4bb5`, the current janitors do not revisit historical top-level `native-staging`, artifact-key enumeration excludes abandoned temporary/replacement directories, and artifact GC is retried only after successful publication. These are confirmed gaps against the recovery and collection intent above, not evidence that the active parsing cache is redundant. + +The user selected a proposed retention policy that keeps the current managed graph and its active parsing cache and retires older repository-local Direct destinations after safe ownership checks. Implementation and platform qualification remain pending. Scryer remains the authority for responsibilities, directives and future execution briefs; existing Graph Store claims `resp-109`, `resp-232`, `resp-233` and `resp-234` govern coordination, recovery, retirement and reuse. + +The guardian/containment descriptions above must not be counted as implemented safeguards at that reviewed source revision. The [watcher review](./graph-watcher-stall-review-2026-10-20.md) records the source qualification. Any broader collector must preserve unresolved lifecycle evidence, acquire the relevant destination's own ownership, keep stable lock inodes, reject foreign paths and avoid blocking graph readers during large recursive deletion. See the disk review for measured evidence, confirmed findings and acceptance checks. diff --git a/knowledge/architecture/graph-watcher-stall-review-2026-10-20.md b/knowledge/architecture/graph-watcher-stall-review-2026-10-20.md new file mode 100644 index 00000000..ad0cc3cc --- /dev/null +++ b/knowledge/architecture/graph-watcher-stall-review-2026-10-20.md @@ -0,0 +1,88 @@ +--- +description: Evidence-backed review of Qunys publication backlog and confirmed worker recovery defects at 6aa5ba8. +tags: +- review +- refresh +- recovery +- graph-runtime +timestamp: 2026-10-20 +title: Graph watcher stall review — 2026-10-20 +type: review +--- +# Graph watcher stall review — 2026-10-20 + +## Scope and outcome + +A fresh GPT-6.1 Sol reviewer at Max effort reviewed runtime revision `6aa5ba8bd99c3071e106a8bfc7a408652a8e4bb5`. The relevant refresh, materialization-worker, execution-pipeline and loader paths match the running Qunys v3.0.2 daemon. Managed storage differs only in an unrelated Windows cleanup branch. Reviewed source was unchanged. + +The referenced Codex chat was **Start R1 performance work**, local thread `01a1565e-b0a3-7cf0-842a-00a285704c48`. Reading that chat established missing graph discovery for new compute files, but its historical MCP health response bodies were unavailable. Subsequent read-only observations show a live watcher with slow publication and writer contention. They do not establish a dead watcher at the initial report. + +Scryer remains the authority for intended behavior: Repository Refresh Service `node-144` owns continuous convergence, retained pending work, reconciliation and health; Materialization Worker `node-208` owns active-build cancellation and resource reporting. This review introduces no architectural claims, product decisions or source fixes. + +## Observed Qunys behavior + +At 8:54–8:56 am on 2026-10-20, Australia/Darwin, health reported a native, running, live refresh task with pending dirty epochs and no error. Active generation `19355-1792451617562468000-1` had published at 8:52:36.895 am. All six new compute source/test files were represented; three still contained earlier source hashes while editing continued. + +Candidate-ID allocation at 8:43:37.562 am preceded publication by **539.333 seconds**. This measures the complete candidate pipeline after writer admission, not only database loading: `src/storage/layout.rs:324-330` constructs the identifier from Unix nanoseconds, and `src/storage/managed.rs:341-357` allocates it after acquiring the writer lease. Metadata creation near publication is a different timestamp. + +The active graph contained 437 files and approximately 1.57 GB of physical database data. The next automatic worker waited while the manual full build from the referenced chat held writer ownership. A later process snapshot showed that manual build spawning its native database loader. + +The implementation explains this latency: + +- `src/api/refresh.rs:1357,1427-1479` dispatches refresh synchronously. Reconciliation scheduling resumes when that execution returns. +- `src/execution/run.rs:35-56,120-150,172-197` reuses parsing partitions but stages the complete supported graph, builds complete search data and loads a replacement database. +- `src/api/materialization.rs:311-319` finalizes only after that pipeline; `src/storage/managed.rs:664-693` switches the active generation afterward. +- `src/storage/managed.rs:341-344` and `src/storage/locks.rs:125-126` serialize writers with a blocking exclusive lock. + +The 30-second reconciliation interval schedules checks; it is not a completion deadline. A manual build can add writer contention while automatic refresh is working. The two observed recovery defects below were not established as causes of this particular Qunys delay. + +## Confirmed findings + +### P1 — Stale numeric PID metadata can indefinitely block automatic recovery + +**Location:** `src/materialization_worker.rs:519-540,650-657`. + +Worker state records a version, build identifier and numeric PID. Recovery checks whether that PID exists, waits five seconds, then fails without retiring the record. A crashed worker's PID can be reused by an unrelated long-lived process, causing every automatic retry to fail at the same gate. + +A deterministic isolated fixture at the reviewed revision supplied a stale record naming a fixture-owned unrelated process. Automatic refresh became blocked. A manual full build then exited successfully and published a new generation, but the record remained and the next automatic attempt was still blocked. Removing only the deliberately stale fixture record restored running state, no pending work, equal dirty/reconciled epochs and a cleared error without another source edit. The unrelated process survived both attempts; every owned fixture process was reaped. + +**Remedy and verification:** Bind recovery authority to a verified process incarnation or authenticated containment owner. Never signal a process solely because a persisted PID matches. Retain a regression that checks blocked automatic recovery, successful manual publication, another automatic attempt, safe stale-record retirement and recovery without another edit. + +### P2 — Outer-worker cancellation leaves loader descendants unmanaged + +**Location:** `src/materialization_worker.rs:312-375,627-645`; `src/db_writer/phase.rs:94-145,177-198`. + +Cancellation and outer-worker RSS failure kill and reap the direct materialization child. That child can spawn a native database loader through the isolated database phase. The loader has no matching parent-death watchdog or build containment. The outer watchdog exits only the outer process. Consequently, an in-flight loader can outlive its owner and keep consuming resources after worker state is cleared. + +This is confirmed by a complete static lifecycle trace. No new descendant fault injection was performed in this review. The loader writes a candidate and cannot independently activate it; its contribution to the observed Qunys delay is unproven. + +**Remedy and verification:** Own the complete build process containment, including loaders and timing wrappers. Establish teardown before retiring evidence and admitting recovery. Pause a real loader, terminate its outer worker, and verify descendant exit, resource release, preserved active generation and successful automatic retry. + +## Safeguards and remaining limits + +The review verified bounded debounce, dirty-before-enqueue ordering, overflow-to-full-reconciliation behavior, periodic native/poll reconciliation, retained failed batches, paced retry deadlines, configuration reload and acknowledgement of only an attempt's captured epoch. Startup read leases are released before watching. These defeat simple lost-event, debounce-starvation and startup-read-lock explanations. + +Health exposes pending work and worker identity but lacks a live phase, progress timestamp and writer-wait reason. Progress frames are emitted after materialization, and their contents are discarded by the drain. Scryer `resp-264` requires progress/resource reporting without an explicit live-streaming promise, so this is an operational limitation rather than another scored defect. + +Neither the outer worker nor the database phase has an elapsed/progress timeout for an under-budget hang. No such hang was demonstrated, and no completion-latency requirement was supplied. Deadline behavior requires an explicit contract before a correction can be designed. + +The version-2 guardian/containment paragraphs in the freshness and storage documentation do not describe this reviewed runtime snapshot. They cannot be counted as implemented safeguards. See the qualification in [Graph Freshness and Recovery](./graph-freshness-recovery.md). + +## Executed verification and evidence + +Darwin 25.6.0 arm64, Rust 1.96.0: + +| Command | Executed result | +| --- | --- | +| `cargo test --offline --locked --lib api::refresh::tests -- --test-threads=1` | 18 passed, 0 failed | +| `cargo test --offline --locked --lib materialization_worker::tests -- --test-threads=1` | 7 passed, 0 failed | +| `cargo build --offline --locked --bin codebase-graph` | Passed, no reported warnings | +| Isolated stale-PID fixture against the freshly built binary | Reproduced blocked automatic recovery despite successful manual publication; fixture-only record removal restored recovery; all owned processes reaped | + +Local evidence is retained under `/private/tmp/codebase-graph-watcher-review-20261020/`: `evidence-index.json`, `observation-232455.json`, `observation-232608.json`, `pid-reuse/result.json` and `pid-reuse/reproduce.py`. The fixture result SHA-256 is `c914928ec7ad794d1c034344d2aeeb2bb1206b6b53bbf1b79ad826f6420bfdf9`. Temporary evidence paths are local artifacts, not cross-platform qualification. + +The investigation did not restart, rebuild or edit the incident repository. It did not run a new benchmark, load test, or descendant fault injection. Historical health payloads and a captured native phase stack were unavailable. Initial stall attribution remains limited to the observed publication backlog. + +Existing active episodic memories already cover large-graph publication delay, stale worker PID recovery and escaped database descendants. This review verified their relevant current premises; no duplicate memory was created. + +Address the confirmed recovery defects. For the observed delay, expose phase/writer-wait progress and measure the existing pipeline before choosing a performance change. A successful manual rebuild alone does not establish recovered continuous refresh. diff --git a/knowledge/architecture/windows-prebuilt-installation-study-2026-10-20.md b/knowledge/architecture/windows-prebuilt-installation-study-2026-10-20.md new file mode 100644 index 00000000..6bbc8245 --- /dev/null +++ b/knowledge/architecture/windows-prebuilt-installation-study-2026-10-20.md @@ -0,0 +1,120 @@ +--- +description: Approved prebuilt-first and WinGet direction, current installer gaps, release-contract constraints, and proposed consumer qualification gates. +resource: repository-installation-study +tags: +- windows +- installation +- release +- proposal +- winget +timestamp: 2026-10-20 +title: Windows Prebuilt Installation Study +type: proposal +--- +# Windows prebuilt installation study + +**Status:** study complete; product direction approved; implementation and platform qualification pending. Reviewed on 2026-10-20. + +**Recommendation:** make official prebuilt binaries the normal Windows installation path. First harden and qualify the existing archive installer. Then add WinGet as the normal managed channel, retaining the official release archive as fallback. Keep Cargo available as an explicitly documented source-build route. Both channels must consume the existing verified release binaries. + +## Identity, authority and approval + +This concept is the installation study identity. No existing installation-delivery milestone or slice identity was identified, and none is renumbered here. The canonical delivery context remains [Native Release Verification](./release-verification.md), with [Architecture Invariants](./invariants.md) unchanged. + +Scryer remains the sole architectural authority. Relevant existing nodes are `container-release-verifier` and `node-1` (Release Gate); existing claims include `resp-255` (native archives), `resp-256` (archive provenance and smoke), `resp-16` (packaged command capabilities), and `resp-17` (MCP negotiation). Study ledger: `chg-j65vgg`. No new claims, execution briefs or implementation approvals have been created. Any future changed responsibility, derived-artifact contract or installer failure contract must be planned in Scryer and signed off before dependent code changes. + +The user selected two product directions in this chat on 2026-10-20: + +1. Ordinary Windows installation should use prebuilt binaries; Cargo may require build tools. +2. WinGet should be the later managed channel, with the release archive as fallback. + +These decisions approve the study direction. They do not approve implementation details, external package submission, a Windows support floor, persistent PATH changes or runtime deployment policy. + +The studied release is **v3.0.3**, commit `4af5db4e9dc959431a467a076a881f67d584cc37`. The working checkout is the older v2.0.0 at `6aa5ba8bd99c3071e106a8bfc7a408652a8e4bb5`; release claims below use the pinned release source. The archive installer is identical between those snapshots. Unrelated working-tree changes and Scryer drift were preserved. + +## Problem and observable outcome + +A Windows user attempting Cargo installation could not launch CMake. The dependency uses CMake when its native prebuilt-library attempt falls back to source compilation. Installing one missing tool treats the immediate symptom but leaves ordinary users exposed to the complete native build environment. + +The desired outcome is that an ordinary Windows x64 user can install and run both `codebase-graph.exe` and `k-wiki.exe` from a single official release without Rust, CMake, Ninja, a C/C++ compiler SDK or Git Bash. This outcome still requires qualification on a named consumer Windows/PowerShell baseline. It does not establish that the existing executable has no redistributable runtime dependencies. + +Fixing Ladybug's downloader alone would not remove all native compilation from Cargo installation: [the root build script](https://github.com/rabii-chaarani/codebaseGraph/blob/4af5db4e9dc959431a467a076a881f67d584cc37/build.rs#L38) unconditionally compiles the vendored WebAssembly text grammar with `cc::Build`. Source installation remains a legitimate developer route. + +## Existing foundation and findings + +The release pipeline already creates both executables, internal binary checksums, an archive checksum, packaged installers and commit/version/target provenance. Preserve the build-once/promote contract and the Windows bundled-extension feature. GitHub v3.0.3 already has a Windows x64 release archive. No replacement database or new compiler-installation service is needed to meet the approved direction. + +| ID | Evidence status and consequence | Required response | +| --- | --- | --- | +| WIN-01 | **Established installer defect.** [PowerShell line 41](https://github.com/rabii-chaarani/codebaseGraph/blob/4af5db4e9dc959431a467a076a881f67d584cc37/release/install/install.ps1#L41) invokes a native probe without checking its exit code. Lines 72–77 can report validation success after an unsuccessful native exit. | Reject nonzero native probe exits explicitly. Verify failure before replacing either installed executable. | +| WIN-02 | **Established gap against a proposed recovery guarantee.** [Lines 81–82](https://github.com/rabii-chaarani/codebaseGraph/blob/4af5db4e9dc959431a467a076a881f67d584cc37/release/install/install.ps1#L81) replace graph and then wiki; failure on the second operation can leave different releases. Per-file temporary copies are already present and should be preserved. Existing documentation does not prove a pair transaction. | Define matching-pair recovery and verify second-replacement and busy-file failures before promising it. Decide interruption/power-loss scope separately. | +| WIN-03 | **Decision-critical qualification gap.** [Archive smoke](https://github.com/rabii-chaarani/codebaseGraph/blob/4af5db4e9dc959431a467a076a881f67d584cc37/crates/xtask/src/main.rs#L382) dry-runs the installer and exercises extracted executables. [The native workflow](https://github.com/rabii-chaarani/codebaseGraph/blob/4af5db4e9dc959431a467a076a881f67d584cc37/.github/workflows/native.yml#L43) prepares native dependencies before smoke. | Perform a real installation and exercise installed command paths on a clean consumer image; a prepared build runner or a restricted PATH alone is insufficient evidence. | +| WIN-04 | **Conditional channel risk.** Binary package managers extract/install files themselves and do not inherit packaged PowerShell installer behavior. | Verify the selected WinGet install, upgrade, command aliases, failure and removal paths independently. Do not claim archive-installer tests qualify WinGet. | +| WIN-05 | **Established packaging constraint.** [The current archive inventory](https://github.com/rabii-chaarani/codebaseGraph/blob/4af5db4e9dc959431a467a076a881f67d584cc37/crates/xtask/src/main.rs#L512) is exactly five files; complete-artifact validation accepts one canonical archive, sidecar and provenance per target and rejects extras. | Plan an explicit derived-ZIP contract, hash identity and promotion validation. Do not add a ZIP or DLLs to distribution as unchecked extras. | + +The release runbook describes the probes as validation. This study records the source/document mismatch and recommends restoring that gate; it does not redefine Scryer responsibilities or infer pair atomicity from the existing wording. + +WIN-01 is established by source tracing plus Microsoft's documented [native exit-code semantics](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_error_handling?view=powershell-5.1#external-program-errors). It was not reproduced under PowerShell in this study. + +No missing DLL or CRT failure has been demonstrated. [Windows native setup](https://github.com/rabii-chaarani/codebaseGraph/blob/4af5db4e9dc959431a467a076a881f67d584cc37/.github/actions/setup-native/action.yml#L26) deliberately uses static OpenSSL libraries, so the absence of OpenSSL sidecars is not evidence of a defect. Inventory the actual executables' dependencies and exercise dynamically loaded extensions on the consumer baseline. Microsoft distinguishes [runtime redistribution](https://learn.microsoft.com/en-us/cpp/windows/determining-which-dlls-to-redistribute?view=msvc-170) from compiler installation; static native-library linkage alone does not establish static CRT linkage. + +## Options and selection + +| Option | Fit and maintenance implications | Study disposition | +| --- | --- | --- | +| Cargo-first with better prerequisite documentation | Helps developers diagnose source builds, but ordinary users still need native tools when source compilation occurs. | Retain as the developer route; insufficient as the primary solution. | +| Official archive and packaged installer | Reuses existing builds, checksums and release identity. Users still obtain/extract the archive, and command-discovery and upgrade behavior need validation. | First delivery stage and permanent fallback. | +| WinGet portable package | Offers a familiar Windows lifecycle and supports multiple portable executable aliases. Requires a validated ZIP, manifest maintenance and channel-specific tests. | User-selected managed channel after the foundation is qualified. | +| Project-owned PowerShell downloader | Could automate version/target selection but adds acquisition, retry and installer maintenance overlapping WinGet. | Not selected; not needed for the current direction. | +| cargo-binstall | Can map existing archives with metadata, but has Rust-target naming and crate-inventory constraints and can fall back to compilation. | Optional future developer convenience; outside required scope. | + +[WinGet's manifest contract](https://github.com/microsoft/winget-pkgs/blob/master/doc/manifest/schema/1.28.0/installer.md) supports portable ZIPs containing multiple binaries, command aliases, hashes and user/machine scope. The proposed package must list both executables explicitly and use an exact official version URL and digest. A package identity has not been reserved or submitted. + +A Windows ZIP should be derived from the same verified staged binary bytes as the canonical archive, rather than recompiling. Preserve existing target identifiers and archive URLs; update the typed packaging/completeness/provenance contract before adding this format. + +The current root crate declares only the graph executable; wiki is separate. The [cargo-binstall configuration contract](https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/SUPPORT.md) infers binaries from crate declarations, uses Rust target triples, and permits fallback strategies unless restricted. An archive containing wiki would not automatically make root-package binstall install it. Adding binstall is not necessary to solve this user's problem. + +## Proposed requirements and acceptance gates + +The labels below identify this study's proposed acceptance gates, not approved new Scryer claims or passing execution. Existing claims cover the noted release responsibilities; new installation promises require the Scryer plan before implementation. + +| ID | Observable acceptance and verification | Intent/evidence mapping | +| --- | --- | --- | +| WPI-01 | On the chosen clean Windows x64 baseline, a normal user installs both executables from one official version without the developer toolchain, a checkout, Ladybug caches or build-environment overrides. Run real graph/database, wiki and MCP operations through installed paths. Transfer the package first, then verify applicable runtime smoke without network access. | Approved product outcome; existing `resp-16`, `resp-17`, `resp-256` provide related packaged checks. New consumer qualification is **not executed**. | +| WPI-02 | Unsupported target, unavailable asset, download failure and digest mismatch produce an explicit failure before replacement, with no Cargo fallback or automatic SDK installation. Exact release selection is consistent for archive and checksum. | Existing `resp-255`/`resp-256` support artifact identity; acquisition/channel behavior still needs planned intent. Proposed tests use controlled failures, not live production probes. | +| WPI-03 | A correctly hashed probe fixture returning a nonzero native exit fails validation and install, leaving the previous installation untouched. | Restores the documented validation gate; covers WIN-01. PowerShell execution **not performed**. | +| WPI-04 | Fresh install, reinstall, upgrade, second-file failure and a running/locked executable never report successful installation of a mismatched pair. The specified recovery path is demonstrated. | Proposed recovery contract covering WIN-02. Existing per-file replacement is not sufficient evidence. Cancellation/power-loss guarantees remain a separate decision. | +| WPI-05 | Shell command discovery and existing MCP registrations resolve the intended installed release. An older Cargo binary earlier on PATH is detected/reported rather than mistaken for the new installation. Existing registrations are verified and clients restarted through the documented runbook. | Preserve [release upgrade guidance](https://github.com/rabii-chaarani/codebaseGraph/blob/4af5db4e9dc959431a467a076a881f67d584cc37/docs/release.md#L152); no automatic process termination or deletion of a Cargo installation is proposed. | +| WPI-06 | The WinGet ZIP contains the verified binary bytes, has its own validated digest/release binding, and the manifest exposes both commands. Real WinGet install/upgrade/removal and lock/failure scenarios satisfy the promises made for that channel. | `resp-255`/`resp-256` require an explicit derived-artifact plan. No ZIP, manifest, submission or WinGet execution exists from this study. | +| WPI-07 | Cargo documentation distinguishes build prerequisites from runtime installation, names the Windows source-fallback requirements, and retains the chosen source version/features and appropriate locked dependency guidance. | Documentation within the approved source-build option; no claim that every Cargo installation invokes CMake. | + +Import inspection and clean execution are complementary: DLLs loaded at runtime may escape a static import list, while build-host smoke may obtain runtime libraries from the prepared host. If a redistributable is required, choose and qualify its supported deployment policy rather than promising that no runtime component is needed. + +## Delivery sequence and boundaries + +1. **Archive foundation:** restore the native exit gate, settle failure/recovery and command-discovery behavior, preserve both-binary validation, and make prebuilt installation the main documentation route. Retain explicit Cargo prerequisites. This stage changes no database architecture or platform identity. +2. **Consumer qualification:** extend verification to installed paths and the named clean Windows/PowerShell baseline, including graph, wiki, bundled extensions and MCP. Resolve actual native-runtime findings if any; do not infer them solely from package file counts. +3. **WinGet:** plan and implement the derived ZIP and channel-specific verification through the existing typed release pipeline. Reserve/submit the external package only with explicit authorization. Retain the archive route when WinGet is unavailable. +4. **Optional later work:** evaluate cargo-binstall only if users need it; do not make multiple new acquisition mechanisms a prerequisite for completion. + +Detailed execution briefs, changed claims, file ownership, dependencies and closure assignments belong in Scryer. This study does not allocate new slices or duplicate those briefs. Existing release gates, four supported target identities and aggregate closure ownership are unchanged. + +## Open decisions before dependent implementation + +- **Windows/PowerShell support floor:** name the client OS versions and built-in/newer PowerShell versions to qualify. The current platform label alone does not establish this. +- **PATH and migration behavior:** retain explicit user directory/command paths and decide whether any persistent PATH mutation is offered. WinGet's aliases and existing Cargo installations need a coexistence plan. +- **Upgrade recovery scope:** choose the supported behavior for normal I/O errors, cancellation, interruption and power loss; do not describe independent file moves as an atomic pair transaction. +- **Runtime policy:** after import and consumer evidence, decide how any required redistributable is supplied. No missing-runtime premise is established today. +- **Channel operations:** select the package identity and publication maintenance owner. External submission has not been authorized by selecting WinGet for this study. + +The decision owner is the user. None of these open details blocks this study's recommendation; they must be resolved before implementation that depends on them. + +## Evidence, review and handoff + +Executed in this study: read-only source comparison against v3.0.3; `cargo metadata --offline --locked --format-version 1 --no-deps` on the working checkout; graph discovery/context/schema and bounded queries; Scryer orientation/read; wiki intent and related decisions; primary documentation checks. The preceding investigation also ran the Windows-target locked dependency tree successfully on macOS. That was dependency inspection, not Windows execution. + +A read-only reviewer using **GPT-6.1 Sol / Max** challenged proposal v0.1 against the pinned release source. The recommendation was narrowed from multiple possible acquisition mechanisms to the archive foundation followed by one selected managed channel. Findings WIN-01 through WIN-05 and the conditional runtime/channel limits are retained above. No implementation changes were made, so the findings are not represented as fixed. + +Limitations: no Windows or PowerShell runtime execution, actual consumer install, PE dependency inventory, WinGet test, new archive build or successful user retry was performed. Graph File-node coverage omitted distribution scripts/manifests; graph-indexed packaging anchors identified the relevant references, and pinned source/Cargo metadata supplied the bounded missing detail. Unrelated Scryer drift was not reconciled. + +See also the [CMake diagnostic procedure](../memory/procedural/windows-cargo-cmake-source-fallback-diagnosis-2026-10-20.md). Implementation readiness requires the applicable owner decisions, Scryer plan/sign-off and executed acceptance evidence; this document establishes neither platform qualification nor release closure. diff --git a/knowledge/memory/episodic/database-phase-child-survives-refresh-worker-termination-2026-10-15.md b/knowledge/memory/episodic/database-phase-child-survives-refresh-worker-termination-2026-10-15.md new file mode 100644 index 00000000..a3b0d987 --- /dev/null +++ b/knowledge/memory/episodic/database-phase-child-survives-refresh-worker-termination-2026-10-15.md @@ -0,0 +1,43 @@ +--- +agent_memory: + version: 1 + kind: episodic + scope: repository + status: active + owner: codex + created_at: 2026-10-14T23:07:10Z + last_verified_at: 2026-10-14T23:07:36Z + verified_by: codex + review_after: null + supersedes: [] + superseded_by: null + sources: + - kind: source + reference: src/materialization_worker.rs:312-375,627-646 and src/db_writer/phase.rs:78-145 at 55abb2522d410580d96861cd0894127ec7c87206; these files match v3.0.2 + content_hash: null + - kind: isolated-reproduction + reference: '/private/tmp/graph-refresh-orphan-pid-k_3p3nb8/descendant-review-result.json: owned phase loader remained alive/stopped and adopted by PID 1 after its materialization worker was killed; complete=true' + content_hash: null + - kind: primary-documentation + reference: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/wait4.2.html + content_hash: null + - kind: review + reference: 2026-10-15 required GPT-6.1 Sol Max follow-up; process identity, bounded fault injection, and descendant cleanup verified + content_hash: null + history: + - from: candidate + to: active + actor: codex + at: 2026-10-14T23:07:36Z + reason: Reviewed against the required GPT-6.1 Sol Max source trace and the saved isolated fault-injection result; coordinator independently verified the relevant source guards, reproduction outcomes, and equality of these files to v3.0.2. The entry distinguishes confirmed failure behavior from the unproven historical Qunys cause. +description: Killing or cancelling the outer materialization worker does not terminate its native database loader child. +tags: +- cancellation +- mcp +- process-lifecycle +- refresh +timestamp: 2026-10-14T23:07:10Z +title: Database phase children survive termination of the refresh worker +type: agent-memory +--- +The 2026-10-15 live-update review confirmed a descendant cleanup gap in an isolated macOS fault fixture. The materialization supervisor kills and reaps only its direct child. That worker can itself spawn a `ladybug-write-phase-v1` loader, whose launch path has no parent-death watchdog or shared cancellation mechanism. The fixture paused an owned loader to model an in-flight stalled phase, terminated only the outer materialization worker, and verified that the loader remained alive with PPID 1. All fixture descendants were explicitly terminated afterward. The existing parent-pipe watchdog protects the outer worker, not this nested loader. After outer-worker termination, the loader is no longer tracked by `worker.json` or the parent RSS supervisor; repeated failed attempts can overlap orphaned loader work and consume resources needed for live updates. The loader operates on a candidate and cannot independently publish the active generation. This is a confirmed process-cleanup defect, not proof of the earlier Qunys incident. A repair should bind descendant lifetime to the owning build and verify cancellation/crash cleanup during a real database phase. \ No newline at end of file diff --git a/knowledge/memory/episodic/empty-user-codex-hooks-mask-project-scryer-hooks-2026-09-22.md b/knowledge/memory/episodic/empty-user-codex-hooks-mask-project-scryer-hooks-2026-09-22.md new file mode 100644 index 00000000..0e617361 --- /dev/null +++ b/knowledge/memory/episodic/empty-user-codex-hooks-mask-project-scryer-hooks-2026-09-22.md @@ -0,0 +1,36 @@ +--- +agent_memory: + version: 1 + kind: episodic + scope: repository + status: candidate + owner: codex + created_at: 2026-09-22T11:16:00+09:30 + last_verified_at: null + verified_by: null + review_after: null + supersedes: [] + superseded_by: null + sources: + - kind: runtime-observation + reference: 2026-09-22 stat/jq validation of /Users/rabii/.codex/hooks.json and synthetic Scryer SessionStart smoke + content_hash: null + - kind: source + reference: .codex/hooks.json + content_hash: null + - kind: documentation + reference: https://learn.chatgpt.com/docs/hooks + content_hash: null + history: [] +description: A zero-byte ~/.codex/hooks.json fails before Codex can load a valid repository-local Scryer hook configuration. +tags: +- codex +- hooks +- scryer +- configuration +- diagnostics +timestamp: 2026-09-22T11:16:00+09:30 +title: An empty user Codex hooks file masks valid project Scryer hooks +type: agent-memory +--- +On 2026-09-22, Codex reported `failed to parse hooks config ... EOF while parsing a value at line 1 column 0` while opening the codebaseGraph repository. The user-level `/Users/rabii/.codex/hooks.json` was exactly zero bytes, while the repository-local `.codex/hooks.json` was valid and defined Scryer `SessionStart`, `PreToolUse`, `PostToolUse`, and `Stop` command hooks. Codex merges hook sources rather than overriding lower-precedence hooks, so copying the project hook file into the user layer would run matching hooks twice. The safe repair was to replace the truncated user file with `{ "hooks": {} }`, retain the repository-local Scryer definitions as the single active source, validate both files as JSON, and smoke-test `/Applications/scryer.app/Contents/MacOS/scryer-mcp hook` with a synthetic `SessionStart` payload. The hook command exited 0. \ No newline at end of file diff --git a/knowledge/memory/episodic/fresh-graph-ownership-before-first-coordination-mkdir-2026-10-21.md b/knowledge/memory/episodic/fresh-graph-ownership-before-first-coordination-mkdir-2026-10-21.md new file mode 100644 index 00000000..1eacbae1 --- /dev/null +++ b/knowledge/memory/episodic/fresh-graph-ownership-before-first-coordination-mkdir-2026-10-21.md @@ -0,0 +1,47 @@ +--- +agent_memory: + version: 1 + kind: episodic + scope: repository + status: active + owner: repository-maintainers + created_at: 2026-10-21T13:47:21Z + last_verified_at: 2026-10-21T13:49:00Z + verified_by: codex-coordinator + review_after: null + supersedes: [] + superseded_by: null + sources: + - kind: executed-evidence-index + reference: docs/testing/graph-disk-cleanup-v2-evidence/implementation-checkpoints-212-216.json + content_hash: null + - kind: immutable-evidence-archive + reference: docs/testing/graph-disk-cleanup-v2-evidence/implementation-checkpoints-212-216.tar.gz + content_hash: d4175cb036f4dff1f16576d7d5883b115a6a6ea3a6758eb43cf52cf876edd339 + - kind: executed-junit + reference: 216/nextest/s5-worker216/worker-junit.xml inside the evidence archive + content_hash: 30c0b17f218bfc14953b1e8adb7c0c8e9fc419c99d7b028007f5bb8e1ab205c7 + - kind: source-snapshot + reference: 216-source/src/storage/maintenance_ownership.rs::initialize_fresh_managed_domain inside the evidence archive + content_hash: 77087773f50ce6180f95bce7e557a323860ebabb1ee92f4bc02977f2efc5750c + history: + - from: candidate + to: active + actor: codex-coordinator + at: 2026-10-21T13:49:00Z + reason: Verified the archived actual 216 shipping MCP first-birth/followup JUnit has one passing named case and exact recorded hash, with actual coordinator/refresh initializer calls in frozen source. The archived 214 failure distinguishes valid graph publication from absent epoch/origin coverage; the record preserves Darwin-only qualification and no existing-root adoption. +description: A real MCP first-start test exposed ownership initialization that unit factories missed because the coordinator created storage first. +tags: +- graph-storage +- initialization +- ownership +- regression-testing +timestamp: 2026-10-21T13:47:21Z +title: Establish fresh graph ownership before the first coordination lock creates storage +type: agent-memory +--- +During automatic graph cleanup implementation, direct ManagedStore tests established a covered reference epoch, but the real shipping MCP coordinator created the missing storage directory for coordinator.lock before the isolated worker reached the genuine fresh-root initializer. The graph still published successfully with artifact publication controls, while reference epoch/activity controls and per-entry origins were absent. Existing-directory checks could not safely recover that lost creation authority. + +The verified correction calls the genuine fresh Managed-domain initializer at each actual first mutating coordinator/refresh/worker acquisition boundary, before its lock can create storage. Keep path resolution and observational probes noncreating. Existing roots remain unadopted; directory emptiness or a successful current lock is not fresh-creation proof. + +Verify this through the real shipping coordinator first activation and a same-root worker follow-up, not only a direct storage factory. The retained 214 failure and passing 216 MCP/coordinator tests distinguish successful graph publication from cleanup ownership coverage. These executions were Darwin ARM64; native qualification elsewhere remains separate. \ No newline at end of file diff --git a/knowledge/memory/episodic/k-wiki-rendering-boundary-regressions-2026-10-16.md b/knowledge/memory/episodic/k-wiki-rendering-boundary-regressions-2026-10-16.md new file mode 100644 index 00000000..4be5a988 --- /dev/null +++ b/knowledge/memory/episodic/k-wiki-rendering-boundary-regressions-2026-10-16.md @@ -0,0 +1,59 @@ +--- +agent_memory: + version: 1 + kind: episodic + scope: repository + status: active + owner: repository-agents + created_at: 2026-10-16T03:50:00Z + last_verified_at: 2026-10-16T03:56:33Z + verified_by: repository-agents + review_after: null + supersedes: [] + superseded_by: null + sources: + - kind: git-commit + reference: cbe3a8a03e83cdcbfa3dad0a53fd76190986587e:crates/k-wiki/tests/rendering.rs + content_hash: null + - kind: git-commit + reference: cbe3a8a03e83cdcbfa3dad0a53fd76190986587e:crates/k-wiki/src/render/mod.rs + content_hash: null + - kind: wiki-concept + reference: knowledge:architecture/knowledge-wiki#component-map + content_hash: null + history: + - from: candidate + to: active + actor: repository-agents + at: 2026-10-16T03:51:44Z + reason: Reviewed the candidate against committed renderer/production-compiler regression tests at cbe3a8a03e83cdcbfa3dad0a53fd76190986587e, independent GPT-6.1 Sol/Max Unicode probe reproduction and focused fix verification, and the configured MCP3.0.3 whole-LoopAI HTML audit. The claim is explicitly historical and recommends final body URL/heading/Unicode identity checks rather than inferring navigation from metadata or sidebars. No current unresolved defect or new architectural authority is claimed. + - from: active + to: quarantined + actor: repository-agents + at: 2026-10-16T03:55:08Z + reason: 'Final independent review contradicted the sentence implying source-ordered heading metadata reached the renderer in old fixtures: sample_projection calls projection.normalize, and Concept::normalize sorts headings by ID. The historical failures are verified, but that sentence overstates their masking mechanism. Quarantine pending precise correction and renewed evidence review.' + - from: quarantined + to: candidate + actor: repository-agents + at: 2026-10-16T03:55:43Z + reason: Freshly reviewed the corrected masking mechanism against sample_projection normalization and the independent final reviewer counterevidence. Removed the assertion that source-ordered fixture metadata reached rendering; the candidate now attributes the missed heading defect to absent ID/text association checks and the target defect to bare fixture IDs plus whole-page assertions. Quarantine history retains the original correction reason. Ready for focused final review before activation. + - from: candidate + to: active + actor: repository-agents + at: 2026-10-16T03:56:33Z + reason: Fresh independent GPT-6.1 Sol/Max reviewer fetched and verified the corrected candidate against production regression tests and sample_projection/Concept normalization. The corrected wording accurately distinguishes bare fixture IDs from missing final ID/text association checks; the earlier mechanism is retained only in lifecycle correction history. Final configured-MCP3.0.3 source-body/heading/Unicode audit passes. Historical scope, source provenance and architecture authority remain explicit. +description: 'Historical renderer regression lesson: verify final body URLs and heading identity from production compilation, including Unicode fragments.' +tags: +- k-wiki +- navigation +- regression-tests +- renderer +timestamp: 2026-10-16T03:50:00Z +title: k-wiki renderer fixtures must cross the production compiler boundary +type: agent-memory +--- +The October 2026 LoopAI publication audit exposed two renderer defects that hand-built fixtures had masked: production compilation emits bundle-qualified relationship target IDs, and normalized heading metadata is sorted by ID rather than source order. The hand-built fixtures used bare relationship IDs, while whole-page URL assertions and missing ID/text association checks allowed both production target mismatches and misassigned heading IDs to pass. Counting IDs or finding a destination in sidebar navigation did not establish usable source-body navigation. + +The repair at commit `cbe3a8a03e83cdcbfa3dad0a53fd76190986587e` adds production `compile_projection` → `render_site` regressions. Verify labeled links in the rendered body, the ID/text/level association of source headings, and browser-decoded fragment equality with actual target IDs. Include non-ASCII concept, self, directory and root fragments, duplicate headings beyond nine, extended Markdown, nonempty base paths and collisions with generated chrome IDs. A separate Unicode URL probe caught a shared scalar-to-hex escaping bug after the first heading tests passed; UTF-8 percent encoding fixed it without changing canonical slugs. + +This is a historical diagnostic lesson, not an assertion that later revisions remain defective. Preserve the compiler identity and slug contracts when extending renderer coverage, and verify final serialized HTML rather than only intermediate projection metadata. diff --git a/knowledge/memory/episodic/large-graph-publication-delay-can-look-like-refresh-failure-2026-10-15.md b/knowledge/memory/episodic/large-graph-publication-delay-can-look-like-refresh-failure-2026-10-15.md new file mode 100644 index 00000000..36f276fc --- /dev/null +++ b/knowledge/memory/episodic/large-graph-publication-delay-can-look-like-refresh-failure-2026-10-15.md @@ -0,0 +1,43 @@ +--- +agent_memory: + version: 1 + kind: episodic + scope: repository + status: active + owner: codex + created_at: 2026-10-15T07:00:53+09:30 + last_verified_at: 2026-10-15T07:02:00+09:30 + verified_by: codex + review_after: null + supersedes: [] + superseded_by: null + sources: + - kind: source + reference: src/execution/run.rs:35-56,120-150,172-197 at 55abb2522d410580d96861cd0894127ec7c87206; paths identical in v3.0.2 + content_hash: null + - kind: source + reference: src/storage/layout.rs:324-330 and src/storage/managed.rs::begin_write at v3.0.2 (8ba4c316770cba00b9ca8d967aebf2e1ee8670b3) + content_hash: null + - kind: runtime-observation + reference: 2026-10-15 Qunys generation 24545-1792012183188288000-1 published_at_ms=1792012681914; read-only MCP graph_health and File-node discovery; independent 341-file SHA-256 comparison + content_hash: null + - kind: test + reference: '2026-10-15 focused review on HEAD55abb252: 18 refresh unit tests and 2 refresh_recovery_process tests passed; runtime paths verified equivalent to Qunys v3.0.2' + content_hash: null + history: + - from: candidate + to: active + actor: codex + at: 2026-10-15T07:02:00+09:30 + reason: Reviewed against the required independent GPT-6.1 Sol Max source trace, verified Qunys generation timestamps, read-only MCP health and graph discovery, and the independent 341-file SHA-256 comparison. The entry explicitly leaves the earlier incident's cause unproven. +description: The Qunys refresh review verified that whole-generation publication can take minutes despite a 30-second reconciliation interval. +tags: +- diagnostics +- freshness +- mcp +- refresh +timestamp: 2026-10-15T07:00:53+09:30 +title: Large graph publication can appear stale while automatic refresh is healthy +type: agent-memory +--- +During the 2026-10-15 Qunys automatic-refresh review, a generation took approximately 498.7 seconds from candidate creation to atomic publication. The reviewed Darwin refresh path in v3.0.2 retains the previous readable generation while the execution pipeline stages the complete graph, constructs search files, and loads the replacement database; partition reuse does not remove this whole-generation publication work. The 30-second reconciliation interval schedules checks and is not a completion deadline. A subsequent independent SHA-256 comparison of all 341 graph-discovered manifest files matched the current source with no missing entries and a stable active generation. This establishes that minutes of apparently old query results can coexist with a working refresher on a large graph; it does not establish the cause of the user's earlier incident. Preserve refresh health and worker/pending/error state before a manual build, and distinguish a running build from stopped monitoring or blocked retries before choosing a repair. \ No newline at end of file diff --git a/knowledge/memory/episodic/lifecycle-recovery-observation-races-2026-10-16.md b/knowledge/memory/episodic/lifecycle-recovery-observation-races-2026-10-16.md new file mode 100644 index 00000000..7e200a4c --- /dev/null +++ b/knowledge/memory/episodic/lifecycle-recovery-observation-races-2026-10-16.md @@ -0,0 +1,50 @@ +--- +agent_memory: + version: 1 + kind: episodic + scope: repository + status: active + owner: repository-agents + created_at: 2026-10-16T05:00:00Z + last_verified_at: 2026-10-16T05:22:00Z + verified_by: repository-agents + review_after: null + supersedes: [] + superseded_by: null + sources: + - kind: ci-log + reference: https://github.com/rabii-chaarani/codebaseGraph/actions/runs/38848080891/job/116803254633 + content_hash: null + - kind: ci-log + reference: https://github.com/rabii-chaarani/codebaseGraph/actions/runs/38848080891/job/116803254559 + content_hash: null + - kind: git-commit + reference: 2b07a52:tests/refresh_recovery_process.rs + content_hash: null + - kind: git-commit + reference: 2b07a52:tests/support/lifecycle_faults.rs + content_hash: null + - kind: executed-test + reference: '2026-10-16: cargo test --locked -p codebase-graph --test refresh_recovery_process observation -- --nocapture; 2 passed' + content_hash: null + history: + - from: candidate + to: active + actor: repository-agents + at: 2026-10-16T05:22:00Z + reason: Reviewed the historical observations against both original native job logs and the test-only diff at 2b07a52d713560f60b5fe8aea74c2bd56509cfb2. Strict workspace Clippy, formatting, and both retry regression tests pass. The note preserves the uncertainty about the Windows transport cause and explicitly does not claim platform qualification; active graph readability and 64 no-op reconciliations are reported directly by the macOS failure. +description: Native fault-recovery tests can miss a completed generation or encounter an interrupted read-only coordinator observation. +tags: +- ci +- lifecycle +- recovery +- test-synchronization +timestamp: 2026-10-16T05:00:00Z +title: Lifecycle recovery checks need observable reconciliation windows +type: agent-memory +--- +PR #150's failed native run exposed two harness sensitivities while testing recovery, outside the renderer changes under review. The macOS cancellation test timed out requiring a simultaneous `freshness=current`, `pending=false` health snapshot before querying the pending symbol; its last status reported a readable active graph and 64 successful no-op reconciliations with a 100 ms reconciliation interval. The Windows guardian-loss test instead stopped on a `graph_health` response containing `coordinator_transport_error` and OS error 10054. The Windows log establishes the interrupted observation, not its underlying transport cause. + +Keep periodic reconciliation slow enough in lifecycle fault fixtures to observe completion while ordinary polling still detects edits. If an eventual-recovery test repeats a read-only health/search observation after a coordinator transport error, bound that retry window and preserve the final failure. Do not replay mutation requests, HTTP failures, or unrelated tool errors under this exception. The repair at `2b07a52` uses a 5-second fixture interval and a 2-second retry window, with regressions for read-only recovery, deadline exhaustion, and non-replay cases. + +Retain the actual recovery assertions: owned descendants exit, invalid cancellation capabilities are rejected, the prior generation survives interruption, and both the pending edit and a later independent edit publish automatically. This lesson concerns test synchronization and observation; it does not establish a production transport repair or waive native platform qualification. \ No newline at end of file diff --git a/knowledge/memory/episodic/stale-worker-pid-reuse-blocks-automatic-refresh-2026-10-15.md b/knowledge/memory/episodic/stale-worker-pid-reuse-blocks-automatic-refresh-2026-10-15.md new file mode 100644 index 00000000..04659a8b --- /dev/null +++ b/knowledge/memory/episodic/stale-worker-pid-reuse-blocks-automatic-refresh-2026-10-15.md @@ -0,0 +1,46 @@ +--- +agent_memory: + version: 1 + kind: episodic + scope: repository + status: active + owner: codex + created_at: 2026-10-14T23:06:20Z + last_verified_at: 2026-10-14T23:07:36Z + verified_by: codex + review_after: null + supersedes: [] + superseded_by: null + sources: + - kind: source + reference: src/materialization_worker.rs:65-69,128-136,505-545,650-657 at 55abb2522d410580d96861cd0894127ec7c87206; identical in v3.0.2 (8ba4c316770cba00b9ca8d967aebf2e1ee8670b3) + content_hash: null + - kind: source + reference: src/api/core.rs:69-84,266-275,961-986; src/adapters/cli/materialization/command.rs:17-21 + content_hash: null + - kind: isolated-reproduction + reference: '/private/tmp/graph-refresh-orphan-pid-t6586i3h/review-result.json: blocked before default manual build, manual exit 0, stale record retained, next auto attempt blocked again, record-only removal restores current' + content_hash: null + - kind: primary-documentation + reference: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/kill.2.html + content_hash: null + - kind: review + reference: 2026-10-15 required GPT-6.1 Sol Max read-only adversarial follow-up; numeric-PID-only guard and same-version source paths verified + content_hash: null + history: + - from: candidate + to: active + actor: codex + at: 2026-10-14T23:07:36Z + reason: Reviewed against the required GPT-6.1 Sol Max source trace and the saved isolated fault-injection result; coordinator independently verified the relevant source guards, reproduction outcomes, and equality of these files to v3.0.2. The entry distinguishes confirmed failure behavior from the unproven historical Qunys cause. +description: A default manual build bypasses the automatic worker recovery gate and can refresh the graph without repairing continued live updates. +tags: +- mcp +- process-identity +- recovery +- refresh +timestamp: 2026-10-14T23:06:20Z +title: A reused PID in stale worker state can block automatic refresh +type: agent-memory +--- +The 2026-10-15 live-update review reproduced an automatic-refresh recovery failure using an isolated persisted-state fixture. `worker.json` records only a protocol version, build ID, and numeric worker PID. `recover_orphan_worker` treats any live process with that PID as the former worker, waits five seconds, and returns an error without clearing the record. After a crashed worker's PID is reused by an unrelated long-lived process, every subsequent automatic attempt can repeat the same failure. A standalone default CLI build uses the direct pipeline and bypasses this gate: in the fixture it published a fresh generation successfully, but the next completed automatic attempt remained blocked and pending. Removing only the deliberately stale fixture record allowed reconciliation to become current without another source edit. This establishes a reachable recovery defect, not the cause of the earlier Qunys incident. A successful manual build does not prove that continuous refresh recovered. A repair should bind persisted workers to a verifiable process incarnation and verify safe stale-record recovery under the worker ownership lock; it must not signal an unrelated process based only on PID. \ No newline at end of file diff --git a/knowledge/memory/episodic/windows-build-host-smoke-does-not-qualify-consumer-install-2026-10-20.md b/knowledge/memory/episodic/windows-build-host-smoke-does-not-qualify-consumer-install-2026-10-20.md new file mode 100644 index 00000000..46d825a4 --- /dev/null +++ b/knowledge/memory/episodic/windows-build-host-smoke-does-not-qualify-consumer-install-2026-10-20.md @@ -0,0 +1,40 @@ +--- +agent_memory: + version: 1 + kind: episodic + scope: repository + status: candidate + owner: repository-maintainers + created_at: 2026-10-20T01:24:24Z + last_verified_at: null + verified_by: null + review_after: null + supersedes: [] + superseded_by: null + sources: + - kind: curated-study + reference: knowledge/architecture/windows-prebuilt-installation-study-2026-10-20.md; findings WIN-03 and WIN-04 + content_hash: null + - kind: source + reference: 'v3.0.3 (4af5db4e9dc959431a467a076a881f67d584cc37): crates/xtask/src/main.rs:382-385,561-588; .github/workflows/native.yml:43-53' + content_hash: null + - kind: primary-documentation + reference: https://learn.microsoft.com/en-us/cpp/windows/determining-which-dlls-to-redistribute?view=msvc-170 + content_hash: null + - kind: review + reference: Read-only proposal v0.1 review on 2026-10-20; GPT-6.1 Sol / Max; source and documentation evidence only + content_hash: null + history: [] +description: The installation study distinguished the existing prepared-host extracted-binary smoke from real consumer installation evidence. +tags: +- windows +- installation +- release +- verification +timestamp: 2026-10-20T01:24:24Z +title: Build-host smoke does not qualify installed Windows consumer behavior +type: agent-memory +--- +The 2026-10-20 installation study traced released v3.0.3's native artifact path: it prepares native dependencies, runs the packaged installer with `-DryRun`, and exercises the extracted executable paths. This is useful packaged-runtime evidence but does not exercise actual destination replacement or establish operation on a clean Windows consumer environment. A green build-host smoke therefore cannot be reused as proof that an advertised prebuilt installation and upgrade work without the developer environment. + +When qualifying a new binary distribution channel, inspect which paths and environment the executed checks actually cover. Preserve the existing exact-release artifact checks, then obtain separate installed-path and consumer-environment evidence for that channel. Hiding build tools on PATH alone cannot exclude runtime libraries installed elsewhere on the build host. This study executed no Windows/PowerShell consumer qualification and established no missing-DLL defect. \ No newline at end of file diff --git a/knowledge/memory/procedural/graph-disk-cleanup-requires-reachability-and-destination-ownership-2026-10-20.md b/knowledge/memory/procedural/graph-disk-cleanup-requires-reachability-and-destination-ownership-2026-10-20.md new file mode 100644 index 00000000..68cdae70 --- /dev/null +++ b/knowledge/memory/procedural/graph-disk-cleanup-requires-reachability-and-destination-ownership-2026-10-20.md @@ -0,0 +1,46 @@ +--- +agent_memory: + version: 1 + kind: procedural + scope: repository + status: active + owner: repository-maintainers + created_at: 2026-10-20T01:50:01Z + last_verified_at: 2026-10-20T01:50:01Z + verified_by: codex + review_after: null + supersedes: [] + superseded_by: null + sources: + - kind: review + reference: knowledge/architecture/graph-disk-retention-review-2026-10-20.md + content_hash: f8952424f5f1f64d388ab3ed5ebf82c74c62548e44abb47496d66344dca32dc3 + - kind: source + reference: src/storage/layout.rs::DirectLayout::destination_key at 6aa5ba8bd99c3071e106a8bfc7a408652a8e4bb5 + content_hash: null + - kind: test + reference: /private/tmp/codebasegraph-storage-review-wihkqic4/result.json; extracted-function collection check, synthetic residue, no runtime crash injection + content_hash: null + history: + - from: candidate + to: active + actor: codex + at: 2026-10-20T01:50:01Z + reason: Reviewed the focused diagnostic procedure against the measured active-manifest inventory, exact Direct destination-key match at 6aa5ba8, and fresh GPT-6.1 Sol Max source/harness findings. It distinguishes observed state from deletion authority and from absent containment guarantees. +description: Separate legacy debris, active parsing cache and live build state before designing or executing graph cleanup. +tags: +- cleanup +- diagnosis +- graph-storage +- ownership +timestamp: 2026-10-20T01:50:01Z +title: Classify graph disk usage by reachability and destination ownership +type: agent-memory +--- +## Reusable procedure + +Before treating graph state size as reclaimable waste, resolve the active pointer and classify allocated bytes against active-manifest artifact keys, live run ownership, leased generations, and recovery evidence. Recheck the pointer after measurement; record any concurrent mutation. Independently identify Direct cache destinations using their exact database/manifest pair: managed configuration alone does not retire an explicitly addressable Direct store. + +The 2026-10-20 review found that large historical staging and a separate Direct cache coexisted with an overwhelmingly current parsing cache and live candidate space. A collector that sees only valid artifact keys can also miss interrupted temporary/replacement writes. Review all owned namespaces and failure exits, then require the relevant destination's own ownership and recovery proof before deletion. Preserve a replacement backup when a referenced destination is missing, and preserve stable lock inodes. Directory age and numeric PIDs do not prove abandonment. + +Use version-specific source evidence for cleanup authority: newer guardian claims in wiki or memory cannot authorize destructive cleanup against a baseline that lacks them. Test total-state convergence and interrupted writes as well as active database size. The isolated extracted-function check established enumeration behavior only; it did not qualify a new runtime collector. \ No newline at end of file diff --git a/knowledge/memory/procedural/managed-recovery-must-not-recreate-retired-lease-2026-10-24.md b/knowledge/memory/procedural/managed-recovery-must-not-recreate-retired-lease-2026-10-24.md new file mode 100644 index 00000000..c68ec6d8 --- /dev/null +++ b/knowledge/memory/procedural/managed-recovery-must-not-recreate-retired-lease-2026-10-24.md @@ -0,0 +1,44 @@ +--- +agent_memory: + created_at: 2026-10-24T02:51:30Z + history: + - actor: codex + at: 2026-10-24T02:52:00Z + from: candidate + reason: Verified current Managed source SHA256 and both actual lease-gap instances, plus shipping atomic-generation and ten-update physical convergence in passing32-case final256 JUnit; source/native/binary stability all true. Historical255 counterexample is preserved separately. + to: active + kind: procedural + last_verified_at: 2026-10-24T02:52:00Z + owner: repository-maintainers + review_after: null + scope: repository + sources: + - content_hash: 33af3c8a49ce45043b26a404fd78923bc728820af6314ca1c8c3eb135ddd584b + kind: source + reference: src/storage/managed.rs::recover_runs_locked_typed, source capture 256 + - content_hash: 4109a5af4ca854d8a293dacc74ea8d360a6df88a234a0896802cb094c24d30a8 + kind: executed-test + reference: docs/testing/graph-disk-cleanup-v2-evidence/pre-platform-fixes-256.tar.gz:checkpoints/256/nextest/s5-regressions256/junit.xml; 32 passed including both managed_read_recovery_does_not_recreate_a_partially_retired_run_lease instances and shipping generation convergence + - content_hash: null + kind: runtime-observation + reference: 'docs/testing/graph-disk-cleanup-v2-evidence/implementation-checkpoints-255.tar.gz: standalone atomic-generation failure after replacement lease inode; capture 256 matching case passed' + status: active + superseded_by: null + supersedes: [] + verified_by: codex + version: 1 +description: Existing-parent opens can still create files and invalidate a pending retirement's inode binding. +tags: +- disk-cleanup +- leases +- recovery +- storage +timestamp: 2026-10-24T02:51:30Z +title: Managed recovery must not recreate a cooperatively removed lease +type: agent-memory +--- +When ordinary Managed recovery acquires a workspace lease, open only an existing file. Disabling parent-directory creation does not disable file creation: `try_open_locked_in_existing_parent` could recreate `lease.lock` after a cooperative retirement grant removed it. The recorded removal then rejected the replacement inode and could not finish. + +Use `try_open_existing_locked` for that recovery acquisition. A missing lease must not be recreated as evidence or ownership. Verify the interleaving with a genuine recorded Removing workspace, a lease-deleted/rmdir-deferred gap, and a still-Publishing sibling that forces required `recover_for_read`: the sibling must recover, the missing lease must remain missing, and the original removal must resume to an absent root and durable Idle. Also exercise repeated shipping health calls until physical generation/run/cache convergence. + +This was verified in final capture 256 on Darwin arm64: both library and standalone storage regression instances passed, alongside the actual atomic-generation and ten-update convergence cases. Source and binary/native inputs remained unchanged across the 32-case targeted run. Linux/Windows native qualification remains separate. \ No newline at end of file diff --git a/knowledge/memory/procedural/preflight-unpublished-same-version-release-replacement-2026-10-21.md b/knowledge/memory/procedural/preflight-unpublished-same-version-release-replacement-2026-10-21.md new file mode 100644 index 00000000..7ca5c394 --- /dev/null +++ b/knowledge/memory/procedural/preflight-unpublished-same-version-release-replacement-2026-10-21.md @@ -0,0 +1,50 @@ +--- +agent_memory: + version: 1 + kind: procedural + scope: repository + status: candidate + owner: repository-agents + created_at: 2026-10-21T00:42:30Z + last_verified_at: null + verified_by: null + review_after: null + supersedes: [] + superseded_by: null + sources: + - kind: source + reference: https://github.com/rabii-chaarani/codebaseGraph/blob/018df35e72447fc3e014e950d1d3c6648bbd4820/.github/actions/verified-release/action.yml + content_hash: null + - kind: source + reference: https://github.com/rabii-chaarani/codebaseGraph/blob/018df35e72447fc3e014e950d1d3c6648bbd4820/.github/workflows/release.yml + content_hash: null + - kind: pull-request + reference: https://github.com/rabii-chaarani/codebaseGraph/pull/154 + content_hash: null + - kind: commit + reference: d71e314be474e06a74385cfec8e6d7955f9eabc2 + content_hash: null + - kind: executed-check + reference: python3 /private/tmp/codebase-graph-release-3.0.4-20261021/verify_recognition.py; seven checks passed; /private/tmp/codebase-graph-release-3.0.4-20261021/verification.json + content_hash: null + history: [] +description: Use the exact trusted release branch and distinguish projected recognition from actual publication qualification. +tags: +- ci +- provenance +- release +- replacement +- verification +timestamp: 2026-10-21T00:42:30Z +title: Preflight a same-version replacement release before merging +type: agent-memory +--- +When an original release merge never achieves successful exact-SHA CI, a dependency fix on a later ordinary main commit cannot authorise that original release. For a version that is absent from both GitHub tags/releases and the package registry, prepare a replacement release proposal from patched main while retaining the same package, dependency and release-manifest versions. + +Before reusing the generated release branch, verify that no open PR owns it, retain its prior head identity, and update it with an expected-SHA lease. The existing recogniser requires the exact repository-owned `release-please--branches--main--components--codebase-graph` branch, base `main`, and a pending or tagged release label. A conventional `codex/` replacement branch is not recognised by this contract. + +Preflight the unmodified recognition action with the new PR's real repository, branch, base and label fields. A fixture that projects a merged PR and successful main-push CI at the same SHA must select only the replacement, including when the original pending PR is present in the associated-PR response. Confirm rejection of the actual open PR, an untrusted branch, a missing release label, a fork, the original merge at a different SHA, and failed CI. Keep this projection explicitly separate from observed GitHub execution: it proves selection behaviour, not an actual merge, CI success, main-history membership, complete artifacts or publication. + +Keep the original pending release tracked until the replacement's native assets and crate publication have both succeeded. The current finalizer updates only the selected PR; stale pending state on the original still needs explicit supersession reconciliation after successful publication. Do not mark the original source SHA as published or clear its label merely to bypass the proposal guard. + +The preflight was exercised for replacement PR #154 using the action at `018df35e72447fc3e014e950d1d3c6648bbd4820`; all seven checks passed. Its publication remained a later gate. \ No newline at end of file diff --git a/knowledge/memory/procedural/unix-exit-peeks-require-siginfo-exit-class-2026-10-24.md b/knowledge/memory/procedural/unix-exit-peeks-require-siginfo-exit-class-2026-10-24.md new file mode 100644 index 00000000..01217978 --- /dev/null +++ b/knowledge/memory/procedural/unix-exit-peeks-require-siginfo-exit-class-2026-10-24.md @@ -0,0 +1,44 @@ +--- +agent_memory: + version: 1 + kind: procedural + scope: repository + status: active + owner: repository-maintainers + created_at: 2026-10-24T04:35:52Z + last_verified_at: 2026-10-24T04:35:52Z + verified_by: codex + review_after: null + supersedes: [] + superseded_by: null + sources: + - kind: source + reference: src/process_lifecycle/unix.rs::Contained::exited at255302957a2a4265fed7de0d112888aa504fd251 + content_hash: bbe2c2cc599f9472047faaad821eacb813653082bb16f713118636d7717093a5 + - kind: executed-test + reference: docs/testing/graph-disk-cleanup-v2-evidence/platform-corrections-257.tar.gz:checkpoints/257/nextest/s5-platform_fixes257/junit.xml + content_hash: ae3dad3133c42d9ae3e7e9aa0592424631370ae34d7c010a6fb13696fb42a3fd + - kind: executed-test + reference: docs/testing/graph-disk-cleanup-v2-evidence/platform-corrections-257.tar.gz:checkpoints/257/nextest/s5-darwin_failure257/junit.xml + content_hash: 46a097bdd7eb19adc58424be9284fbe99711f0e2b2af3b7f49297de95e52a22d + history: + - from: candidate + to: active + actor: codex + at: 2026-10-24T04:35:52Z + reason: Reverified source hash and exact257 JUnit for both actual stopped-child cases and the original owner-loss regression; syscall probes show stoppedcode5 is excluded while exited/killedclasses remain terminal and peeks stay nonreaping. +description: Darwin returned a stopped child from a WEXITED peek; PID presence alone caused premature guardian teardown. +tags: +- darwin +- process-lifecycle +- unix +- waitid +timestamp: 2026-10-24T04:35:52Z +title: Unix exit peeks must require an actual siginfo exit class +type: agent-memory +--- +Classify an owned child's `waitid` result using `si_code`, not merely a nonzero `si_pid`. A native Darwin probe returned `CLD_STOPPED` with `WEXITED | WNOHANG | WNOWAIT` while the child remained stopped. Treating that observation as an exit sent the guardian down its normal teardown path and killed the stopped worker without an owner-loss or budget event. + +`Contained::exited` now accepts only `CLD_EXITED`, `CLD_KILLED` or `CLD_DUMPED` as terminal. Preserve `WNOWAIT` so peeks do not consume the status. Verify actual stop detection, repeated nonterminal peeks, resume/exit with repeated nonreaping peeks, and cancellation of a separately stopped owned group. Retain the original end-to-end owner-loss/stopped-loader regression; do not hide this failure by accepting a vanished worker or loosening its stopped-state barrier. + +The actual-OS regression passed in both library and standalone storage harness, and the original Darwin owner-loss case passed on source capture257. This records observed Darwin behavior and a portable exit-class invariant; it is not a Linux/Windows whole-platform qualification claim. \ No newline at end of file diff --git a/knowledge/memory/procedural/windows-cargo-cmake-source-fallback-diagnosis-2026-10-20.md b/knowledge/memory/procedural/windows-cargo-cmake-source-fallback-diagnosis-2026-10-20.md new file mode 100644 index 00000000..c054d469 --- /dev/null +++ b/knowledge/memory/procedural/windows-cargo-cmake-source-fallback-diagnosis-2026-10-20.md @@ -0,0 +1,46 @@ +--- +agent_memory: + version: 1 + kind: procedural + scope: repository + status: candidate + owner: repository-maintainers + created_at: 2026-10-20T01:10:12Z + last_verified_at: null + verified_by: null + review_after: null + supersedes: [] + superseded_by: null + sources: + - kind: source + reference: 'v3.0.3 (4af5db4e9dc959431a467a076a881f67d584cc37): Cargo.toml:42 and Cargo.lock:180,815-828' + content_hash: null + - kind: dependency-source + reference: 'lbug 0.19.0: build.rs:179-203,290-309,384-398; inspected archive checksum matched v3.0.3 Cargo.lock and archived build script matched inspected source' + content_hash: null + - kind: primary-source + reference: https://docs.rs/cmake/0.1.58/src/cmake/lib.rs.html#1091-1100 + content_hash: null + - kind: executed-check + reference: '2026-10-20: cargo tree --offline --locked --target x86_64-pc-windows-msvc -i cmake passed on macOS at 6aa5ba8bd99c3071e106a8bfc7a408652a8e4bb5; Windows execution not performed' + content_hash: null + - kind: review + reference: Fresh read-only adversarial-review-engineer review; GPT-6.1 Sol / Max; v3.0.3 source snapshot 4af5db4e9dc959431a467a076a881f67d584cc37 + content_hash: null + history: [] +description: Distinguish native source prerequisites from prebuilt installation when a Windows Cargo build cannot launch CMake. +tags: +- windows +- installation +- cargo +- cmake +- native-build +timestamp: 2026-10-20T01:10:12Z +title: Diagnose CMake source fallback in Windows Cargo installs +type: agent-memory +--- +When a Windows Cargo installation reports that `cmake` cannot be executed, first capture the preceding failing-build-script line and resolved dependency version. The message establishes an executable lookup/launch failure; it does not establish whether CMake is uninstalled, outside the process PATH, or selected by an invalid `CMAKE` override. + +For released v3.0.3, the authenticated locked dependency path is codebase-graph → lbug 0.19.0 → cmake 0.1.58. Ladybug accepts supplied native library/include directories, otherwise tries a prebuilt library through `sh scripts/download_lbug.sh`, and falls back to CMake if that attempt fails. Its Windows source fallback selects Ninja and needs the C++ toolchain. Therefore do not claim that every Cargo install necessarily executes CMake, or that installing CMake alone establishes a successful Windows build. The packaged codebaseGraph Windows binary avoids this compilation path. + +Check the selected tools in the affected user's shell (`Get-Command cmake`, `cmake --version`, and `ninja --version`), inspect CMake executable overrides if lookup and Cargo disagree, provide missing source-build prerequisites, reopen the terminal after PATH changes, and retry the original version/features. `RUST_BACKTRACE` adds diagnostics and `CARGO_BUILD_BUILD_DIR` reuses intermediates; neither supplies a missing executable. A source/dependency trace on macOS is not evidence of a successful Windows retry. \ No newline at end of file diff --git a/knowledge/memory/semantic/cbg-c4-01-linear-codebasegraph-cod-project-2026-10-23.md b/knowledge/memory/semantic/cbg-c4-01-linear-codebasegraph-cod-project-2026-10-23.md new file mode 100644 index 00000000..69b30781 --- /dev/null +++ b/knowledge/memory/semantic/cbg-c4-01-linear-codebasegraph-cod-project-2026-10-23.md @@ -0,0 +1,44 @@ +--- +agent_memory: + version: 1 + kind: semantic + scope: repository + status: active + owner: repository-maintainers + created_at: 2026-10-23T03:57:12Z + last_verified_at: 2026-10-23T03:57:50Z + verified_by: codex + review_after: null + supersedes: [] + superseded_by: null + sources: + - kind: user-decision + reference: '2026-10-23, this chat: explicit selection of CodebaseGraph workspace/team COD and creation of a new CodebaseGraph project.' + content_hash: null + - kind: linear-project + reference: https://linear.app/codebasegraph/project/codebasegraph-2cf77b39fc8b + content_hash: null + - kind: repository-handoff + reference: docs/specs/CBG-C4-01/linear-delivery.md + content_hash: 9d35052c79f40b8268777de1d18cba85ff0dd51ad788fdf983ddf4ce73921742 + history: + - from: candidate + to: active + actor: codex + at: 2026-10-23T03:57:50Z + reason: Verified against the user's explicit destination selection, the live COD project UUID/team/URL returned by Linear, and the delivery-index content hash. This records delivery identity only, not implementation approval. +description: The user selected a new COD workspace project rather than the separately connected LoopConnect project. +tags: +- cbg-c4-01 +- delivery +- linear +- project-identity +timestamp: 2026-10-23T03:57:12Z +title: CBG-C4-01 delivery uses the CodebaseGraph workspace and COD project +type: agent-memory +--- +For CBG-C4-01 delivery, use the CodebaseGraph workspace, team `COD` (`6f16e639-47e4-4b66-aa1c-177d7da4a8da`), and project `P-COD-1` (`8949d9f9-6c53-45ea-824b-89d766688e5d`): https://linear.app/codebasegraph/project/codebasegraph-2cf77b39fc8b. + +On 23 October 2026 the user explicitly chose: “CodebaseGraph workspace, team COD: create a CodebaseGraph project first, then create the hierarchy there.” This resolves the old P-RAB-1 destination ambiguity for this programme. The separate LoopConnect P-LC-1 project was not used or migrated. + +Verify the workspace/team/project identities against the live connector rather than choosing by project name alone. This destination decision authorises delivery planning; it is not implementation approval or approval of an uncommitted specification. \ No newline at end of file diff --git a/knowledge/memory/semantic/copy-query-error-can-follow-durable-commit-2026-10-26.md b/knowledge/memory/semantic/copy-query-error-can-follow-durable-commit-2026-10-26.md new file mode 100644 index 00000000..9f4c481b --- /dev/null +++ b/knowledge/memory/semantic/copy-query-error-can-follow-durable-commit-2026-10-26.md @@ -0,0 +1,53 @@ +--- +agent_memory: + version: 1 + kind: semantic + scope: repository + status: quarantined + owner: repository-maintainers + created_at: 2026-10-26T01:51:56.635065+00:00 + last_verified_at: 2026-10-26T01:52:27.126513+00:00 + verified_by: repository-maintainers + review_after: null + supersedes: [] + superseded_by: null + sources: + - kind: upstream-source + reference: https://github.com/LadybugDB/ladybug/blob/c934f673b6b1c5b680bdae3295cbd909b5855cef/src/transaction/transaction_manager.cpp#L119-L173 + content_hash: 5f18e441c0b9e423fd22fb0f4f845be73fe4e125e08a617e7d230a8f51f7ea0b + - kind: upstream-source + reference: https://github.com/LadybugDB/ladybug/blob/c934f673b6b1c5b680bdae3295cbd909b5855cef/src/main/client_context.cpp#L591-L664 + content_hash: 89d40244bab1de83e10c4489cf55305945e85bdb77551d32ed54ef47f48cbb2a + - kind: upstream-pull-request + reference: https://github.com/LadybugDB/ladybug/pull/784 + content_hash: null + - kind: upstream-pull-request + reference: https://github.com/LadybugDB/ladybug/pull/763 + content_hash: null + history: + - from: candidate + to: active + actor: repository-maintainers + at: 2026-10-26T01:52:27.126513+00:00 + reason: 'Verified narrow engine commit/checkpoint ordering against pinned 0.19.0 sources and upstream PR #784; incident cause remains explicitly unproven.' + - from: active + to: quarantined + actor: investigation-agent + at: 2026-10-26T03:28:39.046130+00:00 + reason: Upgrade evaluation found bulk COPY row data is not WAL-backed. The previous title/wording could imply durable COPY after a commit record; actual persistence after checkpoint failure is uncertain. Preserve the no-blind-retry lesson but qualify durability explicitly. +description: A post-commit checkpoint error does not establish COPY rollback, so same-candidate replay needs durable-outcome proof. +tags: +- checkpoint +- copy +- ladybug +- recovery +- retry +timestamp: 2026-10-26T01:51:56.635065+00:00 +title: Ladybug COPY errors can follow a durable commit +type: agent-memory +--- +A Ladybug COPY query error does not prove the COPY rolled back. In verified 0.19.0 source, COPY forces a checkpoint, transaction commit writes/publishes the WAL commit first, and the checkpoint runs afterward. CheckpointException clears the transaction rather than rolling the committed COPY back. Upstream PR #784 explicitly documents that durable data may exist after this error and requires close/reopen recovery to determine the result. + +When deferred primary-key indexes are in use, blindly replaying that COPY on the same candidate can then hit the non-empty/no-index guard before the normal post-success index phase. Adding a hash index changes load capability but does not make replay idempotent. For rebuildable disposable candidates, use a pristine candidate retry boundary; otherwise recover and establish the durable outcome before replay. Preserve the original attempt error. + +This is a verified engine contract and safe-retry lesson, not a diagnosis of the 2026-10-26 DocumentationSource incident. The original attempt history was unavailable. Isolated ordinary precommit pool failures rolled back and replayed successfully; do not generalize that all COPY errors leave rows. PR #763 (0.19.1+) permits suppressing automatic COPY checkpoints but keeps defaults unchanged and does not make replay idempotent. Reverify the exact engine/native archive and extension ABI when upgrading. \ No newline at end of file diff --git a/knowledge/memory/semantic/ladybug-copy-failure-has-uncertain-outcome-2026-10-26.md b/knowledge/memory/semantic/ladybug-copy-failure-has-uncertain-outcome-2026-10-26.md new file mode 100644 index 00000000..80c84ff9 --- /dev/null +++ b/knowledge/memory/semantic/ladybug-copy-failure-has-uncertain-outcome-2026-10-26.md @@ -0,0 +1,49 @@ +--- +agent_memory: + version: 1 + kind: semantic + scope: repository + status: active + owner: repository-maintainers + created_at: 2026-10-26T03:28:39.081786+00:00 + last_verified_at: 2026-10-26T03:28:39.111415+00:00 + verified_by: investigation-agent + review_after: null + supersedes: + - copy-query-error-can-follow-durable-commit-2026-10-26 + superseded_by: null + sources: + - kind: upstream-pull-request + reference: https://github.com/LadybugDB/ladybug/pull/1204 + content_hash: null + - kind: upstream-pull-request + reference: https://github.com/LadybugDB/ladybug/pull/1361 + content_hash: null + - kind: upstream-source + reference: https://github.com/LadybugDB/ladybug/blob/4ca22377b85a33a10247410fe3944a5224b1169d/src/storage/wal/records/copy_table_record_replay.cpp + content_hash: null + - kind: isolated-native-test + reference: /private/tmp/ladybug-022-evaluation-dp_8zy5d/no-close-observations.json + content_hash: bd49c9cedd051e41ea68cab99426dc61f6a8f40c9ef61e8d6e5a77d7f6286cdf + history: + - from: candidate + to: active + actor: investigation-agent + at: 2026-10-26T03:28:39.111415+00:00 + reason: Reviewed against pinned0.22 source, merged PR1204, openPR1361 and isolated official-release abrupt-exit observations; conditional COPY persistence is stated explicitly. +description: Bulk COPY commit, checkpoint completion and durable recovery are distinct; neither blind replay nor disabling checkpoints is safe. +tags: +- checkpoint +- copy +- ladybug +- recovery +- retry +timestamp: 2026-10-26T03:28:39.081786+00:00 +title: Ladybug COPY failures have an uncertain outcome +type: agent-memory +--- +Treat a failed Ladybug COPY/checkpoint as an uncertain operation outcome, not proof of rollback or durability. Transaction commit can precede checkpoint failure, but bulk COPY does not log row payloads to the WAL. The released 0.22 error text promising durable data is too broad; upstream PR #1361 corrects that wording but was unmerged when verified. Recovery/checkpoint progress determines which rows survive restart. + +An isolated official0.22.0 native probe confirmed COPY with auto_checkpoint=false can report success yet lose its rows on abrupt exit before an explicit checkpoint. Therefore disabling automatic checkpoints is not a durability or replay-safety fix. Adding an index or skipping duplicate keys also does not resolve an uncertain prior outcome. For rebuildable candidates, restart from a fresh candidate after uncertainty; for retained databases, preserve recovery files and establish the recovered outcome before replay. + +This is a verified safe-retry lesson, not proof of the initial DocumentationSource incident's cause. Ordinary precommit pool failures can roll back successfully. Qualify the exact native version and failure boundary rather than generalizing that all failed COPYs leave rows or that a transaction commit makes bulk COPY durable. \ No newline at end of file From 8a410c7a22f5291f06a1cece5cd9e7c0be255e72 Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Tue, 27 Oct 2026 18:07:20 +0930 Subject: [PATCH 16/17] docs(spec): limit macOS qualification to current release --- .../decisions/d05a-current-macos-only.md | 30 ++++++++++++++++ docs/specs/CBG-PLAT-01/delivery.md | 6 ++++ docs/specs/CBG-PLAT-01/spec.md | 34 +++++++++++-------- 3 files changed, 55 insertions(+), 15 deletions(-) create mode 100644 docs/specs/CBG-PLAT-01/decisions/d05a-current-macos-only.md diff --git a/docs/specs/CBG-PLAT-01/decisions/d05a-current-macos-only.md b/docs/specs/CBG-PLAT-01/decisions/d05a-current-macos-only.md new file mode 100644 index 00000000..c637802c --- /dev/null +++ b/docs/specs/CBG-PLAT-01/decisions/d05a-current-macos-only.md @@ -0,0 +1,30 @@ +# D05a amendment — current macOS qualification only + +- Work: `CBG-PLAT-01/D05a`; affects **S03/COD-54, R03/A05–A06**, and **S10/COD-61, R10/A15**. +- User decision: **“well then just drop it and keep only current”**, this Prime Agent conversation, 2026-10-27. The immediately preceding discussion explained that standard hosted CI uses current macOS but does not provide a macOS13.3 runner, and proposed a separate minimum-version runner. The user explicitly dropped that minimum-version qualification. +- This is the user's replacement policy, not an inferred passing test. It supersedes only the minimum/current macOS scope in the [original D05a decision](d05a-macos-supported-minimum.md). That decision and all earlier spec/approval revisions remain historical records; none is edited, deleted or silently advanced. + +## Replacement policy + +Qualify **only the current stable macOS release on Apple Silicon (ARM64)** at verification time. Remove the macOS13.3 execution requirement and any claim that older macOS releases are supported by this work. Record the actual tested macOS version/build, source revision and final installed archive digest. The `macos-latest` label alone is not OS-version evidence; inspect the job's actual OS and ensure it represents the current release. + +Run the final installed archive's existing CLI, graph/JSON/FTS, reopen/search, wiki/MCP and failure checks on that current environment. Hosted CI may provide the execution evidence when it runs the actual current macOS release and demonstrates that the bundled runtime resolves without separately installing or relying on Homebrew/OpenSSL. Preserve D02's bundled compatible dylibs, relative paths, licenses, checksums, preflight failures and exact-artifact provenance. This decision does not waive those runtime/clean-environment requirements or turn an unexecuted/configured job into passing evidence. + +The existing **13.3 deployment target and Mach-O compatibility audit remain unchanged build metadata**, not a support or execution guarantee for13.3. Removing the old qualification gate does not require raising link targets, changing OpenSSL/Ladybug/extension versions, rebuilding a different artifact recipe, or restoring retired platforms. The user did not request those changes. + +## Scope and approval history + +Revision0.11 records this narrow policy/acceptance amendment. A separate approval record pins its full committed SHA and this exact decision before dependent delivery changes. Existing S03 implementation authorization remains in force for unchanged R03 behavior; only the qualification scope is replaced. S00/COD-51 records this amendment, not approval of other implementation slices or global closure. + +No Windows baseline/PowerShell/source-install policy, S09 disposition, other issue, signing/notarization policy, merge, publication, deployment, restart or aggregate closure is changed. Existing maintainer closure ownership remains. Prior executed evidence keeps its original source/environment identity and limitations; a historical "13.3 qualification pending" statement is not rewritten as if it had passed or had never been required. + +## Linked-issue impact + +| Record | Effect | +|---|---| +| COD-51 / S00 | Record exact replacement-policy revision/SHA and user decision; preserve earlier approvals. | +| COD-54 / S03, R03/A05–A06 | Remove only13.3 execution/support gate; retain current-macOS final-archive runtime/failure evidence. | +| COD-61 / S10, R10/A15 | Same current-only macOS qualification scope; Windows and aggregate gates unchanged. | +| Maintenance CBG-PLAT-01 milestone | Current-only macOS scope; no automatic issue/milestone closure. | +| PR155 / canonical spec | Publish revision0.11 and immutable amendment approval. | +| PR163 / implementation evidence | Link new scope while retaining reviewed/tested product SHA and historical reports. No product/workflow change required. | diff --git a/docs/specs/CBG-PLAT-01/delivery.md b/docs/specs/CBG-PLAT-01/delivery.md index 34a33000..efdce059 100644 --- a/docs/specs/CBG-PLAT-01/delivery.md +++ b/docs/specs/CBG-PLAT-01/delivery.md @@ -1,5 +1,11 @@ # CBG-PLAT-01 — delivery index +## Current amendment — 2026-10-27 + +The user replaces D05a's minimum/current macOS qualification with **current stable macOS on Apple Silicon only**. The macOS13.3 execution requirement is dropped; existing13.3 deployment metadata remains unchanged and supplies no support claim. See [canonical spec rev0.11](spec.md) and [exact decision/linked-issue impact](decisions/d05a-current-macos-only.md). The separate approval record pins the committed revision. Update COD-51/COD-54/COD-61 and milestone scope without closing them or changing ownership. All other Windows, runtime integrity, actual current-release verification and aggregate gates remain. The older statements below are historical planning/delivery snapshots, not current approval or status. + +## Preserved historical delivery index + - Project: [Maintenance, CodebaseGraph workspace](https://linear.app/codebasegraph/project/maintenance-33932479ebd0). Team `COD`. - Milestone: `CBG-PLAT-01 — PR #153 platform maintenance`, ID `ff37f4fc-4072-439a-8691-9c15dc739ddd`. - Proposed canonical specification: [rev0.1 at full commit 33360340379f878e93324e0829a1bb6f33eafc9d](https://github.com/rabii-chaarani/codebaseGraph/blob/33360340379f878e93324e0829a1bb6f33eafc9d/docs/specs/CBG-PLAT-01/spec.md). No approved specification SHA or implementation sign-off is recorded. diff --git a/docs/specs/CBG-PLAT-01/spec.md b/docs/specs/CBG-PLAT-01/spec.md index 3e3bc035..edff4ea5 100644 --- a/docs/specs/CBG-PLAT-01/spec.md +++ b/docs/specs/CBG-PLAT-01/spec.md @@ -2,14 +2,18 @@ ## 1. Identity, status and authority -- **Revision:** 0.10, proposed implementation scope with **all D01–D05 policies approved** (including D03a/D03b and D05a–D05d). **Work ID:** `CBG-PLAT-01`. +- **Revision:** 0.11, with the user-approved D05a current-macOS-only qualification amendment; remaining implementation scope with **all D01–D05 policies approved** (including D03a/D03b and D05a–D05d). **Work ID:** `CBG-PLAT-01`. - **Canonical Git path:** `docs/specs/CBG-PLAT-01/spec.md`. Supporting review evidence: [review-evidence.md](review-evidence.md) and [evidence/](evidence/). - **Delivery:** CodebaseGraph Linear workspace (`https://linear.app/codebasegraph`), existing **Maintenance** project `P-COD-2` (`https://linear.app/codebasegraph/project/maintenance-33932479ebd0`), team `COD`. This user-selected destination supersedes older project-routing advice. No new project is created. - **Baseline:** [PR #153](https://github.com/rabii-chaarani/codebaseGraph/pull/153), reviewed HEAD `862a8f88d485d5bd257ebd9456c194156fd4ee94`, version3.0.4. This evidence is not the prior checkout6aa5ba8 review. Revalidate changed source before implementation. -- **Approval:** the initial user request authorized planning/specification publication and issue creation. The user later selected **D01 option A: bundle required Windows prebuilt runtime libraries**, with licenses, checksums and controlled DLL loading, and **D02 option A: bundle OpenSSL dylibs for macOS prebuilt releases**, with relative runtime paths, licenses and checksums; no Homebrew prerequisite. See [D01](decisions/d01-windows-runtime-bundling.md) and [D02](decisions/d02-macos-openssl-bundling.md). The user also selected **D03a option A: explicit config path → client-specific override → native Windows user-profile directory**, ignoring HOME for the Windows default and failing clearly rather than falling back to CWD; see [D03a](decisions/d03a-windows-user-directory.md). The user then selected **D03b option B: native .exe clients plus .cmd/.bat shims through a dedicated Windows invocation adapter**, with tested argument handling, no generic shell-command evaluation and clear rejection of unsupported/unsafe inputs; see [D03b](decisions/d03b-windows-client-command-invocation.md). The explicit correction “no i meant B” supersedes the preceding A. The user also selected **D04 option A: retain and accurately report the Windows Direct-read Exclusive lock**, without a new unlock/relock transition or concurrent-reader guarantee; see [D04](decisions/d04-windows-direct-exclusive-mode.md). The user also selected **D05a option A: target macOS 13.3+ on Apple Silicon**, requiring execution on the declared minimum and a current macOS release before claiming support; see [D05a](decisions/d05a-macos-supported-minimum.md). The user also selected **D05b option A: Microsoft-supported Windows 11 x86_64 client releases**, requiring actual desktop installation/runtime qualification rather than Windows Server CI alone; see [D05b](decisions/d05b-windows-consumer-baseline.md). The user also selected **D05c option A: built-in Windows PowerShell 5.1 plus Microsoft-supported PowerShell 7 releases**, with installer tests under both; see [D05c](decisions/d05c-powershell-installer-hosts.md). This does not choose the .cmd/.bat invocation mechanism. The user also selected **D05d option A: include the required Windows JSON/FTS extension bytes by default in plain Cargo installs**, without an extra feature flag or runtime extension download; source compiler/native-library/DLL prerequisites remain documented and verified separately from the prebuilt archive, as recorded in [D05d](decisions/d05d-windows-cargo-default-extensions.md). All listed policy choices are now settled, but the entire specification, implementation start, release/milestone inclusion of S09, merge, deployment and service restarts are not approved. S00 records applicable exact-scope approvals without reopening settled decisions. +- **Approval:** the initial user request authorized planning/specification publication and issue creation. The user later selected **D01 option A: bundle required Windows prebuilt runtime libraries**, with licenses, checksums and controlled DLL loading, and **D02 option A: bundle OpenSSL dylibs for macOS prebuilt releases**, with relative runtime paths, licenses and checksums; no Homebrew prerequisite. See [D01](decisions/d01-windows-runtime-bundling.md) and [D02](decisions/d02-macos-openssl-bundling.md). The user also selected **D03a option A: explicit config path → client-specific override → native Windows user-profile directory**, ignoring HOME for the Windows default and failing clearly rather than falling back to CWD; see [D03a](decisions/d03a-windows-user-directory.md). The user then selected **D03b option B: native .exe clients plus .cmd/.bat shims through a dedicated Windows invocation adapter**, with tested argument handling, no generic shell-command evaluation and clear rejection of unsupported/unsafe inputs; see [D03b](decisions/d03b-windows-client-command-invocation.md). The explicit correction “no i meant B” supersedes the preceding A. The user also selected **D04 option A: retain and accurately report the Windows Direct-read Exclusive lock**, without a new unlock/relock transition or concurrent-reader guarantee; see [D04](decisions/d04-windows-direct-exclusive-mode.md). The original D05a policy selected macOS13.3+ with minimum/current execution; the user now replaces that scope with **current stable macOS on Apple Silicon only**, dropping13.3 qualification and older-version support claims. See the [replacement D05a decision](decisions/d05a-current-macos-only.md); the [original decision](decisions/d05a-macos-supported-minimum.md) remains history. Existing13.3 build metadata is unchanged and is not a support guarantee. The user also selected **D05b option A: Microsoft-supported Windows 11 x86_64 client releases**, requiring actual desktop installation/runtime qualification rather than Windows Server CI alone; see [D05b](decisions/d05b-windows-consumer-baseline.md). The user also selected **D05c option A: built-in Windows PowerShell 5.1 plus Microsoft-supported PowerShell 7 releases**, with installer tests under both; see [D05c](decisions/d05c-powershell-installer-hosts.md). This does not choose the .cmd/.bat invocation mechanism. The user also selected **D05d option A: include the required Windows JSON/FTS extension bytes by default in plain Cargo installs**, without an extra feature flag or runtime extension download; source compiler/native-library/DLL prerequisites remain documented and verified separately from the prebuilt archive, as recorded in [D05d](decisions/d05d-windows-cargo-default-extensions.md). All listed policy choices are now settled, but the entire specification, implementation start, release/milestone inclusion of S09, merge, deployment and service restarts are not approved. S00 records applicable exact-scope approvals without reopening settled decisions. - **Closure owner:** repository maintainer/user; no automatic aggregate closure delegated. Assignees/dates/estimates remain unset. Draft requirements below are proposed, not approved acceptance changes. - **State separation:** proposed → exact-scope approved → implemented → native-platform qualified → maintainer closed. Linear Backlog, attached/configured tests, commits and percentages are not evidence of later states. +## D05a revision0.11 amendment — current macOS only + +The user explicitly replaced the earlier macOS13.3 minimum/current qualification with current stable macOS on Apple Silicon only: **“well then just drop it and keep only current”** (2026-10-27). [Decision and linked-issue impact](decisions/d05a-current-macos-only.md). The original rev0.10 and its exact-scope approvals remain immutable history; unchanged scope/requirements and owner identities are preserved. This revision changes only D05a, R03/A05 and the corresponding S10/R10/A15 macOS qualification references. A06 runtime integrity/failure behavior, Windows policies and aggregate closure gates are unchanged. The existing13.3 deployment target remains build metadata, not an older-version support claim. No13.3 execution gate remains and no current-release execution pass is inferred by the policy change. + ## 2. Problem and observable outcome Fresh inspection of the actual PR code found one newly introduced macOS traversal completeness defect, existing runtime packaging/discovery/installer gaps, three current native CI root causes, and a lower-priority preexisting Windows lock-mode invariant. The new guardian/Job Object and GuardedDatabase abstractions are useful and must not be replaced because an older review described code that is no longer present. @@ -132,18 +136,18 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - Follow approved D02 option A for macOS ARM64 prebuilt releases: bundle compatible redistributable OpenSSL dylibs with relative install names/runtime paths, licenses and checksums. Users must not install Homebrew or OpenSSL separately. Do not switch to static linking or external prerequisites without a new user decision. - Retain exact-artifact checksums/provenance and inspect final release imports, not only a debug build. -- Target macOS 13.3+ on Apple Silicon under approved D05a. Execute the actual final archive on the declared minimum and a current macOS release before claiming support; an extension deployment target or current-host green build alone is insufficient. Do not restore intentionally removed Intel/Linux targets. +- Under amended D05a, qualify only the current stable macOS release on Apple Silicon. Execute the actual final installed archive on that current release without relying on separate Homebrew/OpenSSL, and record the exact OS/build. There is no macOS13.3 execution or older-version support requirement. Existing13.3 deployment metadata remains a build detail, not a qualification guarantee. Do not restore intentionally removed Intel/Linux targets. **Acceptance (proposed):** -- **A05** — Given clean Apple Silicon consumer environments on macOS 13.3 and a current macOS release without Homebrew or a separately installed OpenSSL, the final installed ARM64 archive --help, graph/JSON/FTS build and reopen, k-wiki and MCP operate using the bundled compatible OpenSSL dylibs and relative runtime paths. Record the exact current release/build tested. No producer-specific absolute Homebrew path may be required; a 13.3 deployment target alone is not execution evidence. +- **A05** — Given a clean Apple Silicon environment on the current stable macOS release, without reliance on Homebrew or a separately installed OpenSSL, the final installed ARM64 archive --help, graph/JSON/FTS build and reopen, k-wiki and MCP operate using bundled compatible OpenSSL dylibs and relative runtime paths. Record the exact tested macOS version/build and artifact digest. Hosted CI may supply this execution when the actual runner OS is the current release and the runtime isolation/no-external-prerequisite checks pass; the moving label alone is not proof. No producer-specific absolute Homebrew path may be required. macOS13.3 execution and older-version support are not required or claimed; deployment metadata alone is not execution evidence. - **A06** — Final release archive otool dependency/install-name/rpath evidence confirms relative resolution of the bundled OpenSSL dylibs; licenses/checksums cover them. Given a missing, corrupt or incompatible bundled library, fail clearly without reporting readiness or qualification. A redistribution/compatibility blocker must be reported, not converted silently into a Homebrew prerequisite. -**Architectural context:** Release Gate resp-255–resp-258, resp-16/resp-17; Graph Store resp-113. D02 dylib-bundling and D05a macOS 13.3+ Apple Silicon target policies are approved; implementation authorization, actual minimum/current release qualification and applicable architectural reconciliation remain pending. Approved D05d Windows source-install policy remains separate and does not impose a new macOS Cargo recipe. Do not change process containment. +**Architectural context:** Release Gate resp-255–resp-258, resp-16/resp-17; Graph Store resp-113. D02 dylib-bundling and amended D05a current-macOS-only Apple Silicon qualification policies are approved. Prior exact-slice authorizations remain scoped to their approved content; actual current-release qualification and applicable architectural reconciliation must still be evidenced. Approved D05d Windows source-install policy remains separate and does not impose a new macOS Cargo recipe. Do not change process containment. -**Planned verification:** Build the actual ARM64 release archive, inspect Mach-O imports/install names/rpaths and minimum-OS compatibility of every shipped native component, then execute it on clean Apple Silicon macOS 13.3 and a current macOS release without Homebrew/OpenSSL. Include missing/corrupt bundled-library negative cases and record real OS/build results, not only deployment-target metadata. +**Planned verification:** Build the actual ARM64 release archive, inspect Mach-O imports/install names/rpaths and compatibility metadata of every shipped native component, then execute the final installed archive on clean current stable Apple Silicon macOS without reliance on separately installed Homebrew/OpenSSL. Include missing/corrupt bundled-library negative cases and record the actual current OS/build and archive identity. Current-release hosted CI can provide execution evidence when those conditions are demonstrated. No13.3 runner or execution is required; the existing13.3 deployment target is unchanged build metadata. **Source orientation at the reviewed SHA:** - [build.rs:10–26](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/build.rs#L10-L26) @@ -151,7 +155,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - [crates/xtask/src/main.rs:596–607](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/crates/xtask/src/main.rs#L596-L607) - [README.md:45–65](https://github.com/rabii-chaarani/codebaseGraph/blob/862a8f88d485d5bd257ebd9456c194156fd4ee94/README.md#L45-L65) -**Dependencies:** S00. **Open decisions:** implementation scope/authorization. **Resolved:** D02 macOS prebuilt OpenSSL dylib bundling and D05a macOS 13.3+ Apple Silicon target; D05d Windows source policy is separate. Native minimum/current execution remains pending. No task depends on a guessed implementation date. +**Dependencies:** S00. **Open decisions:** implementation scope/authorization. **Resolved:** D02 macOS prebuilt OpenSSL dylib bundling and amended D05a current-macOS-only Apple Silicon qualification; D05d Windows source policy is separate. Actual current-release execution remains required; no13.3 qualification gate remains. No task depends on a guessed implementation date. ### S04 — Use explicit Windows user-directory and executable discovery policy @@ -332,7 +336,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract - Preserve serial discovered inventories, bounded Windows sharding, captured CLI hashes, ignored-case accounting and fail-closed artifact gates. - Run native Mac ARM64 and Windows x64 checks on the selected corrected revision; bind head/synthetic merge, binary hashes, archive hashes and environment. - Execute real installation/upgrade/failure paths and installed CLI/MCP/JSON/FTS/reopen under approved clean-consumer and prerequisite policies. Reconcile stale four-target release documentation with the two-target scope; this qualification does not duplicate or close the broader DC-S5 cleanup/rollout programme. -- Follow approved D05a macOS 13.3+ Apple Silicon minimum/current-release qualification and D05b Microsoft-supported Windows 11 x86_64 client scope. Require actual final installed archive desktop execution; Server CI is build evidence, not Windows consumer qualification. Follow D05c Windows PowerShell 5.1 plus supported PowerShell 7 installer compatibility and execute tests under both; this does not select the .cmd/.bat invocation mechanism. Follow approved D05d default JSON/FTS extension bytes for plain Windows Cargo installs; execute the documented source-build recipe separately from prebuilt archive qualification and record native compiler/library/DLL prerequisites. Do not infer self-contained source installs, restore removed platforms or workload ceilings. +- Follow amended D05a current stable macOS-only Apple Silicon qualification (no13.3 execution or older-version support claim) and D05b Microsoft-supported Windows 11 x86_64 client scope. Require actual final installed archive desktop execution; Server CI is build evidence, not Windows consumer qualification. Follow D05c Windows PowerShell 5.1 plus supported PowerShell 7 installer compatibility and execute tests under both; this does not select the .cmd/.bat invocation mechanism. Follow approved D05d default JSON/FTS extension bytes for plain Windows Cargo installs; execute the documented source-build recipe separately from prebuilt archive qualification and record native compiler/library/DLL prerequisites. Do not infer self-contained source installs, restore removed platforms or workload ceilings. **Acceptance (proposed):** @@ -368,7 +372,7 @@ All issue titles are prefixed `CBG-PLAT-01/Sxx`. S00 is the exact-scope contract | A00 | S00 / R01–R10 | Audit immutable spec/review links and explicit human approval | This proposal is not approved; planning only. | | A01–A02 | R01 / S01 | Exact rooted helper multi-batch nested test; production receipt-selection case; cancellation/namespace tests | Mac exact-source helper baseline200/outer85/inner200 fails. No complete collector-starvation/data-loss repro. Fixed native runs required. | | A03–A04, A16 | R02 / S02 | Final PE imports/installed clean Windows archive cases; separate plain Cargo source-build/default-byte/empty-cache offline-extension test with documented prerequisites | Current imports inspected; no clean Windows or plain Cargo source-install qualification executed. D01/D05b–D05d policies approved; implementation and actual evidence pending. | -| A05–A06 | R03 / S03 | Final release Mach-O/rpaths + clean approved ARM64 install/reopen/failure | Fresh debug CLI imports inspected only; no final release/clean consumer run. D02 bundling and D05a macOS 13.3+ target policies approved; implementation and actual minimum/current native qualification pending. | +| A05–A06 | R03 / S03 | Final release Mach-O/rpaths + clean approved ARM64 install/reopen/failure | Fresh debug CLI imports inspected only; no final release/clean consumer run. D02 bundling and amended D05a current-macOS-only qualification approved; executed evidence must be reconciled to the exact current OS/build and final archive. No13.3 execution is required. | | A07–A08 | R04 / S04 | Process-level native Windows env/PATH/override cases and Mac regression | Fresh CLI portable-logic reproduction points user scope to dot with HOME absent. Not Windows execution. D03a/D03b policies approved; implementation and native qualification pending. | | A09 | R05 / S05 | Native PowerShell valid-checksum/nonzero executable preflight/destination preservation | Source semantics only; no local PowerShell execution. D05b Windows 11 and D05c Windows PowerShell 5.1/supported PowerShell 7 policies approved; implementation/real desktop-shell evidence pending. | | A10 | R06 / S06 | Exact watch-help and adjacent behavior tests on both native targets | Fresh Mac failure; hosted Mac+Win failure. Fixed run pending. | @@ -432,12 +436,12 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio - Affected: S02, S03, S05, S10. Split target policy from actual qualification and from unrelated installation choices. - No platform expansion, implicit passing support claim, workload-ceiling restoration, blanket timeout increase or weakened test gate is approved. -#### D05a — macOS minimum and qualification (approved) +#### D05a — Current macOS qualification only (amended, approved) -- **Decision: A — target macOS 13.3+ on Apple Silicon (ARM64).** Require tests of the final installed archive on macOS 13.3 and a current macOS release before claiming support. -- The current native extensions' 13.3 minimum is build metadata, not evidence that 13.3 was tested. Record exact native OS/builds, binaries and archive hashes in qualification; missing minimum-environment access leaves qualification pending rather than silently raising the floor or accepting current-host CI as proof. -- User decision: **“A”**, answering the preceding D05a A/B question (target macOS 13.3+ versus macOS 14+). See [decision/approval record](decisions/d05a-macos-supported-minimum.md). -- **Status: target/qualification policy approved only.** No actual minimum/current execution, implementation start, release approval, merge, deployment or service restart is claimed. +- **Replacement decision: current stable macOS on Apple Silicon (ARM64) only.** Require actual final installed archive tests on the current release. Remove the13.3 execution requirement and older-version support claims. This is an explicit user amendment, not an inferred qualification pass. +- Record the actual current macOS version/build, source and installed archive hashes. `macos-latest` is an execution selector, not evidence of its actual OS. Hosted CI may provide current-release qualification when it tests the final installed archive and demonstrates no reliance on separate Homebrew/OpenSSL. The existing13.3 deployment target/minimum metadata is unchanged, but does not imply13.3 support or execution. +- Replacement user decision,2026-10-27: **“well then just drop it and keep only current”**, answering the hosted-CI/minimum-runner discussion. See [amendment decision](decisions/d05a-current-macos-only.md). Preserve the [original D05a decision](decisions/d05a-macos-supported-minimum.md) and earlier approvals as history; they are not rewritten. +- **Status: replacement qualification policy approved.** This amendment does not itself supply a passing current-release run, approve other implementation slices, waive runtime/clean-environment checks, or authorize release/merge/deployment/restart/aggregate closure. #### D05b — Windows consumer baseline (approved) @@ -470,4 +474,4 @@ Owner for D01–D05 is the repository maintainer/user. Recommendations are optio ### Planning authorization record -Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. Later separate explicit answers **“A”** selected [D01 Windows runtime bundling](decisions/d01-windows-runtime-bundling.md), [D02 macOS OpenSSL dylib bundling](decisions/d02-macos-openssl-bundling.md), and [D03a Windows native-profile directory precedence](decisions/d03a-windows-user-directory.md). The later D03b answer was explicitly corrected to **“no i meant B”**, selecting [native .exe plus .cmd/.bat client shims](decisions/d03b-windows-client-command-invocation.md) through a dedicated safe Windows adapter. The subsequent **“A”** selects [D04 truthful retained Windows Exclusive mode](decisions/d04-windows-direct-exclusive-mode.md). The subsequent **“A”** selects [D05a macOS 13.3+ Apple Silicon with minimum/current qualification](decisions/d05a-macos-supported-minimum.md). The subsequent **“A”** selects [D05b Microsoft-supported Windows 11 x86_64 desktop consumer scope](decisions/d05b-windows-consumer-baseline.md). The subsequent **“A”** selects [D05c Windows PowerShell 5.1 plus supported PowerShell 7 installer hosts](decisions/d05c-powershell-installer-hosts.md). The subsequent **“A”** selects [D05d plain Windows Cargo default JSON/FTS extension bytes](decisions/d05d-windows-cargo-default-extensions.md), with separate documented source-build/runtime prerequisites. All listed policies are settled; they do not approve implementation of the whole spec, S09 release/milestone inclusion, merge, deployment or service restart. No product constants or implementation source changed by this planning/decision work. +Initial user request in this conversation, 2026-10-26: create the issues using the spec workflow in **Maintenance**, **CodebaseGraph workspace**. Later separate explicit answers **“A”** selected [D01 Windows runtime bundling](decisions/d01-windows-runtime-bundling.md), [D02 macOS OpenSSL dylib bundling](decisions/d02-macos-openssl-bundling.md), and [D03a Windows native-profile directory precedence](decisions/d03a-windows-user-directory.md). The later D03b answer was explicitly corrected to **“no i meant B”**, selecting [native .exe plus .cmd/.bat client shims](decisions/d03b-windows-client-command-invocation.md) through a dedicated safe Windows adapter. The subsequent **“A”** selects [D04 truthful retained Windows Exclusive mode](decisions/d04-windows-direct-exclusive-mode.md). The earlier **“A”** selected the [original D05a macOS13.3+ minimum/current policy](decisions/d05a-macos-supported-minimum.md); the later explicit **“well then just drop it and keep only current”** replaces it with [current stable macOS-only Apple Silicon qualification](decisions/d05a-current-macos-only.md). The subsequent **“A”** selects [D05b Microsoft-supported Windows 11 x86_64 desktop consumer scope](decisions/d05b-windows-consumer-baseline.md). The subsequent **“A”** selects [D05c Windows PowerShell 5.1 plus supported PowerShell 7 installer hosts](decisions/d05c-powershell-installer-hosts.md). The subsequent **“A”** selects [D05d plain Windows Cargo default JSON/FTS extension bytes](decisions/d05d-windows-cargo-default-extensions.md), with separate documented source-build/runtime prerequisites. All listed policies are settled; they do not approve implementation of the whole spec, S09 release/milestone inclusion, merge, deployment or service restart. No product constants or implementation source changed by this planning/decision work. From 5c2e9a56d0fa87779fb31312562f4e53f902f0ac Mon Sep 17 00:00:00 2001 From: rabii-chaarani Date: Tue, 27 Oct 2026 18:07:20 +0930 Subject: [PATCH 17/17] docs(spec): record current-only macOS amendment approval --- .../approvals/d05a-current-macos-only.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 docs/specs/CBG-PLAT-01/approvals/d05a-current-macos-only.md diff --git a/docs/specs/CBG-PLAT-01/approvals/d05a-current-macos-only.md b/docs/specs/CBG-PLAT-01/approvals/d05a-current-macos-only.md new file mode 100644 index 00000000..c38c4ca6 --- /dev/null +++ b/docs/specs/CBG-PLAT-01/approvals/d05a-current-macos-only.md @@ -0,0 +1,16 @@ +# D05a current-macOS-only amendment approval + +- Canonical path: `docs/specs/CBG-PLAT-01/spec.md`, revision **0.11**. +- Approved full Git SHA: **`8a410c7a22f5291f06a1cece5cd9e7c0be255e72`**. +- Immutable revision: https://github.com/rabii-chaarani/codebaseGraph/blob/8a410c7a22f5291f06a1cece5cd9e7c0be255e72/docs/specs/CBG-PLAT-01/spec.md +- Exact scope: **D05a current stable macOS-only Apple Silicon qualification**, S03/COD-54 R03/A05 and corresponding S10/COD-61 R10/A15 macOS references; preserve A06 runtime integrity/failure checks and all unrelated requirements. +- User decision reference:2026-10-27, this Prime Agent conversation. After the assistant explained that current hosted CI does not execute13.3 and proposed a separate minimum-version runner, the user said **“well then just drop it and keep only current”**. This explicit user-directed edit is recorded against its committed revision here. +- Scryer amendment ledger: `chg-p0s0ar`; existing responsibilities unchanged, no new topology/claims. + +## Approved effect and limits + +Drop macOS13.3 execution and older-version support qualification. Keep only current stable macOS on Apple Silicon, with actual tested OS/build/source/final-installed-archive identities and existing runtime/isolation/failure evidence. Current-release hosted CI may supply that evidence when its actual OS and no-external-Homebrew/OpenSSL runtime conditions are demonstrated. The moving runner label or configured tests alone are not passing execution. + +Retain the existing13.3 deployment target and Mach-O metadata checks as implementation details; no product constants, library versions, Rust/workflow code or artifact bytes are changed by this amendment. Prior spec revisions, the original D05a decision and S03 implementation approval remain historical immutable records. The reviewed/tested product source remains `855c7e282a27de4afbad2d4252d7692de4b42ecb`; this approval changes qualification scope, not that execution identity. + +No new Windows/shell/source-install policy, other slice authorization, S09 disposition, signing/notarization decision, passing qualification assertion, issue/milestone closure, merge, publication, deployment or restart. Maintainer closure ownership is unchanged.