From 416d67ca06a98a75b172d6c8855a97e10487185c Mon Sep 17 00:00:00 2001 From: Hare Date: Sun, 5 Jul 2026 04:35:55 +0900 Subject: [PATCH] ticket: accept repository registry work --- .../artifacts/orchestration-plan.jsonl | 1 + .yoi/tickets/00001KWPC13WQ/item.md | 4 +- .yoi/tickets/00001KWPC13WQ/thread.md | 102 ++++++++++++++++++ 3 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 .yoi/tickets/00001KWPC13WQ/artifacts/orchestration-plan.jsonl diff --git a/.yoi/tickets/00001KWPC13WQ/artifacts/orchestration-plan.jsonl b/.yoi/tickets/00001KWPC13WQ/artifacts/orchestration-plan.jsonl new file mode 100644 index 00000000..e623f659 --- /dev/null +++ b/.yoi/tickets/00001KWPC13WQ/artifacts/orchestration-plan.jsonl @@ -0,0 +1 @@ +{"id":"orch-plan-20260704-193545-1","ticket_id":"00001KWPC13WQ","kind":"accepted_plan","accepted_plan":{"summary":"Ticket 00001KWPC13WQ は独立 queued Ticket で blocker なし。Workspace Repository projection を config-driven registry に移行する。human authorized routing 済みのため queued->inprogress acceptance 後に worktree + coder/reviewer loop へ進める。","branch":"work/00001KWPC13WQ-repository-registry","worktree":"/home/hare/Projects/yoi/.worktree/00001KWPC13WQ-repository-registry","role_plan":"単一 sibling Coder Pod に implementation worktree を委譲し、Repository registry config/API/backend projection と web compatibility を実装する。完了後、別 sibling Reviewer Pod で Ticket の IntentPacket / invariants / acceptance criteria に照らして read-only review する。"},"author":"orchestrator","at":"2026-07-04T19:35:45Z"} diff --git a/.yoi/tickets/00001KWPC13WQ/item.md b/.yoi/tickets/00001KWPC13WQ/item.md index cfc13280..9baf70e7 100644 --- a/.yoi/tickets/00001KWPC13WQ/item.md +++ b/.yoi/tickets/00001KWPC13WQ/item.md @@ -1,8 +1,8 @@ --- title: 'Config-driven Repository registry for Workspace Backend' -state: 'queued' +state: 'inprogress' created_at: '2026-07-04T10:50:45Z' -updated_at: '2026-07-04T19:34:04Z' +updated_at: '2026-07-04T19:35:52Z' assignee: null queued_by: 'workspace-panel' queued_at: '2026-07-04T19:34:04Z' diff --git a/.yoi/tickets/00001KWPC13WQ/thread.md b/.yoi/tickets/00001KWPC13WQ/thread.md index 4a3488eb..a1a8bba4 100644 --- a/.yoi/tickets/00001KWPC13WQ/thread.md +++ b/.yoi/tickets/00001KWPC13WQ/thread.md @@ -30,4 +30,106 @@ Marked ready by `yoi ticket state`. Ticket を `workspace-panel` が queued にしました。 +--- + + + +## Decision + +Routing decision: implementation_ready + +Reason: +- Ticket は Workspace Backend の Repository registry を config-driven にする範囲、非目標、受け入れ条件が具体化されている。 +- `WorkspaceBackendConfigFile` / `.yoi/workspace-backend.local.toml` に `[[repositories]]` を追加し、Browser/API が configured repositories のみを返すという binding decision が明確。 +- `RepositoryId` / `RepositorySelector` / `RepositoryPoint` の用語境界と、secret/path leak を避ける Browser-facing invariant が明記されている。 +- typed relation blocker は 0 件、OrchestrationPlan record は 0 件。 +- queued notification は human authorized routing であり、今回の routing acceptance 後にのみ implementation side effect へ進める。 + +Evidence checked: +- Ticket body / thread / artifacts。 +- `TicketRelationQuery(00001KWPC13WQ)`: 0 件。 +- `TicketOrchestrationPlanQuery(00001KWPC13WQ)`: 0 件。 +- Orchestrator worktree git status: clean on `orchestration`。 +- queued Ticket 一覧: この Ticket 1件のみ。ready / inprogress は 0 件。 +- visible Pods: 2 visible pods(既存 visible state の確認のみ、spawn は未実施)。 +- `TicketDoctor`: 0 errors / 既存 diagnostics のみ。 +- Bounded code map: `crates/workspace-server/src/config.rs`, `crates/workspace-server/src/repositories.rs`, `crates/workspace-server/src/server.rs`, `crates/workspace-server/src/store.rs`, repository-related web workspace files。 + +IntentPacket: + +Intent: +- Workspace Backend の Repository view を workspace root/cwd の暗黙 fallback から、`.yoi/workspace-backend.local.toml` の explicit Repository registry に移行する。 +- `/api/repositories` と `/api/repositories/{id}/log` は configured repositories のみを扱い、未設定時は empty list + typed warning diagnostic を返す。 + +Binding decisions / invariants: +- `--workspace` は Repository root ではなく workspace config root / local descriptor root として扱う。 +- `uri = "."` は backend process cwd ではなく workspace config root 相対として解釈する。 +- cwd / workspace root を暗黙 Repository として Browser/API に返す fallback は廃止する。 +- dogfood workspace config には `id = "main"`, `provider = "git"`, `uri = "."` 相当の explicit Repository entry を追加する。 +- v0 provider は `git` 主対象。`local_fs` は必要なら placeholder/diagnostic 程度。 +- `RepositorySelector` は provider-specific な未解決 locator、`RepositoryPoint` は解決済み evidence として、Git branch/tag/hash 固定抽象にしない。 +- Browser-facing response は token/auth ref/secret、不要な absolute host path、internal config/store/runtime paths を漏らさない。 + +Requirements / acceptance criteria: +- `.yoi/workspace-backend.local.toml` に `[[repositories]]` を書ける。 +- `/api/repositories` は configured repositories のみを返す。 +- Repository 未設定 workspace は empty list + `repository_config_empty` 相当 warning diagnostic。 +- configured Git Repository では branch/head/status/log など既存 UI が必要とする summary を取得できる。 +- `/api/repositories/{id}/log` は configured Git Repository id のみ受け付け、未知 id / unsupported provider は typed sanitized error。 +- 既存 web UI は未設定時にも壊れず、明示 Repository がある場合だけ repository view を表示できる。 + +Implementation latitude: +- 型名、module分割、API response shape の細部は既存 `workspace-server` / web workspace style に合わせてよい。 +- config TOML の comments/format preservation は既存 local config serializer の範囲で扱う。 +- Browser-facing path 表示は safe display name / sanitized summary に寄せ、必要なら absolute path を API 内部で使っても response に不要露出しない。 +- focused tests の構成は backend helper/route-level と web model/component-levelの現実的な範囲で選んでよい。 + +Escalate if: +- credential/clone/fetch/write operation、Runtime materialization、Execution Workspace 作成、multi-workspace store 移行、Ticket target からの RepositoryPoint 解決が必要になる場合。 +- Browser-facing API に secret/auth ref/internal absolute paths を出さないと実装できない場合。 +- `RepositorySelector` / `RepositoryPoint` の概念境界を設計変更する必要が出た場合。 + +Validation: +- `cargo test -p yoi-workspace-server` +- `cargo check -p yoi` +- `cd web/workspace && deno task check && deno task test` +- `git diff --check` +- `yoi ticket doctor` +- `nix build .#yoi --no-link` は Cargo.lock / dependency / resource packaging / Nix 変更がある場合だけ実行し、未実行なら理由を報告する。 + +Current code map: +- Config: `crates/workspace-server/src/config.rs` (`WorkspaceBackendConfigFile`, local config load/write/resolve)。 +- Repository projection: `crates/workspace-server/src/repositories.rs` (`LocalRepositoryReader`, `RepositorySummary`, git inspect/log)。 +- API wiring: `crates/workspace-server/src/server.rs` (`/api/repositories`, `/api/repositories/{repository_id}`, log route)。 +- Store/schema context: `crates/workspace-server/src/store.rs` repositories table migration context。 +- Web: workspace repository panels/routes using `/api/repositories` and repository log summaries. + +Critical risks / reviewer focus: +- No implicit workspace-root/cwd repository fallback remains in Browser/API output. +- configured repository ids, unknown ids, and unsupported providers fail closed with typed sanitized diagnostics. +- path/secret/internal config/store/runtime details do not leak to Browser-facing responses. +- `uri = "."` is resolved against workspace config root, not process cwd. +- dogfood `.yoi/workspace-backend.local.toml` contains explicit `main` repository entry without introducing secret/local-only fields into tracked records. + +--- + + + +## State changed + +Queued acceptance recorded after Workspace Dashboard Queue notification authorized Orchestrator routing. + +Checked context: +- Ticket body / thread / artifacts。 +- `TicketRelationQuery(00001KWPC13WQ)`: blocking relation 0 件。 +- `TicketOrchestrationPlanQuery(00001KWPC13WQ)`: prior record 0 件。今回 accepted_plan を記録済み。 +- Orchestrator worktree git status: clean on `orchestration`。 +- queued Ticket はこの Ticket 1件のみ。ready / inprogress は 0 件。 +- visible Pods / TicketDoctor / bounded code map を確認。 + +Acceptance basis: +- concrete missing decision / information は残っていない。 +- Ticket の scope は explicit Repository registry / API projection / web compatibility に閉じており、非目標も明確。 +- side effect はこの `queued -> inprogress` acceptance 後に、worktree-workflow に沿って implementation worktree を作成してから開始する。 + ---