Skip to content
Cockpit0.29.0
A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live

I2787

A build never lets the shared build directory's crate artifacts fill the disk

Where it stands

devtask.issue
Readiness
blocked 1 of its dependencies is not DONE
Status
BLOCKED
Can start
not now
Milestone
Milestone status
ACTIVE
Wave
1
Waiting on
Holds back
none
Behind it in all
0
Evidence
0 of 1
In the waySubjectDetail
issueI2713I2713 is not DONE
A move writes the repository: it stamps one field of this issue's record and appends one event to the ledger, and a commit will carry both.
The same moves from a terminal

majordomus plan start I2787

majordomus plan verify I2787

majordomus plan done I2787

What it is

Objective
Bound the shared build directory's debug/deps the way I2713 bounds debug/incremental: before a bounded build starts, remove the crate's own test binaries and libraries (majordomus_cli-*, libmajordomus_cli-*, and each tests/*.rs binary) of generations no live tree is building and older than a declared age, never a file a running process holds open, never another crate's dependency artifacts, and say on stderr what was reclaimed.
Why
2026-10-16 ~22:50Z the shared Mac reached 238 MiB free and every session's build failed with ENOSPC. Idle incremental sessions (48 GiB, I2713's subject) were removed by hand; the landing seat then deleted 43 GiB of majordomus_cli-* test artifacts older than 3 h from build-shared/majordomus/debug/deps, which still held 41 GiB and 11026 majordomus_cli-* files afterwards: every worktree generation leaves one crate test binary and library behind, and nothing ever removes them short of a cargo clean that would wipe every live tree's build.
Now
lib/rust_bin.sh refuses a build below a free-space floor; I2713 (#1279) prunes idle incremental sessions; nothing prunes debug/deps.
Wanted
mj_cargo_bounded prunes the crate's stale artifacts in debug/deps beside the incremental sweep, with the same age and liveness predicates asked again of each path before it is removed, and a case holds that a live or recent artifact survives and a stale one does not.
Done when
unknown: the record declares no `completion`
Risk
unknown: the record declares no `risk`

Acceptance

  • A stale crate artifact in debug/deps older than the declared age, held open by no process, is removed before a bounded build and named on stderr
  • An artifact a running process holds open, a recent one, and a dependency crate's artifact all survive
  • Free space stays above the declared floor through a day of concurrent sessions on the shared machine
Validation
majordomus plan validate
Evidence required
case_deps_pruned
Evidence present
unknown: the record carries no `evidence` entries

Scope

Touches
lib/rust_bin.shtest/casesdocs/WORKTREES.md
Not
unknown: the record declares no `non_scope`
Depends on
Priority
p0
Profile
implementation
Parallel safe
false
Owner
unknown: the record declares no `owner`

The work so far

Branches
none
Merged
none
Commits
0
Trunk
master
Sessions
none
Created
2026-10-17
Updated
2026-10-17
Started
unknown: the record declares no `started_at`
Verified
unknown: the record declares no `verified_at`
Completed
unknown: the record declares no `completed_at`

Synchronisation

Adapter
scripts/github-sync
Repository
unknown: the derived plan's header carries no repository
External issue
unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
State there
unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it

Findings

Nothing is wrong with these records.