docs(P00): research findings — v1.22 deck layout root cause (REQ-254..262)
8 findings (all confidence >= 0.8): - F1 (VERY HIGH): theme CSS has zero section padding (/* @theme */ is a comment, not the directive; no @import of Marp default). - F2 (VERY HIGH): overflow:hidden silently clips dense content (8/19 slides overflow). - F3 (HIGH): image aspect-ratio catastrophe (platform-pipeline 13.52x, telemetry-live-ops 0.63x). - F4 (HIGH): header+footer chrome on every slide (~70px lost). - F5 (MEDIUM-HIGH): render_deck.sh omits --theme (unthemed output). - F6 (HIGH): render_slides.sh missing -s 2 -b transparent (1x PNGs). - F7 (LOW): P5 marp-cli version bump — NOT the cause (theme CSS byte- identical P3->P5). - F8 (VERY HIGH): test coverage gaps — no layout/overflow/aspect-ratio tests; static-file-property tests only. Persona roster (v1.22): lead-developer (theme CSS + deck markdown + mermaid + .ciagent), backend-engineer (render scripts + tests). frontend-engineer + data-engineer deactivated. D-148 (theme CSS is lead-developer, not frontend), D-149 (no new personas). ---ci--- project: acdl phase: 0 milestone: v1.22 status: research ---/ci---
This commit is contained in:
+120
-24
@@ -1,34 +1,128 @@
|
||||
---
|
||||
project: acdl
|
||||
milestone: v1.18
|
||||
generated_at: 2026-08-06
|
||||
milestone: v1.22
|
||||
generated_at: 2026-08-11
|
||||
generator: lead-developer
|
||||
verification_toolchain:
|
||||
typecheck: "python3 -m py_compile core/submission_readiness.py mcp/atelier/server.py && python3 -m jsonschema schemas/submission-readiness.schema.json"
|
||||
test: "pytest tests/test_submission_readiness.py tests/test_atelier_mcp.py # REQ-220 + REQ-225"
|
||||
build: "bash scripts/render_deck.sh docs/presentations/nova-no-humans-platform-marp.md # HTML + PPTX (D-142)"
|
||||
typecheck: "python3 -m py_compile tests/test_slides_pipeline.py"
|
||||
test: "pytest tests/test_slides_pipeline.py # REQ-254..262"
|
||||
build: "bash scripts/render_slides.sh nova-autonomous-cloud-delivery # HTML + PPTX"
|
||||
note: |
|
||||
v1.18 adds the Citizen Developer & Production-Grade Guidance surface:
|
||||
submission-readiness gate, Atelier-derived skills, the Atelier MCP server
|
||||
(plugin-registry, stdio), and PPTX-as-first-class-artifact deck automation.
|
||||
Three active personas: lead-developer (coordination + decks + RACI/scope
|
||||
docs), backend-engineer (MCP server + submission-readiness validator +
|
||||
render/attach scripts), data-engineer (submission-readiness schema if it
|
||||
touches contract storage / DynamoDB shape). frontend-engineer stays
|
||||
deactivated (v1.18 has no frontend; decks are markdown = lead-developer
|
||||
territory). The MCP plugin-registry is a backend pattern, so a separate
|
||||
mcp-engineer persona is NOT added — it folds into backend-engineer.
|
||||
v1.22 is the Nova Deck Layout Fix — a docs-only NFR milestone. Two
|
||||
active personas: lead-developer (theme CSS + deck markdown + talking
|
||||
points + README + .ciagent metadata), backend-engineer (render scripts
|
||||
+ tests). frontend-engineer stays deactivated (decks are markdown =
|
||||
lead-developer territory, per v1.17/v1.18 precedent). No data-engineer
|
||||
(no schema/DB changes). No new personas (the work is CSS + bash +
|
||||
markdown + pytest, all within the two active personas' range).
|
||||
---
|
||||
|
||||
# ACDL — Persona Roster (v1.18 Citizen Developer & Production-Grade Guidance)
|
||||
# ACDL — Persona Roster (v1.22 Nova Deck Layout Fix)
|
||||
|
||||
> v1.18 roster. Three active personas + one deactivated. The MCP server
|
||||
> plugin-registry (D-140) is a backend pattern, not a new persona — it
|
||||
> folds into backend-engineer. v1.17 precedent (frontend-engineer
|
||||
> deactivated, decks are markdown = lead-developer territory) is upheld.
|
||||
> v1.22 roster. Two active personas + one deactivated. This is a docs-
|
||||
> only NFR milestone: the work is theme CSS, render scripts, mermaid
|
||||
> diagrams, deck markdown, and tests. frontend-engineer stays
|
||||
> deactivated (decks are markdown = lead-developer territory, per
|
||||
> v1.17/v1.18 precedent). No data-engineer (no schema/DB changes).
|
||||
|
||||
## Active personas
|
||||
|
||||
### lead-developer
|
||||
- **Domain:** coordination + deck content
|
||||
- **Active:** true
|
||||
- **Phase-specific:** false
|
||||
- **Frameworks:** [] (no framework — owns process + narrative + CSS + markdown)
|
||||
- **Constraints:** ["pragmatic", "battle-tested defaults", "no fabrication (NORTH_STAR honesty model)", "do not change the 4-beat arc", "do not re-introduce badges/version/internal citations"]
|
||||
- **Territory:**
|
||||
- `docs/presentations/assets/nova-sp-theme.css` (REQ-254,255,256 — theme CSS)
|
||||
- `docs/presentations/nova-autonomous-cloud-delivery-marp.md` (REQ-261 — deck content)
|
||||
- `docs/presentations/nova-autonomous-cloud-delivery.md` (REQ-261 — source of truth)
|
||||
- `docs/presentations/nova-autonomous-cloud-delivery-talking-points.md` (REQ-261)
|
||||
- `docs/presentations/README.md` (REQ-261 — slide-count convention)
|
||||
- `docs/presentations/assets/mmd/*.mmd` (REQ-259,260 — mermaid re-layout)
|
||||
- `.ciagent/**` (PROJECT, ROADMAP, REQUIREMENTS, RESEARCH, PLAN, GRILL, PERSONAS, REVIEW, CHECKPOINT)
|
||||
- **Reason:** Owns the theme CSS (the root cause), the deck markdown
|
||||
(trim/split overflowing slides), the mermaid re-layout, the talking
|
||||
points, the README, and all CIAgent metadata. Is the only persona
|
||||
that touches `.ciagent/**` and the deck markdown/CSS.
|
||||
- **Phase-specific flag:** none (active for all of P0–P6).
|
||||
|
||||
### backend-engineer
|
||||
- **Domain:** render scripts + tests
|
||||
- **Active:** true
|
||||
- **Phase-specific:** false
|
||||
- **Frameworks:** ["bash", "pytest", "marp-cli", "mermaid-cli"]
|
||||
- **Constraints:** ["pin CLI versions (no @latest)", "2x scale + transparent bg for mermaid", "tests must catch layout regressions", "no raw curl with shell-env tokens"]
|
||||
- **Territory:**
|
||||
- `scripts/render_slides.sh` (REQ-257,258 — pin versions, 2x scale)
|
||||
- `scripts/render_deck.sh` (REQ-257 — DELETE)
|
||||
- `tests/test_slides_pipeline.py` (REQ-262 — layout/aspect-ratio/theme-structural tests)
|
||||
- `.github/workflows/slides.yml` (if references to render_deck.sh need removal)
|
||||
- **Reason:** Owns the render pipeline (bash scripts) and the test
|
||||
suite. The layout/aspect-ratio/theme-structural tests (REQ-262) are
|
||||
the gap that let this regression through — backend-engineer owns
|
||||
closing that gap. Pinning CLI versions and adding 2x scale are
|
||||
backend/scripting tasks.
|
||||
- **Phase-specific flag:** none (active for P2, P5; light touch on P0/P6).
|
||||
|
||||
## Deactivated personas
|
||||
|
||||
### frontend-engineer
|
||||
- **Active:** false
|
||||
- **Domain:** frontend
|
||||
- **Frameworks:** ["react", "next.js"] (inert — no territory)
|
||||
- **Constraints:** ["component-first", "server-components", "minimal-client-js"] (inert)
|
||||
- **Territory:** [] (no territory in v1.22)
|
||||
- **Reason:** v1.22 has no frontend; decks are markdown (lead-developer
|
||||
territory); deactivated per PERSONAS.md v1.17/v1.18 precedent. The
|
||||
theme CSS is a Marp stylesheet, not a React/Next.js component system
|
||||
— it stays lead-developer territory. No reactivation trigger.
|
||||
|
||||
### data-engineer
|
||||
- **Active:** false
|
||||
- **Domain:** data
|
||||
- **Frameworks:** [] (inert)
|
||||
- **Constraints:** [] (inert)
|
||||
- **Territory:** [] (no territory in v1.22)
|
||||
- **Reason:** v1.22 has no schema/DB/ORM changes. The milestone is
|
||||
docs + scripts + tests only. No reactivation trigger.
|
||||
|
||||
## Roster decisions
|
||||
|
||||
### D-148 (0.95): Theme CSS is lead-developer territory, not frontend-engineer
|
||||
The `nova-sp-theme.css` is a Marp stylesheet (CSS for a markdown-to-
|
||||
slide renderer), not a React/Next.js component system. The v1.17/v1.18
|
||||
precedent (decks are markdown = lead-developer territory) extends to
|
||||
the deck's CSS theme. frontend-engineer's frameworks (react, next.js)
|
||||
are irrelevant to Marp CSS. **Decision:** theme CSS stays lead-developer
|
||||
territory. Confidence 0.95 — the only counter-argument is that CSS is
|
||||
"frontend," but Marp CSS is a static stylesheet, not a component system.
|
||||
|
||||
### D-149 (0.9): No new personas for v1.22
|
||||
The work is CSS + bash + markdown + mermaid + pytest. All of this is
|
||||
within the two active personas' range (lead-developer: CSS + markdown +
|
||||
mermaid; backend-engineer: bash + pytest). Creating a separate "css-
|
||||
engineer" or "slides-engineer" persona would fragment ownership of the
|
||||
theme CSS + deck markdown (both lead-developer) and the render scripts
|
||||
+ tests (both backend-engineer). **Decision:** no new personas.
|
||||
Confidence 0.9.
|
||||
|
||||
### Territory-overlap resolution (co-ownership)
|
||||
|
||||
| Path | Primary | Co-owner | Why |
|
||||
|------|---------|----------|-----|
|
||||
| `docs/presentations/assets/mmd/*.mmd` | lead-developer (mermaid re-layout) | backend-engineer (re-render via render_slides.sh) | The .mmd content is lead-developer (diagram narrative); the PNG re-render is backend-engineer (script invocation). |
|
||||
| `tests/test_slides_pipeline.py` | backend-engineer (test code) | lead-developer (assertions reflect deck structure) | The test code is backend; the assertions (slide count, theme rules, aspect ratios) reflect lead-developer's deck/theme decisions. |
|
||||
|
||||
---
|
||||
|
||||
## Historical rosters
|
||||
|
||||
<details>
|
||||
<summary>v1.18 roster (Citizen Developer & Production-Grade Guidance) — superseded by v1.22</summary>
|
||||
|
||||
### Active personas (v1.18)
|
||||
|
||||
### lead-developer
|
||||
- **Domain:** coordination
|
||||
- **Active:** true
|
||||
@@ -97,7 +191,7 @@ verification_toolchain:
|
||||
is backend; the schema it validates against is data).
|
||||
- **Phase-specific flag:** none (active for P3 schema + ingestor wiring).
|
||||
|
||||
## Deactivated personas
|
||||
### Deactivated personas (v1.18)
|
||||
|
||||
### frontend-engineer
|
||||
- **Active:** false
|
||||
@@ -111,7 +205,7 @@ verification_toolchain:
|
||||
frontend / dashboard"). The MCP server exposes tools to an AI agent,
|
||||
not a web UI. No reactivation trigger in this milestone.
|
||||
|
||||
## Roster decisions
|
||||
### Roster decisions (v1.18)
|
||||
|
||||
### D-143 (0.90): Fold mcp-engineer into backend-engineer
|
||||
The MCP plugin-registry (D-140: `plugins/<name>.py register(mcp)`) is a
|
||||
@@ -127,10 +221,12 @@ that MCP is a distinct protocol skill, but the SDK v2 API surface
|
||||
range (it's the same Pydantic/FastAPI-style pattern the persona already
|
||||
knows).
|
||||
|
||||
### Territory-overlap resolution (co-ownership)
|
||||
### Territory-overlap resolution (v1.18)
|
||||
|
||||
| Path | Primary | Co-owner | Why |
|
||||
|------|---------|----------|-----|
|
||||
| `docs/submission-readiness.md` | lead-developer (narrative + examples) | backend-engineer (reason-code catalog, REQ-218 codes) | The doc is citizen-developer-facing copy (lead) but the reason-code catalog (MISSING_TAGS, ENV_MISSING_MANDATORY, AGENTIC_MISSING_INTENT, MISSING_APP_SOURCE, POLICY_PRECONDITION_MISSING) is backend (it mirrors the validator's return codes). |
|
||||
| `core/lambda/contract_ingestor.py` | backend-engineer (dispatch wiring) | data-engineer (the schema it validates against) | D-133 places the `--check-readiness` subcommand on the ingestor (backend dispatch), but the readiness schema it loads is data-engineer territory. |
|
||||
| `schemas/submission-readiness.schema.json` | data-engineer (schema artifact) | backend-engineer (the validator must match it) | The schema is data-engineer's; the validator (REQ-218) is backend-engineer's and must stay in sync with it. |
|
||||
| `schemas/submission-readiness.schema.json` | data-engineer (schema artifact) | backend-engineer (the validator must match it) | The schema is data-engineer's; the validator (REQ-218) is backend-engineer's and must stay in sync with it. |
|
||||
|
||||
</details>
|
||||
Reference in New Issue
Block a user