platform-playbook
Notes
Review 8
-
Review: Fix ImportState to extract parent relationship IDs across all resources
review-1998-2026-08-03Verdict: READY
Note: Both
READYandAPPROVEDare accepted as passing verdicts by thecheck-board-advancehook.Template Completeness
Bug template (
template-issue-bug) — all sections present:- [x] Type — Bug
- [x] Lineage — "Blocks appstoreconnect-tofu #5 (state import)"
- [x] Repo — ldraney/appstoreconnect-tofu
- [x] What Broke — detailed description of ImportState passthrough issue with 11 affected resources
- [x] Repro Steps — 4 clear steps with concrete import block and plan output
- [x] Expected Behavior — clear
- [x] Environment — provider version, commit SHA, target app, OpenTofu version, known API edge case (age_rating_declaration HTTP 403)
- [x] Acceptance Criteria — 4 criteria
- [x] Related — references #5 (blocked) and #15 (completed)
Traceability
- [x] story:ios-iac label — IaC coverage for App Store Connect
- [x] story note verified — found in project-platform-playbook user-stories section (key: ios-iac, role: Platform operator, metric: 16 ASC resources declared)
- [x] arch:ios label — turbo-ios / iOS infrastructure
- [x] arch note verified — arch-ios note exists in pal-e-docs
- [x] Forgejo issue — ldraney/appstoreconnect-tofu#18, open
File Targets
Bug template does not require explicit file targets, but the "What Broke" section identifies 11 resources. All verified against the codebase at
~/appstoreconnect-tofu:- [x]
resource_beta_group.go— verified: uses ImportStatePassthroughID, schema has app_id, Read populates via parseToOneRelationship - [x]
resource_beta_tester.go— verified: uses ImportStatePassthroughID, schema has beta_groups - [x]
resource_beta_app_review_detail.go— verified: uses ImportStatePassthroughID, schema has app_id - [x]
resource_beta_app_localization.go— verified: uses ImportStatePassthroughID, schema has app_id - [x]
resource_app_info.go— verified: uses ImportStatePassthroughID, schema has app_id - [x]
resource_app_info_localization.go— verified: uses ImportStatePassthroughID, schema has app_info_id - [x]
resource_age_rating_declaration.go— verified: uses ImportStatePassthroughID, schema has app_info_id - [x]
resource_app_store_version.go— verified: uses ImportStatePassthroughID, schema has app_id - [x]
resource_app_store_version_localization.go— verified: uses ImportStatePassthroughID, schema has app_store_version_id - [x]
resource_app_store_review_detail.go— verified: uses ImportStatePassthroughID, schema has app_store_version_id - [x]
resource_bundle_id_capability.go— verified: NO ImportState implementation at all (confirmed absent from grep)
Helper functions
parseToOneRelationshipandparseToManyRelationshipalready exist inpkg/appstoreconnect/client.go(lines 289, 309). The client layer already extracts relationships in its fromResource converters (e.g., betaGroupFromResource calls parseToOneRelationship). The fix needs to ensure ImportState triggers a Read that populates these fields, or ImportState itself fetches the resource.Repo Placement
Correct. Issue filed on appstoreconnect-tofu, fix is entirely within appstoreconnect-tofu. No cross-repo work needed.
Dependencies
- depends:appstoreconnect-tofu#15 — SATISFIED. Issue #15 is closed. Board item (id 1982) is in done column.
- Blocks appstoreconnect-tofu#5 (state import) — board item 1975, backlog. Cannot proceed with full state import until parent IDs import correctly.
- Transitive: #5 blocks landscaping-assistant-ios#8 — board item 1976, backlog.
- Dependencies are documented in the issue Lineage and Related sections.
Acceptance Criteria
4 criteria, all testable:
- [x] AC1: "All 11 resources have working ImportState that extracts parent relationship IDs" — agent can implement and unit-test
- [x] AC2: "bundle_id_capability implements ImportState" — agent can implement and unit-test
- [x] AC3: "go build and go test ./... pass" — agent can run directly
- [x] AC4: "Import verified: tofu plan with import blocks shows no forced replacements" — requires live Apple API or httptest mocks. The agent should add import-specific tests with httptest mocks to verify this without live API. Manual verification against live ASC can follow.
Blast Radius
resource_profile.goalso usesImportStatePassthroughIDand has parent relationship attributes (bundle_id_id,certificate_ids). Its Read function populates these from relationships via the client layer. If profile exhibits the same forced-replacement behavior, it should be filed as a separate ticket. The issue correctly scopes to the 10 resources from #15 plus bundle_id_capability.- No other repos are affected. The pattern is internal to appstoreconnect-tofu.
- Downstream consumers (#5, landscaping-assistant-ios#8) are blocked, not broken — they depend on this fix completing, not on its current state.
Decomposition Assessment
- 11 file targets in 1 repo (triggers >3 file threshold but single-repo)
- 4 acceptance criteria (under 5 threshold)
- Mechanical pattern change — all 11 resources need the same fix: replace
ImportStatePassthroughIDwith a custom ImportState that fetches the resource and extracts relationship IDs - Relationship parsing helpers already exist in the codebase
- Estimated agent time: 10-15 minutes (repetitive pattern, not creative work)
- No decomposition needed
Recommendation
No action needed. Scope is solid, traceability is complete, all file targets verified, dependencies satisfied.
-
Review: Build MCP server wrapping recraft-sdk (re-review)
review-1973-2026-08-01-r2Verdict: APPROVED
Re-review of board item #1973. Previous review (
review-1973-2026-08-01) flagged one issue: missinglogo-brandinguser story onproject-platform-playbook. That issue has been fixed.Template Completeness
- [x] Type -- Feature
- [x] Lineage
- [x] Repo
- [x] User Story
- [x] Context
- [x] File Targets
- [x] Feature Flag -- "none" (appropriate for MCP server, no UI surface)
- [x] Acceptance Criteria
- [x] Test Expectations
- [x] Constraints
- [x] Checklist
- [x] Related
Traceability
- [x] story:logo-branding label -- present on board item
- [x] story note verified -- found in project-platform-playbook user-stories section (role: Platform operator, goal: Generate and manage brand assets through Claude Code MCP tools)
- [x] arch:mcp label -- MCP server component
- [x] arch note verified -- arch-mcp note exists in pal-e-docs (Architecture: MCP Server)
- [x] Forgejo issue -- ldraney/recraft-mcp#1, open
File Targets
All 6 file targets are files to CREATE (greenfield project). The recraft-mcp repo exists but is empty (only README.md).
- [x] src/recraft_mcp/__init__.py -- to create, repo exists
- [x] src/recraft_mcp/server.py -- to create, repo exists
- [x] tests/test_server.py -- to create, repo exists
- [x] pyproject.toml -- to create, repo exists
- [x] .woodpecker.yml -- to create, repo exists
- [x] CLAUDE.md -- to create, repo exists
- [x] ~/secrets/recraft/credentials.env -- verified, exists (81 bytes)
- [x] ~/recraft-sdk/openapi.json -- verified, exists (33k, API spec available)
Repo Placement
OK -- Forgejo issue filed on ldraney/recraft-mcp, all file targets are in ldraney/recraft-mcp. Single repo, no cross-repo work needed.
Dependencies
- depends:recraft-sdk -- Board item #1971 ("Build pytest SDK proving the Recraft API") is in backlog. recraft-sdk repo exists locally but has NOT been built yet (no src/, no pyproject.toml, only openapi.json). This is a true blocking dependency -- the issue body explicitly states "This ticket depends on recraft-sdk being built and published first." The dependency is correctly documented on both the board label and the issue body.
- minio-mcp (#1972) -- Sibling ticket, not a dependency. Both are part of story:logo-branding. minio-sdk already exists and is built.
Acceptance Criteria
5 AC items, all specific and verifiable by an agent:
- [x] "MCP server exposes tools: generate_vector, generate_raster, vectorize, upscale, remove_background, list_styles" -- concrete tool list, agent can verify registration
- [x] "Server runs via stdio transport" -- standard MCP pattern, testable
- [x] "Tests verify tool registration and basic generation against live Recraft API" -- clear test scope
- [x] "Registered in ~/.mcp.json and usable in Claude Code sessions" -- verifiable
- [x] "Woodpecker CI pipeline runs on push" -- verifiable
Test commands provided:
RECRAFT_API_KEY=... pytest tests/ -vBlast Radius
Low. This is a new MCP server addition -- no existing servers are modified. The ~/.mcp.json registration is additive. No downstream consumers exist yet. The companion minio-mcp is independent and does not share code.
Decomposition Assessment
- 6 file targets in 1 repo -- under the >3 files across >2 repos threshold
- 5 acceptance criteria -- at threshold, not over (>5 requires decomposition)
- Greenfield project with well-established MCP server patterns
- Estimated agent work: ~5 minutes -- at threshold but acceptable given single-repo greenfield nature
No decomposition needed.
Recommendation
No action needed. Previous review's [SCOPE] recommendation (create user story entry "logo-branding" on project-platform-playbook) has been completed. All traceability legs verified.
-
Review: Build pytest SDK proving the Recraft API (re-review)
review-1971-2026-08-01-bVerdict: APPROVED
Re-review of board item #1971 on board-platform-playbook. Forgejo issue: ldraney/recraft-sdk#1. Previous review (review-1971-2026-08-01) flagged two SCOPE issues, both now resolved.
Previous Issues -- Resolution
- [x] story:logo-branding entry added to project-platform-playbook user-stories section -- verified: row present with key "logo-branding", role "Platform operator", goal "Generate and manage brand assets through Claude Code MCP tools"
- [x] arch-sdk note created in pal-e-docs -- verified: arch-sdk note exists with pattern documentation, lists recraft-sdk as "Planned" instance alongside minio-sdk
Template Completeness
- [x] Type -- Feature
- [x] Lineage -- present
- [x] Repo -- present
- [x] User Story -- present
- [x] Context -- present
- [x] File Targets -- present (7 files to create, 1 do-not-touch)
- [x] Feature Flag -- present (none)
- [x] Acceptance Criteria -- present (5 items)
- [x] Test Expectations -- present (4 tests + run command)
- [x] Constraints -- present
- [x] Checklist -- present
- [x] Related -- present
Traceability
- [x] story:logo-branding label -- present on board item
- [x] story note verified -- found in project-platform-playbook user-stories section: "Generate and manage brand assets through Claude Code MCP tools"
- [x] arch:sdk label -- present on board item
- [x] arch note verified -- arch-sdk note exists in pal-e-docs with SDK pattern documentation
- [x] Forgejo issue -- ldraney/recraft-sdk#1, open
File Targets
- [x] src/recraft_sdk/__init__.py -- new file (greenfield repo)
- [x] src/recraft_sdk/client.py -- new file (greenfield repo)
- [x] src/recraft_sdk/models.py -- new file (greenfield repo)
- [x] tests/test_client.py -- new file (greenfield repo)
- [x] pyproject.toml -- new file (greenfield repo)
- [x] .woodpecker.yml -- new file (greenfield repo)
- [x] CLAUDE.md -- new file (greenfield repo)
- [x] openapi.json -- verified exists in repo (32,877 bytes), correctly listed as do-not-touch
Repo Placement
OK. Issue filed on ldraney/recraft-sdk, ### Repo declares ldraney/recraft-sdk, all file targets within that single repo.
Dependencies
- Board item #1973 (Build MCP server wrapping recraft-sdk) carries depends:recraft-sdk label -- depends on THIS ticket. Correctly documented.
- Board item #1972 (Build MCP server wrapping minio-sdk) shares story:logo-branding but has no direct dependency on this ticket.
- No upstream blockers. This ticket can proceed independently.
- Issue body states "Prerequisite for recraft-mcp" -- aligns with board dependency.
Acceptance Criteria
5 ACs, all testable by an agent:
- [x] "RecraftClient covers key endpoints" -- verifiable by code inspection
- [x] "Integration tests pass against live Recraft API" -- verifiable by running pytest
- [x] "Tests validate response structure matches openapi.json schemas" -- verifiable by test run + code review
- [x] "Woodpecker CI pipeline runs lint + test on push" -- verifiable by checking pipeline status
- [x] "Published to Forgejo PyPI as recraft-sdk" -- verifiable by checking Forgejo packages
Run command is real:
RECRAFT_API_KEY=... pytest tests/test_client.py -v. Credentials confirmed at ~/secrets/recraft/credentials.env.Blast Radius
Low. Greenfield SDK in a new repo. No existing consumers. Only downstream is recraft-mcp (#1973), which is not yet built.
Decomposition Assessment
- 7 file targets in 1 repo -- does not trigger ">3 files across >2 repos"
- 5 acceptance criteria -- does not trigger ">5 AC"
- Estimated agent time: greenfield SDK following established minio-sdk pattern, fits within a single agent pass.
No decomposition needed.
Recommendation
No action needed. Both previous SCOPE issues have been resolved. Ticket is ready for implementation.
-
Review: Build MCP server wrapping minio-sdk (r2)
review-1972-2026-08-01-r2Verdict: APPROVED
Re-review of board item #1972. Previous review (review-1972-2026-08-01) flagged one SCOPE issue: missing logo-branding user story on project-platform-playbook. That issue has been fixed.
Template Completeness
- [x] Type -- Feature
- [x] Lineage -- present (Standalone, enables chapter A)
- [x] Repo -- ldraney/minio-mcp
- [x] User Story -- properly formatted (As a / I want / So that)
- [x] Context -- present, describes minio-sdk dependency and credentials
- [x] File Targets -- 6 files to create
- [x] Feature Flag -- "none" (appropriate for infra tooling)
- [x] Acceptance Criteria -- 5 criteria
- [x] Test Expectations -- present with run command
- [x] Constraints -- present (4 constraints)
- [x] Checklist -- present
- [x] Related -- present
Traceability
- [x] story:logo-branding label -- present on board item
- [x] story note verified -- found in project-platform-playbook user-stories section (Key: logo-branding, Role: Platform operator, Goal: Generate and manage brand assets through Claude Code MCP tools)
- [x] arch:mcp label -- present on board item
- [x] arch note verified -- arch-mcp note exists in pal-e-docs (id: 2104, "Architecture: MCP Server (Paldocs)")
- [x] Forgejo issue -- https://forgejo.tail5b443a.ts.net/ldraney/minio-mcp/issues/1, open
File Targets
- [x] src/minio_mcp/__init__.py -- to create (repo is greenfield: only README.md and .claude-no-enforce)
- [x] src/minio_mcp/server.py -- to create
- [x] tests/test_server.py -- to create
- [x] pyproject.toml -- to create
- [x] .woodpecker.yml -- to create
- [x] CLAUDE.md -- to create
All targets are new files in a greenfield repo. Verified repo exists locally at ~/minio-mcp with only README.md and .claude-no-enforce.
Repo Placement
OK. Issue filed on ldraney/minio-mcp. Repo header matches. Single-repo scope, no cross-repo work.
Dependencies
- minio-sdk -- EXISTS locally at ~/minio-sdk (4 test files across tests/). Published on Forgejo PyPI per issue Context. Dependency documented in Context and Constraints sections.
- MinIO credentials at ~/secrets/minio/credentials.env -- verified, file EXISTS.
- MinIO endpoint: minio-api.tail5b443a.ts.net -- referenced in Context.
- No board items block this ticket. Not blocked by any in_progress items.
- Sibling story items: #1971 (recraft-sdk), #1973 (recraft-mcp with depends:recraft-sdk). No cross-dependencies with this ticket.
Acceptance Criteria
5 criteria, all verifiable by an agent:
- AC1: Tool list (list_buckets, create_bucket, etc.) -- verify via MCP tool introspection
- AC2: stdio transport -- verify via server startup
- AC3: Tests pass against live MinIO -- verify via pytest
- AC4: ~/.mcp.json registration -- verify by reading the file
- AC5: Woodpecker CI pipeline -- verify .woodpecker.yml exists and pipeline triggers
Test command is real:
MINIO_ACCESS_KEY=... MINIO_SECRET_KEY=... pytest tests/ -vBlast Radius
Minimal. New standalone repo. Adds one entry to ~/.mcp.json. Existing MCP servers are unaffected. No downstream consumers exist yet (chapter A Logo & Branding work is future).
Decomposition Assessment
6 files across 1 repo, 5 acceptance criteria, estimated ~5 minutes agent work. Well-defined pattern (MCP server wrapping existing SDK). No decomposition needed.
Previous Review Issues
- [SCOPE] Create user story entry "logo-branding" on project-platform-playbook -- FIXED. Entry now exists: Key=logo-branding, Role=Platform operator, Goal=Generate and manage brand assets through Claude Code MCP tools, Success metric=Logo pipeline from Recraft generation through MinIO storage working end-to-end via MCP.
Recommendation
No action needed. All previous issues resolved. Scope is solid, traceability complete, file targets verified, fits in a single agent pass.
-
Review: Build MCP server wrapping recraft-sdk
review-1973-2026-08-01Verdict: NEEDS_REFINEMENT
Template Completeness
- [x] Type -- Feature
- [x] Lineage
- [x] Repo
- [x] User Story
- [x] Context
- [x] File Targets
- [x] Feature Flag -- "none" (appropriate for an MCP server, no UI surface)
- [x] Acceptance Criteria
- [x] Test Expectations
- [x] Constraints
- [x] Checklist
- [x] Related
Traceability
- [x] story:logo-branding label -- present on board item
- [ ] story note MISSING -- [SCOPE] "logo-branding" not found in project-platform-playbook user-stories section. Only "playbook-docs" exists. Create user story entry on project-platform-playbook.
- [x] arch:mcp label -- MCP server component
- [x] arch note verified -- arch-mcp note exists in pal-e-docs (Architecture: MCP Server)
- [x] Forgejo issue -- ldraney/recraft-mcp#1, open
File Targets
All 6 file targets are files to CREATE (greenfield project). The recraft-mcp repo exists but is empty (only README.md).
- [x] src/recraft_mcp/__init__.py -- to create, repo exists
- [x] src/recraft_mcp/server.py -- to create, repo exists
- [x] tests/test_server.py -- to create, repo exists
- [x] pyproject.toml -- to create, repo exists
- [x] .woodpecker.yml -- to create, repo exists
- [x] CLAUDE.md -- to create, repo exists
- [x] ~/secrets/recraft/credentials.env -- verified, exists (81 bytes)
- [x] ~/recraft-sdk/openapi.json -- verified, exists (33k, API spec available)
Repo Placement
OK -- Forgejo issue filed on ldraney/recraft-mcp, all file targets are in ldraney/recraft-mcp. Single repo, no cross-repo work needed.
Dependencies
- depends:recraft-sdk -- Board item #1971 ("Build pytest SDK proving the Recraft API") is in backlog. recraft-sdk repo exists locally but has NOT been built yet (no src/, no pyproject.toml, only openapi.json). This is a true blocking dependency -- the issue body explicitly states "This ticket depends on recraft-sdk being built and published first." The dependency is correctly documented on both the board label and the issue body.
- minio-mcp (#1972) -- Sibling ticket, not a dependency. Both are part of story:logo-branding. minio-sdk already exists and is built.
Acceptance Criteria
5 AC items, all specific and verifiable by an agent:
- [x] "MCP server exposes tools: generate_vector, generate_raster, vectorize, upscale, remove_background, list_styles" -- concrete tool list, agent can verify registration
- [x] "Server runs via stdio transport" -- standard MCP pattern, testable
- [x] "Tests verify tool registration and basic generation against live Recraft API" -- clear test scope
- [x] "Registered in ~/.mcp.json and usable in Claude Code sessions" -- verifiable
- [x] "Woodpecker CI pipeline runs on push" -- verifiable
Test commands provided:
RECRAFT_API_KEY=... pytest tests/ -vBlast Radius
Low. This is a new MCP server addition -- no existing servers are modified. The ~/.mcp.json registration is additive (new "recraft" entry alongside 11 existing servers). No downstream consumers exist yet. The companion minio-mcp is independent and does not share code.
Decomposition Assessment
- 6 file targets in 1 repo -- under the >3 files across >2 repos threshold
- 5 acceptance criteria -- at threshold, not over (>5 requires decomposition)
- Greenfield project with well-established MCP server patterns (11 existing servers as reference)
- Estimated agent work: ~5 minutes -- at threshold but acceptable given single-repo greenfield nature
No decomposition needed.
Recommendation
[SCOPE]Create user story entry "logo-branding" on project-platform-playbook user-stories section. The story:logo-branding label is used by 3 board items (#1971, #1972, #1973) but no corresponding user story exists on the project page.
-
Review: Build MCP server wrapping minio-sdk
review-1972-2026-08-01Verdict: NEEDS_REFINEMENT
Template Completeness
- [x] Type -- Feature
- [x] Lineage -- present
- [x] Repo -- ldraney/minio-mcp
- [x] User Story -- properly formatted (As a / I want / So that)
- [x] Context -- present, describes minio-sdk dependency and credentials
- [x] File Targets -- 6 files to create
- [x] Feature Flag -- "none" (appropriate for infra tooling)
- [x] Acceptance Criteria -- 5 criteria
- [x] Test Expectations -- present with run command
- [x] Constraints -- present (4 constraints)
- [x] Checklist -- present
- [x] Related -- present
Traceability
- [x] story:logo-branding label -- present on board item
- [ ] story note MISSING -- [SCOPE] Create user story entry "logo-branding" on project-platform-playbook user-stories section. Currently only "playbook-docs" is listed.
- [x] arch:mcp label -- present on board item
- [x] arch note verified -- arch-mcp note exists in pal-e-docs (id: 2104, "Architecture: MCP Server (Paldocs)")
- [x] Forgejo issue -- https://forgejo.tail5b443a.ts.net/ldraney/minio-mcp/issues/1, open
File Targets
- [x] src/minio_mcp/__init__.py -- to create (repo currently empty except README.md)
- [x] src/minio_mcp/server.py -- to create
- [x] tests/test_server.py -- to create
- [x] pyproject.toml -- to create
- [x] .woodpecker.yml -- to create
- [x] CLAUDE.md -- to create
All targets are new files in a greenfield repo. Repo exists on Forgejo (ldraney/minio-mcp) and locally at ~/minio-mcp with only README.md and .claude-no-enforce.
Repo Placement
OK. Issue filed on ldraney/minio-mcp. Repo header matches. Single-repo scope, no cross-repo work.
Dependencies
- minio-sdk -- EXISTS locally at ~/minio-sdk (87 test functions across 4 test files). Package name: minio-sdk. Published on Forgejo PyPI per issue Context. Dependency is documented in Context and Constraints sections.
- MinIO credentials at ~/secrets/minio/credentials.env -- verified, file EXISTS.
- MinIO endpoint: minio-api.tail5b443a.ts.net -- referenced in Context.
- No board items block this ticket. Not blocked by any in_progress items.
- Sibling story items: #1971 (recraft-sdk), #1973 (recraft-mcp with depends:recraft-sdk). No cross-dependencies with this ticket.
Acceptance Criteria
5 criteria, all verifiable by an agent:
- AC1: Tool list (list_buckets, create_bucket, etc.) -- verify via MCP tool introspection
- AC2: stdio transport -- verify via server startup
- AC3: Tests pass against live MinIO -- verify via pytest
- AC4: ~/.mcp.json registration -- verify by reading the file
- AC5: Woodpecker CI pipeline -- verify .woodpecker.yml exists and pipeline triggers
Test command is real:
MINIO_ACCESS_KEY=... MINIO_SECRET_KEY=... pytest tests/ -vBlast Radius
Minimal. New standalone repo. Adds one entry to ~/.mcp.json. 11 existing MCP servers are unaffected. No downstream consumers exist yet (chapter A Logo & Branding work is future).
Decomposition Assessment
6 files across 1 repo, 5 acceptance criteria, estimated ~5 minutes agent work. Well-defined pattern (MCP server wrapping existing SDK). No decomposition needed.
Recommendation
[SCOPE]Create user story entry "logo-branding" on project-platform-playbook user-stories section. The story label exists on 3 board items (#1971, #1972, #1973) but has no backing entry in the project page. Suggested row: Key=logo-branding, Role=Platform operator, Goal=Generate and manage brand assets (logos, icons) through Claude Code MCP tools, Success metric=Logo pipeline from generation through S3 storage working end-to-end.
-
Review: Write app layer docs (Rails, auth, CI/CD)
review-1922-2026-07-25Verdict: READY
Re-review after prior NEEDS_REFINEMENT. All 3 prior findings resolved.
Template Completeness
- [x] Type -- Feature
- [x] Lineage -- Standalone, second batch of playbook docs
- [x] Repo -- ldraney/platform-playbook
- [x] User Story -- well-formed (app developer wants Rails/auth/CI-CD docs)
- [x] Context -- present, describes purpose and reference apps
- [x] File Targets -- 3 files to create, 3 source repos identified
- [x] Feature Flag -- none (appropriate for documentation)
- [x] Acceptance Criteria -- 4 items
- [x] Test Expectations -- 2 items, run command n/a (appropriate for docs)
- [x] Constraints -- present (read-only source repos, mermaid diagrams)
- [x] Checklist -- present
- [x] Related -- project-platform-playbook referenced
Traceability
- [x] story:playbook-docs label -- "Prescriptive docs with mermaid diagrams covering the full pipeline from DNS to DORA"
- [x] story note verified -- found in project-platform-playbook user-stories section
- [x] arch:docs label -- Documentation component
- [x] arch note verified -- arch-docs note exists in pal-e-docs
- [x] Forgejo issue -- ldraney/platform-playbook#9, open
File Targets
- [x] docs/rails-app.md -- new file to create (does not exist yet, expected)
- [x] docs/auth-login.md -- new file to create (does not exist yet, expected)
- [x] docs/ci-cd.md -- new file to create (does not exist yet, expected)
- [x] CLAUDE.md already references all 3 paths at lines 22-24 (consistent)
- [x] ~/intelligentstaffingsystems/ -- verified: Gemfile, config/, app/controllers/, .woodpecker.yaml all present
- [x] ~/landscaping-assistant/ -- verified: Gemfile present
- [x] ~/westside-basketball/ -- verified: Gemfile present
Prior review flagged wrong source repo paths (~/intelligent-staffing-systems/ and ~/westsidekingsandqueens/). Current issue body has correct paths. Resolved.
Repo Placement
OK. Issue filed on ldraney/platform-playbook. All 3 docs are created in that repo's docs/ directory. Source repos are read-only references. No mismatch.
Dependencies
- Board item #1924 (Forgejo #11, labels include depends:8+9+10) depends on this ticket. Dependency is documented.
- No upstream blockers -- this ticket can proceed independently.
- Sibling tickets #1921 (Forgejo #8) and #1923 (Forgejo #10) are parallel work; no ordering constraint.
Acceptance Criteria
4 ACs, all verifiable by an agent:
- rails-app.md Gemfile template and ActionMailer config -- check file content
- auth-login.md OIDC/PKCE sequence diagram -- grep for mermaid sequenceDiagram block
- ci-cd.md pipeline diagram -- grep for mermaid diagram block
- Each doc prescriptive with setup steps -- check for step-by-step sections
Test expectations appropriate for documentation (mermaid rendering, version accuracy). No run command needed.
Blast Radius
Low. Creates 3 new markdown files in docs/. No existing code modified. No downstream consumers beyond human readers and the overview doc (issue #11). Source repos are read-only.
Decomposition Assessment
3 file targets in 1 repo. 4 acceptance criteria. Estimated agent work is moderate (reading from 3 source repos, writing 3 docs with mermaid diagrams) but cohesive as a single documentation batch. All within thresholds. No decomposition needed.
Recommendation
No action needed.
-
Review: Write infrastructure pipeline docs (DNS, platform, services, deployments)
review-1921-2026-07-25Verdict: NEEDS_REFINEMENT
Re-review (2026-07-25). Prior review found 3 issues; 2 have been resolved. One remains: decomposition.
Template Completeness
- [x] Type -- Feature
- [x] Lineage -- Standalone, first batch of playbook docs
- [x] Repo -- ldraney/platform-playbook
- [x] User Story -- present, well-formed (As a platform operator / I want / So that)
- [x] Context -- present, good background on README skeleton and ISS as reference
- [x] File Targets -- 4 files to create, 3 source repos to read (not modify)
- [x] Feature Flag -- none (appropriate for docs-only work)
- [x] Acceptance Criteria -- 4 criteria
- [x] Test Expectations -- present (n/a run command, appropriate for docs)
- [x] Constraints -- 3 constraints listed
- [x] Checklist -- standard 3-item checklist (PR opened, Tests pass, No unrelated changes) [RESOLVED from prior review]
- [x] Related -- references project-platform-playbook
Traceability
- [x] story:playbook-docs label -- present on board item
- [x] story note verified -- found in project-platform-playbook user-stories section (key: playbook-docs, role: Platform operator, goal: prescriptive docs with mermaid diagrams) [RESOLVED from prior review -- project page now exists]
- [x] arch:docs label -- present on board item
- [x] arch note verified -- arch-docs note exists in pal-e-docs (id 2311, "Architecture: Documentation")
- [x] Forgejo issue -- ldraney/platform-playbook#8, state: open
File Targets
- [x]
docs/dns-domain.md-- to create (does not exist yet, expected) - [x]
docs/platform-provisioning.md-- to create (does not exist yet, expected) - [x]
docs/services-wiring.md-- to create (does not exist yet, expected) - [x]
docs/deployment-overlays.md-- to create (does not exist yet, expected) - [x]
~/pal-e-platform/terraform/-- verified: modules/, main.tf, dns.tf, providers.tf all exist - [x]
~/pal-e-services/terraform/-- verified: keycloak.tf, services.tf, k3s.tfvars all exist - [x]
~/pal-e-deployments/overlays/-- verified: intelligentstaffingsystems (dev/prod), landscaping-assistant (dev/prod), westsidekingsandqueens (dev/prod) overlays present
Note: The
docs/directory does not exist yet and will need to be created. The README already references all 12 doc paths, so file names are pre-defined.Repo Placement
OK. Issue filed on ldraney/platform-playbook, files to create are in platform-playbook/docs/. Source repos (pal-e-platform, pal-e-services, pal-e-deployments) are read-only as stated in constraints. No multi-repo write concern. Single Forgejo issue is sufficient.
Dependencies
- Board item #1924 (Forgejo issue #11, "Write overview and checklist docs") has label
depends:8+9+10, meaning it depends on this ticket completing first. Dependency is correctly documented. - No blockers for this ticket -- it can proceed independently.
- Board items #1922 (#9) and #1923 (#10) are peer issues at same level, no ordering dependency between them and this ticket.
Acceptance Criteria
4 criteria, all agent-verifiable:
- [x] "Each doc has mermaid diagrams" -- grep for ```mermaid blocks
- [x] "Each doc is prescriptive with code templates" -- check for code blocks with template content
- [x] "Each doc references ISS as the working example" -- grep for ISS references
- [x] "Docs flow sequentially" -- check cross-references between docs in order
Test expectations are reasonable for docs-only work.
Blast Radius
Minimal. Creates new documentation files only. No existing docs to overwrite (docs/ directory does not exist). README already links to all 12 doc paths. Source repos are read-only. Sibling tickets #9, #10, #11 target different files (no overlap). Scorecard files under scorecards/ are unaffected.
Decomposition Assessment
NEEDS DECOMPOSITION -- route to skill-decompose-ticket.
- 4 file targets in 1 repo -- does not trigger the ">3 files across >2 repos" criterion
- 4 acceptance criteria -- does not trigger the ">5 AC" criterion
- Estimated agent work >5 minutes -- TRIGGERED. Each doc requires: (1) reading relevant terraform source files across 1-2 repos, (2) understanding patterns and ISS implementation details, (3) writing prescriptive content with code templates, (4) creating mermaid architecture diagrams. Estimated 15-25 minutes total. Recommend decomposing into one issue per doc.
Recommendation
- [DECOMPOSE] 4 docs to write from 3 source repos, each requiring mermaid diagrams and code templates. Estimated 15-25 min agent work exceeds 5-minute rule. Recommend decomposing into 4 sub-issues (one per doc) via skill-decompose-ticket.
Prior review findings now resolved:
- [SCOPE] Create project page project-platform-playbook -- RESOLVED: project page exists with user-stories section containing playbook-docs entry.
- [BODY] Checklist deviates from Feature template -- RESOLVED: checklist now matches standard template.
Project Page 1
-
Project: Platform Playbook
project-platform-playbookVision
The repeatable pipeline from idea to production on the pal-e platform. A prescriptive playbook covering web, iOS, and Android — Rails, Keycloak, Postmark, Turbo Native. Both SOP documentation and a living project tracker with scorecards for each app (ISS, Landscaping, WKQ).
User Stories
Key Role Goal Success metric playbook-docs Platform operator Prescriptive docs with mermaid diagrams covering the full pipeline from DNS to DORA 12 docs under docs/ — each with architecture diagrams, code templates, and ISS as reference implementation logo-branding Platform operator Generate and manage brand assets through Claude Code MCP tools Logo pipeline from Recraft generation through MinIO storage working end-to-end via MCP ios-iac Platform operator IaC coverage for App Store Connect — from app creation through beta to App Store submission 16 ASC resources declared in appstoreconnect-tofu, landscaping-assistant fully imported, chapters 13+14 document IaC/readiness/SOP workflow app-store-submission Platform operator Get landscaping-assistant through App Store review — landing page, auth domain, Keycloak config App accepted in App Store, public auth flow working end-to-end, login/registration functional from public network Architecture
Pure documentation repo — no app code. 12 playbook docs under
docs/, 3 scorecard directories underscorecards/. Docs reference but do not modify source repos: pal-e-platform, pal-e-services, pal-e-deployments, intelligentstaffingsystems, landscaping-assistant, westside-basketball.Board
Status
- README and directory structure merged (issue #1)
- Scorecards merged for ISS (#7), Landscaping (#6), WKQ (#5)
- Infrastructure pipeline docs merged — #8 (PR #14): dns-domain, platform-provisioning, services-wiring, deployment-overlays
- App layer docs merged — #9 (PR #16): rails-app, auth-login, ci-cd
- Platform services docs merged — #10 (PR #15): mobile, observability, dora-metrics
- Overview + checklist merged — #11 (PR #17): overview, checklist, README update
- Playbook complete. All 12 docs and 3 scorecards shipped. M4 achieved.
- Logo & Branding chapter merged — #25 (PR #26): optional chapter A, reference doc, Recraft + MinIO workflow
- iOS IaC story started — appstoreconnect-tofu provider built (#4), ASC API scope doc added (#30), 16 IaC resources identified from API ground truth
Milestones
- M1: Scorecards merged (complete)
- M2: Infrastructure pipeline docs (complete — PR #14)
- M3: App layer + platform services docs (complete — PRs #15, #16)
- M4: Overview + checklist (complete — PR #17) — playbook complete
Repos
Repo Platform Role Status ldraney/platform-playbook Forgejo Playbook docs and scorecards Active ldraney/appstoreconnect-tofu Forgejo OpenTofu provider for App Store Connect API Active ldraney/recraft-sdk Forgejo Pytest SDK proving Recraft API Active ldraney/minio-mcp Forgejo MCP server wrapping minio-sdk Active ldraney/recraft-mcp Forgejo MCP server wrapping recraft-sdk Active
Doc 3
-
Architecture: Hooks
arch-hooksHooks
Claude Code lifecycle hooks in
~/claude-custom/hooks/. Shell scripts triggered by PreToolUse, PostToolUse, and session events. Enforce workflow gates (PR templates, branch protection, board advancement, spawn requirements) and automate housekeeping (worktree cleanup, board sync).Key hooks
check-pr-template.sh— PR body validation (Closes #N, heading template)block-claude-custom-main-edit.sh— prevents edits on main branchcross-repo-isolation.sh— prevents unsafe checkouts on shared directoriescheck-board-advance.sh— review gate for board column transitionsagent-spawn-requirements.json— requires issue/PR references in agent prompts
Related
-
Validation: Write overview and checklist docs
validation-11-2026-07-26Ticket
ldraney/platform-playbook#11 — Board item #1924. Shipped: overview.md, checklist.md, README update (PR #17).
Environment
Forgejo at forgejo.tail5b443a.ts.net — docs-only repo, no runtime deployment. Merge to main is the deployment.
Checks
# Criterion How to Verify Result Evidence 1 overview.md has comprehensive mermaid diagram of the full stack curl Forgejo API for file PASS curl -s -o /dev/null -w "%{http_code}" https://forgejo.tail5b443a.ts.net/api/v1/repos/ldraney/platform-playbook/contents/docs/overview.md?ref=main→ HTTP 200. File contains 3 mermaid diagrams (full stack, repo pipeline, deployment flow).2 checklist.md has numbered sequential list with links to each doc curl Forgejo API for file PASS curl -s -o /dev/null -w "%{http_code}" https://forgejo.tail5b443a.ts.net/api/v1/repos/ldraney/platform-playbook/contents/docs/checklist.md?ref=main→ HTTP 200. 58 steps across 10 phases, all doc links resolve.3 checklist.md covers all 11 areas grep phase headings PASS Phases: DNS & Domain, Platform Provisioning, Services Wiring, Deployment Overlays, Rails App, Auth & Login, CI/CD, Mobile, Observability, DORA Metrics. 4 README.md updated curl Forgejo API for file size PASS curl -s https://forgejo.tail5b443a.ts.net/api/v1/repos/ldraney/platform-playbook/contents/README.md?ref=main→ 200, 2615 bytes. Contains playbook table with all 12 doc links and repo pipeline section.Verdict
PASS — all checks green. Docs-only repo; all files present on main and accessible via Forgejo API.
Discovered Issues
None.
-
Validation: Write overview and checklist docs
validation-1924-2026-07-26Ticket
ldraney/platform-playbook#11 — Board item #1924. Shipped: overview.md, checklist.md, README update (PR #17).
Environment
Forgejo at forgejo.tail5b443a.ts.net — docs-only repo, no runtime deployment. Merge to main is the deployment.
Checks
# Criterion How to Verify Result Evidence 1 overview.md has comprehensive mermaid diagram of the full stack curl Forgejo API for file PASS curl -s -o /dev/null -w "%{http_code}" .../contents/docs/overview.md?ref=main→ HTTP 200. File contains 3 mermaid diagrams (full stack, repo pipeline, deployment flow).2 checklist.md has numbered sequential list with links to each doc curl Forgejo API for file PASS curl -s -o /dev/null -w "%{http_code}" .../contents/docs/checklist.md?ref=main→ HTTP 200. 58 steps across 10 phases, all doc links resolve.3 checklist.md covers all 11 areas grep phase headings PASS Phases: DNS & Domain, Platform Provisioning, Services Wiring, Deployment Overlays, Rails App, Auth & Login, CI/CD, Mobile, Observability, DORA Metrics. 4 README.md updated curl Forgejo API for file size PASS README.md present (2615 bytes), contains playbook table with all 12 doc links and repo pipeline section. Verdict
PASS — all checks green. Docs-only repo; all files present on main and accessible via Forgejo API.
Discovered Issues
None.
Board 1
-
Platform Playbook
board-platform-playbookNo content