yoi/.yoi/tickets/00001KX0DSMPT/thread.md

9.8 KiB
Raw Blame History

作成

LocalTicketBackend によって作成されました。


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:

  • Declared dependency 00001KWZ5KERY is now closed, so the original Decodal/ProfileSourceArchive prerequisite is satisfied。
  • However 00001KX0G06VA is currently inprogress on branch work/00001KX0G06VA-resource-fetch-api
  • This Tickets Workspace/Profile editing API and pages need to build on the same profile/resource/workspace-server launch surfaces that 00001KX0G06VA is actively changingProfileSourceArchive resource handling, workspace-server settings/API/hosts/server, Browser-facing profile launch configuration
  • Starting this Ticket now would create a high-conflict parallel branch and risks designing Profile editing against the wrong resource-fetch/public API boundary。
  • 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(00001KX0DSMPT): depends_on 00001KWZ5KERY; target is closed。
  • TicketOrchestrationPlanQuery(00001KX0DSMPT): prior record 0 件だったため、今回 after 00001KX0G06VA と waiting-capacity note を記録。
  • TicketList: queued はこの Ticket 1件、inprogress は 00001KX0G06VA 1件。
  • Orchestrator worktree git status: clean on orchestration

Next action:

  • 00001KX0G06VA の implementation/review/merge outcome を待つ。
  • resource-fetch API shape が merge されたら、この Ticket を再 routing し、updated orchestration branch から start する。

Escalate if:

  • 人間が 00001KX0G06VA を中断してこの Ticket を先に実装する、または両者を同一 combined worktree で統合実装する方針に切り替えたい場合。

Decision

Routing decision: implementation_ready

Reason:

  • Previous waiting reason is resolved: 00001KX0G06VA is now merged/validated/closed, so the ProfileSourceArchive resource-fetch API shape this Ticket depends on is stable enough to build against。
  • Declared dependency 00001KWZ5KERY is also closed, so Decodal Profile source model / ProfileSourceArchive boundary is available。
  • Ticket body gives concrete Workspace/Profile settings API, read/write source model, UI routes, diagnostics, redaction invariants, and validation criteria。
  • typed relation blocker is resolved (depends_on 00001KWZ5KERY target closed); no active inprogress Ticket remains。
  • The user requested sequential consumption once no blocker remains, and the Dashboard queue authorization is already present。

Evidence checked:

  • Ticket body / thread / artifacts。
  • TicketRelationQuery(00001KX0DSMPT): outgoing depends_on 00001KWZ5KERY; target is closed。
  • TicketOrchestrationPlanQuery(00001KX0DSMPT): prior after 00001KX0G06VA / waiting note; 00001KX0G06VA is now closed with merge commit 01f94b75 and close commit a645ee5b
  • Orchestrator worktree git status: clean on orchestration
  • queued Ticket 一覧: this Ticket 1件。inprogress は 0 件。

IntentPacket:

Intent:

  • Workspace-scoped Browser API and pages for Workspace metadata and Profile registry/source editing, using Backend as the authority and the Decodal/ProfileSourceArchive model already merged。
  • Frontend should edit Profiles through safe Backend APIs, not filesystem paths, and Worker launch profile candidates should reflect updated Backend discovery/validation state。

Binding decisions / invariants:

  • Workspace/Profile editing APIs live under /api/w/<workspace-id>/settings... or consistent scoped Workspace API paths。
  • Browser-facing API/UI must not expose host absolute paths, secret values, Runtime endpoints/tokens, socket/session paths, runtime-local store paths, archive content/digest, or raw resource handles。
  • Profile source references use safe ids/artifact ids/display paths rather than raw absolute paths。
  • Writes must validate syntax/schema/selector uniqueness/path safety before commit and return typed diagnostics。
  • Decodal/ProfileSourceArchive source model from 00001KWZ5KERY and resource-fetch boundary from 00001KX0G06VA are authority inputs; do not reintroduce Runtime filesystem discovery。
  • Runtime direct sync is out of scope; Backend discovery/launch options invalidation is in scope。

