Campaign C (C00-C06): command-footprint expansion — descriptors, cloud, container, install-shim decision pipeline, shell-state + redirect#1
Merged
Conversation
…_state_hint (C02.7)
…tion argv with guard (C02.7)
…edatectl/sysctl/modprobe-r) + load test (C02.8)
…load test (C03.6)
…nfig module (C05.3)
…lde expansion (C05.3)
…AEMON_SOCK) + strip-for-child + injection helpers (C05.4)
… env + prefix-set checks (C05.5)
…sh/json outputs (C05.7)
…-prepending (C05.8)
…/cmake/ninja/meson/cargo/pip/python) (C05.8)
…f/FuncDiff sub-types (C06.1)
… match arms (C06.1)
… unit tests (C06.2)
…funcs) + 100KiB body cap (C06.3)
…ault; --apply-shell-state precmd path (C06.5)
…redirect undo + grow-refusal guard (C06.6)
…funcs + per-shell snippet indent (C06.7)
…ecmd-queue dispatch (C06.8)
Bring trunk's S23.x (BSD kqueue) + S24.x (helper IPC, LD_PRELOAD shim plumbing) + S29.x (FreeBSD tree-mutations + multi-tier executor) work into the C00-C06 worktree so the campaign can be PR'd against trunk. Conflict resolutions: - crates/shit-preload-shim/Cargo.toml: kept both trunk's shit-proto dep (S24.D ShimNotification wire) and C05's serde/toml/thiserror + tempfile dev-dep (install_config loader path). - crates/shit-helper/src/main.rs: ordered both trunk's `capture` mod declaration and C03/C04's `cloud` + `container` mods alphabetically. - crates/shit-proto/src/lib.rs: union-merged the ctl re-export list to cover trunk's UndoRequest/UndoReportWire/ConflictPolicyWire + C01's BookmarkRequest/Summary + C04's ContainerStashSummary. The composition of trunk's S24.D dlsym RTLD_NEXT interposition with C05's pure-logic decision pipeline (PrefixSet / install_pattern / install_config / runtime / dispatch) is the substance of DR-CR-39 — the modules cohabit cleanly; the wire-up that gates the interpose hot path on dispatch::should_capture is the one follow-up commit. Gates green at merge close: cargo fmt --check, cargo run -p xtask -- license-check, cargo clippy --workspace --all-targets --all-features -- -D warnings, full cargo test --workspace (no failures, ~1400 tests).
The helper can exit ungracefully (signal, OOM, runner shutdown) and the kernel delivers ECONNRESET on the next recv rather than a clean EOF. The dispatch loop already treats HelperExited as a normal shutdown path; we now reach it for the ungraceful case too instead of logging an ERROR that fails the hook-IPC smoke.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
shit's command-undo surface across the descriptor / native-delegation path (C02), 4 cloud-tool reverses + 6 cloud descriptor packs (C03), container-runtime undo with separate retention store (C04), the install-prefix shim's pure-logic decision pipeline (C05, composing with trunk's S24.D dlsym interpose layer), and shell-state + redirect handling (C06).InverseOpvariants (DescriptorReverse, KubectlReverse, GhReverse, AwsReverse, TerraformReverse, ContainerRestore, ShellStateRestore, FileExtend), 4 newInverseTiers (Descriptor / Cloud / Container / ShellState), 10 helper-side classifiers, 9 planner-side executors with Runner-trait test patterns, 6 new CLI subcommands (shit descriptors,cloud-hooks,container-hooks,container-stashes,install,auto-inject-install-env), sqlite migration v4 (container_stasheswith 1-day retention), and the per-shell preexec install-pattern wrap functions for bash/zsh/fish.DR-CR-06..50) tracking real-runtime smokes that need a Linux VM / kind cluster / Docker daemon / cloud account / NFS export / Apple Developer ID / installed shell. These are the wire-up + smoke validation passes, not new implementation work — the pure-logic groundwork all sits behind them.DR-CR-39; the modules cohabit cleanly here.Test plan
cargo fmt --all -- --checkcleancargo run -p xtask -- license-check— all rust files have SPDX headercargo clippy --workspace --all-targets --all-features -- -D warningscleancargo test --workspace— no failures across ~1400 testsThe sprint outcome docs at
.docs/sprints/C0{1..6}-*.md(gitignored) carry the per-campaign details + the DR-row references.