Skip to content

Fix all open Codex recovery-capture findings on PR #4 - #5

Merged
BleedingDev merged 7 commits into
fix/recovery-review-followupsfrom
fix/codex-recovery-capture
Sep 22, 2026
Merged

BleedingDev merged 7 commits into
fix/recovery-review-followupsfrom
fix/codex-recovery-capture

Conversation

@BleedingDev

@BleedingDev BleedingDev commented Sep 22, 2026 •

Copy link
Copy Markdown
Owner

Runtime fixes and regression tests for the open Codex comments on PR #4. Targets PR #4's branch, not main; merge #5 before #4. Current head: 1438b9c9d9a8b97e73aec8782867597703135875.

PR #4 concurrently copied our earlier fixes into b410efc. This branch incorporates that commit without discarding changes and is conflict-free.

  • Original findings: environment values stay out of page evaluation arguments; passive capture skips absent future frames; sensitive/protected controls are classified before reading values.
  • Latest retention finding: persist a boundary before environment-backed dispatch so formatters, replacement nodes, and mirrored values cannot be captured as public recovery data. Automatic recovery-value capture stays suspended for the run, including resume/reconstruction and Jev handoff. Prior snapshots and explicit non-secret input intents remain usable. Legacy receipts without provenance are handled conservatively.
  • Preserve visible=false for an absent control, without relaxing required frame scopes.
  • Resolve protected frame paths once per snapshot; no cross-snapshot cache.

Full CI is green: run 35740049668. Across this work, 30 added real-Chrome cases and four added Python tests pass, together with existing Jev/Midscene, crash-recovery, MCP-image, alias/rerender, unit/protocol and audit checks. The original tests-only run reproduced 16 failures before the first fixes.

Every review thread has a fix/evidence reply. PR #4's two newest threads remain open until these fixes reach that branch; both follow-ups on #5 are resolved. No runtime dependencies, Action pins, operational skills or design docs changed. No production accounts or paid-model calls. This is targeted recovery protection, not general secret redaction or cleanup of previously saved files.

Exercise environment-array exposure in page callbacks, future and nested iframe scopes, sensitive value getters, and existing fail-closed expectations through the real page worker. Use only local fixtures and synthetic environment values.
Keep environment-value comparisons in Node instead of passing secrets into page-realm evaluations. Reject protected identities and sensitive controls before reading value getters, retaining Playwright's atomic shadow-aware protection.

Resolve only currently present recovery/protected frame scopes without waits; preserve strict malformed/ambiguous/action/check handling. Skip capture entirely without recovery fields, and re-evaluate protection when later frames appear.
@semanticdiff-com

semanticdiff-com Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

Review changes with  SemanticDiff

Changed Files
File Status
  src/page-worker.ts  8% smaller
  package.json  5% smaller
  .github/workflows/ci.yml  0% smaller
  test/environment-retention.smoke.mjs  0% smaller
  test/recovery-capture.smoke.mjs  0% smaller
  worker/jev_runner.py  0% smaller
  worker/tests/test_jev_retention.py  0% smaller

@bolt-new-by-stackblitz

Copy link
Copy Markdown

Review PR in StackBlitz Codeflow Run & review this pull request in StackBlitz Codeflow.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-22T14:28:25.553848Z 1438b9c New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5f1a0f4b46

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/page-worker.ts Outdated
BleedingDev added a commit that referenced this pull request Sep 22, 2026
Apply the recovery capture fixes and regression coverage from stacked PR #5
(source commit 50889f2) directly to PR #4.

- Keep environment-secret comparisons in Node, outside page evaluations.
- Skip absent future frame scopes during passive capture and bypass empty
  recovery allowlists without relaxing required action or assertion scopes.
- Reject protected identities and sensitive controls before reading values,
  preserving pinned-node and shadow-aware checks.
- Cache protected frame traversal within each recovery snapshot.
- Include 21 real-Chrome regressions in the browser command and CI.

Addresses Codex review comments 4061550418, 4061550427, and 4061578096.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 50889f2bb8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/page-worker.ts
Assert that eight recovery fields and twenty protected steps over two frame paths require only three path lookups per snapshot, and that the next snapshot resolves afresh. Keep the legacy visible=false result for an absent top-level control and cover it alongside strict missing-frame checks.
The base branch copied source commit 50889f2 into b410efc; their trees are identical. Preserve that base change and our tested b3cc23e tree, including restored zero-match visibility and the per-snapshot frame-query regression. No working-tree content changes from b3cc23e.
Persist a recovery-value capture suspension before an environment-backed UI dispatch. Current selectors and exact value equality cannot prove a transformed or rerendered credential became public. Preserve prior snapshots and explicit non-secret input intents, while preventing later automatic observations from replacing them.

Honor the same durable boundary in managed Jev, including across reattachment, reconstruction, missing environment values and legacy Playwright receipts without provenance. Keep protected-alias preflight checks active in the scoped adapter.

Add eight real-Chrome formatter/mirror/reconstruction tests, cross-language handoff assertions, and four Python policy tests. No new dependencies or documentation. Addresses PR #4 comment 4072551621.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1438b9c9d9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/page-worker.ts
Comment on lines +112 to +116
const legacy = steps.some(s => s.valueFromEnv !== undefined) && events.some(e =>
e.type === "action.start" && e.data.engine === "playwright" && e.data.recoveryGuarded !== true);
if (suspended || legacy) {
if (!suspended) suspendRecoveryCapture(journal);
save = false; // Still reject known protected aliases, but never read new page values.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Purge snapshots from legacy environment-input runs

When resuming a run created by the previous implementation, an unguarded environment-backed fill may already have completed its post-action capture and written a transformed or mirrored secret into recovery.json. This branch merely sets save = false, so that untrusted value remains persisted and can later be consumed through valueFromRecovery; detecting a legacy boundary must quarantine or remove the existing recovery payload rather than only preventing future captures.

AGENTS.md reference: AGENTS.md:L9-L9

Useful? React with 👍 / 👎.

BleedingDev added a commit that referenced this pull request Sep 22, 2026
Adopt the existing, CI-validated conservative safeguard from PR #5 head
1438b9c, preserving this branch's added
visibility regressions and documenting the recovery tradeoff.

Persist a capture-suspended boundary before environment-backed dispatch;
honor it across resume, reconstruction, Jev and Midscene. Prior snapshots
and explicit non-secret Playwright fill intents remain usable. Do not try
to track transformed secrets through node replacements or page formatters.

This supersedes the initial deferral in cb060b2: the concurrent PR supplies
a small fail-closed policy rather than a taint-tracking subsystem. Include
its browser/Python regressions and keep dependencies unchanged.

Addresses Codex review comment 4072551621.
@BleedingDev
BleedingDev merged commit aee980c into fix/recovery-review-followups Sep 22, 2026
2 checks passed
@BleedingDev
BleedingDev deleted the fix/codex-recovery-capture branch September 22, 2026 21:21
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