|
1 | | -## 2026-03-22 — Add root Package.swift manifest smoke test to CI |
| 1 | +## 2026-03-22 — Review of: Add root Package.swift manifest smoke test to CI |
2 | 2 |
|
3 | | -**Done:** Added a `swift package dump-package` step to the `swift` CI job that validates the |
4 | | -consumer-facing root `Package.swift` manifest parses correctly. The step runs early (after |
5 | | -rust-cache, before the expensive UniFFI build) and requires no `working-directory` since it targets |
6 | | -the repo root. |
| 3 | +**Verdict:** PASS |
7 | 4 |
|
8 | | -**Files changed:** |
9 | | - |
10 | | -- `.github/workflows/ci.yml`: Added "Validate root Package.swift manifest" step at line 239-240 in |
11 | | - the `swift` job, between `Swatinem/rust-cache@v2` and "Build UniFFI native library" |
| 5 | +**Summary:** The advance agent added exactly 2 lines to ci.yml — a `swift package dump-package` step |
| 6 | +in the `swift` job that validates the root `Package.swift` manifest parses correctly. The change is |
| 7 | +minimal, correctly placed (after rust-cache, before the expensive UniFFI build), and all 6 |
| 8 | +verification criteria pass. The resolved "CI does not exercise root Package.swift" issue has been |
| 9 | +deleted from issues.md. |
12 | 10 |
|
13 | 11 | **Verification:** |
14 | 12 |
|
15 | | -- YAML valid: `yaml.safe_load()` exits 0 |
16 | | -- `grep -c 'dump-package'` returns 1 (step exists exactly once) |
17 | | -- `grep -B2 'dump-package' | grep -c 'working-directory'` returns 0 (runs at repo root) |
18 | | -- `grep -B5 'dump-package' | grep 'Validate root'` confirms step name |
19 | | -- `dump-package` step appears BEFORE "Build UniFFI native library" (visual inspection confirmed) |
20 | | -- `mise run format` produces no changes |
21 | | -- `mise run check` — all 15 pre-commit hooks pass |
22 | | - |
23 | | -**Next:** The "CI does not exercise root Package.swift" issue in issues.md should be marked resolved |
24 | | -by the review agent. The only remaining issues are "Add programming language logos to docs site" |
25 | | -(low priority, CID-skipped) and the benchmarks documentation gap. |
26 | | - |
27 | | -**Notes:** No tests to write — this is a CI-only YAML change. The `dump-package` command parses the |
28 | | -manifest and outputs JSON but does NOT resolve/download binary targets, so the PLACEHOLDER checksum |
29 | | -on develop is fine. This is exactly the right level of validation for the develop branch. |
| 13 | +- [x] `yaml.safe_load` exits 0 — valid YAML confirmed |
| 14 | +- [x] `grep -c 'dump-package'` returns 1 — step exists exactly once |
| 15 | +- [x] `grep -B2 'dump-package' | grep -c 'working-directory'` returns 0 — runs at repo root |
| 16 | +- [x] `grep -B5 'dump-package' | grep 'Validate root'` — step name confirmed |
| 17 | +- [x] `dump-package` step (line 240) appears BEFORE "Build UniFFI native library" (line 241) |
| 18 | +- [x] `mise run format` — no changes (clean) |
| 19 | + |
| 20 | +**Issues found:** |
| 21 | + |
| 22 | +- (none) |
| 23 | + |
| 24 | +**Codex review:** One P2 finding: `dump-package` doesn't validate the remote XCFramework |
| 25 | +URL/checksum. This is by design — the work package explicitly scoped this as `dump-package` (not |
| 26 | +`swift package resolve`) because the root manifest has a PLACEHOLDER checksum on develop. Binary |
| 27 | +target resolution would fail. The release workflow patches the checksum at publish time. This is the |
| 28 | +correct level of validation for the develop branch. Finding dismissed. |
| 29 | + |
| 30 | +**Next:** Only one low-priority issue remains (docs language logos), which CID skips. The benchmarks |
| 31 | +documentation gap (state.md: "partially met" — speedup factors not published) is the last actionable |
| 32 | +gap for CID. The next step should run the pytest-benchmark comparisons, compute speedup factors, and |
| 33 | +publish them to the docs site. |
| 34 | + |
| 35 | +**Notes:** All 12 bindings complete, all CI green, all issues resolved except the low cosmetic one. |
| 36 | +The project is approaching full completion — only the benchmarks docs gap prevents Documentation and |
| 37 | +Benchmarks from reaching "met" status. |
0 commit comments