Skip to content

chore(deps): Bump axum from 0.7.9 to 0.8.8#134

Closed
dependabot[bot] wants to merge 632 commits into
mainfrom
dependabot/cargo/axum-0.8.8
Closed

chore(deps): Bump axum from 0.7.9 to 0.8.8#134
dependabot[bot] wants to merge 632 commits into
mainfrom
dependabot/cargo/axum-0.8.8

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Dec 22, 2025

Copy link
Copy Markdown
Contributor

Bumps axum from 0.7.9 to 0.8.8.

Release notes

Sourced from axum's releases.

axum v0.8.8

  • Clarify documentation for Router::route_layer (#3567)

#3567: tokio-rs/axum#3567

axum v0.8.7

  • Relax implicit Send / Sync bounds on RouterAsService, RouterIntoService (#3555)
  • Make it easier to visually scan for default features (#3550)
  • Fix some documentation typos

#3550: tokio-rs/axum#3550 #3555: tokio-rs/axum#3555

axum v0.8.5

  • fixed: Reject JSON request bodies with trailing characters after the JSON document (#3453)
  • added: Implement OptionalFromRequest for Multipart (#3220)
  • added: Getter methods Location::{status_code, location}
  • added: Support for writing arbitrary binary data into server-sent events (#3425)]
  • added: middleware::ResponseAxumBodyLayer for mapping response body to axum::body::Body (#3469)
  • added: impl FusedStream for WebSocket (#3443)
  • changed: The sse module and Sse type no longer depend on the tokio feature (#3154)
  • changed: If the location given to one of Redirects constructors is not a valid header value, instead of panicking on construction, the IntoResponse impl now returns an HTTP 500, just like Json does when serialization fails (#3377)
  • changed: Update minimum rust version to 1.78 (#3412)

#3154: tokio-rs/axum#3154 #3220: tokio-rs/axum#3220 #3377: tokio-rs/axum#3377 #3412: tokio-rs/axum#3412 #3425: tokio-rs/axum#3425 #3443: tokio-rs/axum#3443 #3453: tokio-rs/axum#3453 #3469: tokio-rs/axum#3469

axum v0.8.4

  • added: Router::reset_fallback (#3320)
  • added: WebSocketUpgrade::selected_protocol (#3248)
  • fixed: Panic location for overlapping method routes (#3319)
  • fixed: Don't leak a tokio task when using serve without graceful shutdown (#3129)

#3319: tokio-rs/axum#3319 #3320: tokio-rs/axum#3320 #3248: tokio-rs/axum#3248 #3129: tokio-rs/axum#3129

axum v0.8.3

  • added: Implement From<Bytes> for Message (#3273)
  • added: Implement OptionalFromRequest for Json (#3142)
  • added: Implement OptionalFromRequest for Extension (#3157)
  • added: Allow setting the read buffer capacity of WebSocketUpgrade (#3178)

... (truncated)

Commits
  • d07863f Release axum v0.8.8 and axum-extra v0.12.3
  • 287c674 axum-extra: Make typed-routing feature enable routing feature (#3514)
  • f5804aa SecondElementIs: Correct a small inconsistency (#3559)
  • f51f3ba axum-extra: Add trailing newline to pretty JSON response (#3526)
  • 816407a Fix integer underflow in try_range_response for empty files (#3566)
  • 78656eb docs: Clarify route_layer does not apply middleware to the fallback handler...
  • 4404f27 Release axum v0.8.7 and axum-extra v0.12.2
  • 8f1545a Fix typo in extractors guide (#3554)
  • 4fc3faa Relax implicit Send / Sync bounds (#3555)
  • a05920c Make it easier to visually scan for default features (#3550)
  • Additional commits viewable in compare view

Dependabot compatibility score

You can trigger a rebase of this PR by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Note
Automatic rebases have been disabled on this pull request as it has been open for over 30 days.

noahgift and others added 30 commits November 26, 2025 20:22
Phase 3 of AutoML with Synthetic Data specification:

ShellSample struct:
- Command with context (history, cwd, prefix, completion)
- Extraction helpers (command_name, arguments)
- Completion validity checking

ShellGrammar:
- Command/subcommand validation (git, cargo, npm, docker, Unix)
- Common options recognition
- Extensible via add_command/add_subcommands

ShellSyntheticGenerator implementing SyntheticGenerator:
- Template substitution (argument variants)
- Argument permutation (reorder/add options)
- Context variation (cwd, history)
- Quality scoring: 0.4*semantic + 0.4*grammar + 0.2*coherence
- Diversity scoring via unique command patterns

42 tests with Extreme TDD methodology.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…efs #74)

Implement three advanced synthetic data generation components:

- MixUp generator: Zhang et al. 2018 embedding interpolation with Beta
  distribution sampling and configurable alpha parameter (24 tests)
- WeakSupervision generator: Snorkel-style programmatic labeling with
  LabelingFunction trait, multiple aggregation strategies (MajorityVote,
  WeightedVote, Unanimous, Any), and built-in LFs (29 tests)
- SyntheticCache: LRU eviction memoization for avoiding redundant
  generation during AutoML hyperparameter search (18 tests)

Total: 71 new tests, 2030 tests passing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Add comprehensive model bundling and memory paging support:

## Model Bundling (.apbundle format)
- Binary format with magic bytes, version, and manifest
- BundleReader/BundleWriter for efficient file I/O
- ModelBundle API for creating, saving, and loading bundles
- Builder pattern for flexible bundle construction
- Support for multiple models with metadata

## Memory-Mapped File Support
- MappedRegion for efficient memory access
- MemoryMappedFile with region caching
- PageTable for LRU/LFU tracking

## LRU Paging
- PagedBundle for memory-constrained environments
- Configurable max_memory and eviction strategies
- LRU (Least Recently Used) and LFU (Least Frequently Used) eviction
- Automatic page eviction when memory limit exceeded

## Pre-fetching
- Access pattern tracking for predictive loading
- Configurable prefetch_count
- Hint API for explicit prefetch requests

## Also included:
- Synthetic data integration tests (15 tests)
- Synthetic data generation example
- Updated spec status to "Implemented (Phases 1-4)"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…74)

Update spec status to reflect complete implementation.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add PagedMarkovModel using aprender's bundle module for memory-efficient storage
- Implement LRU-based on-demand segment loading
- Add --memory-limit CLI flag to train, suggest, and stats commands
- Add 13 comprehensive tests for paged model functionality
- Fix doctest in synthetic/mixup.rs (missing Clone derive)

The paged model stores n-gram segments separately and loads them
on-demand, enabling handling of shell histories that exceed RAM.

Refs #74

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add comprehensive case study for bundle module
- Update shell-completion chapter with paging documentation
- Add bundle_trace_demo example for renacer tracing
- Update SUMMARY.md with new chapter

Refs #74

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Add comprehensive guide for using renacer syscall tracer to profile
and optimize memory paging behavior in ML model loading.

Content includes:
- Renacer usage patterns (-e trace=file, -T, -c, -s flags)
- Syscall analysis for detecting evictions and cache misses
- Pre-fetch effectiveness measurement
- JSON output for programmatic analysis
- Optimization patterns (reduce seeks, right-size memory, pre-fetching)
- Troubleshooting guide with symptom/fix table

Also adds book chapters for bundle_trace_demo and synthetic_data_generation
examples to satisfy EXTREME TDD requirements.

Allows clippy::large_stack_arrays lint for ML test data arrays.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…77)

Implements two new synthetic data components for code analysis:

CodeEDA (GH-76):
- Code-specific EDA (Easy Data Augmentation) implementing SyntheticGenerator
- Variable renaming with synonym dictionary
- Comment insertion (Rust/Python/Generic modes)
- Statement reordering for independent statements
- Dead code removal (comments and whitespace)
- Quality scoring via token overlap
- 23 unit tests

CodeFeatureExtractor (GH-77):
- 8-dimensional commit feature extraction for defect prediction
- CommitFeatures: defect_category, files_changed, lines_added/deleted,
  complexity_delta, timestamp, hour_of_day, day_of_week
- Keyword-based commit classification (bug/security/perf/refactor)
- Batch extraction and normalization support
- 22 unit tests

References:
- Wei & Zou (2019) EDA paper
- D'Ambros et al. (2012) defect prediction benchmark

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…76, Refs #77)

- Add --use-code-eda flag to Augment command for code-aware augmentation
- Add new Analyze command using CodeFeatureExtractor
  - Shows command categories (bug/security/performance/refactor/general)
  - Displays top base commands with visual bar charts
  - Shows sample commands by category
  - Reports complexity metrics (avg tokens, max tokens, unique bases)
  - Identifies developer workflow (git, cargo, npm, docker usage)
- Add 3 integration tests for new features

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…Refs #74)

Benchmarks (modeled after bashrs patterns):
- parse_history: History file parsing throughput
- train_model: N-gram model training (small/medium/large fixtures)
- suggest_latency: Suggestion performance for common prefixes
- partial_completion: Partial token completion benchmarks
- serialization: JSON and file save/load benchmarks
- end_to_end: Complete workflow benchmarks
- synthetic_generation: CodeEDA augmentation benchmarks

Fixtures (aligned with bashrs):
- small_history.txt: ~50 commands (basic developer workflow)
- medium_history.txt: ~265 commands (full developer workflow)
- large_history.txt: ~3800 commands (production scale)

Real-world tests (19 new tests):
- REAL_001-003: Small/Medium/Large history training and suggestions
- REAL_004: Cross-validation testing
- REAL_005: Data augmentation with CodeEDA
- REAL_006: Analysis command testing
- REAL_007: Export/import roundtrip
- REAL_008: Paged model for large histories
- REAL_009: Incremental updates
- REAL_010: End-to-end user workflow

Architecture changes:
- Added lib.rs to expose modules for benchmarks
- Refactored main.rs to use library imports

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…rks (Refs #74)

Sub-10ms Verification Benchmark Suite:

Performance Results (vs 10ms target):
- Small model (50 cmds):  437ns - 1.5µs (6,500-22,000x faster)
- Medium model (500 cmds): 530ns - 10.6µs (940-18,800x faster)
- Large model (5000 cmds): 670ns - 15µs (660-14,900x faster)

Benchmark Groups:
- suggestion_latency: Core latency verification by model size
- partial_completion: Mid-word completion (git co → git commit)
- training_throughput: Commands/second during training
- cold_start: Model load + first suggestion latency
- serialization: JSON serialize/deserialize performance
- scalability: Latency growth with model size (O(1) verified)
- paged_model: Memory-constrained model performance

Industry Comparison:
- GitHub Copilot: 100-500ms → aprender 10,000-50,000x faster
- Fish completion: 5-20ms → aprender 500-2,000x faster
- Zsh compinit: 10-50ms → aprender 1,000-5,000x faster

Run: cargo bench --package aprender-shell --bench recommendation_latency

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
#74)

Updated shell-completion.md:
- Added "Performance: Sub-10ms Verification" section
- Detailed benchmark results table (437ns - 14.6µs latency)
- Industry comparison (600-22,000x faster than alternatives)
- "Why So Fast?" explanation (O(1) trie, no neural overhead)
- Benchmark suite overview

New chapter: shell-completion-benchmarks.md
- Comprehensive benchmark analysis
- trueno-style criterion patterns
- Scalability analysis (sub-linear O(log n))
- Training throughput metrics
- Cold start verification (<3ms)
- Fixture design documentation
- Custom benchmark extension guide
- CI integration example

Key results documented:
- Worst case: 14.6 µs (685x under 10ms target)
- Best case: 437 ns (22,883x under 10ms target)
- Scales sub-linearly with model size

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Add dedicated book chapters for the new code-aware synthetic data modules:

- CodeEDA: Syntax-aware data augmentation for source code
  - Variable renaming, comment insertion, statement reorder
  - Language-specific reserved keyword handling (Rust, Python)
  - Quality and diversity metrics

- CodeFeatureExtractor: 8-dimensional commit feature extraction
  - Defect category classification (bug, security, perf, refactor)
  - Complexity estimation, time-based features
  - Normalization for ML pipelines

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Change alimentar from local path dependency to crates.io v0.1.0
for publishing compatibility.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Change aprender dependency from path to crates.io v0.10.0
- Add README.md for crate documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
## Metaheuristics (Refs #80)
- Add src/metaheuristics/ module with Differential Evolution (DE)
- SearchSpace enum for continuous/discrete/mixed optimization
- ComputeBudget for resource-aware optimization
- PerturbativeMetaheuristic trait following Toyota Way principles
- Book documentation for DE and metaheuristics fundamentals

## aprender-shell Enhancements (Refs #87, #88, #96)
- Fish shell widget support (fish-widget command)
- Uninstall command for clean widget removal
- ZSH widget v2 with toggle, timeout, ShellCheck fixes
- New CLI integration tests

## AutoML Enhancements
- Expanded search.rs with advanced hyperparameter optimization
- Grid search, random search, and TPE improvements
- Fixed clippy warnings (range contains, format strings)

## Documentation
- aprender-shell-harden-plan.md spec (16 issues, Toyota Way, 10 refs)
- metaheuristics-spec.md with CEC benchmarks
- Updated roadmap.yaml

## Quality
- 382 tests passing
- 92.66% coverage
- Clippy clean (-D warnings)
- PMAT: A+ (151/134), TDG: A+ (99/100)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
… unsafe)

POLICY: We will NEVER use unsafe code. If HE crypto primitives are needed,
we will implement them from scratch in safe Rust.

Additions:
- docs/specifications/homomorphic-encryption-spec.md (10 peer-reviewed citations)
- book/src/examples/shell-encryption-tiers.md (4-tier protection guide)
- src/format/homomorphic.rs (28 tests: types, traits, API design)
- Shell Tier 2 compression: save_compressed() (5 tests)
- Shell Tier 2+3 combo: save_compressed_encrypted()

4-Tier Model Protection:
- Tier 1: Plain (.apr)
- Tier 2: Compressed (zstd, 14x smaller)
- Tier 3: At-rest encrypted (AES-256-GCM)
- Tier 4: Homomorphic (API ready, crypto deferred)

Test counts:
- Core aprender: 2,292 tests (with format-homomorphic)
- aprender-shell: 127 tests (+5 compression)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add src/ensemble/ module with MoE, SoftmaxGating, MoeConfig
- Add ModelType::MixtureOfExperts (0x0040) to format
- Add examples/mixture_of_experts.rs runnable example
- Add book/src/examples/mixture-of-experts.md documentation
- Update model-format.md with MoE section and model type
- Fix Makefile coverage (move config before clean for sccache)
- Add docs/specifications/more-learning-specs.md (34 sections)
  - GAN, VAE, Diffusion, Contrastive, GNN, Meta-learning
  - Transfer learning for transpiler ecosystem
  - Distillation ingestion from entrenar
  - Code-specific ML for depyler oracle

Refs #101

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
100 test cases covering:
- Installation (5)
- train command (17)
- update command (8)
- suggest command (14)
- stats command (6)
- export/import (10)
- validate command (10)
- augment command (8)
- analyze command (6)
- tune command (6)
- zsh-widget (4)
- Edge cases (6)
- Performance benchmarks (5)
- Platform compatibility (5)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
New features:
- Mixture of Experts (MoE) ensemble module
- ModelType::MixtureOfExperts (0x0040)
- Future ML specs (34 sections)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Update aprender dependency from path to crates.io v0.11
- Ready for v0.2.0 release

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Fix trivial cast lint error in mmap.rs:611 that broke CI
- Update hero image: 17 → 18 model types (MoE added)
- Update hero image version: v0.9 → v0.11

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- hf_hub/mod.rs: Replace unwrap() with expect() (disallowed-methods)
- hf_hub/mod.rs: Use char '.' instead of string "." (single_char_pattern)
- stopwords.rs: Remove redundant is_empty check (const_is_empty)
- format/mod.rs: Fix large file tests using Compression::None and unique values

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Without --all-features, feature-gated examples fail to compile,
causing coverage to show 0%.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This flag keeps getting accidentally removed, causing 0% coverage.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Prevents the recurring bug where coverage shows 0% because
--all-features gets accidentally removed from the coverage target.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@dependabot @github

dependabot Bot commented on behalf of github Jan 13, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

17 similar comments
@dependabot @github

dependabot Bot commented on behalf of github Jan 13, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Jan 14, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Jan 14, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Jan 14, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Jan 15, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Jan 16, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Jan 18, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Jan 19, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Jan 19, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Jan 19, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Jan 20, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Jan 20, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Jan 20, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Jan 20, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Jan 20, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Jan 20, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Jan 20, 2026

Copy link
Copy Markdown
Contributor Author

Dependabot can't resolve your Rust dependency files. Because of this, Dependabot cannot update this pull request.

@dependabot @github

dependabot Bot commented on behalf of github Mar 20, 2026

Copy link
Copy Markdown
Contributor Author

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot dependabot Bot deleted the dependabot/cargo/axum-0.8.8 branch March 20, 2026 16:52
noahgift added a commit that referenced this pull request Apr 24, 2026
… race (ANDON paiml/infra#77) (#1043)

* fix(ci): per-PR cargo registry to break intel-runner concurrent-write race (paiml/infra#77)

ANDON 2026-04-24 — aprender 11-PR stack (#1031..#1042) all failing `ci / security`
and `workspace-test` with:

  error: couldn't read /home/noah/.cargo/registry/src/<crate>/lib.rs:
         Permission denied (os error 13)

and the rustix-0.38 equivalent (E0432 unresolved import `libc`/`libc_errno`
originating in the `syscall` macro, which the rustix build.rs regenerates from
src/ files — missing src/ → macro can't find libc crate → cascading errors).

FIVE WHYS
─────────
 1 `ci / security` fails: `cargo install cargo-audit --locked` hits EACCES
   reading `fnv-1.0.7/lib.rs`.
 2 EACCES: the file is missing OR owned by root (docker container creates
   extractions as root on the bind-mounted host registry).
 3 Concurrent writers: 16 self-hosted `intel-clean-room-*` runners bind-mount
   the SAME /home/noah/.cargo/registry — cargo extractions, the ci-reaper
   TTL sweep, and cross-container chown cycles all touch identical paths.
 4 Shared by design: ci.yml:49 was authored for throughput — re-downloading
   crates per job is ~200MB, so the host registry was shared across all
   runners. Race class not modeled.
 5 Precedent already exists: target/ hit the identical race under concurrent
   PRs (task #134) and was fixed by per-PR isolation on
   /mnt/nvme-raid0/targets/aprender-ci/<pr#>. The registry simply never got
   the same treatment.

ROOT CAUSE
──────────
Shared mutable bind mount + concurrent multi-runner write access ≈ guaranteed
race. The existing band-aid (PR #1025 "self-heal cargo registry cache",
cargo-ok + Cargo.toml marker check) only runs inside `ci / security` and
itself races with concurrent jobs that have already passed the cache check.

FIX (this PR)
─────────────
Mirror the target-dir pattern from ci.yml:55 for the cargo registry. Each
PR (or branch) gets its own registry under /mnt/nvme-raid0/cargo-ci/registry/<pr#>.
Docker auto-creates the leaf dir on first mount; the ci-reaper TTL sweep
(ci-reaper.sh:308) needs a companion infra update (paiml/infra#77) to include
the new /mnt path.

 - Removes: /home/noah/.cargo/registry:/usr/local/cargo/registry
 - Adds:    /mnt/nvme-raid0/cargo-ci/registry/${pr#|ref_name}:/usr/local/cargo/registry

Cost: ~200MB per PR on first run (cargo re-downloads crates). Same cost
profile as the target/ isolation fix, which the fleet already absorbed.
Once cargo-ci/registry/<pr#> warms on run 1, run 2+ hit the cache.

FOLLOW-UP
─────────
paiml/infra#77 tracks:
  - forjar recipe to pre-create /mnt/nvme-raid0/cargo-ci/ owner=noah:noah
  - reaper extension: GC /mnt/nvme-raid0/cargo-ci/registry/<pr#>/src with same TTL
  - once infra lands, drop the ANDON comment above

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* ci: trigger fresh run to pick up paiml/.github#32 security-job CARGO_HOME fix

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
noahgift added a commit that referenced this pull request May 14, 2026
The disk-guard added in #1001 walked only /home/noah/data/actions-runner*/_work/*/target/
— runner-workspace target dirs totalling ~75G across 8 runners. The actual runner-disk-
fill source that took intel offline on 2026-04-23 was /mnt/nvme-raid0/targets/aprender-ci/*:
per-PR bind-mount target dirs from ci.yml's task-#134 isolation, holding 1.9T including a
359G orphan `debug/` dir from pre-isolation era. Disk-guard never touched them.

Adds new BIND_MOUNT_ROOTS (default `/mnt/nvme-raid0/targets/aprender-ci`) and a
prune_bind_mount_target_roots() helper:

- Always prunes `debug/` subdir (orphan, no current workflow bind-mounts it).
- Prunes PR# subdirs stale past a minute threshold (nightly: STALE_DAYS×24×60 min;
  pre-job: 60-min floor so fresh in-flight dirs survive full-disk recovery).
- Preserves `main` (push-to-main CI reuses it).

Space-separated BIND_MOUNT_ROOTS env var lets the same script cover sibling fleets
(sovereign-ci-paiml-mcp-agent-toolkit etc.) without code changes.

Deployed to intel 2026-04-23T12:58Z; nightly dry-run confirmed no unexpected prune
candidates under the new path.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant