Skip to content

feat(signing): add macOS signing doctor - #25

Merged
setoelkahfi merged 3 commits into
docs/list-builds-paginationfrom
feat/signing-doctor
Oct 11, 2026
Merged

setoelkahfi merged 3 commits into
docs/list-builds-paginationfrom
feat/signing-doctor

Conversation

@setoelkahfi

Copy link
Copy Markdown
Contributor

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


Stack created with GitHub Stacks CLI • Give Feedback 💬

@setoelkahfi
setoelkahfi added this pull request to stack #27 October 11, 2026 18:49
setoelkahfi added a commit that referenced this pull request Oct 11, 2026
…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>
@setoelkahfi
setoelkahfi requested a review from paydii October 11, 2026 19:07
@setoelkahfi setoelkahfi self-assigned this Oct 11, 2026
setoelkahfi and others added 2 commits October 11, 2026 21:14
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>
@paydii
paydii marked this pull request as ready for review October 11, 2026 19:15

@sigit-code-review sigit-code-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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>

@sigit-code-review sigit-code-review Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@setoelkahfi
setoelkahfi merged commit ce9e1ff into development Oct 11, 2026
2 checks passed
@setoelkahfi
setoelkahfi deleted the feat/signing-doctor branch October 11, 2026 22:10
setoelkahfi added a commit that referenced this pull request Oct 13, 2026
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants