Skip to content

docs(adr): accept 0038 snapshot capture source routing - #4255

Merged
thymikee merged 5 commits into
mainfrom
docs/adr-snapshot-source-routing
Nov 6, 2026
Merged

thymikee merged 5 commits into
mainfrom
docs/adr-snapshot-source-routing

Conversation

@thymikee

@thymikee thymikee commented Nov 6, 2026 •

Copy link
Copy Markdown
Member

Accepts ADR 0038, "Snapshot capture source routing", for #4205 as a one-page decision record. It has six sections: Status, Context, Decision, Rationale, Rejected alternatives, and Consequences.

  • Decision: one platform-neutral router in capture-kit for owners with more than one snapshot source (today the local and Limrun iOS Simulators). One-source owners stamp identity and declare a producer registry row. At most one fallback, and cancellation is terminal. Refusals have capture, app-generation, and runner-session scope, and unknown codes fail closed. Surface proof is per capture and is never cached.
  • Moved to Route snapshot capture sources through one platform-neutral router #4205: the migration plan, the guard inventory, and the detailed design (source interface, planner mechanics, per-owner inventory).
  • ADR 0004: the Status now points source routing at 0038. Its iOS routing rules still describe the current code until the router lands.
  • Open gaps: the router and the registry do not exist yet, and the runner-session scope waits for fix(apple): recover runner snapshot bridge after a wedge or restart #4256.

Docs only. Codex reviewed the rewrite for meaning drift against the proposal and the code, and its fixes are applied.

@apex-sentinel-staging

apex-sentinel-staging Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Apex Sentinel

Verdict: approve

Since the last review: 0 new · 0 still open · 0 no longer raised

No findings.

Not in the reviewers' prompt (3 files)
  • docs/adr/0004-ios-snapshot-backend-strategy.md: no reviewer was selected for this change
  • docs/adr/0038-snapshot-capture-source-routing.md: no reviewer was selected for this change
  • docs/adr/README.md: no reviewer was selected for this change

Reviewed with this repository's own Sentinel configuration (90c959518e46).

Reply under an inline comment with @apex-sentinel-staging note ... or @apex-sentinel-staging pivot ... to re-check that finding.
Comment @apex-sentinel-staging review on this conversation to run a full review.

Earlier reviews

Review of fcf318e6 · 06.11.2026 07:24 UTC

Apex Sentinel

Verdict: approve

Since the last review: 0 new · 0 still open · 0 no longer raised

No findings.

Not in the reviewers' prompt (3 files)
  • docs/adr/0004-ios-snapshot-backend-strategy.md: no reviewer was selected for this change
  • docs/adr/0038-snapshot-capture-source-routing.md: no reviewer was selected for this change
  • docs/adr/README.md: no reviewer was selected for this change

Reviewed with this repository's own Sentinel configuration (90c959518e46).

Review of 7ef34903 · 06.11.2026 07:23 UTC

Apex Sentinel

Verdict: approve

Since the last review: 0 new · 0 still open · 0 no longer raised

No findings.

Not in the reviewers' prompt (3 files)
  • docs/adr/0004-ios-snapshot-backend-strategy.md: no reviewer was selected for this change
  • docs/adr/0038-snapshot-capture-source-routing.md: no reviewer was selected for this change
  • docs/adr/README.md: no reviewer was selected for this change

Reviewed with this repository's own Sentinel configuration (90c959518e46).

Review of fd031ee7 · 06.11.2026 07:20 UTC

Apex Sentinel

Verdict: approve

Since the last review: 0 new · 0 still open · 0 no longer raised

No findings.

Not in the reviewers' prompt (3 files)
  • docs/adr/0004-ios-snapshot-backend-strategy.md: no reviewer was selected for this change
  • docs/adr/0038-snapshot-capture-source-routing.md: no reviewer was selected for this change
  • docs/adr/README.md: no reviewer was selected for this change

Reviewed with this repository's own Sentinel configuration (38038786abfc).

Review of cb154095 · 06.11.2026 05:04 UTC

Apex Sentinel

Verdict: approve

No findings.

Not in the reviewers' prompt (3 files)
  • docs/adr/0004-ios-snapshot-backend-strategy.md: no reviewer was selected for this change
  • docs/adr/0038-snapshot-capture-source-routing.md: no reviewer was selected for this change
  • docs/adr/README.md: no reviewer was selected for this change

