Repository navigation
Conversation
ADR 0019 requires request bindings to dispose before device/session lock release. Await the shared cleanup outcome under initial and retained execution locks, then let response finalization preserve primary failures and report cleanup failures. At base 4c1c786, six blocked-cleanup regressions fail: queued same-session or same-device requests enter on success, throw, and cancellation. With the fix all six pass; the scope and open-wait suites pass (42 tests). No request-binding disposal bound exists; no timeout was added. Device dispatch is unchanged.
ADR 0012 requires authored observations and explicit --record corrections to survive healed-script publication. Carry their typed publication intent from recording into the writer instead of stripping every snapshot. Retain ordinary diagnostic-snapshot optimization. Isolated regression at base 4c1c786: authored and explicit-record persisted snapshots and the correction-count/resume publication scenario all fail (3 regressions); all pass with the fix. Combined before: 9 failed, 43 passed; after: 52 passed. Recorder/resume focused coverage also passes (82 tests). Device dispatch is unchanged.
There was a problem hiding this comment.
No issues found across 7 files
You’re at about 91% of the monthly reviewed-line limit. You may want to disable incremental reviews to conserve quota. Reviews will continue until that limit is exceeded. If you need help avoiding interruptions, please contact contact@cubic.dev.
Size Report
Startup median (7 runs, lower is better):
|
ADR 0012 decision 6 preserves authored observations through replay provenance. Non-observation wait and diff requests must not acquire authored intent from their false observation classification. Regression proof on 17b30bf plus tests: 2 failed, 31 passed (interactive wait/diff received authored intent). With the fix: 33 passed.
ADR 0012 decision 6 preserves the authored replay path. The initial snapshot composed by open --foreground is not a source step and must not inherit its recording intent, including a configured record flag. Regression proof on 17b30bf plus tests: 2 failed, 13 passed because composite snapshots entered session.actions. With noRecord on the synthetic capture: 15 passed; capture response remains successful.
ADR 0012 decision 6 requires authored observations to survive the entire repair publication path. Exercise a source snapshot -i through replay, close, healed-file parsing and fresh-session replay. Isolated regression: restore the writer from dacec4a (before snapshot retention) in the 17b30bf checkout plus this test. The selected case fails because the healed snapshot is missing (1 failed, 5 skipped). With retention: 1 passed, 5 skipped; full repair-recording suite: 6 passed.
ADR 0012 decision 6 scopes --record observation retention to repair-armed sessions. Preserve ordinary authoring snapshot exclusion even when project configuration supplies record=true; keep authored source observations and explicit repair corrections. Regression proof on 17b30bf plus tests: 1 failed, 1 passed, 39 skipped (ordinary record=true published a diagnostic snapshot). With the fix: 2 passed, 39 skipped. All four focused suites: 95 passed.
|
The PR is ready. I reviewed commit 49a4033 and found no blocking problems in the code. Not blocking: these notes can be taken or left. (1) The Unreleased section of CHANGELOG.md has no entry for two user-visible changes: authored and I found no conflicts. The iOS Smoke Tests job failed at "wait for the deep-link destination (5/5)" with APP_NOT_RUNNING, reason |
Address #3760 (comment). Read explicit recording from the existing action flags, retain authored provenance, add the Unreleased notes, and synchronize lock tests with queue insertion.
There was a problem hiding this comment.
1 issue found across 7 files (changes from recent commits).
You’re at about 95% of the monthly reviewed-line limit. You may want to disable incremental reviews to conserve quota. Reviews will continue until that limit is exceeded. If you need help avoiding interruptions, please contact contact@cubic.dev.
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="packages/daemon/src/core/session-script-writer.ts">
<violation number="1" location="packages/daemon/src/core/session-script-writer.ts:318">
P2: This treats the effective `record` flag as proof that the observation explicitly opted into repair retention. Because `record` is also allowed as a project-config default, a repair session with that setting will retain every diagnostic snapshot and can reintroduce the self-inflicted divergences this exclusion is meant to prevent; preserve explicit-vs-config provenance when recording the action.</violation>
</file>
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
| if ( | ||
| action.command === 'snapshot' && | ||
| action.publicationIntent !== 'authored' && | ||
| !(repairArmed && action.flags.record === true) |
There was a problem hiding this comment.
P2: This treats the effective record flag as proof that the observation explicitly opted into repair retention. Because record is also allowed as a project-config default, a repair session with that setting will retain every diagnostic snapshot and can reintroduce the self-inflicted divergences this exclusion is meant to prevent; preserve explicit-vs-config provenance when recording the action.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At packages/daemon/src/core/session-script-writer.ts, line 318:
<comment>This treats the effective `record` flag as proof that the observation explicitly opted into repair retention. Because `record` is also allowed as a project-config default, a repair session with that setting will retain every diagnostic snapshot and can reintroduce the self-inflicted divergences this exclusion is meant to prevent; preserve explicit-vs-config provenance when recording the action.</comment>
<file context>
@@ -315,7 +315,7 @@ function buildOptimizedActions(
action.command === 'snapshot' &&
action.publicationIntent !== 'authored' &&
- !(repairArmed && action.publicationIntent === 'explicit-record')
+ !(repairArmed && action.flags.record === true)
) {
continue;
</file context>
|
Addressed all four maintainer notes in eb30491:
iOS diagnosis: the original artifact screenshot shows unanswered “Open in Agent Device Tester?” confirmation; runner Validation: five focused suites, 104 passed; affected gate Head CI: lint/typecheck/package, size, native fingerprint and CodeQL passed; smoke, guards, integration, coverage and cubic pending. Not merge-ready yet. Review threads: 0 fixed / 0 already fixed / 0 rejected (none exist). |
Summary
--recordsnapshots in healed scripts; exclude foreground composite captures (ADR 0012). Explicit recording uses existing action flags; only authored provenance needs separate storage.Validation
eb304913e7daf7e4d5280a8783828b09d131689b.pnpm format; five focused suites: 104 passed. Parser acceptssnapshot --recordbut discards the flag; publication round-trips the retained snapshot without it.pnpm check:affected --run --head HEADpassed (run-XYy1Xj,exactCommit=true,checkoutChanged=false): seven checks, 2,302 tests; seven parked/GitHub-owned skips.pnpm exec vitest run --project unit-core packages/daemon/src/core/__tests__/request-runtime-binding-router.test.ts --maxWorkers=1): merge-base4c1c7869686 failed/2 passed, head 8 passed. Only the test was copied; base execution scope stayed unchanged. Queue insertion replaces the timing tick. Disposable checkout removed.APP_NOT_RUNNING/wait_capture_stalled. Independent failure has identical symptoms and merge-base execution-scope code. The single original-job rerun was cancelled while queued after the follow-up push; new-head CI is pending.