WFDASH-WEBAPP/.claude/plans/TEMPLATE.md
Dave b9d30c8e6f fix(quotes-intake): clamp email_body to PB's 5000-char cap
PocketBase treats `max: 0` on a text field as "use the default 5000-char cap", not unlimited. A Redpath reply with a 5029-char body 400'd on every 2-minute poll for hours on 2026-09-08, wedging every RFQ behind it because the failed email stayed UNSEEN.

Added clampEmailBody (with a truncation marker) and routed email_body writes through it so oversized replies still become quotes instead of blocking the queue. The untruncated body remains in the mailbox, and attachments carry the detail. Raise this cap in lockstep with any PB admin change to the field's max.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-08 10:28:20 +02:00

3.2 KiB

plan_id created created_by target_session status branch related_issue
<short-kebab-slug> <YYYY-MM-DD> <planner identity — "Claude (cloud)" | "Claude (minimax)" | operator name> claude | minimax | any draft | ready | in_progress | complete | blocked | abandoned <git branch name, if any> <URL or id, optional>

<Plan title — short, action-oriented>

Copy this file to .claude/plans/<slug>.md and fill in. Use the superpowers:writing-plans skill if available.

Goal

<One sentence. What does "done" look like from the operator's perspective?>

Background (from planner's conversation)

This is the most important section for the implementer. The chat history doesn't transfer between sessions, so anything the planner and the operator discussed but didn't write down goes here.

Cover, in free form:

  • Why this work — the operator's stated intent, the user story, the bug report
  • Decisions made in chat — "we agreed to use X over Y because…", "the operator vetoed Z"
  • Dead ends — "we tried <approach> but it failed because…"
  • Constraints — backwards compat, must-not-break, deadlines, who's affected
  • Links — relevant commits, prior plans in this folder, external docs, Slack threads
  • AGENTS.md rules that apply: <bulleted list, e.g. "PB select fields are not self-service", "file URLs go through /api/v1/files/">
  • PB schema fields touched: <relation ids, new select values needed, new collections>
  • MCP tools involved: <e.g. mcp__wfdash-mcp__quote_items_create, mcp__wfdash-mcp__orders_update>
  • Prior art in repo: <file:line refs to similar code to copy from>
  • External references:

Scope

In scope:

Out of scope:

  • (explicitly call these out so the implementer doesn't drift)

Files to touch

  • src/path/to/file.ts — create | modify | delete — <one-line: what changes>
  • src/path/to/another.tsx — modify —

Steps

<Numbered. Each step: action verb + target + a way to verify it landed.>

  1. - verify:
  2. - verify:
  3. - verify:

Verification

  • pnpm test — full suite green (or specific test file: pnpm test src/lib/foo.test.ts)
  • Manual: <http://localhost:4001/path> renders
  • Acceptance:

Risks / open questions

  • <Assumptions that might be wrong — call them out so they get validated>

Status (filled by implementer)

  • Plan read end-to-end + AGENTS.md / CLAUDE.md loaded
  • Branch / working tree confirmed
  • Steps 1..N complete with their verify checks passing
  • pnpm test green
  • Manual verification at http://localhost:4001/... done
  • Status frontmatter flipped to complete

Report

<Free text. Blockers, surprises, things the planner should know. Link to commits / PRs.>

Commits / PRs

  • <sha> — <message>