| 1 |
# Sprint 08 Validation Report (2026-02-26) |
| 2 |
|
| 3 |
## Scope |
| 4 |
1. Close static ecosystem integration warnings from Sprint 08 certification. |
| 5 |
2. Execute parity baseline harness and capture evidence. |
| 6 |
3. Verify temporary-authorization lifecycle commands against authority call contracts. |
| 7 |
|
| 8 |
## Commands |
| 9 |
1. `./examples/validate-sprint-08-integration.sh ..` |
| 10 |
2. `./examples/validate-sprint-08-parity.sh` |
| 11 |
3. `GARCARD_SPRINT07_BACKEND=stub GARCARD_SPRINT07_RUN_PKCHECK=0 ./examples/validate-sprint-07.sh` |
| 12 |
4. `cargo test -p garcard` |
| 13 |
5. `cargo test --workspace` |
| 14 |
|
| 15 |
## Results |
| 16 |
1. Integration certification script now passes with zero warnings: |
| 17 |
- installer guidance includes `garcardctl diagnose` |
| 18 |
- gargears adapter exposes `diagnose` and temp-authorization lifecycle methods |
| 19 |
2. Parity baseline harness completed successfully and generated evidence: |
| 20 |
- `target/sprint-08-parity-evidence.md` |
| 21 |
3. Temporary-authorization DBus contract issue fixed: |
| 22 |
- previous `InvalidArgs` (`(sa{sv})` vs `((sa{sv}))`) no longer appears |
| 23 |
- `temp-list` and `temp-revoke-all` return clean baseline results |
| 24 |
4. Workspace tests pass after lifecycle-call marshaling fix. |
| 25 |
5. Interactive parity loop executed via `GARCARD_SPRINT08_RUN_INTERACTIVE=1 ./examples/validate-sprint-08-parity.sh`: |
| 26 |
- successful auth path observed (`last_outcome: success`) |
| 27 |
- canceled auth path observed (`last_outcome: canceled`) |
| 28 |
- temporary authorizations created and revoked in-loop (`revoked_count: 1`) |
| 29 |
6. Privileged polkit-restart recovery executed manually on 2026-02-26: |
| 30 |
- operator ran `sudo systemctl restart polkit` |
| 31 |
- post-restart lifecycle verification on `polkit` backend passed (`validate-sprint-07.sh`) |
| 32 |
|
| 33 |
## Matrix Status |
| 34 |
1. Baseline non-interactive rows updated in `examples/sprint-08-parity-matrix.md`. |
| 35 |
2. Interactive/passive coverage now includes: |
| 36 |
- success and canceled prompt paths |
| 37 |
- temp-list and temp-revoke-all with concrete temporary authorization ids |
| 38 |
- manual privileged polkit-restart recovery |
| 39 |
3. Remaining rows are policy/path specific and still pending: |
| 40 |
- explicit wrong-password failure path (`last_outcome: failure`) |
| 41 |
- timeout path under live challenge (`last_outcome: timeout`) |
| 42 |
- multi-identity and retention-choice scenarios |
| 43 |
- temp-revoke single-id scenario |
| 44 |
|
| 45 |
## Next Actions |
| 46 |
1. Run one focused wrong-password parity capture (`failure` outcome) with debug logs. |
| 47 |
2. Run one focused timeout capture using short prompt timeout on `polkit` backend. |
| 48 |
3. Add one targeted single-id revoke capture (`temp-revoke <authorization-id>`) and finalize matrix signoff. |