Review: T3: Arch Linux Ruby base image in Harbor (r2)
Verdict: READY
Template Completeness
- [x] Type -- present (Infra)
- [x] Lineage -- present (Plan: infra overhaul, Ticket 3 of 5)
- [x] Repo -- present (ldraney/pal-e-platform)
- [x] User Story -- present
- [x] Context -- present, thorough
- [x] File Targets -- present (2 creates, 1 conditional modify)
- [x] Dockerfile Shape -- present with verified package names
- [x] Pipeline Shape -- present
- [x] Acceptance Criteria -- present (11 items)
- [x] Test Expectations -- present (4 items)
- [x] Dependencies -- present (added since r1: T2 and T4 as downstream dependents)
- [x] Constraints -- present
- [x] Checklist -- present (added since r1: PR opened, Dockerfile builds, image pushed, cron configured, no unrelated changes)
- [x] Related -- present with cross-repo issue references
All template sections are complete. Every item flagged as missing in review-1201-2026-05-10 has been addressed.
Traceability
- [x] story:infra-overhaul label -- present on board item
- [x] story note verified --
story-infra-overhaulnote exists in pal-e-docs (created since r1). Has Motivation, Tickets, Outcome, and Tickets Killed sections. - [x] arch:harbor label -- present on board item
- [x] arch note verified --
arch-harbornote exists in pal-e-docs (created since r1). Has Image Strategy, Registry URLs, and Weekly Base Image Rebuild sections. - [x] Forgejo issue -- ldraney/pal-e-platform#360, state: open
Minor gap (non-blocking): The
project-pal-enterprises user-stories table does not yet have an infra-overhaul row. Current entries: landing-page, sso-gateway, tool-dashboard, client-portal. The story note exists as a standalone note, which is sufficient for traceability. Adding the row to the project page is a housekeeping task, not a scope blocker.File Targets
- [x]
docker/ruby-arch/Dockerfile-- to be CREATED. Directory does not exist yet (expected). Dockerfile shape provided inline with verified Arch package names (ruby, jemalloc, postgresql-libs, libyaml, base-devel, git, pkgconf). Package corrections documented: ruby-bundler replaced with gem install, libpq removed, pkg-config corrected to pkgconf. - [x]
docker/ruby-arch/.woodpecker.yaml-- to be CREATED. Pipeline shape described inline. Note: Woodpecker does not auto-discover yaml files in subdirectories. The existing pal-e-platform uses a single root.woodpecker.yaml. The agent will need to either (a) place this as a separate pipeline config in a.woodpecker/directory at repo root, or (b) add steps to the root pipeline with path-based triggers. The issue body describes the intent clearly enough for an agent to resolve this at implementation time. - [x]
terraform/modules/harbor/main.tf-- VERIFIED EXISTS (575 lines). Contains Harbor Helm release, OIDC config, portal CSS proxy. No Harbor project resource exists yet. The issue correctly identifies this as a conditional modify to add thepal-eHarbor project.
Repo Placement
OK. Issue filed on ldraney/pal-e-platform. All file targets (docker/, terraform/) are pal-e-platform paths. Board item is on board-pal-enterprises which is correct since this infra supports the pal-enterprises app. No cross-repo mismatch.
Dependencies
Dependencies now documented in the issue body (fixed since r1):
- Upstream: None -- T3 can start immediately. Wave 1 parallel with T1.
- Downstream: T2 (pal-e-deployments#158, dev overlay) and T4 (pal-enterprises#18, Dockerfile migration) both depend on this base image existing in Harbor.
Board state confirms: T1 (#1200), T2 (#1197), T3 (#1201), T4 (#1198), T5 (#1199) are all in backlog. No blocking items in in_progress.
Acceptance Criteria
11 ACs are specific and testable. Key improvements since r1:
- Harbor project creation AC added (was missing)
- Kaniko + pacman compatibility AC added (was missing)
- Manual pipeline trigger AC added
All criteria are verifiable by an agent post-implementation. Test commands are concrete (docker run, gem install pg, LD_PRELOAD verification).
Blast Radius
Low. Creates new files only. The existing pal-enterprises Dockerfile (ruby:3.4.8-slim Debian) is untouched. No existing pipelines are modified. Future consumers (pal-enterprises, westside-ror, pal-e-ror, westside-docs) will be migrated by T4 separately. The existing pal-enterprises .woodpecker.yaml uses Kaniko (plugin-kaniko:2.3.0) for app builds -- this pipeline would add a new, separate build pipeline for the base image.
Decomposition Assessment
3 file targets in 1 repo. 11 ACs + 4 test expectations exceeds the >5 AC threshold numerically, but the work is cohesive: write one Dockerfile, write one pipeline config, optionally add one Terraform resource. All three files serve a single purpose (build and push a base image). Estimated agent work is within 5 minutes -- Dockerfile and pipeline shapes are provided inline. No decomposition needed.
Refinement Fixes Verified (from r1)
- [x] Dockerfile package names corrected (ruby-bundler to gem install, libpq removed, pkg-config to pkgconf)
- [x] Dependencies section added (T2 and T4 as downstream dependents)
- [x] Missing ACs added (Harbor project creation, Kaniko+pacman compatibility)
- [x]
story-infra-overhaulnote created - [x]
arch-harbornote created - [x] Checklist section added
Recommendations
No action needed. Ticket is ready for implementation.
Housekeeping (non-blocking): Add
infra-overhaul row to project-pal-enterprises user-stories table for completeness.