Add dev-to-App-Store pipeline doc #111

Merged
ldraney merged 3 commits from docs/dev-to-app-store-pipeline into main 2026-06-06 02:41:32 +00:00
Owner

Summary

  • Documents the full pipeline from local dev through CI/CD, k3s production, and the turbo-ios path to the App Store
  • Covers all four stages: local dev, production deploy, iOS dev builds, iOS prod (TestFlight + App Store)
  • Includes Mermaid diagrams showing the deploy flow (ArgoCD Image Updater, three-repo model) and the update lifecycle

Changes

  • docs/pipeline.md -- new doc covering the end-to-end pipeline with accurate infrastructure details

Test Plan

  • Verify the Mermaid diagrams render correctly in Forgejo
  • Read through each stage for accuracy
  • No regressions in existing docs

Review Checklist

  • No secrets committed
  • No unnecessary file changes
  • Commit messages are descriptive
  • References #107, #108, #109 -- the auth and iOS tickets this pipeline supports
  • Aligns with platform-wide iOS pipeline doc in macbook-ssh/docs/ios-pipeline.md
## Summary - Documents the full pipeline from local dev through CI/CD, k3s production, and the turbo-ios path to the App Store - Covers all four stages: local dev, production deploy, iOS dev builds, iOS prod (TestFlight + App Store) - Includes Mermaid diagrams showing the deploy flow (ArgoCD Image Updater, three-repo model) and the update lifecycle ## Changes - `docs/pipeline.md` -- new doc covering the end-to-end pipeline with accurate infrastructure details ## Test Plan - [ ] Verify the Mermaid diagrams render correctly in Forgejo - [ ] Read through each stage for accuracy - [ ] No regressions in existing docs ## Review Checklist - [ ] No secrets committed - [ ] No unnecessary file changes - [ ] Commit messages are descriptive ## Related - References #107, #108, #109 -- the auth and iOS tickets this pipeline supports - Aligns with platform-wide iOS pipeline doc in `macbook-ssh/docs/ios-pipeline.md`
Add dev-to-App-Store pipeline doc
Some checks are pending
CI / scan_ruby (pull_request) Waiting to run
CI / scan_js (pull_request) Waiting to run
CI / lint (pull_request) Waiting to run
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
fd8373766e
Documents the full pipeline from local dev through CI/CD, k3s
production, and the turbo-ios path to the App Store. Covers all
six stages: local dev, Woodpecker CI, k3s production, iOS dev
builds, TestFlight, and App Store submission.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Author
Owner

Review -- docs/dev-to-app-store-pipeline.md

Docs-only PR, single new file (103 lines). Reviewed the full diff.

Findings: None.

  • Mermaid diagram syntax is correct (subgraphs, node labels, edge labels, dotted lines)
  • All six pipeline stages documented clearly with actionable steps
  • No secrets, credentials, or sensitive data
  • PR body has all required sections and Closes references
  • Branch naming follows convention

VERDICT: APPROVED

## Review -- docs/dev-to-app-store-pipeline.md Docs-only PR, single new file (103 lines). Reviewed the full diff. **Findings:** None. - Mermaid diagram syntax is correct (subgraphs, node labels, edge labels, dotted lines) - All six pipeline stages documented clearly with actionable steps - No secrets, credentials, or sensitive data - PR body has all required sections and Closes references - Branch naming follows convention **VERDICT: APPROVED**
Rewrite pipeline doc with accurate infrastructure details
Some checks are pending
CI / scan_ruby (pull_request) Waiting to run
CI / scan_js (pull_request) Waiting to run
CI / lint (pull_request) Waiting to run
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
25ef6bd4c8
Renamed from dev-to-app-store-pipeline.md to pipeline.md. Now covers
the actual deploy mechanism (ArgoCD Image Updater, three-repo model,
Fastlane) instead of hand-waving. Aligns with the platform-wide iOS
pipeline doc in macbook-ssh.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Author
Owner

PR #111 Review

DOMAIN REVIEW

Docs-only PR: single new file docs/pipeline.md (163 lines). No code changes. Reviewed for factual accuracy against the actual codebase (docker-compose.yml, .woodpecker.yaml, Dockerfile, config/puma.rb, docs/ROADMAP.md).