Reviewed with this repository's own Sentinel configuration (b42c7c265f07).

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

All reported issues were addressed across 3 files

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic

@thymikee

thymikee commented Nov 6, 2026

Copy link
Copy Markdown
Member Author

I found no code defects at cb15409, and all 9 checks pass (this docs-only diff touches no runtime job route). There are no conflicts. Before merge, please decide whether to accept the proposal now or keep it in #4205 until it is accepted. If accepted, move the migration and guard inventory to #4205 and fix the "if verified" wording for unknown codes.

Not blocking, and you can take or leave these: the single-source list at 0038:112 binds WebDriver, Revyl, HarmonyOS, Linux, TV CDP and composing providers to router channels, but #4205 requirement 4 names only iOS local, iOS provider, Android, macOS and web. A clearer rule would be that owners with more than one channel route through the router, and every owner stamps identity through the capture-kit helper and declares a registry row. The file is also slightly over the ~8 KB aim in FORMAT.md, and moving the migration list to #4205 fixes that.

Simplicity question: could the router and generation circuits stay only for owners with an alternate (local and Limrun iOS Simulators), with the contracts producer registry kept for every producer, and one-channel owners getting just the shared identity-stamp helper plus their registry row? That would still close the placeholder ports, split eligibility, three fallback settlers and six producer tables, without moving nine single-source providers through a planner that never chooses. #4205 requirement 4 and its completion conditions would need to name multi-channel owners only first, or the ADR's rationale would need to accept the wider scope explicitly.

The open inline threads still apply for the migration checklist, unknown-code wording and one lower-priority thread on ADR timing. Two do not apply, so you can resolve them: proof reuse (proof is passed into acquire and absence is never reused across captures) and quiet time (it is already derived per capture from the served producer).

…lan to #4205

- Route only owners with more than one channel through the router. Every
  producer stamps identity through capture-kit and declares a registry row.
- Give unknown refusal codes generation scope without a verification condition.
- Add the runner-session scope from #4241.
- Derive quiet time per capture from the served producer.
- Move the migration plan and the guard inventory to #4205.
Keep only the decisions, reasons, rejected alternatives, and consequences.
Move the source interface, planner mechanics, and per-owner inventory to #4205.
Keep the constraints that the code cannot show: unproven is not clear,
cancellation is terminal, no circuit without a verified generation, and a
served surface owns its identity. Amend the ADR 0004 status to point at 0038.
Limit the no-generation rule to app-generation refusals, scope surface proof
to captures that need it, keep integrated checks for unproven absence, and
scope the rationale to multi-source owners.
@thymikee thymikee changed the title docs(adr): propose platform-neutral snapshot source routing docs(adr): accept 0038 snapshot capture source routing Nov 6, 2026

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

All reported issues were addressed across 3 files (changes from recent commits).

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic

@thymikee

thymikee commented Nov 6, 2026

Copy link
Copy Markdown
Member Author

This PR is ready at fcf318e. The findings from the earlier review (#4255 (comment)) are fixed, and I found no new problems in the ADR.

Not blocking, take or leave: the "One-source owners" rule says the owner stamps identity through the capture-kit helper, but that helper does not exist on main yet (#4205 step 4 adds it), so please add it to the "Open gaps" line, for example "the router, the identity-stamp helper, and the producer registry do not exist yet" (https://github.com/callstack/agent-device/blob/fcf318e/docs/adr/0038-snapshot-capture-source-routing.md#L26).

All 9 checks pass, and the diff only touches docs/adr files, so no runtime job route applies. There are no conflicts. Nothing else must happen before merge.

The open thread asking for a "Rules at a glance" section (#4255 (comment)) does not apply, because FORMAT.md makes sections optional and ADR 0036 has none, so it can be resolved. One question: #4205 links to a commit on this PR branch; will that link still resolve after a squash merge?

@thymikee thymikee added the ready-for-human Valid work that needs human implementation, judgment, or maintainer merge label Nov 6, 2026
@thymikee

thymikee commented Nov 6, 2026

Copy link
Copy Markdown
Member Author

Addressed at 74e1a6e:

@thymikee
thymikee merged commit 7335965 into main Nov 6, 2026
9 checks passed
@thymikee
thymikee deleted the docs/adr-snapshot-source-routing branch November 6, 2026 08:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-for-human Valid work that needs human implementation, judgment, or maintainer merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant