Skip to content

tri worktrees: no mine label, evidence columns and KEEP_ACTIVE for recent commits - #11098

Merged
gHashTag merged 2 commits into
masterfrom
lane/tri-worktrees-active-11081
Oct 19, 2026
Merged

gHashTag merged 2 commits into
masterfrom
lane/tri-worktrees-active-11081

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Closes #11081

tri worktrees: no mine label, evidence columns and KEEP_ACTIVE for recent commits

Gates run on the merged tree (t27c from master): 2 spec(s) with tests clean and vacuous passes 0, seal --verify MATCH, tri types ratchet CLEAN, dupe_scan failure set a subset of master's (inherited red).

TEST specs/tri/worktrees/reap.t27 tests=[18] fail=[0] vacuous=[0]
TEST specs/tools/tri/worktrees.t27 tests=[4] fail=[0] vacuous=[0]
SEAL specs/tri/worktrees/reap.t27 :: all hashes MATCH
SEAL specs/tools/tri/worktrees.t27 :: all hashes MATCH
TYPES RATCHET: CLEAN
DUPE failing=15 extra-vs-master=[]

🤖 Generated with Claude Code

claude and others added 2 commits October 19, 2026 23:50
…nstead, and a KEEP_ACTIVE verdict before REMOVABLE (Closes #11081)

`tri worktrees` printed `mine` for every checkout when the caller's own path and the tree's path were both outside a scratchpad,
so another session's lanes (commit subjects "widgets: ...", one committed seconds earlier) were listed as the caller's.
Only the REMOVABLE rule kept them from a removal plan. The label is gone, with session_of that fed it and its four tests.

specs/tri/worktrees/reap.t27 is extended, not duplicated:
- verdict KEEP_ACTIVE (7, VERDICTS 8): the newest commit is younger than ACTIVE_MINUTES = 60, or a file in the tree changed in that
  time (the glue asks `find -mmin`, only for a tree a merged PR would make removable), or the commit time cannot be read.
  It is decided after the pull request facts and before the path fact, so no PR stays KEEP_NO_PR and an open one KEEP_OPEN_PR,
  and a tree whose PR merged but which a session still commits in is no longer one `git commit` from a removal line.
- log_time and subject_from read `git log -1 --format=%ct%x09%s`; age_of reuses lanes' age_minutes and AGE_UNKNOWN by `use`
  (no second copy of either); active, age_count and age_unit decide the verdict and the unit the glue prints.
- 5 tests added (18 in all, 13 on master), at the edges 59 and 60 minutes, for an unreadable log and a future commit time, for
  11 seconds old (KEEP_ACTIVE, no removal line) and 60 minutes old (REMOVABLE as before). Negative control: 60 -> 6 in
  ACTIVE_MINUTES fails 2 of them. The exhaustive verdict test now also ranges over the new fact.

The listing prints, for every tree it shows, "newest commit <age> ago: <subject>"; the plan prints the same, the number of
unpushed commits, and also the KEEP_ACTIVE rows, so a protected tree is visible. Run once on the machine this was written on, the
plan listed 4 REMOVABLE trees (newest commits 8 and 9 days old) and 1 KEEP_ACTIVE tree whose PR is merged or closed and whose newest
commit was 48 minutes old.

Hand-written Rust in cli/tri/src/trees.rs: 25 added, 59 deleted (session_of, `here`, `mine`, session_tests). The tool card's
--reap-plan doc and the clap doc it was read from are updated together. gen/rust/tri/worktrees/reap.rs is `t27c gen-rust` output.
The seals of reap.t27 and of the tool card are not re-saved here: t27c's test run needs the Zig cache, which the sandbox this
was written in cannot write, and a seal that says `tests: blocked` would be a false one.

Closes #11081

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…cent commits (Closes #11081)

Merge of master plus sealing, gates run on the merged tree with t27c from master: tests clean with vacuous passes 0, seal --verify MATCH, tri types ratchet CLEAN, dupe_scan failure set a subset of master's.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@gHashTag
gHashTag enabled auto-merge (squash) October 19, 2026 16:53
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-19 16:53:51 UTC

Summary

Status Count
Total Open PRs 50
PRs with Failing Checks 47
PRs with All Checks Green 3
READY 2
FAILING 47
PENDING 0
NO CHECKS YET 0

These columns do not partition: 2 + 47 + 0 + 0 = 49, and there are 50 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=e34e1b174c96 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag
gHashTag merged commit 65525cc into master Oct 19, 2026
32 of 36 checks passed
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.

tri worktrees: no 'mine' label without evidence, and a tree with a recent commit is never planned for removal

2 participants