diff --git a/.yoi/tickets/00001KVNGJPRG/artifacts/orchestration-plan.jsonl b/.yoi/tickets/00001KVNGJPRG/artifacts/orchestration-plan.jsonl index 5f2c9ee2..8d7a5141 100644 --- a/.yoi/tickets/00001KVNGJPRG/artifacts/orchestration-plan.jsonl +++ b/.yoi/tickets/00001KVNGJPRG/artifacts/orchestration-plan.jsonl @@ -1 +1,2 @@ {"id":"orch-plan-20260621-164056-1","ticket_id":"00001KVNGJPRG","kind":"do_not_parallelize","related_ticket":"00001KVNG9B9Z","note":"Repository/objective pages and sidebar navigation both modify the Workspace SPA navigation/layout surface, especially `web/workspace/src/routes/+page.svelte` and route/component structure. Start this Ticket after `00001KVNG9B9Z` lands or after its implementation diff is known enough to route a non-conflicting continuation.","author":"yoi-orchestrator","at":"2026-06-21T16:40:56Z"} +{"id":"orch-plan-20260621-170253-2","ticket_id":"00001KVNGJPRG","kind":"accepted_plan","accepted_plan":{"summary":"Add read-only current-workspace Repository APIs/pages with bounded Git summary/log and Ticket Kanban, plus Objective list page and sidebar links, preserving filesystem Ticket/Objective authority and static SPA boundaries.","branch":"impl/00001KVNGJPRG-repository-objective-pages","worktree":"/home/hare/Projects/yoi/.worktree/00001KVNGJPRG-repository-objective-pages","role_plan":"Orchestrator creates a dedicated child worktree from current sidebar-integrated `orchestration` and spawns a narrow-scope Coder. Reviewer will be spawned read-only after Coder reports implementation commit(s). After approval, Orchestrator integrates into `orchestration`, validates workspace-server/frontend/Nix, records closure, and cleans only the child worktree/branch."},"author":"yoi-orchestrator","at":"2026-06-21T17:02:53Z"} diff --git a/.yoi/tickets/00001KVNGJPRG/item.md b/.yoi/tickets/00001KVNGJPRG/item.md index 797bd272..fb57df35 100644 --- a/.yoi/tickets/00001KVNGJPRG/item.md +++ b/.yoi/tickets/00001KVNGJPRG/item.md @@ -1,8 +1,8 @@ --- title: 'Workspace web: repository and objective pages' -state: 'queued' +state: 'inprogress' created_at: '2026-06-21T16:35:19Z' -updated_at: '2026-06-21T16:41:09Z' +updated_at: '2026-06-21T17:02:53Z' assignee: null queued_by: 'workspace-panel' queued_at: '2026-06-21T16:40:35Z' diff --git a/.yoi/tickets/00001KVNGJPRG/thread.md b/.yoi/tickets/00001KVNGJPRG/thread.md index 0122decf..5334c82c 100644 --- a/.yoi/tickets/00001KVNGJPRG/thread.md +++ b/.yoi/tickets/00001KVNGJPRG/thread.md @@ -53,3 +53,75 @@ Decision: No implementation side effects were performed for this Ticket。 --- + + + +## Decision + +Routing decision: `implementation_ready_after_sidebar_landed` + +Reason: +- This Ticket was previously left queued due `do_not_parallelize` with `00001KVNG9B9Z` because repository/objective pages and sidebar navigation both touched the Workspace SPA navigation/layout surface。 +- `00001KVNG9B9Z` is now `closed` and integrated (`613f4126 merge: workspace sidebar navigation`), so the sequencing blocker is cleared。 +- Related bootstrap Ticket `00001KVMFFYVX` is also closed/integrated。 +- Ticket body has concrete backend/API/frontend requirements, acceptance criteria, and validation requirements。 +- Relations are `related` only; no blocking relation remains。 +- Orchestrator worktree is clean on `orchestration` at `eb2e5907`; target worktree / branch is not present。 + +IntentPacket: + +Intent: +- Add Repository and Objective pages reachable from the Workspace sidebar, using filesystem read-through Ticket/Objective authority and bounded read-only Repository/Git summaries。 + +Binding decisions / invariants: +- Ticket / Objective canonical authority remains existing filesystem records; do not migrate canonical writes to SQLite or add mutation APIs。 +- Repository page is read-only initial slice for current workspace root as local Repository。 +- Git info and log summaries must be bounded; do not expose full diffs, file contents, blame, or secret-like config。 +- Repository Ticket Kanban is read-only and grouped by Ticket state; no drag/drop or state mutation。 +- Objective list uses existing filesystem read-through `/api/objectives` data, with detail links/placeholders as practical。 +- Frontend remains static SPA; no SSR/business authority。 +- Sidebar links should use the now-landed navigation/component structure。 +- API failures, non-Git repo, and empty state must be section-local。 + +Requirements / acceptance criteria: +- Add read-only Repository list/detail/summary API or minimal workspace repository summary。 +- For Git repository: bounded branch/head/root/dirty/remote/recent log summary。 +- For non-Git repository: safe `kind = local` / git unavailable diagnostic。 +- Add bounded Git log summary API returning recent N commit hash/subject/author/timestamp only。 +- Add Repository Ticket Kanban read model grouped by Ticket state, with safe fallback to workspace-local tickets when target metadata is absent。 +- Add Repository page showing summary, Git summary/log, and Ticket Kanban。 +- Add Objective list page showing objective title/state/updated_at/summary and detail link/placeholder if feasible。 +- Sidebar repositories/objectives links navigate to these pages。 +- Deno check/build and backend validation pass。 + +Implementation latitude: +- Use SvelteKit static SPA client-side routing/hash/router approach or simple stateful navigation if current skeleton lacks route generation; keep static output compatible。 +- Backend API names may be pragmatic, e.g. `/api/repositories`, `/api/repositories/{id}`, `/api/repositories/{id}/log`, `/api/repositories/{id}/tickets`。 +- Current workspace root can be the only repository for this slice。 +- Ticket Kanban fallback can group all workspace tickets by state with diagnostic that target metadata is not yet available。 +- Keep UI simple and avoid broad design-system churn。 + +Escalate if: +- Implementing repository APIs would require reading file contents/diffs or unsafe Git config/secrets。 +- Objective detail requires mutation or schema changes。 +- Static SPA route approach conflicts with SvelteKit adapter/static constraints。 +- Sidebar/navigation architecture from `00001KVNG9B9Z` cannot support pages without broad rewrite。 + +Validation plan: +- `cargo fmt --check` +- `cargo test -p yoi-workspace-server` +- `cargo check -p yoi-workspace-server` +- `cd web/workspace && deno task check && deno task build` +- `git diff --check` +- `cargo run -p yoi -- ticket doctor` +- `nix build .#yoi --no-link`。 + +--- + + + +## State changed + +Previously recorded `do_not_parallelize` sequencing reason is cleared because sidebar navigation Ticket `00001KVNG9B9Z` is closed and integrated. Human queue authorization remains applicable, and the Ticket has concrete implementation requirements, so Orchestrator accepts implementation. + +---