Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
b4c1aa7
test(browser): require forced-close failure teardown evidence
seonghobae Aug 13, 2026
fbada6a
Merge current forced-close teardown prerequisite
seonghobae Aug 13, 2026
e0737d6
fix(browser): retain forced-close failure teardown proof
seonghobae Aug 13, 2026
36f6d6f
chore(stack): absorb corrected late-failure prerequisite
seonghobae Aug 18, 2026
171f365
test(browser): prevent state diagnostic reflection
seonghobae Aug 20, 2026
830be53
fix(mv3): redact agent task state failures
seonghobae Aug 20, 2026
371ce49
test(mv3): expose wedged driver teardown escape
seonghobae Aug 21, 2026
7f7a4ec
fix(mv3): bound forced-close driver teardown failures
seonghobae Aug 21, 2026
7e4a867
test(mv3): require bounded driver teardown evidence
seonghobae Aug 21, 2026
1731883
test(browser): require kill fallback evidence
seonghobae Aug 21, 2026
c3291dc
fix(browser): retain kill fallback evidence
seonghobae Aug 21, 2026
ae0789b
test(browser): preserve kill fallback evidence
seonghobae Aug 21, 2026
cb2b887
test(browser): expose forced-close session cleanup loss
seonghobae Aug 21, 2026
dab7248
fix(browser): retain forced-close session cleanup failures
seonghobae Aug 21, 2026
5887d66
test(browser): decouple teardown ordering contract from condition for…
seonghobae Aug 21, 2026
0cafe07
test(browser): accept multiline bounded session cleanup call
seonghobae Aug 21, 2026
27a3761
test(stack): restack forced-close failure contracts on live teardown …
seonghobae Aug 23, 2026
7a7923e
fix(browser): restore typed forced-close cleanup envelope
seonghobae Aug 23, 2026
52bd685
fix(browser): preserve parent teardown contracts after restack
seonghobae Aug 23, 2026
152ca36
test(mv3): reject untyped cleanup suppression
seonghobae Aug 23, 2026
b0aabe0
fix(mv3): preserve typed cleanup failures
seonghobae Aug 23, 2026
a1ed848
test(mv3): preserve primary failure precedence contract
seonghobae Aug 23, 2026
618fee1
test(mv3): retain WebDriver HTTP cleanup failures
seonghobae Aug 23, 2026
d4cf106
fix(mv3): classify WebDriver HTTP cleanup failures
seonghobae Aug 23, 2026
4749131
test(mv3): retry transient startup HTTP protocol failure
seonghobae Aug 23, 2026
fb5a9c3
fix(mv3): retry malformed startup status line
seonghobae Aug 23, 2026
3f77c75
test(browser): fail closed on terminal startup errors
seonghobae Aug 23, 2026
5bc6044
fix(browser): keep terminal startup errors fail closed
seonghobae Aug 23, 2026
34ab98e
docs(browser): restore generic WebDriver path contract
seonghobae Aug 23, 2026
f96e55f
test(browser): reproduce truncated startup response
seonghobae Aug 23, 2026
86b174b
fix(browser): retry truncated startup responses
seonghobae Aug 23, 2026
a3df28d
test(browser): reject WebDriver response detail leakage
seonghobae Aug 23, 2026
48435b9
fix(browser): redact WebDriver response diagnostics
seonghobae Aug 23, 2026
2553b66
Merge remote-tracking branch 'origin/test/agent-task-failure-process-…
seonghobae Sep 4, 2026
1194441
Merge current #145 into forced-close teardown evidence
seonghobae Sep 5, 2026
d636a18
fix(browser): preserve reviewed cleanup evidence boundaries
seonghobae Sep 5, 2026
812c002
chore(browser): retain concurrent parent integration
seonghobae Sep 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ All notable changes to OriginWeave are documented in this file. The format follo

### Added

