7.3 KiB
作成
LocalTicketBackend によって作成されました。
Decision
Follow-up to 00001KX6BPY7M. Deletion/cleanup policy is intentionally manual-first:
- No automatic prune based on age or capacity in this ticket.
- Backend presents a plan with reasons, blockers, linked Worker/Workdir ids, retention, pinned state, and expected revision/digest.
- User or explicit orchestration authority selects targets and executes cleanup.
- Pinned Worker history is protected.
- Clean workdir files are cache and may be manually cleaned when not linked to running Workers.
- Dirty orphan workdirs require recovery/discard decision, not normal prune.
Decision
Clarification: because 00001KX6BPY7M is already in progress, this follow-up ticket explicitly owns implementation of Worker pinned state beyond merely consuming it in prune logic.
Scope added here:
- Persist pinned flag or equivalent Worker retention field in Backend registry.
- Add Backend Worker pin/unpin mutation API.
- Include pinned state in Worker list/detail and prune plan.
- Ensure manual cleanup execution rejects pinned Worker history and protected linked records.
Decision
Lifecycle clarification:
- Worker lifecycle should stay simple: running -> stopped -> delete.
- Do not introduce archived as a Worker lifecycle state in this ticket.
- Worker is the storage unit for Session/transcript history; deleting a Worker deletes or removes access to that history.
- Pinned remains necessary and blocks Worker deletion.
- Workdir files are cache and should be manually deletable.
- Dirty workdir deletion is allowed only with explicit confirmation that changes will be discarded.
- Compression/archive storage for Session history is out of scope and should be a separate storage policy if needed later.
Intake summary
Marked ready by yoi ticket state.
State changed
Marked ready by yoi ticket state.
State changed
Ticket を workspace-panel が queued にしました。
Decision
Routing decision: blocked_by_dependency_or_missing_authority
Reason:
- Ticket is a manual delete / cleanup follow-up that depends on the Backend Worker/Workdir registry and link authority from
00001KX6BPY7M。 00001KX6BPY7Mis currentlyinprogresson branchwork/00001KX6BPY7M-worker-workdir-registryand under external review。- This Ticket touches the same store schema, server APIs, Worker/Workdir projections, retention/managed-unmanaged semantics, and cleanup safety rules。
- Starting this Ticket now would create a high-conflict parallel branch and could implement delete/cleanup behavior against an unreviewed registry model。
- Therefore this routing pass leaves the Ticket queued and does not record
queued -> inprogress, create a worktree, or spawn role Pods。
Evidence checked:
- Ticket body / thread / artifacts。
TicketRelationQuery(00001KX6CRVBE): 0 typed relations, but Ticket body/order context makes00001KX6BPY7Ma practical implementation prerequisite。TicketOrchestrationPlanQuery(00001KX6CRVBE): prior record 0 件だったため、今回after 00001KX6BPY7Mと waiting-capacity note を記録。TicketList: queued はこの Ticket 1件、inprogress は00001KX6BPY7M1件。- Orchestrator worktree git status: clean on
orchestration。
Next action:
00001KX6BPY7Mの implementation/review/merge outcome を待つ。- registry/link model が merge されたら、この Ticket を再 routing し、updated orchestration branch から start する。
Escalate if:
- 人間が
00001KX6BPY7Mとこの Ticket を同一 combined worktree で統合実装する方針に切り替えたい場合。
Decision
Routing decision: accept for implementation
Reason:
- Previously recorded prerequisite
00001KX6BPY7Mhas now been reviewed, merged into orchestration branch, final-validated, closed, and its child implementation worktree/branch cleaned up。 TicketRelationQuery(00001KX6CRVBE)shows no typed blockers。- Queue contains this Ticket and there are no other
inprogressTickets。 - Ticket is concrete and well scoped: manual Worker delete / Workdir cleanup plan and execution on top of Backend Worker/Workdir registry/link authority。
Accepted plan:
- Create dedicated implementation worktree
/home/hare/Projects/yoi/.worktree/00001KX6CRVBE-manual-cleanupon branchwork/00001KX6CRVBE-manual-cleanupfrom current orchestration branch。 - Route implementation to sibling Coder Pod。
- Route external review to sibling Reviewer Pod after Coder commit/validation。
- Orchestrator retains merge, final validation, Ticket close, and cleanup authority。
Design constraints for implementation:
- Cleanup/delete is manual-first only; no automatic prune policy。
- Worker lifecycle remains
running -> stopped -> delete; do not introducearchivedlifecycle state。 pinnedWorker/history is protected in plan generation and execution。- Workdir file cleanup blocks when linked to running Workers。
- Dirty Workdir discard is explicit and separate from ordinary clean cleanup。
- Execution must reject stale plan revision/digest。
- Browser-facing responses/UI must not expose raw Runtime paths。
- Workdir/Worker canonical records should remain Backend/registry based and safe after execution。
State changed
Prerequisite registry/link model is now closed and merged. Accepting queued manual cleanup Ticket for implementation before creating worktree or spawning role Pods.
Implementation report
Implemented manual Worker/Workdir cleanup and retention for Ticket 00001KX6CRVBE.
Summary:
- Added Backend Worker retention pin/unpin store APIs and scoped Browser API endpoints.
- Added manual Runtime cleanup plan and execution APIs with plan digest/revision checks, pinned/running/dirty safeguards, removed/missing record deletion, and Browser-safe DTOs that do not expose raw materialized paths.
- Added Browser Workdirs cleanup preview/execution UI and Worker retention controls.
- Added focused workspace-server tests covering plan generation, stale rejection, pinned protection, running-link block, dirty confirmation, removed record deletion, and raw path redaction.
Validation:
- git diff --check
- cargo test -p yoi-workspace-server --lib
- cargo test -p worker-runtime --features ws-server,fs-store
- cargo check -p yoi
- cd web/workspace && deno task check && deno task test
- yoi ticket doctor
- nix build .#yoi --no-link