Skip to content

ci(release): rely on main ruleset for fast-check authorization - #91

Merged
thiagobrez merged 9 commits into
mainfrom
ci/ios26-detox-pointer-route
Sep 5, 2026
Merged

thiagobrez merged 9 commits into
mainfrom
ci/ios26-detox-pointer-route

Conversation

@thiagobrez

Copy link
Copy Markdown
Owner

What changed

Removed the release workflow's same-commit polling of the CI and Documentation workflow results. The main ruleset now provides the fast-check guarantee, while the release workflow retains exact tarball verification before publication. Updated the release documentation and ADR to describe the revised authorization boundary.

Verification

  • I added or updated user-observable tests where relevant.
  • I ran yarn typecheck, yarn lint, and the relevant tests.
  • I ran yarn docs:build when documentation or public API changed.
  • I ran the relevant device/performance checks for interaction or performance changes.

Release surface

  • I added a Changeset for a user-visible package change, or this change does not affect the published package.
  • I updated the canonical guides, generated API manifest, or type-checked teaching examples when their public contract changed.

thiagobrez and others added 9 commits September 4, 2026 00:08
The first pointer gesture the Agent Device XCTest runner synthesizes into a
freshly erased, cold-booted iOS 26.5 simulator on hosted runners arrives
seconds late or never while injection reports success (#54), which is the
release pipeline's dominant failure. The ios26.auto-fallback cell's unique
responsibility is proving automatic engine selection picks the fallback
engine, and Detox pointer synthesis proves that equally.

Delete the five ios26.auto-fallback pointer overrides so they fall through to
the default Detox driver, and flip the matching route-table entries, which is
what scripts/run-device-contract-isolated.mjs dispatches on. Scenario
definitions, terminal public-outcome assertions, and the four-engine parity
comparison are unchanged.

Add a test asserting every route equals the driver its pointer plan resolves
to, so the route table and the override map cannot drift into starting a
harness that has no plan for the scenario.

Refs #65

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Pulled forward from the CI overhaul plan (4/9, #68) because the first
Detox-routed iOS 26 contract run failed inside this apparatus, and the
tarball-approval required check gates on the contract, feedback, and parity
jobs — nothing can merge to main until the iOS 26 job is green, including
the PRs that were scheduled to delete this code.

The failing assertion ("drag released before feedback sampling") did not
mean the drag was short: the five drag scenarios held the destination for
8000ms, well past the ~4.9s sampling window. It fired because the Detox
gesture promise settled early and the sampling assert masked the real
error, which the catch had swallowed.

Remove the proof end to end, as decided in #55 and recorded in ADR 0006
(2026-09-01 amendment): the feedback workflow job and its approve-candidate
edge, the Vision OCR analyzer, the report verifier and its specs and
fixtures, the mid-hold sampling in both pointer runners, the mtime-poll IPC
and its baseline/gesture-marker/terminal screenshots in the replay scripts,
the sampling constants in pointer-timing.json, and the feedback evidence
category in the retry shells. Drag scenarios drop their 8000ms destination
hold and use the gesture's own 2000ms default; the Agent Device replay
gesture timing is unchanged. The deep-link confirmation marker, previously
written when the baseline screenshot appeared, is written on successful
replay exit instead.

Detox per-test video and screenshot recording stays as the human-reviewable
visual record. The exit-75 infra/contract retry protocol, per-attempt
evidence isolation, and the four-engine parity comparison are untouched.

Refs #68 #65

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Deterministic RNTL proof that the drag-preview overlay and the
destination-feedback highlight activate during a simulated drag and
deactivate at release, replacing the excised OCR/pixel
screenshot-feedback gate for the broken-render-wiring regression class
(ADR 0006, 2026-09-01 amendment).

Mutation checks: fails when the overlay start dispatch is removed and
when the destination-feedback opacity wiring is broken. Passed 10/10
under --runInBand and 10/10 under --maxWorkers=2.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…t-execution tests (#66)

Drop the 8 tests that asserted against workflow YAML and package.json
content -- they failed whenever the YAML was edited, not when it was
wrong, and the CI overhaul is all edits. The 3 script-execution tests
survive in scripts/__tests__/consumer-scripts.test.mjs, renamed to
match its remaining content.

Each invariant that survives the gate map is preserved as a comment
beside the line it guards: per-event concurrency groups (ci.yml,
docs.yml; exact-package-candidate.yml already had one), detox
build-framework-cache ordering, Gradle invoked from the generated
consumer directory, and the Jest self-reference mapping in
package.json.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ract suite (#66)

Follow-up to 4864204: issue39-device-contract.test.ts also read
exact-package-candidate.yml and asserted against its text (matrix
configuration names, timeout-minutes, api-level, profile, retry flags,
job-runner path). Same change-detector failure mode the issue removed
from ci-fixtures.test.mjs -- they trip when the workflow is edited, not
when it is wrong, and the remaining overhaul tasks are all edits. The
script/config assertions in those tests stay.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
JSON cannot carry a real comment and the "//" convention reads as an
accident in review; the Jest self-reference invariant stays documented
by the mapping itself.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The main ruleset (PRs required, strict up-to-date checks, zero bypass
actors) is the authorization that every main SHA passed the fast set;
the sha256-pinned tarball chain remains the only runtime verification.
ADR 0010 amended to record the move.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The gh run list gate that enforced it was deleted; the main ruleset's
required pull-request checks now carry that guarantee.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@thiagobrez

Copy link
Copy Markdown
Owner Author

No changeset needed

@thiagobrez
thiagobrez merged commit 9a50e91 into main Sep 5, 2026
27 of 28 checks passed
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.

1 participant