- Controlled browser trials reject malformed pre-shutdown exit counts, retain validated driver and cleanup outcomes after ordinary task failure, and report mid-request protocol failures without remote diagnostic text; failed trials remain failures, startup retries keep their existing narrow scope, and obsolete HTTP-body close signals are no longer accepted.
- Failed controlled Agent Task runs now report whether their original browser process ended after shutdown, alongside temporary-profile cleanup; a failed task never becomes a pass merely because cleanup succeeded. If process observation itself fails, termination remains unproven. This covers the original browser process only, not all descendants or arbitrary browser recovery.
- Controlled pinned-Chromium Agent Task success now binds the ChromeDriver browser root to its exact Linux `/proc/<pid>/stat` start-time identity, binds every still-live PID from the already sampled bounded Chromium root-plus-descendant set before shutdown, explicitly records descendants that already exited between the `/proc` lineage snapshot and identity capture, and fails closed unless every retained exact identity terminates after session/driver shutdown; root disappearance or identity change remains an error, PID reuse counts only as termination of the original identity, and this does not attest cgroup/task ownership, processes appearing only after the sample, or OS-wide orphan absence.
- Failed ordinary and forced-close Agent Task browser trials now retain credential-free temporary-profile cleanup evidence after bounded browser errors, and separate aggregate compatibility gates require cleanup proof from every trial rather than filtering unsuccessful trials out; this does not attest adversarial filesystem erasure, process termination, or arbitrary browser recovery.
Expand Down
8 changes: 8 additions & 0 deletions docs/doctoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,14 @@ The #145 ordinary integration adopts #144 `3c0c5c363c2da0b4e8a621226e2f7766c735b

Ten controlled probes of the actual browser-pass and outer-trial flows cover observed root/set exit, a surviving root, a surviving sampled set, a process-observation error, and interruption before a complete result in each lane. Session deletion and driver shutdown precede the applicable exit observations. Late ordinary failure retains observed true/false root and captured-set outcomes without becoming a pass; incomplete capture omits set evidence. Forced-close success requires both observations to be true. Successful cleanup commands do not establish that sampled processes are already dead: a surviving identity fails the trial. Forced-close interruption skips post-finally observers and leaves termination unproven, while observation errors produce only the bounded fallback error type. Private exception messages remain absent. These injected probes establish control-flow contracts, not live Linux/Chromium termination, and exact-head hosted compatibility is still required.

### Reviewed cleanup-evidence regression repair

PR #146 at `2553b66a5351c73d45cb99aa326e6314324ce480` passed 216 Python contracts while omitting the inherited pre-shutdown exit-count gate, dropping ordinary-trial driver/cleanup observations, and allowing mid-pass HTTP protocol exceptions to escape the bounded failure evidence. The closed-context recognizer also retained an HTTP-JSON diagnostic branch that its redacted request producer no longer emitted. Ordinary adoption of #145 `bb5e8f834c37f9ce35f84db8ed1146da3659d6aa` retains the parent failure-path regressions; a new five-test behavioral suite then reproduced ten assertion failures and seven uncaught protocol-error cases before the repair.

The repair restores the existing non-boolean integer range check, forwards only known validated optional cleanup fields, removes the obsolete recognizer branch, and catches the existing HTTP protocol exception family at terminal browser/trial/aggregate evidence boundaries. It does not retry those terminal failures. The startup helper and its narrower recoverable-fault list remain unchanged: converting all request errors into a generic runtime error was rejected because it would also disable the existing recoverable startup retries. No new helper abstraction, provider, dependency, deadline, success exemption or workflow is introduced.

The regressions execute the production success predicate, actual ordinary/forced-close browser-pass and outer-trial paths, and aggregate evidence generation with controlled faults. They check invalid counts, observed root survival, driver cleanup, early failure without invented identity evidence, private-message exclusion, and final rejection with the original trial denominator intact. Unknown fields are not forwarded and malformed known cleanup values are rejected. A sixth regression covers all three final aggregate exception boundaries and server teardown. Controlled tests do not establish live Linux/Chromium termination, cgroup ownership, OS-wide orphan absence or release acceptance; exact-head hosted compatibility remains mandatory.

## References

Amazon Web Services. (n.d.). *Set up the Amazon EKS Pod Identity Agent*. Retrieved August 6, 2026, from https://docs.aws.amazon.com/eks/latest/userguide/pod-id-agent-setup.html
Expand Down
Loading
Loading