From 680b2a4160bfd75ca56a72f661e7f87b14fde7de Mon Sep 17 00:00:00 2001 From: Hare Date: Mon, 22 Jun 2026 02:30:17 +0900 Subject: [PATCH] ticket: approve repository objective pages --- .yoi/tickets/00001KVNGJPRG/item.md | 2 +- .yoi/tickets/00001KVNGJPRG/thread.md | 66 ++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) diff --git a/.yoi/tickets/00001KVNGJPRG/item.md b/.yoi/tickets/00001KVNGJPRG/item.md index c333dc48..2b1b2963 100644 --- a/.yoi/tickets/00001KVNGJPRG/item.md +++ b/.yoi/tickets/00001KVNGJPRG/item.md @@ -2,7 +2,7 @@ title: 'Workspace web: repository and objective pages' state: 'inprogress' created_at: '2026-06-21T16:35:19Z' -updated_at: '2026-06-21T17:23:58Z' +updated_at: '2026-06-21T17:30:09Z' 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 5ed27f8e..e7540269 100644 --- a/.yoi/tickets/00001KVNGJPRG/thread.md +++ b/.yoi/tickets/00001KVNGJPRG/thread.md @@ -238,3 +238,69 @@ Reviewer focus: Orchestrator will wait for reviewer verdict before integration。 --- + + + +## Review: approve + +Verdict: `approve` + +確認範囲: +- Ticket authority: + - `.yoi/tickets/00001KVNGJPRG/item.md` + - `.yoi/tickets/00001KVNGJPRG/thread.md` +- Diff `0f7e78c1..ceb1ee3b`: + - `crates/workspace-server/src/lib.rs` + - `crates/workspace-server/src/records.rs` + - `crates/workspace-server/src/repositories.rs` + - `crates/workspace-server/src/server.rs` + - `web/workspace/src/lib/workspace-sidebar/ObjectivesNavSection.svelte` + - `web/workspace/src/lib/workspace-sidebar/RepositoriesNavSection.svelte` + - `web/workspace/src/lib/workspace-sidebar/types.ts` + - `web/workspace/src/routes/+page.svelte` + +Blocking issues: +- None found。 + +Acceptance verification: +- Repository APIs are read-only `GET` routes only。 +- Git commands use fixed argument vectors through `Command::new("git").arg("-C").arg(workspace_root).args(args)`; no shell interpolation。 +- Git summary/log is bounded: + - log limit clamps to `1..=50` + - command output capped at `4096` + - fields capped at `240`, hash at `40` + - no diff/patch/file content/blame/config commands are used。 +- Remote URL summary strips URL-scheme userinfo and marks `redacted`。 +- Non-Git workspaces return `git.status = "unavailable"` plus diagnostics rather than failing the Repository page model。 +- Ticket Kanban reads filesystem Ticket summaries and groups by state; no Ticket mutation route/UI was added。 +- Objective list continues to use filesystem read-through `/api/objectives`; no Objective mutation/API authority added。 +- Frontend remains static SPA/hash navigation; no SSR/business authority introduced。 +- Nix build succeeds with the new Rust source file。 + +Non-blocking concerns: +- `ObjectivesNavSection.svelte` only shows the “All objectives” sidebar link when objectives are successfully loaded and non-empty. In an empty/error state, the page is still reachable from hero links, but the sidebar itself does not provide a stable top-level Objectives link. Consider keeping `#/objectives` visible in all non-loading states in a follow-up。 +- Remote sanitization removes URL-scheme userinfo, but does not attempt query-param or SCP-like token redaction. Acceptable for the initial bounded summary, but worth tightening if remote URLs may include local secret-bearing config。 + +Reviewer validation: +- `cargo fmt --check`: passed +- `git diff --check 0f7e78c1..HEAD`: passed +- `cargo test -p yoi-workspace-server`: passed (`8 passed`) +- `cargo check -p yoi-workspace-server`: passed +- `cd web/workspace && deno task check`: passed (`svelte-check found 0 errors and 0 warnings`) +- `cd web/workspace && deno task build`: passed +- `cargo run -p yoi -- ticket doctor`: passed (`doctor: ok`) +- `nix build .#yoi --no-link`: passed + +Generated artifacts: +- Reviewer did not clean generated ignored artifacts after validation。 +- Ignored generated artifacts present: + - `target/` + - `web/workspace/.svelte-kit/` + - `web/workspace/build/` + - `web/workspace/node_modules/` +- No untracked non-ignored files。 + +Worktree status: +- Clean tracked/non-ignored state on `impl/00001KVNGJPRG-repository-objective-pages` at `ceb1ee3b`。 + +---