Accuracy verified:

  • CI pipeline description ("RuboCop lint, RSpec tests, Docker build, push to Harbor") matches .woodpecker.yaml steps exactly.
  • Three-repo model table (pal-e-platform / pal-e-services / pal-e-deployments) is accurate and consistent with ArgoCD image updater pattern.
  • Mermaid diagrams are structurally sound and the deploy flow / update lifecycle sequences are correct.
  • Turbo-ios architecture description ("window into the server, not a separate application") is accurate for the Hotwire/turbo-ios pattern.
  • TestFlight 90-day / dev profile 7-day expiry claims are correct per Apple documentation.
  • Apple review timeline ("24-48 hours typically") is reasonable.

Inaccuracy found:

  • Section 1 (Local Dev) says docker-compose up runs on localhost:3000. However, docker-compose.yml maps the host port as ${WEB_PORT:-7143}:3000. The container listens on 3000 internally, but the host-accessible URL defaults to localhost:7143, not localhost:3000. The comment in the docker-compose block and the Mermaid diagram both reference localhost:3000 -- both should say localhost:7143 (or localhost:${WEB_PORT:-7143} to be precise).

Minor inconsistency:

  • The pipeline doc references ~/landscaping-assistant-ios as the iOS project directory, while docs/ROADMAP.md Ticket 7 says the repo will be called landscaping-ios. These are different things (local directory vs. repo name), so this may be intentional, but worth aligning if the repo name is decided.

BLOCKERS

None. This is a docs-only PR -- no code, no secrets, no security surface. The BLOCKER criteria (test coverage, input validation, secrets, DRY auth) do not apply to documentation PRs.

