Repository navigation
Dev - #8
Dev#8
Conversation
…it (R-838) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…R-838) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e, and freeing it (R-839) The daemon finds each checkout from the ledger and git worktree list, gives its build output by its key and by where its target and Android links point (also into the older */tasks/checkouts layout), and states it: in_use, active, idle, merged, gone or old. Peers report their copies with the build output over a new cache request and drop them on request, keeping any a job uses; retention's sweep now deletes a copy's output with the copy. gc deletes only build output and peer copies, never a working tree, never in_use. CLI loadtable gc [--delete STATES] [--idle-days N] [--json], MCP tool gc. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ut (R-839) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e them; gc --free (R-840) The Disk tab shows the gc report as a card per machine and one row per checkout with its size on every machine that reported. Rows a job uses have no tick box; Free asks first and then sends gc with the ticked checkouts. The daemon now frees checkouts by name or full path whatever their state (still never one in use), and loadtable gc --free does the same from the CLI. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…afted On a push to main, release.yml reads the workspace version; when vX.Y.Z is already tagged it stops, otherwise it requires docs/releases/vX.Y.Z.md, builds every target, tags the built commit and drafts the release. A pushed tag works as before; a manual run on a branch only builds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…version Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…; Kotlin daemon folder writable (R-841 to R-843) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ide a sandbox, Kotlin folder (R-841 to R-843) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…is greyed (R-844) After gc frees, each machine's total drops by the bytes freed on it, here or on a peer, so the card no longer shows the size from before. With nothing ticked the Free button reads just Free and, like every button that cannot be pressed, is drawn in faint text instead of red. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e button (R-844) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
….1.3 was to carry Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f9dd767e3c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| let chosen = delete.contains(&d.row.state) || checkouts.contains(&d.row.checkout); | ||
| if d.row.state == GcState::InUse || !chosen { | ||
| continue; |
There was a problem hiding this comment.
Synchronize local cache deletion with job admission
If another client submits a job while GC is measuring directories or waiting for peer reports, this check still uses the state computed from the initial ledger snapshot. server::accept_loop handles connections concurrently, so the new job can start building before gc_delete removes its output directory. This violates the promise that queued or running jobs are protected and can fail an otherwise valid build. Recheck checkout usage under synchronization shared with job admission/start, and retain that protection through deletion.
Useful? React with 👍 / 👎.
| .filter(|d| d.row.state.reclaimable() && d.row.freed_bytes == 0) | ||
| .flat_map(|d| &d.row.held) | ||
| .filter(|h| h.machine == m.name) |
There was a problem hiding this comment.
Track remaining output separately from bytes already freed
When deletion succeeds locally but a peer's drop request fails, the row has positive freed_bytes even though the peer still holds its output. This filter then excludes the entire row from every machine's reclaimable total, incorrectly reporting that the peer's remaining bytes cannot be freed. The Disk tab also uses freed_bytes == 0 to enable selection, preventing a retry until the user refreshes. Track remaining holdings per machine rather than treating any successful deletion as completion of the whole row.
Useful? React with 👍 / 👎.
| pushed_main = os.environ['GITHUB_EVENT_NAME'] == 'push' and ref_type == 'branch' and ref_name == 'main' | ||
| release = ref_type == 'tag' or (pushed_main and os.environ['TAGGED'] != 'true') |
There was a problem hiding this comment.
Add requirement tracking and tests for automatic releases
The release workflow now automatically tags and drafts an untagged workspace version on a push to main, but this changed behavior has neither a requirement row nor a requirement-named test. Repository-wide searches for the release workflow and its new gating logic found only the workflow and release documentation; the added R-838–R-844 rows cover other changes. AGENTS.md requires both tracking and a named test for new or changed behavior. Add coverage for an untagged main push, an already-tagged version, and a manual branch run before relying on this release path.
AGENTS.md reference: AGENTS.md:L32-L34
Useful? React with 👍 / 👎.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
No description provided.