Sprint: 1 Dates: 2026-09-08 - 2026-09-11 Sprint Goal: Prove a thin text-only desktop-to-CLI rendering spine so an operator can select files, launch a job, watch progress, and receive a PDF generated through Debenu from a known XML template.
| Story | Size | Status | Tasks |
|---|---|---|---|
| Define the CLI render contract | 3 points | Done | - [x] Define the MVP CLI arguments, stdout/stderr rules, and exit-code contract in repo docs. - [x] Scaffold the CLI entrypoint and argument parsing for template, CSV, and output paths. - [x] Validate missing or invalid required arguments for local and UNC path inputs. - [x] Return documented success and failure exit codes with simple smoke examples. |
| Render text-only PDFs through Debenu Quick PDF | 8 points | Done | - [x] Wire Debenu Quick PDF Library 10.13 into the CLI runtime path. - [x] Parse the supported text-only XML template elements needed for page and text placement. - [x] Load CSV rows and merge static plus dynamic text into the render model. - [x] Generate PDF 1.4+ RGB output and write it to the requested output path. - [x] Verify the render path with a representative sample template and CSV dataset. |
| Emit machine-readable progress during render | 3 points | Not Started | - [ ] Define a simple line-oriented progress event format that the desktop app can parse. - [ ] Emit startup, active-render, completion, and failure progress events without corrupting error output. - [ ] Throttle active progress output to at least once per second and document examples. |
| Launch a text-only render from the desktop app | 3 points | Not Started | - [ ] Scaffold the desktop shell with template, CSV, and output pickers plus a launch action. - [ ] Validate required operator inputs before the render starts. - [ ] Start the CLI process with the selected paths and surface clear launch failures. |
| Show render progress and completion summary | 3 points | Not Started | - [ ] Parse the CLI progress stream in the desktop app without freezing the UI. - [ ] Display active status updates whenever progress events arrive. - [ ] Show success totals and failure outcomes, including elapsed time and warning count. |
32 task-hours for committed feature work and keeps roughly 10% of the week for refinement and ceremony.Configure canvas dimensions in operator-friendly units, Place and move text elements on the canvas, Save and reopen text-only XML templates, Load CSV headers and sample rows into the desktop app, and Create a dynamic text token from a CSV column.| Day | Date | Completed | Planned | Blocked/At risk |
|---|---|---|---|---|
| 1 | 2026-09-08 | N/A (sprint start) | Swarm on “Define the CLI render contract” (all other stories depend on its arg/exit-code shape) | Template path and UNC timeout impediments still open (see logs/impediment_log.md); not blocking today, will block Story 2 if still open when it starts |
| 1 (end of day) | 2026-09-08 | “Define the CLI render contract” — all 4 tasks done, story meets DoD, marked Done. EnvelopeRenderer.Cli scaffolded with contract doc, arg parsing/validation, exit codes 0/1/2/3/4/64, 15 passing xUnit tests, manual smoke examples recorded in code/CLI_CONTRACT.md. |
Pull Batch 2, “Render text-only PDFs through Debenu Quick PDF” | Template path and UNC timeout impediments still open — now directly relevant since Batch 2 is the story they were flagged against; logged one low-impact, self-resolving debt item (exit code 64 placeholder) in logs/technical_debt_log.md |
| 1 (continued) | 2026-09-08 | “Render text-only PDFs through Debenu Quick PDF” — all 5 tasks done, story meets DoD, marked Done. Hit and resolved a real blocker mid-task: the vendored Debenu DLL fails every save (error 999) without a license key; found and verified a working key. Discovered via the vendor reference guide that SetPageSize has no US envelope sizes, so the template format uses exact pageWidth/pageHeight points via SetPageDimensions instead — also caught and fixed a real bug this surfaced (a fresh Debenu document already has page 1, so the original code would have produced a spurious blank leading page on every render). Verified end-to-end against the real 392-row sample CSV: exact %PDF-1.4, 392/392 pages, correct #10 envelope dimensions. Exit-code 64 placeholder removed (debt paid down); exit 1 now covers all template/CSV/render failures. |
Pull Batch 3, “Emit machine-readable progress during render” | Template path and UNC timeout impediments still open, unchanged by this batch. Debenu license key requirement now documented in code/CLI_CONTRACT.md; logged as a resolved impediment in logs/impediment_log.md. |
Sequenced by dependency, not by story-list order (which happens to match here since the sprint goal is the walking skeleton). Swarm each batch as a unit before pulling the next — don't spread across batches with a small team. Batch 4 is the one exception called out below.
| Batch | Story | Why it's gated here |
|---|---|---|
| 1 | Define the CLI render contract | Nothing else can safely start — arg names, exit codes, and stdout/stderr rules are the interface every other story codes against. |
| 2 | Render text-only PDFs through Debenu Quick PDF | Needs Batch 1's entrypoint/arg parsing to exist to wire the render path into. Highest points (8) and highest technical risk (Debenu interop, XML parsing, CSV merge) — largest single swarm target. |
| 3 | Emit machine-readable progress during render | Needs Batch 2's render loop in place to emit real startup/active/completion/failure events against, not stubs. |
| 4 | Launch a text-only render from the desktop app | Only hard dependency is Batch 1's contract (needs real arg names/paths to launch against). Scaffolding the shell and input pickers can start as soon as Batch 1 is done, in parallel with Batches 2-3 if the team has more than one contributor to swarm with; otherwise take it sequentially after Batch 3 to avoid splitting focus. |
| 5 | Show render progress and completion summary | Needs both Batch 3 (event format to parse) and Batch 4 (a running process to parse events from) — last in the chain regardless of team size. |
Today's pull: Batch 1 only, per the daily scrum above.
Powered by TurnKey Linux.