Repository navigation
feat(signing): add macOS signing doctor - #25
Conversation
…28) Update the sitiai and klepon release-session plans to reflect what gh stack #27 landed (#24 docs/list-builds-pagination -> #25 feat/signing-doctor -> #26 feat/apps-await-processing): - sitiai: add a 2025-10-11 progress callout; mark findings #2 (signing doctor, PR #25), #5 (await-processing, PR #26) and #6 (list_builds pagination doc, PR #24) as shipped; detail the await-processing CLI surface; note the upload.rs cluster (#3 + #1, #4 folded) is next. - klepon: cross-link the two findings that built on its builds API (#6 pagination doc, #5 await-processing on BuildsApi::list_builds). Co-authored-by: siGit Code v1.6.7-acp <noreply@sigit.si>
The `limit=200` on the builds collection reads like a ceiling, but `list_all` follows Apple's `links.next` cursor until the collection is exhausted. Spell out that 200 is the largest page ASC allows (fewer round-trips), not the number of builds returned, so callers don't treat the vector length as "the 200 most recent builds." Co-Authored-By: siGit Code v1.6.7-acp <noreply@sigit.si>
Add a read-only signing health check that cross-references the login keychain against Apple's certificates and reports which ASC certificates this machine can actually sign with (private key present locally). - frontend: new keychain module + run_doctor, DoctorReport/DoctorCertificate - cli: macOS-gated `asc signing doctor` subcommand, JSON output - CLI-only (reads the login keychain); never transmits key material Co-Authored-By: siGit Code v1.6.7-acp <noreply@sigit.si>
1d69621 to
7ffa301
Compare
There was a problem hiding this comment.
This change introduces a new macOS-only 'asc signing doctor' CLI subcommand that performs a local signing health check. It cross-references the login keychain's certificates against those listed by App Store Connect, reporting which certificates have their private key present locally (and are thus usable for signing). The implementation is in a new frontend keychain module, which shells out to 'security' and 'openssl' to extract and normalize serial numbers for comparison. The CLI command is gated to macOS, and the report is output as JSON, containing no key or certificate material. Unit tests cover serial normalization, PEM splitting, and serialization safety. No prior findings are present, and the implementation appears robust and well-contained within the macOS target gate.
Automated review by siGit Code Review · commit 7ffa301 · see the review dashboard
Keep both the new Testflight and Signing subcommands in crates/cli. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
This change introduces a new macOS-only 'asc signing doctor' CLI subcommand that cross-references the local login keychain with App Store Connect certificates to report which certificates can actually be used for signing (i.e., have their private key present locally). The implementation is in a new frontend keychain module, which shells out to 'security' and 'openssl' to extract and normalize certificate serials, and then compares them to Apple's list. The CLI command is gated to macOS, and the frontend exposes the new run_doctor, DoctorReport, and DoctorCertificate types. The code is careful to avoid exposing any private key or certificate material in its output, and includes tests for serial normalization and PEM splitting. No earlier findings are present, and the code is well-contained to the new feature.
Automated review by siGit Code Review · commit 88e24da · see the review dashboard
…ss notes (#38) The three release-session plan files in .agents/plans/ were mostly stale: every shipped code finding from them is already on development. Close them out by checking items against the current tree, and move the few still-useful notes into AGENTS.md so future sessions don't have to dig through three plan files to find them. Plan-by-plan: * klepon (token-source + builds API): all scope items landed. Unit tests for token.rs (CountingSource in crates/core/src/client.rs, StaticToken / boxed source in crates/core/src/token.rs) cover the 'Client::new over a custom TokenSource' gap; the MCP list_builds tool already constructs BuildFilter from the request. The separate 'stale AuthKey_<id>.p8' finding is now documented in AGENTS.md under 'App Store Connect key location'. * sitiai (upload + signing-identity hardening): all six findings landed. Pre-flight altool --validate-app, body-aware success, .app-vs-.pkg distinction shipped in crates/frontend/src/upload.rs; asc signing doctor (PR #25); asc apps await-processing (PR #26); list_builds pagination doc (PR #24). The credential-blocked live ASC smoke test is the one remaining item and is shared with the klepon plan. * splitfire (TestFlight release session): testflight CLI surface shipped; the 'rebuild asc first' warning and the finish-the-release recipe are now in AGENTS.md under 'Verify before relying on a freshly built asc' and 'Finish-the-release recipe (TestFlight)'. AGENTS.md (symlinked from the repo root as both AGENTS.md and CLAUDE.md) gains three short sections instead of one big paragraph, so a reader scanning the doc index can find each rule directly. Verified locally: cargo fmt --check, cargo clippy -D warnings, cargo test, RUSTDOCFLAGS=-D warnings cargo doc --workspace, and the lower-crate solo builds (core / aso / signing) all clean. Co-authored-by: OndeCode v1.0.3-acp <noreply@ondeinference.com>
Add a read-only signing health check that cross-references the login
keychain against Apple's certificates and reports which ASC certificates
this machine can actually sign with (private key present locally).
asc signing doctorsubcommand, JSON outputCo-Authored-By: siGit Code v1.6.7-acp noreply@sigit.si
Stack created with GitHub Stacks CLI • Give Feedback 💬