fix(web,mobile): explicit Cancel on Astra confirm card (#194) - #358
Merged
Conversation
Add a Cancel/Dismiss affordance to the pending-operation confirm card on both platforms. Cancel uses a local `dismissed` state that early-returns null and calls no mutation (onConfirmExecute/onPrepareStepUp/onVerifyStepUp), so nothing changes server-side. Scoped to the initial confirm action row; reuses the existing common.cancel key. Tests on each platform assert Cancel does not trigger the mutation and unmounts the card. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
|
thomasluizon
added a commit
that referenced
this pull request
Aug 23, 2026
…ry the probe evidence Answers the third Pullfrog pass. The [skip ci] removal claimed more than it delivered: the baseline push uses the workflow's GITHUB_TOKEN, and GitHub never starts runs for events that token causes, so the bot head gets no required checks either way. The comment now states that contract and the operator step that puts checks on the head. The --skip-repo semantics are proven by a real invocation against a repo with a foreign hook, recorded in the PR body: plain install reproduces CI's exit 2, --skip-repo exits 0, sets the four filter keys, and leaves the hook byte-identical. Ticket: #358 in the ticket repository, thomasluizon/orbit-tickets#358 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
thomasluizon
added a commit
that referenced
this pull request
Aug 23, 2026
…port what a kill left behind (#744) * fix: count log growth and process-tree CPU as worker progress, and report what a kill left behind The watchdog measured progress as HEAD moving or a file changing, so a worker inside one long child process, a full test suite or a CI wait, was indistinguishable from a hung one. Six workers holding finished, committed work were killed in one night, every one with a failing exit code. Progress is now any of three signals, cheapest first: the original fingerprint, growth of the worker's own log, and CPU burned by the process tree since the last silent sample. The log signal is safe because KILLED_LOG_RUNAWAY bounds a flood by byte count, which is what answers ORB-201. A genuinely idle and silent tree is still killed. A kill now reports the commits and tree state it left behind in the result JSON, and exits 4 instead of 1 when committed work is present. The hard ceiling takes a per-launch override for a ticket that legitimately outruns the fleet-wide default. Ticket: thomasluizon/orbit-tickets#358 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix: clamp CPU snapshots on child exit, assert per platform, and wire the ceiling override into the callers Answers the Pullfrog review. The CPU number is a snapshot of live processes, so a child exiting mid-window makes the total drop; the sampler now rebases on a drop instead of demanding the survivors re-earn a dead child's history, and the comment names the short-lived-children blindness plus the log signal that covers it. The confirmed CIM sample rows are inlined verbatim. The burner test asserts the platform's real contract: hard ceiling on Windows, no-progress kill where the probe is deliberately absent. tools/README.md and the orchestrate skill's two launch surfaces now carry --hard-ceiling-minutes so the escape hatch is reachable from the canonical flow. Ticket: thomasluizon/orbit-tickets#358 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix: count log growth only while the byte cap bounds it, and state the CPU signal's real limits Answers the second Pullfrog pass. Log growth held the stall clock open even in a configuration with no caps.workerLogMegabytes, where nothing bounds a flood; the signal now counts only while the cap exists, with a test proving an uncapped drip worker still dies on the stall clock. The CPU comment names the dead-intermediate break honestly: a single snapshot cannot see across it without native job objects, the log signal covers that shape, and a kill still requires every signal silent. The complete CIM invocation, output and exit status are now in the PR body beside the inlined rows. Ticket: thomasluizon/orbit-tickets#358 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * chore: re-baseline the generated API contract snapshot against orbit-api main The Contract Drift gate fails every pull request in this repository since orbit-api merged the step-up creation-challenge endpoints and the richer chat response shapes. The drift is additive and nothing this consumer reads changed, so no hand-written schema moves; the snapshot is regenerated per packages/shared/CONTRACT_DRIFT.md to re-baseline. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * fix: install only the LFS filters in the baseline re-seed step, since lefthook owns the hooks The visual:update label path could never commit: git lfs install exits 2 refusing to overwrite the lefthook hooks, so the re-seed died at the commit step on every run since lefthook landed. --skip-repo installs the clean and smudge filters without touching hooks, which is all the PNG add needs. Flag confirmed against git-lfs 3.7.1's own help. Ticket: thomasluizon/orbit-tickets#358 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * test(web): update hermetic visual baselines (#461 B1) [skip ci] * fix: drop [skip ci] from the baseline commit, which stranded its pull request without required checks main requires 21 status checks on the head, so a bot baseline commit carrying [skip ci] left the pull request permanently unmergeable. The no-change guard in the same step already prevents a seed loop, since re-seeding an unchanged rendering stages nothing to commit. Ticket: thomasluizon/orbit-tickets#358 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs: state the real trigger contract on the baseline commit, and carry the probe evidence Answers the third Pullfrog pass. The [skip ci] removal claimed more than it delivered: the baseline push uses the workflow's GITHUB_TOKEN, and GitHub never starts runs for events that token causes, so the bot head gets no required checks either way. The comment now states that contract and the operator step that puts checks on the head. The --skip-repo semantics are proven by a real invocation against a repo with a foreign hook, recorded in the PR body: plain install reproduces CI's exit 2, --skip-repo exits 0, sets the four filter keys, and leaves the hook byte-identical. Ticket: #358 in the ticket repository, thomasluizon/orbit-tickets#358 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



The Astra clarification chips + confirm cards from #194 were already shipped (under #100/#163/#172/#175). The one gap against the acceptance criteria was the confirm card having a Confirm action but no explicit Cancel — so "tap Cancel → nothing changes" was only met implicitly.
Change
Adds an explicit Cancel/Dismiss affordance to the confirm card (
pending-operation-card.tsx) on both platforms (parity), using a localdismissedstate that hides the card and calls no mutation. Reuses the existingcommon.cancelkey (already in both locales — no new i18n). Tests assert Cancel triggers no mutation and unmounts the card.Validation: web 3/3 + mobile 4/4 pending-operation-card tests pass; lint clean.
Closes #194.
🤖 Generated with Claude Code