ticket: accept webfetch pdf and intake gate
This commit is contained in:
parent
36b9ed450f
commit
e752a7206a
|
|
@ -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"}
|
||||
|
|
@ -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']
|
||||
|
|
|
|||
|
|
@ -29,4 +29,64 @@ Intake 済み。Orchestrator は implementation routing として扱える。実
|
|||
Ticket を `workspace-panel` が queued にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: decision author: yoi-orchestrator at: 2026-06-20T12:08:15Z -->
|
||||
|
||||
## 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。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: yoi-orchestrator at: 2026-06-20T12:08:34Z from: queued to: inprogress reason: orchestrator_acceptance_parallel_webfetch_pdf field: state -->
|
||||
|
||||
## 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.
|
||||
|
||||
---
|
||||
|
|
|
|||
|
|
@ -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"}
|
||||
|
|
@ -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']
|
||||
|
|
|
|||
|
|
@ -13,4 +13,62 @@ LocalTicketBackend によって作成されました。
|
|||
Ticket を `workspace-panel` が queued にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: decision author: yoi-orchestrator at: 2026-06-20T12:08:15Z -->
|
||||
|
||||
## 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。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: yoi-orchestrator at: 2026-06-20T12:08:34Z from: queued to: inprogress reason: orchestrator_acceptance_parallel_intake_investigation_gate field: state -->
|
||||
|
||||
## 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.
|
||||
|
||||
---
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user