Skip to content

review(windows): pre-upstream native ACP lifecycle - #1

Draft
smallgun01 wants to merge 23 commits into
review-base/upstream-280db4dfrom
spike/windows-acp-native-agent
Draft

review(windows): pre-upstream native ACP lifecycle#1
smallgun01 wants to merge 23 commits into
review-base/upstream-280db4dfrom
spike/windows-acp-native-agent

Conversation

@smallgun01

@smallgun01 smallgun01 commented Aug 19, 2026

Copy link
Copy Markdown
Owner

Review Contract

Goal

Close the internal review blockers for the Windows native ACP lifecycle spike before any upstream PR is opened. The code remains a non-release spike and must continue to be reviewed against the clean upstream pin 280db4d.

Non-goals

  • No real provider/model turn claim.
  • No installation UX or Windows 10 compatibility claim.
  • No merge, release, or Native GA authorization.
  • No claim that Linux checks replace Windows runtime validation.

Accepted Residual Risks

  • Windows ACL, ReplaceFileW, Job Object, and abrupt-crash behavior require the Windows GitHub runner and the existing Win11 canary for ground truth.
  • The canary remains a no-provider sentinel and does not prove provider/model billing or downstream cancellation.
  • The review-base branch is an internal fork gate; it is not the upstream merge target.

Acceptance Criteria

  • M1: ProcessTreeGuard waits asynchronously and has no 250ms busy-poll loop.
  • M2: ProcessTreeGuard is isolated behind acp/process_tree.rs and exposes one platform-neutral handle.
  • M3: Windows auth temp files receive an explicit current-user ACL; replacement attempts ReplaceFileW first and only falls back on ERROR_FILE_NOT_FOUND.
  • M4: ACP and shell child baselines exclude APPDATA and LOCALAPPDATA.
  • M5: pool shutdown blocks new session insertion before guard termination begins.
  • M6: Windows skips the Unix-only ten-second grace delay.
  • M7: the Windows canary consumes binaries uploaded by the build jobs instead of rebuilding them.
  • Workspace Clippy, package checks, targeted auth tests, and pool tests pass locally.
  • Windows Actions and the existing runtime canary pass before upstream promotion.

Follow-ups

  • Run the updated workflow on commit 40a6486.
  • Re-run the internal Forger group review after CI is green; the Discord dispatch must be sent by Arthur.
  • Re-check cross-volume ReplaceFileW, process-wrap cancellation behavior, abrupt-crash Job Object cleanup, and the final Windows artifact manifest.
  • Keep the PR Draft and do not open the upstream PR until the internal review verdict is cleared.

smallgun01 and others added 23 commits August 18, 2026 09:05
Bound Unix shell post-kill pipe joins so timeout cannot hang on setsid
descendants. Re-apply the restricted DACL after ReplaceFileW, create the
auth temp with an explicit security descriptor, and take the trustee from
the process token SID. Keep the Job Object controller alive for later
terminate callers. Trigger the Windows gate on pull_request/main path
filters and derive canary provenance from github context.
The Windows ACL test had two #[test] attributes, which fails to compile
on Windows CI. Bound completed-path pipe joins as well so a setsid
descendant cannot hang a normal exit.
- F7: document working_dir sandbox rejection on all platforms in PR body
- F8: extract shared WINDOWS_RUNTIME_ENV_KEYS constant (openab-core -> agent)
- F9: assert no-provider/no-credentials failure shape in canary
- F10: preserve pipe bytes + truncation marker on bounded pipe join expiry
…bdev#1506)

These are ARN-parsing tests, so the ARN shape is what they exercise —
the account and secret names were incidental, but real:

- account 903779448426 -> 123456789012 (AWS's documentation account)
- oab/telegram/pahudxbot[-AC80TP] -> example/telegram/bot[-AbCdEf],
  matching the appauthexample-AbCdEf convention already used a few
  tests further down

No secret *value* was ever present here — only the ARN of the secret
holding the Telegram bot token, so nothing needs rotating. But the
secret's name told a reader which secrets this account holds, and test
fixtures have no reason to carry it.

Every input/expected pair was updated together, so each test asserts
exactly the same parsing behaviour as before.

Existing history is deliberately left alone: the repo has 195 forks and
GitHub retains orphaned commits, so a rewrite would break 25 open PRs
and every clone without actually un-publishing anything.

Co-authored-by: chaodu-agent <chaodu-agent@users.noreply.github.com>
CI clippy 1.98 -D warnings fails on print_box's redundant
format!("{}", line) where line is already &&str.
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.

2 participants