diff --git a/.yoi/tickets/00001KVJA7V2R/artifacts/orchestration-plan.jsonl b/.yoi/tickets/00001KVJA7V2R/artifacts/orchestration-plan.jsonl new file mode 100644 index 00000000..378f70f4 --- /dev/null +++ b/.yoi/tickets/00001KVJA7V2R/artifacts/orchestration-plan.jsonl @@ -0,0 +1 @@ +{"id":"orch-plan-20260620-120740-1","ticket_id":"00001KVJA7V2R","kind":"accepted_plan","accepted_plan":{"summary":"`WebFetch` が `application/pdf` を `pdf-extract` により page-delimited Markdown-ish text (`pdf_text_by_pages`) として返せるようにする。既存 HTML/text/JSON/XML behavior と network safety/output bounds は維持し、semantic Markdown/OCR/native dependency は導入しない。","branch":"impl/00001KVJA7V2R-webfetch-pdf-text","worktree":"/home/hare/Projects/yoi/.worktree/00001KVJA7V2R-webfetch-pdf-text","role_plan":"Orchestrator は Profile scope review と並行して専用 implementation worktree `.worktree/00001KVJA7V2R-webfetch-pdf-text` を作成し、Coder をその child worktree への narrow write scope で起動する。Coder 実装後、Reviewer が WebFetch safety bounds、PDF binary path separation、metadata/output truncation、dependency/Nix impact、HTML/text regression を確認する。"},"author":"yoi-orchestrator","at":"2026-06-20T12:07:40Z"} diff --git a/.yoi/tickets/00001KVJA7V2R/item.md b/.yoi/tickets/00001KVJA7V2R/item.md index f52d5c1a..e3a43db4 100644 --- a/.yoi/tickets/00001KVJA7V2R/item.md +++ b/.yoi/tickets/00001KVJA7V2R/item.md @@ -1,8 +1,8 @@ --- title: 'WebFetch: PDF を page-delimited text として取得できるようにする' -state: 'queued' +state: 'inprogress' created_at: '2026-06-20T10:46:48Z' -updated_at: '2026-06-20T12:06:29Z' +updated_at: '2026-06-20T12:08:34Z' assignee: null readiness: 'implementation_ready' risk_flags: ['security', 'dependency', 'public-api', 'output-bounds'] diff --git a/.yoi/tickets/00001KVJA7V2R/thread.md b/.yoi/tickets/00001KVJA7V2R/thread.md index 304b4722..12fb4290 100644 --- a/.yoi/tickets/00001KVJA7V2R/thread.md +++ b/.yoi/tickets/00001KVJA7V2R/thread.md @@ -29,4 +29,64 @@ Intake 済み。Orchestrator は implementation routing として扱える。実 Ticket を `workspace-panel` が queued にしました。 +--- + + + +## Decision + +Routing decision: implementation_ready_parallel + +Reason: +- Panel Queue により、この Ticket は Orchestrator routing 対象として明示許可された。 +- User standing directive: blocker が無いものは並列実行する。現在の `00001KVJABS1A` は Profile scope review 中であり、WebFetch PDF 実装とは domain/file conflict がないため並列化できる。 +- Ticket body は調査済みの PDF extraction 方針、`pdf-extract` 採用理由、binary path 分離、page-delimited Markdown-ish output、metadata、bounds、non-goals、validation を実装可能な粒度で定義している。 +- 未解決 relation blocker はない。 +- Orchestrator worktree は clean、matching branch/worktree はなし。 +- Risk domain は security / dependency / public-api / output-bounds だが、Ticket は existing WebFetch network safety、`max_response_bytes` / `max_output_bytes`、unsupported binary rejection、no OCR/semantic Markdown/native dependency を明示している。bounded context check 後も implementation 前に必要な追加 human decision は見つからなかった。 + +Evidence checked: +- Ticket `00001KVJA7V2R` body / thread / relations / artifacts。 +- `TicketRelationQuery(00001KVJA7V2R)`: no blockers。 +- `TicketOrchestrationPlanQuery(00001KVJA7V2R)`: no previous plan records; accepted plan recorded now。 +- Workspace state: + - Orchestrator worktree clean at `36b9ed45`。 + - queued: `00001KVJA7V2R`, `00001KVJDJD02`。 + - inprogress: `00001KVJABS1A` review only。 + - no matching WebFetch PDF branch/worktree。 + +IntentPacket: + +Intent: +- Extend `WebFetch` so `application/pdf` can be fetched and returned as bounded, page-delimited text suitable for LLM reading。 +- Use `pdf_extract::extract_text_from_mem_by_pages()` and present output as Markdown-ish page sections, not semantic PDF-to-Markdown。 + +Binding decisions / invariants: +- Keep WebFetch as fetch/extraction tool; no summarization or research orchestration。 +- PDF bytes must not go through the UTF-8 text / `reject_binary()` path。 +- Preserve private/local host rejection, bounded redirects, Content-Length / `max_response_bytes`, `max_output_bytes`, embedded credential rejection, untrusted content warning。 +- Initial supported MIME is `application/pdf` only; no extension sniffing or `application/octet-stream` PDF guessing。 +- No Poppler/Pdfium/subprocess/native dependency/OCR/scanned-PDF support/table reconstruction/cache。 +- Existing HTML/text/JSON/XML behavior and `html_extraction` metadata must not regress。 +- New metadata should use `pdf_extraction` with method/pages/readable/diagnostic information。 + +Requirements / acceptance criteria: +- Valid PDF returns `## Page 1`, `## Page 2`, etc. page-delimited bounded text。 +- `transformed_as` communicates `pdf_text_by_pages` or equivalent, not semantic Markdown。 +- `output_truncated` is correct when PDF text exceeds `max_output_bytes`。 +- Malformed/encrypted/textless PDFs do not panic; return diagnostic error or readable=false metadata。 +- Non-PDF unsupported binary remains rejected。 +- Focused WebFetch tests and relevant cargo/fmt/diff validation pass。 + +Next action: +- Record `queued -> inprogress` and commit Ticket records before creating implementation worktree and spawning Coder。 + +--- + + + +## State changed + +Ticket body/thread, relation metadata, Orchestrator worktree state, visible Pods, existing branch/worktree, and bounded WebFetch/PDF context were checked. There is no unresolved blocking dependency, no conflicting inprogress implementation, and no missing planning decision. Accepting this queued Ticket for parallel implementation before worktree/Pod side effects. + --- diff --git a/.yoi/tickets/00001KVJDJD02/artifacts/orchestration-plan.jsonl b/.yoi/tickets/00001KVJDJD02/artifacts/orchestration-plan.jsonl new file mode 100644 index 00000000..f4c83799 --- /dev/null +++ b/.yoi/tickets/00001KVJDJD02/artifacts/orchestration-plan.jsonl @@ -0,0 +1 @@ +{"id":"orch-plan-20260620-120740-1","ticket_id":"00001KVJDJD02","kind":"accepted_plan","accepted_plan":{"summary":"Intake role prompt / ticket-intake workflow に Ticket 化前の最小調査ゲートを明示し、曖昧な依頼では既存 Ticket/docs/code/workflow 調査・draft提示・spike/requirements_sync判断を TicketCreate より前に行うよう model-facing instructionを補強する。","branch":"impl/00001KVJDJD02-intake-investigation-gate","worktree":"/home/hare/Projects/yoi/.worktree/00001KVJDJD02-intake-investigation-gate","role_plan":"Orchestrator は Profile scope review / WebFetch PDF 実装と並行して専用 implementation worktree `.worktree/00001KVJDJD02-intake-investigation-gate` を作成し、Coder をその child worktree への narrow write scope で起動する。Coder 実装後、Reviewer が prompt/workflow authority、Ticket化前調査 gate、draft/user-agreement/spike semantics、stale vocabulary removal、Intake role boundariesを確認する。"},"author":"yoi-orchestrator","at":"2026-06-20T12:07:40Z"} diff --git a/.yoi/tickets/00001KVJDJD02/item.md b/.yoi/tickets/00001KVJDJD02/item.md index 7ce303c9..d8d9f3f4 100644 --- a/.yoi/tickets/00001KVJDJD02/item.md +++ b/.yoi/tickets/00001KVJDJD02/item.md @@ -1,8 +1,8 @@ --- title: 'Intake workflow に Ticket 化前の調査ゲートを明示する' -state: 'queued' +state: 'inprogress' created_at: '2026-06-20T11:45:00Z' -updated_at: '2026-06-20T12:06:37Z' +updated_at: '2026-06-20T12:08:34Z' assignee: null readiness: 'implementation_ready' risk_flags: ['prompt-context', 'workflow-source', 'role-behavior', 'ticket-authority'] diff --git a/.yoi/tickets/00001KVJDJD02/thread.md b/.yoi/tickets/00001KVJDJD02/thread.md index 5882cff4..c14a3a81 100644 --- a/.yoi/tickets/00001KVJDJD02/thread.md +++ b/.yoi/tickets/00001KVJDJD02/thread.md @@ -13,4 +13,62 @@ LocalTicketBackend によって作成されました。 Ticket を `workspace-panel` が queued にしました。 +--- + + + +## Decision + +Routing decision: implementation_ready_parallel + +Reason: +- Panel Queue により、この Ticket は Orchestrator routing 対象として明示許可された。 +- User standing directive: blocker が無いものは並列実行する。現在の `00001KVJABS1A` review と WebFetch PDF work とは別 domain の prompt/workflow resource修正であり、直接 conflict はないため並列化できる。 +- Ticket body は Intake role prompt / workflow の弱点、Ticket 化前調査 gate、draft-before-create、user agreement gate、spike/requirements_sync handling、stale vocabulary removal、Intake boundaries を実装可能な粒度で定義している。 +- 未解決 relation blocker はない。 +- Orchestrator worktree は clean、matching branch/worktree はなし。 +- Risk domain は prompt-context / workflow-source / role-behavior / ticket-authority だが、Ticket は Intake が coder/reviewer/helper Pod を起動しないこと、implementation routing/merge/closeをしないこと、user agreement without official Ticket create ruleを維持することを明示している。bounded context check 後も implementation 前に必要な追加 human decision は見つからなかった。 + +Evidence checked: +- Ticket `00001KVJDJD02` body / thread / relations / artifacts。 +- `TicketRelationQuery(00001KVJDJD02)`: no blockers。 +- `TicketOrchestrationPlanQuery(00001KVJDJD02)`: no previous plan records; accepted plan recorded now。 +- Workspace state: + - Orchestrator worktree clean at `36b9ed45`。 + - queued: `00001KVJA7V2R`, `00001KVJDJD02`。 + - inprogress: `00001KVJABS1A` review only。 + - no matching Intake workflow branch/worktree。 + +IntentPacket: + +Intent: +- Strengthen Intake model-facing role/workflow guidance so ambiguous requests go through a minimum investigation gate before official Ticket creation。 +- Make Intake separate user claims, confirmed facts, unverified hypotheses, and undecided points in drafts/Tickets。 + +Binding decisions / invariants: +- Intake remains non-scheduler and must not spawn coder/reviewer/read-only investigation helper Pods。 +- Intake must not create implementation worktrees, route implementation/review, merge, or close。 +- User agreement before official Ticket creation remains required。 +- Do not save user claims, confirmed facts, unverified hypotheses, and undecided points as if they are all requirements。 +- Preserve prompt/workflow resource boundaries between bundled resources and workspace override; explain intended differences if they remain。 +- Remove or replace stale `Action required` / `Attention required` vocabulary in draft templates with current Ticket-operation language。 + +Requirements / acceptance criteria: +- Intake prompt/workflow explicitly states when to inspect existing Tickets / workflows / relevant files before TicketCreate。 +- If investigation is needed, Intake can stop at draft / `spike_needed` / `requirements_sync_needed` rather than official Ticket creation。 +- `resources/prompts/role/intake.md`, `resources/workflows/ticket-intake-workflow.md`, and `.yoi/workflow/ticket-intake-workflow.md` are reconciled or their differences are intentional/clear。 +- Ticket作成前 user agreement rule is preserved。 +- Validation includes prompt/workflow diff review and `git diff --check`; run TicketDoctor if Ticket consistency needs checking。 + +Next action: +- Record `queued -> inprogress` and commit Ticket records before creating implementation worktree and spawning Coder。 + +--- + + + +## State changed + +Ticket body/thread, relation metadata, Orchestrator worktree state, visible Pods, existing branch/worktree, and bounded Intake prompt/workflow context were checked. There is no unresolved blocking dependency, no conflicting inprogress implementation, and no missing planning decision. Accepting this queued Ticket for parallel implementation before worktree/Pod side effects. + ---