Requirements / acceptance criteria:

  • Workspace metadata read/update API works for display name and safe identity/source summaries。
  • Profile registry/source read/update APIs support create/update/delete with revision/etag-style optimistic check。
  • Settings UI has Workspace overview and Profile list/source editor routes under /w/<workspace-id>/settings...
  • Profile updates re-run Backend discovery/validation and update Worker launch profile candidates。
  • Duplicate selector, invalid registry schema, invalid Decodal syntax, path/symlink escape, artifact too large, and concurrent update conflict return typed diagnostics。
  • Browser WorkingDirectory / Worker launch profile candidates and settings Profile list share the same Backend discovery result。

Implementation latitude:

  • Endpoint naming, module boundaries, revision token shape, source/artifact id representation, UI component split, and editor implementation can follow existing workspace-server / Svelte style。
  • v0 plain textarea/editor is acceptable; no heavyweight editor required。
  • Imported source write support can be limited to bounded module root or deferred with typed diagnostics if not needed for core v0。

Escalate if:

  • Secret value editor, multi-user auth/RBAC, Runtime direct sync, Plugin/MCP/sandbox artifact sync, Ticket/Objective/Memory editor integration, or a new Profile source semantic model beyond Decodal/ProfileSourceArchive is required。

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

Current code map:

  • Workspace/profile settings backend: crates/workspace-server/src/server.rs, hosts.rs, config.rs, resource_broker.rs, Decodal/archive helpers。
  • Profile archive/config: crates/worker-runtime/src/profile_archive.rs, config_bundle.rs for source model reference。
  • Frontend settings: web/workspace/src/routes/w/[workspaceId]/settings/**, web/workspace/src/lib/workspace-settings/**, worker launch profile candidate helpers。

Critical risks / reviewer focus:

  • No raw paths/secrets/runtime internals or resource handles leak to Browser。
  • Profile editing updates the same Backend discovery/launch options used by Worker launch。
  • Optimistic concurrency and path/symlink escape checks fail closed。
  • Decodal validation is real and not only superficial string checks。
  • Existing Runtime resource fetch / ProfileSourceArchive authority boundaries remain intact。

State changed

Queued acceptance recorded after previous waiting reason was resolved.

Checked context:

  • Ticket body / thread / artifacts。
  • TicketRelationQuery(00001KX0DSMPT): depends_on 00001KWZ5KERY; target is closed。
  • TicketOrchestrationPlanQuery(00001KX0DSMPT): prior after 00001KX0G06VA / waiting note を確認。00001KX0G06VA is now closed / merged。
  • Orchestrator worktree git status: clean on orchestration
  • queued Ticket はこの Ticket 1件のみ。inprogress は 0 件。

Acceptance basis:

  • Previous blocker/waiting reason is resolved。
  • concrete missing decision / information は残っていない。
  • Ticket scope is Workspace/Profile settings API and pages using already-merged Decodal/ProfileSourceArchive and resource-fetch boundaries。
  • side effect はこの queued -> inprogress acceptance 後に、worktree-workflow に沿って implementation worktree を作成してから開始する。

Implementation report

Implementation routing update:

  • Worktree-workflow に従い implementation worktree を作成した。
    • Worktree: /home/hare/Projects/yoi/.worktree/00001KX0DSMPT-workspace-profile-settings
    • Branch: work/00001KX0DSMPT-workspace-profile-settings
  • Worktree には tracked .yoi project records が見えている。
  • .yoi/memory / .yoi/runtime / .yoi/log / .yoi/logs / .yoi/local / .yoi/*.lock / .yoi/*secret* は作成直後に存在しないことを確認した。
  • Sibling Coder Pod yoi-coder-00001KX0DSMPT-profile-settings を起動した。
  • Scope policy: runtime workspace root は read-only、implementation worktree は write 可。Coder task では root/original workspace での read/write/validation/git operation を禁止し、この implementation worktree だけを作業対象に指定した。
  • 完了後は diff / validation evidence を Orchestrator が確認し、別 sibling Reviewer Pod に read-only review を依頼する。StopPod は既知の不具合があるため使用しない。