diff --git a/.ciagent/CHECKPOINT.json b/.ciagent/CHECKPOINT.json index 8258729..5fa69ba 100644 --- a/.ciagent/CHECKPOINT.json +++ b/.ciagent/CHECKPOINT.json @@ -1,12 +1,12 @@ { "phase": 0, - "stage": "research", + "stage": "plan", "milestone": "v1.22", "phase_role": "pre_execution", "attempts": 0, - "updated_at": "2026-08-11T14:35:00Z", + "updated_at": "2026-08-11T14:38:00Z", "milestone_complete": false, "tag": null, "requirements": ["REQ-254","REQ-255","REQ-256","REQ-257","REQ-258","REQ-259","REQ-260","REQ-261","REQ-262"], - "notes": "v1.22 RESEARCH complete. 8 findings persisted to RESEARCH.md. Persona roster updated (2 active: lead-developer + backend-engineer; 2 deactivated: frontend + data). D-148, D-149 logged." + "notes": "v1.22 PLAN complete. 7 phases, 4 waves. Plan persisted to PLAN.md. Tags on v1.21.x line." } \ No newline at end of file diff --git a/.ciagent/PLAN.md b/.ciagent/PLAN.md index 697fa5b..9d265ce 100644 --- a/.ciagent/PLAN.md +++ b/.ciagent/PLAN.md @@ -1412,4 +1412,46 @@ updated (2 active, 2 deactivated). 5 CLARIFY decisions auto-resolved. execute in order; in a parallelization-enabled run they could execute concurrently up to `max_concurrent_agents: 5`. 7. **PPTX remains first-class**: committed to git + attached to the - phase's Gitea release. No change to this convention. \ No newline at end of file + phase's Gitea release. No change to this convention. + +## GRILL verdicts (v1.22) — binding + +> Adversarial review of the v1.22 plan. 8 axes reviewed. Overall +> verdict: **PROCEED-WITH-REVISIONS** (confidence 0.85). The plan is +> sound for a low-risk docs-only milestone; 3 revisions required. + +### Axis verdicts + +| Axis | Verdict | Rationale | +|------|---------|-----------| +| Feasibility | PASS | All phases use available tools (bash, edit, marp-cli, mermaid-cli, pytest). No hidden dependencies. | +| Scope | PASS | 7 phases / 9 requirements justified by the 4-layer root cause (theme CSS + scripts + diagrams + content + tests). Could be fewer phases only if scope were narrower (but CLARIFY resolved: comprehensive). | +| Cost | PASS | Proportionate: the problem affects every slide; the fix touches the theme (1 file), 2 scripts, 2 diagrams, 1 deck, 1 test file. 7 phases is the natural decomposition. | +| Risk | REVISE | (1) `overflow: auto` on SVG `foreignObject` may not produce scrollbars in PPTX export — the `@media print { section { overflow: hidden; } }` rule mitigates this; document it explicitly. (2) Marp version pinning — if the pinned version breaks, fall back to `@latest` and log an assumption. (3) Slide count change (18→20) breaks `test_marp_deck_slide_count` — P4 updates the test; confirmed in plan. | +| Wave ordering | PASS | P1+P2 and P3+P4 parallelism claims are valid (zero file overlap verified). | +| Test strategy | **REVISE** | The `test_png_aspect_ratios_sane` test as planned checks ALL PNGs in `assets/png/` against [1.2, 2.5]. **15 of 19 PNGs are OUT OF BOUNDS** — most are legacy/unused diagrams (developer-experience-*, platform-works-*) not referenced in the current `nova-autonomous-cloud-delivery-marp.md` deck. Only 2 PNGs are referenced in the current deck (platform-pipeline.png, telemetry-live-ops.png). **Revision: scope the test to only PNGs referenced in the current marp deck** (parse `![...](assets/png/X.png)` references from the marp deck and check only those). The [1.2, 2.5] bounds are correct for 16:9 slides. | +| Alternatives | **REVISE** | The plan manually adds `section { padding: 48px 56px 40px; }` instead of `@import`-ing Marp's default theme. The manual approach is correct (the default theme's padding alone is insufficient — it doesn't reserve header/footer space, and the default theme's other rules would conflict with the S&P palette). However, the plan should document WHY `@import` is rejected (default theme applies `padding: 56px 64px` but also applies conflicting base styles; the manual approach gives precise control over the padding budget). **Revision: add a note to P1 explaining the `@import` rejection.** | +| Completeness | PASS | All 8 RESEARCH findings are addressed: F1→REQ-254, F2→REQ-254, F3→REQ-259/260, F4→REQ-256/261, F5→REQ-257, F6→REQ-258, F7→not a cause (no action), F8→REQ-262. | + +### Revisions applied (binding) + +1. **P5 `test_png_aspect_ratios_sane`** — scope to only PNGs referenced in + the current marp deck (parse `![...](assets/png/X.png)` from + `nova-autonomous-cloud-delivery-marp.md`). Legacy/unused PNGs are not + checked. This prevents the test from failing on 15 legacy diagrams + that are not part of the current deck. +2. **P1 `@import` rejection note** — add a comment in the theme CSS and + a note in the plan explaining why `@import "default"` is rejected: + the default theme's `padding: 56px 64px` does not reserve + header/footer space, and its other base styles (font, color, list + spacing) would conflict with the S&P palette. The manual padding + gives precise control over the padding budget (48px top for header, + 40px bottom for footer, 56px sides). +3. **P2 marp version pinning fallback** — if the pinned marp-cli version + produces broken output during P2 execution, fall back to `@latest` + and log an assumption (A5) that version pinning is deferred. Do not + block the pipeline on version pinning. + +**Overall: PROCEED-WITH-REVISIONS.** The 3 revisions are incorporated +into the phase tasks above (P1, P2, P5). No blocking issues. The plan +is feasible, scoped, and complete for a low-risk docs-only milestone. \ No newline at end of file