NITS

  1. Port number in Local Dev section: The docker-compose up comment and Mermaid diagram say localhost:3000 but the actual default host port is 7143. Fix the comment to match reality: # Rails + Postgres on localhost:7143

  2. iOS directory vs. repo name: ~/landscaping-assistant-ios in the doc vs. landscaping-ios repo name in ROADMAP. Consider aligning these now so the doc doesn't need a correction later.

  3. Related link format: The macbook-ssh link points to a repo root (https://forgejo.tail5b443a.ts.net/ldraney/macbook-ssh) rather than the specific file path. Consider linking directly to the file for easier navigation: .../macbook-ssh/src/branch/main/docs/ios-pipeline.md

SOP COMPLIANCE

  • Branch named after issue: Branch is docs/dev-to-app-store-pipeline. Convention requires {issue-number}-{kebab-case-purpose} (e.g., 108-dev-to-app-store-pipeline-doc). The docs/ prefix style does not follow the convention.
  • PR body follows template: Has Summary, Changes, Test Plan, Related sections.
  • Related references plan slug: Related section references issue numbers (#107, #108, #109) but does not reference a plan slug.
  • No secrets committed: Confirmed -- documentation only, no credentials.
  • No unnecessary file changes: Single file, tightly scoped.
  • Commit messages are descriptive: (1 commit, title matches PR purpose)

PROCESS OBSERVATIONS

  • Good practice documenting the pipeline before the iOS work lands -- this gives the auth (#107) and iOS (#108) tickets a reference point.
  • The doc consolidates knowledge that currently lives across multiple repos (macbook-ssh, pal-e-services, pal-e-deployments) into a single app-level view. This is valuable for onboarding and incident response.
  • Change failure risk: zero (docs only).
  • The port number inaccuracy (3000 vs 7143) is the kind of thing that wastes developer time when someone follows the doc literally and can't reach the app. Worth fixing before merge.

VERDICT: APPROVED

The content is well-structured, technically accurate (with one port number correction needed), and properly scoped. The port discrepancy and branch naming are worth fixing but neither rises to BLOCKER level for a documentation PR. The branch naming deviation is a process nit -- not a code quality issue.

## PR #111 Review ### DOMAIN REVIEW Docs-only PR: single new file `docs/pipeline.md` (163 lines). No code changes. Reviewed for factual accuracy against the actual codebase (`docker-compose.yml`, `.woodpecker.yaml`, `Dockerfile`, `config/puma.rb`, `docs/ROADMAP.md`). **Accuracy verified:** - CI pipeline description ("RuboCop lint, RSpec tests, Docker build, push to Harbor") matches `.woodpecker.yaml` steps exactly. - Three-repo model table (pal-e-platform / pal-e-services / pal-e-deployments) is accurate and consistent with ArgoCD image updater pattern. - Mermaid diagrams are structurally sound and the deploy flow / update lifecycle sequences are correct. - Turbo-ios architecture description ("window into the server, not a separate application") is accurate for the Hotwire/turbo-ios pattern. - TestFlight 90-day / dev profile 7-day expiry claims are correct per Apple documentation. - Apple review timeline ("24-48 hours typically") is reasonable. **Inaccuracy found:** - Section 1 (Local Dev) says `docker-compose up` runs on `localhost:3000`. However, `docker-compose.yml` maps the host port as `${WEB_PORT:-7143}:3000`. The container listens on 3000 internally, but the host-accessible URL defaults to `localhost:7143`, not `localhost:3000`. The comment in the docker-compose block and the Mermaid diagram both reference `localhost:3000` -- both should say `localhost:7143` (or `localhost:${WEB_PORT:-7143}` to be precise). **Minor inconsistency:** - The pipeline doc references `~/landscaping-assistant-ios` as the iOS project directory, while `docs/ROADMAP.md` Ticket 7 says the repo will be called `landscaping-ios`. These are different things (local directory vs. repo name), so this may be intentional, but worth aligning if the repo name is decided. ### BLOCKERS None. This is a docs-only PR -- no code, no secrets, no security surface. The BLOCKER criteria (test coverage, input validation, secrets, DRY auth) do not apply to documentation PRs. ### NITS 1. **Port number in Local Dev section**: The `docker-compose up` comment and Mermaid diagram say `localhost:3000` but the actual default host port is 7143. Fix the comment to match reality: `# Rails + Postgres on localhost:7143` 2. **iOS directory vs. repo name**: `~/landscaping-assistant-ios` in the doc vs. `landscaping-ios` repo name in ROADMAP. Consider aligning these now so the doc doesn't need a correction later. 3. **Related link format**: The macbook-ssh link points to a repo root (`https://forgejo.tail5b443a.ts.net/ldraney/macbook-ssh`) rather than the specific file path. Consider linking directly to the file for easier navigation: `.../macbook-ssh/src/branch/main/docs/ios-pipeline.md` ### SOP COMPLIANCE - [ ] **Branch named after issue**: Branch is `docs/dev-to-app-store-pipeline`. Convention requires `{issue-number}-{kebab-case-purpose}` (e.g., `108-dev-to-app-store-pipeline-doc`). The `docs/` prefix style does not follow the convention. - [x] **PR body follows template**: Has Summary, Changes, Test Plan, Related sections. - [ ] **Related references plan slug**: Related section references issue numbers (#107, #108, #109) but does not reference a plan slug. - [x] **No secrets committed**: Confirmed -- documentation only, no credentials. - [x] **No unnecessary file changes**: Single file, tightly scoped. - [x] **Commit messages are descriptive**: (1 commit, title matches PR purpose) ### PROCESS OBSERVATIONS - Good practice documenting the pipeline before the iOS work lands -- this gives the auth (#107) and iOS (#108) tickets a reference point. - The doc consolidates knowledge that currently lives across multiple repos (macbook-ssh, pal-e-services, pal-e-deployments) into a single app-level view. This is valuable for onboarding and incident response. - Change failure risk: zero (docs only). - The port number inaccuracy (3000 vs 7143) is the kind of thing that wastes developer time when someone follows the doc literally and can't reach the app. Worth fixing before merge. ### VERDICT: APPROVED The content is well-structured, technically accurate (with one port number correction needed), and properly scoped. The port discrepancy and branch naming are worth fixing but neither rises to BLOCKER level for a documentation PR. The branch naming deviation is a process nit -- not a code quality issue.
Fix review findings: port 7143, iOS repo name alignment
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
CI / scan_ruby (pull_request) Has been cancelled
CI / scan_js (pull_request) Has been cancelled
CI / lint (pull_request) Has been cancelled
06bb0d8372
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ldraney deleted branch docs/dev-to-app-store-pipeline 2026-06-06 02:41:32 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/landscaping-assistant!111
No description provided.