You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Phase 2: removal: weak is stored but not built #161
id train triage (2026-10-24): needs-decision — project owner: weak-removal semantics (build it or defer explicitly); only the policy field is recorded today.
pkgs/id/src/groups/policy.rs: Removal::{Strong (default), Weak} is defined and recorded on Policy, with the module's own note: "The rules belong to the voiding track; this module only records the setting."
The only read of policy.removal in the tree is display: pkgs/id/src/commands/group.rsremoval_name() for the policy command output. No code in pkgs/id/src/groups/fold.rs or pkgs/id/src/groups/delegation.rs consults it.
The voiding paths apply STRONG semantics unconditionally: delegation.rs fn void() voids a grant when a settled removal of its grantor is concurrent with it (its comment cites design §6.2/§7.3 strong), and fold.rs fn void_device() does the same for device grants. So a group configured removal=weak silently gets strong behaviour today.
Semantics are NOT an open question: design §6.3 is decided — "Weak remove: only the authority check applies. Events by M in R's causal future are invalid. Concurrent events stand." The earlier needs-decision flag is answered by the design itself; what is missing is the build, not a decision.
Route: follow-up packet enqueued as queue task 2941 (small_fix, dedupe repo-health:v1:fix:developing-today/code:issue:161): branch the concurrent-voiding in the delegation and fold/device paths on policy.removal, keep strong byte-identical, add weak-vs-strong tests including the §6.4 week-late case adapted to weak. Issue stays open under queue/queued for that task.
Expectation: done for triage = this verdict + task 2941 queued + labels synced
Agent note — verified again this shift; parked on blocker PR #2335 + merge-queue stall #2403
Queue task 2941 resumed by Lane B. PR #2204 at baf1f0f7: Codex summary at this head reports no findings, all 3 review threads resolved, 24 checks SUCCESS — the only failures are the fmt/clippy family. Independently re-ran the defining tests on the laptop worktree: cargo test --lib groups:: in pkgs/id — 93 passed, 0 failed. A --failed rerun of run 40942941660 was requested (attempt 2 queued).
The fmt/clippy failures are the pre-existing on-main breakage that blocker PR #2335 fixes, plus the recurring Magic Nix Cache throttling; they are not from this PR's diff. Resume (batch with tasks 2977/PR #2219 and 3005/PR #2377): #2335 merged + rerun green + #2403 fixed → enqueue #2204, verify merged, complete task 2941.
Activity
dezren39 commentedon Oct 24, 2026
id train triage (2026-10-24): needs-decision — project owner: weak-removal semantics (build it or defer explicitly); only the policy field is recorded today.
dezren39 commentedon Oct 29, 2026
🤖 Agent note · picked up
dezren39 commentedon Oct 29, 2026
🤖 Agent note · done — triage verdict: CONFIRMED, routed to fix task 2941
pkgs/id/src/groups/policy.rs:Removal::{Strong (default), Weak}is defined and recorded onPolicy, with the module's own note: "The rules belong to the voiding track; this module only records the setting."policy.removalin the tree is display:pkgs/id/src/commands/group.rsremoval_name()for thepolicycommand output. No code inpkgs/id/src/groups/fold.rsorpkgs/id/src/groups/delegation.rsconsults it.delegation.rs fn void()voids a grant when a settled removal of its grantor is concurrent with it (its comment cites design §6.2/§7.3 strong), andfold.rs fn void_device()does the same for device grants. So a group configuredremoval=weaksilently gets strong behaviour today.repo-health:v1:fix:developing-today/code:issue:161): branch the concurrent-voiding in the delegation and fold/device paths onpolicy.removal, keep strong byte-identical, add weak-vs-strong tests including the §6.4 week-late case adapted to weak. Issue stays open underqueue/queuedfor that task.98 remaining items
dezren39 commentedon Oct 29, 2026
Agent note — verified again this shift; parked on blocker PR #2335 + merge-queue stall #2403
Queue task 2941 resumed by Lane B. PR #2204 at
baf1f0f7: Codex summary at this head reports no findings, all 3 review threads resolved, 24 checks SUCCESS — the only failures are the fmt/clippy family. Independently re-ran the defining tests on the laptop worktree:cargo test --lib groups::in pkgs/id — 93 passed, 0 failed. A--failedrerun of run 40942941660 was requested (attempt 2 queued).The fmt/clippy failures are the pre-existing on-main breakage that blocker PR #2335 fixes, plus the recurring Magic Nix Cache throttling; they are not from this PR's diff. Resume (batch with tasks 2977/PR #2219 and 3005/PR #2377): #2335 merged + rerun green + #2403 fixed → enqueue #2204, verify merged, complete task 2941.
dezren39 commentedon Oct 30, 2026
🤖 Agent note · picked up → parked
dezren39 commentedon Oct 30, 2026
Lane A (queue task 2941): verified fresh — PR #2204 MERGED 2026-10-30T01:00:10Z (merge commit fb3b47b) once blocker #2403 cleared. Task 2941 completing as already_done; stale queue/status/work labels removed.
🤖 Agent note · picked up → done (already_done)