Phase 0 epic is now complete. All 10 sub-phase coordinators are closed: - 0.1: pdftract-ci WorkflowTemplate scaffolding - 0.2: Cross-compilation build matrix (5 target triples) - 0.3: Test execution (musl + glibc) - 0.4: Static analysis and quality gates - 0.5: Property tests and nightly fuzz - 0.6: Regression corpus runner (Tier 3) - 0.7: Competitive benchmarks (Tier 4) - 0.8: pdftract-py-ci stub - 0.9: Release publishing - 0.10: CI observability The Argo Workflows CI pipeline on iad-ci is fully operational and unblocks all Phase 1-7 epics for code review. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
78 lines
3.7 KiB
Markdown
78 lines
3.7 KiB
Markdown
# Phase 0: CI Infrastructure — Verification Note
|
|
|
|
**Bead ID:** pdftract-4nj7y
|
|
**Epic:** Phase 0: CI Infrastructure (Argo Workflows on iad-ci)
|
|
**Completed:** 2026-05-23
|
|
|
|
## Summary
|
|
|
|
Phase 0 established the complete Argo Workflows CI pipeline required by all subsequent phases. Per ADR-009, all CI runs on the iad-ci Rackspace Spot cluster — GitHub Actions are explicitly forbidden.
|
|
|
|
## Sub-phases Completed
|
|
|
|
All 10 sub-phase coordinators are CLOSED:
|
|
|
|
| Sub-phase | Bead ID | Description | Status |
|
|
|-----------|---------|-------------|--------|
|
|
| 0.1 | pdftract-1wqec | pdftract-ci WorkflowTemplate scaffolding | ✅ CLOSED |
|
|
| 0.2 | pdftract-1bn | Cross-compilation build matrix for 5 target triples | ✅ CLOSED |
|
|
| 0.3 | pdftract-30n | Test execution on musl + glibc | ✅ CLOSED |
|
|
| 0.4 | pdftract-2rf | Static analysis and quality gates (clippy, audit, deny, MSRV, bloat) | ✅ CLOSED |
|
|
| 0.5 | pdftract-33v | Property tests and nightly fuzz job | ✅ CLOSED |
|
|
| 0.6 | pdftract-2t9 | Regression corpus runner (Tier 3, 500 PDFs) | ✅ CLOSED |
|
|
| 0.7 | pdftract-60h | Competitive benchmarks (Tier 4, hyperfine) | ✅ CLOSED |
|
|
| 0.8 | pdftract-23k1 | pdftract-py-ci WorkflowTemplate stub | ✅ CLOSED |
|
|
| 0.9 | pdftract-4b0z | Release publishing (GitHub Releases on milestone tags) | ✅ CLOSED |
|
|
| 0.10 | pdftract-3i1o | CI observability — green-run smoke test and status reporting | ✅ CLOSED |
|
|
|
|
## Acceptance Criteria Verification
|
|
|
|
### ✅ pdftract-ci active in iad-ci
|
|
- The `pdftract-ci` WorkflowTemplate is deployed in the `iad-ci` cluster
|
|
- Runs on every PR to `jedarden/pdftract` via Argo Workflows
|
|
|
|
### ✅ All 10 sub-phase coordinators closed
|
|
- Verified via `bf show` for each sub-phase bead
|
|
- All show `Status: closed`
|
|
|
|
### ✅ Green CI run demonstrates required capabilities
|
|
The CI pipeline now includes:
|
|
- **Build:** Cross-compilation for 5 target triples (x86_64-unknown-linux-{musl,gnu}, aarch64-unknown-linux-{musl,gnu}, x86_64-apple-darwin)
|
|
- **Test:** cargo test on both musl and glibc
|
|
- **Static analysis:** clippy, cargo audit, cargo deny, MSRV check, cargo bloat
|
|
- **Quality gates:** Binary size enforcement (< 4 MB stripped default)
|
|
- **Regression testing:** Tier 3 corpus runner
|
|
- **Benchmarks:** Tier 4 competitive benchmarks (pdfminer.six, pypdf, pdfplumber)
|
|
- **Release:** Automated GitHub Releases on milestone tags
|
|
- **Observability:** Green-run smoke test with exit handlers and workflow metadata
|
|
|
|
### ✅ Failure visibly blocks PR merge
|
|
- CI failures in Argo Workflows are visible in the workflow status
|
|
- Merge blockers are enforced through the CI gate
|
|
|
|
## Next Steps
|
|
|
|
With Phase 0 complete, all Phase 1-7 epics are now unblocked for code review. The CI infrastructure is in place to support:
|
|
- Cross-platform builds and testing
|
|
- Quality enforcement (clippy, audit, deny, bloat)
|
|
- Regression detection
|
|
- Performance benchmarking
|
|
- Automated releases
|
|
|
|
## Artifacts
|
|
|
|
- Argo WorkflowTemplates in `jedarden/declarative-config → k8s/iad-ci/argo-workflows/`
|
|
- CI configuration synced via ArgoCD
|
|
- Release automation ready for milestone tags
|
|
|
|
---
|
|
|
|
**Retrospective:**
|
|
|
|
- **What worked:** The phased approach to CI infrastructure allowed each component to be built and tested independently. The separation into 10 sub-phase coordinators made the work trackable and allowed parallel execution where possible.
|
|
|
|
- **What didn't:** N/A — all sub-phases completed successfully.
|
|
|
|
- **Surprise:** The comprehensive nature of Phase 0 — covering not just basic CI but also observability, release automation, and competitive benchmarking — provides a strong foundation for all subsequent phases.
|
|
|
|
- **Reusable pattern:** The pattern of breaking a large infrastructure epic into numbered sub-phase coordinators (0.1, 0.2, etc.) with clear dependencies works well for complex foundational work.
|