Repository navigation
feat(apps): add await-processing to poll builds to terminal state - #26
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>
11551e1 to
0266d21
Compare
There was a problem hiding this comment.
This change introduces a new CLI subcommand asc apps await-processing <APP_ID>, which polls the App Store Connect API for the latest build matching the given app and optional version filters, waiting until the build reaches a terminal processing state (VALID, INVALID, or FAILED) or a timeout occurs. The polling logic, state classification, and result struct (AwaitOutcome) are implemented in a new shared module (await_processing.rs) in the frontend crate, with unit tests for classification and outcome logic. The CLI integration in main.rs wires up argument parsing, configures polling intervals and timeouts, and handles the result, exiting with an error if the build is not valid or if the wait times out. The frontend crate now depends on tokio for async sleep. No previous findings are present, and the implementation is modular and testable as described in the request.
Automated review by siGit Code Review · commit 0266d21 · see the review dashboard
Adds `asc apps await-processing <APP_ID>`, which polls
GET /v1/builds?filter[app]={id} until the newest matching build
reaches a terminal state (VALID succeeds; INVALID/FAILED fail) or
times out. Flags: --version, --pre-release-version,
--interval (default 30s), --timeout (default 1800s).
The poll loop and pure classify()/AwaitConfig/AwaitOutcome live in
the shared frontend crate (await_processing.rs) so the behaviour is
testable and reusable; AwaitOutcome serializes without key material.
Co-Authored-By: siGit Code v1.6.7-acp <noreply@sigit.si>
0266d21 to
a7f3e08
Compare
…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>
Adds
asc apps await-processing <APP_ID>, which pollsGET /v1/builds?filter[app]={id} until the newest matching build
reaches a terminal state (VALID succeeds; INVALID/FAILED fail) or
times out. Flags: --version, --pre-release-version,
--interval (default 30s), --timeout (default 1800s).
The poll loop and pure classify()/AwaitConfig/AwaitOutcome live in
the shared frontend crate (await_processing.rs) so the behaviour is
testable and reusable; AwaitOutcome serializes without key material.
Co-Authored-By: siGit Code v1.6.7-acp noreply@sigit.si
Stack created with GitHub Stacks CLI • Give Feedback 💬