mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
Closed
opened 2026-11-01 21:44:58 +00:00 by bsakaguchi
·
0 comments
No Branch/Tag specified
main
codex/procedure-reference-stacked
release-please--branches--main--components--rea-agents
release-please--branches--main--components--rea-agents--release-notes
codex/kuna-independent-retry
codex/byte-search-overlay-coverage
codex/open-failure-target-receipt
codex/kuna-xref-evidence
codex/ghidra-ambiguous-procedure-recovery
codex/function-source-bundle
codex/trace-function-integration-prototype
codex/snapshot-source-closure
codex/recorded-evidence-array-pages
codex/evidence-recovery-redesign
codex/trace-feature-address-scope
codex/call-discovery-scope
codex/ghidra-literal-candidate-evidence
codex/decompile-directory-independent-retry
codex/retry-provenance-base
codex/value-flow-capability-experiment
codex/ghidra-containing-instruction
cursor/readme-discord-button-ef9f
dependabot/github_actions/actions/setup-node-7.1.0
dependabot/github_actions/actions/upload-artifact-7.0.2
dependabot/npm_and_yarn/npm-minor-and-patch-d8d97ce6df
codex/kuna-1989
fix/8559-native-ui-fixture-ownership
fix/8555-go-verifier-mcp-ownership
codex/provider-capability-recovery
fix/8642-rizin-target-stdin
codex/ghidra-memory-effect-scope
codex/ghidra-annotation-entry-selector
codex/ghidra-readonly-recovery
codex/ghidra-regex-verifier-recovery
codex/evidence-discovery-view-guidance
fix/8545-bulk-append-overflow
fix/8428-navigation-refusal-alternatives
codex/address-context-recovery
codex/matching-member-limitations
codex/unknown-scope-contract
codex/evidence-view-guidance
feat/8373-native-trace-views
codex/ghidra-snapshot-verifier-binding
codex/elf-export-visibility
codex/evidence-view-recovery
codex/native-reference-cli-help
codex/provider-candidate-observation-scope
codex/kuna-session-verification
codex/ghidra-switch-lifetime-guidance
codex/pseudocode-paging-discovery
codex/clarify-evidence-view-support
codex/kuna-xrefs-selector-recovery
codex/context-capacity-recovery
codex/evidence-closure-large-links
codex/same-function-evidence-identity
codex/ghidra-verifier-inspected-jdk
codex/audit-guided-workflows
codex/crash-prompt-retained-dossiers
codex/analysis-view-error-recovery
codex/kuna-verifier-target-selection
codex/ghidra-selected-project-call-coverage
codex/docs-native-analysis-scope
codex/ghidra-java-socket-boundary
codex/ghidra-retained-snapshot-verifier
codex/ghidra-search-inventory-facts
fix/8284-zero-argument-parameter-bindings
fix/8198-ui-action-handler-offset
fix/8257-elf-entry-label-identity
fix/8304-deferred-output-schema-projection
fix/8277-call-path-computed-target-uncertainty
fix/pr-8089-conflicts
fix/ci-static-duplicate-export
dependabot/npm_and_yarn/lint-staged-17.6.0
dependabot/github_actions/actions/download-artifact-8.0.2
dependabot/npm_and_yarn/write-file-atomic-8.0.0
dependabot/npm_and_yarn/canonicalize-5.1.0
dependabot/github_actions/actions/cache/restore-6.1.0
dependabot/npm_and_yarn/toon-format/toon-4.4.0
dependabot/github_actions/actions/deploy-pages-5.0.1
codex/review-fixes-pr-2403
codex/review-fixes-pr-2400
codex/process-terminal-width
codex/test-brittleness-cleanup
verify/7167-browser-connect-macos
fix/7167-browser-connect
feat/native-matching-allowance-setting
feat/browser-scenario-dry-run
test/managed-caller-parameters-20261024
codex/parser-fortythird-boundaries
fix/6926-pinvoke-platform-decorations-20261023
fix/6889-har-body-encoding-20261023
fix/6888-sqlite-schema-budget-20261023
fix/dependency-security-gates-6708
cursor/evidence-overwrite-rebase-b4ac
feat/4057-verify-native-exports
fix/windows-acl-observer-overhead-20261022
cursor/erlang-beam-restack-4476
cursor/pe-certificate-review-bf32
fix/6116-javascript-application-fs-errors
fix/6061-unmapped-runtime-script-unknown
feat/browser-scenario-summary
fix/pe-certificates
codex/verify-3407
cursor/rebase-5699
cursor/rebase-5352
cursor/rebase-5600
cursor/fix-cli-schema-omission-10a8
codex/audit-hopper-shutdown-reasons-20261021
fix/demangle-swift-omitted-record
fix/nib-boolean-value-types
cursor/cancellation-partial-observation-a5ac
fix/ib-object-limit-reasons
fix/electron-fuse-limit-advice
fix/kuna-doctor-dangling-cache
fix/fixed-budget-refusal-advice
fix/js-ipc-listener-dedup
fix/js-return-member-provenance
fix/dmg-integrity-retry-advice
fix/ida-doctor-readiness
fix/kuna-version-probe-output-drain
fix/legacy-swift-runtime-name-matching
fix/dylib-lazy-load-commands
fix/browser-scenario-startup-cancel
fix/swift-nested-punycode-classification
fix/compare-unselected-scopes
fix/objc-method-budget-coverage
fix/dmg-mounted-root-observations
audit/ci-tests-20261019-round2
release/6.7.0
fix/wabt-cleanup-retry-resolution
fix/electron-fuse-elf-pe-architecture
fix/native-plist-descriptor-ownership
fix/kuna-caller-cleanup-ownership
experiment/atomic-codemode-20261016
review/first-contributor-3776
fix/call-resolution-full-read-cycles
fix/member-mutation-selection-repeat
experiment/atomic-re-tools-20261015
perf/member-mutation-lazy-origins
perf/static-network-mutation-index
fix/hopper-startup-lifecycle
audit/3050-windows-proof-20261015
feat/windows-window-capture-2183
audit/3049-windows-proof-20261015
audit/3735-macos-fixtures-20261015
fix/batch-decompile-null-pseudocode
fix/kuna-inventory-honors-jobs
experiment/browser-codemode-tool-design-20261015
fix/hopper-clean-runtime-argv
codex/review-2049-27f1b367
review-fixes/pr-2787-routing
fix/3360-scoped-this-emitters
fix/3367-replaced-global-effects
fix/3838-compact-any-value-items
test/hopper-download-probe-20261015
codex/windows-runtime-creation-red-green-20261015
codex/windows-readonly-root-red-green-20261015
codex/windows-root-share-red-green-20261015
codex/exp-1685-win-mcp-startup
codex/bug-sweep-20261015
investigate/2190-windows-package-phases
investigate/3543-macos-cli-deadline
perf/3281-reverse-tools-feedback-quality
fix/3406-hopper-doctor-fixture
fix/3341-wrapper-require-test-context
fix/3301-owned-uninstall-fixtures
fix/3164-compiler-input-ownership
fix/pcap-cleanup-stdout-newline-20261014
perf/interface-builder-summary
codex/review-fixes-pr-1977
fix/ghidra-effective-jvm-platform
fix/docs-turkish-rust-link-20261013
fix/main-maintenance-ci-20261010
fix/recover-binary-session-process-effects
codex/review-fixes-pr-2457
codex/ci-required-cancellation-gate
fix/main-format-baseline-20261013
fix/setup-preserve-entry-fields
cursor/restore-main-checks-1ffc
fix/ghidra-bridge-hashmap-import
codex/shared-ci-jadx-json-default-20261013
codex/shared-ci-ghidra-test-groups-20261013
codex/shared-ci-java-fixture-format-20261013
codex/fix-intrinsic-invocation-boundaries
test/release-preflight-reusable-jobs
test/js-parameter-provenance-expectation
fix/linux-hopper-verification-current
test/2419-ghidra-elf-probe-size
followup/pr-1544-native-ida
codex/fold-pr-2230-contribution
docs/readme-responsible-use
fix/issue-2064
fix/issue-2050
fix/issue-2053
fix/issue-1968
fix/issue-1945
experiment/codemode-bridge-20261011
fix/tool-effects-negative-wording-1904-20261012
fix/1842-electron-interop-provenance
feat/recover-javascript-multi-input
refactor/website-i18n-prep
fix/nativeaot-pe-virtual-extent
fix/browser-verifier-ci-hang
fix/pe-resources-input-selection
docs/beginner-friendly-guides
docs/beginner-setup-guide
fix/javascript-analysis-worker-1563
fix/1649-ghidra-duplicate-names
fix/javascript-export-keys-integration-1369
test/maintenance-boundary-contracts-20261011
review/javascript-export-keys-1369
review/process-live-progress-1483
test/javascript-1495-growth-ratio
fix/ci-escape-timing
docs/normalized-terminal-geometry-1450
release/6.3.0
archive/release-6.3.0-pr1381
release/6.2.0
fix/electron-preload-dynamic-override
fix/javascript-self-referential-bundler-edges
release/6.1.0
cursor/grok-client-cherry-pick-0b56
feat/signature-posture
feat/dyld-shared-cache
feat/artifact-integrity-policy
feat/pkg-inventory
release/6.0.0
chore/sync-release-5.0.0
release/5.0.0
cursor/cloud-agent-node-787e
fix/javascript-xhr-open-endpoints
review/pr-711-realpath-fallback-wording
cleanup/replay-confinement
codex/test-suite-performance
codex/issue-foundations
codex/address-open-issues-2026-07-20
agent/javascript-vite-rollup-esbuild-adapters
agent/process-cleanup
agent/triage-integration
agent/unknown-commands-registry
feat/mcp-identity-metadata
morlvps/issue_cleanup
codex/installer-redesign
morl/roadmap-investigation-core
morl/roadmap-investigation-docs
release-please--branches--main--components--rea
rea-agents-6.8.0
rea-agents-6.7.0
rea-agents-6.6.0
experiment/atomic-codemode-wait-runtime-20261016
rea-agents-6.5.0
rea-agents-6.4.0
rea-agents-6.3.0
rea-agents-6.2.0
rea-agents-6.1.0
rea-agents-6.0.0
rea-agents-5.0.0
rea-agents-4.1.0
rea-agents-4.0.1
rea-agents-4.0.0
rea-agents-3.2.1
rea-agents-3.2.0
rea-agents-3.1.0
rea-agents-3.0.0
rea-agents-2.7.0
rea-agents-2.6.0
rea-agents-2.5.1
rea-agents-2.5.0
rea-agents-2.4.0
rea-agents-2.3.0
rea-agents-2.2.0
rea-agents-2.1.0
rea-agents-2.0.0
rea-agents-1.7.0
rea-agents-1.6.0
rea-agents-1.5.0
rea-agents-1.4.0
rea-agents-1.3.0
rea-agents-1.2.0
rea-agents-1.1.0
rea-agents-1.0.0
rea-agents-0.5.0
rea-agents-0.4.0
rea-agents-0.3.0
rea-0.2.1
rea-0.2.0
Labels
Clear labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
Mirrored from GitHub Pull Request
question
roadmap
triage
No labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
question
roadmap
triage
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
morluto/rea#7049
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/morluto/rea/pull/5772
Author: @morluto
Created: 10/21/2026
Status: ✅ Merged
Merged: 10/21/2026
Merged by: @morluto
Base:
main← Head:cursor/ownership-cleanup-829e📝 Commits (7)
0ac5825fix(windows): retain native handles whose close is unconfirmed6a8d161test(process): keep scratch until inherited pipes close93c2d0ffix(windows): retry admitted file closes before runtime removale76622bfix(windows): resume a close after part of the owner is released9ef52c6test(process): signal only an owned inherited-pipe descendant78b2faafix(windows): do not close a handle again after a failed closef56cbbcfix(windows): stop using a close-blocked pipe for I/O📊 Changes
14 files changed (+1022 additions, -43 deletions)
View changed files
📝
native/windows/README.md(+15 -2)📝
native/windows/src/authority.hpp(+133 -14)📝
native/windows/src/filesystem.cc(+52 -4)➕
native/windows/src/handle_close.hpp(+206 -0)➕
native/windows/src/handle_close_test.cc(+254 -0)📝
native/windows/src/process.cc(+21 -6)📝
src/process/DarwinProcessRunTokenReader.ts(+3 -0)📝
src/process/ExecFileOutput.test.ts(+110 -1)📝
src/process/ExecFileOutput.ts(+6 -4)➕
src/windows/WindowsHandleClose.test.ts(+53 -0)📝
src/windows/WindowsOwnedProcess.test.ts(+5 -2)📝
src/windows/WindowsOwnedProcess.ts(+39 -8)📝
src/windows/WindowsPrivateRuntime.test.ts(+94 -0)📝
src/windows/WindowsPrivateRuntime.ts(+31 -2)📄 Description
Summary
Fixes #4505. Fixes #5616.
Windows native owners no longer drop a handle when
CloseHandlefails, and they do not close that numeric value again. An open liveness probe can observe a reused value, so only a probe that says the value is gone drops it. Stoppable command settlement still waits for inherited stdio pipes before a caller may remove scratch files. A private-runtime file whose close fails stays on that runtime and is closed again before the runtime tree walk. A runtime whose root directory handle is already released resumes with its parent handles. A process whose settlement was already observed retries process close alone.Problem and expected behavior
Handle::resetcalledCloseHandleand then overwrote the stored value. A failed close discarded the only record of that kernel object, so a later close could not retry it and a reused numeric value could be closed by mistake. Treating a later open probe as proof that the same object is still owned has the same reuse hazard.WindowsPrivateRuntime.readFilecalled nativeclosefromfinallyand then dropped the file wrapper. A failed close left ancestor directory handles reachable only from GC, so a laterruntime_closecould not retry that file and could fail with a sharing violation.After the root directory handle was released, a failed parent close made the next runtime close walk that invalid handle and skip the remaining parents. After the job handle was released, process cleanup retried through
kill()andprocess_poll, which still need that job.PR #5587 (closed, not merged) would have destroyed
execFileOutputreaders after the stop grace. An inherited-pipe descendant keeps those pipes open until it exits. Destroying the readers settles the helper while that descendant is still using the compiler scratch root. Currentmainalready waits for pipe close; the scratch root must still be present when that descendant finishes.Change and scope
The Windows close gate lives with the handle owner. After a failed
CloseHandle,GetHandleInformationdecides the next step: a value that is still open, or whose liveness cannot be read, stays owned and is not closed again; a value that is no longer in the handle table is dropped and never closed again. Dying owners park survivors for the next runtime, process, or file close. An incomplete snapshot writer that cannot be closed stays on the runtime. A published snapshot still returns its digest when a source close fails; those source handles are retried by runtime close. Broken-pipe output still returns the bytes already read and leaves a failed read-handle close forprocess_close.The private runtime keeps an admitted file wrapper when
closefails and retries that same wrapper in#releaseAdmittedFilesbeforeruntime_close. A failed retry remains on the runtime, and the tree walk does not start while the file is still owned.treeReleasedis set only after the root directory handle is released, so a later close resumes with the parent handles.Once a Windows owned process has observed settlement and ended its local streams,
#releasePendingstays set untilprocess_closereturns. Later cleanup calls that close again and does not kill or poll.execFileOutputdocuments that settlement waits for the pipes it created. The Darwin helper removes its scratch root only after that settlement and does not signal processes it did not launch. The inherited-pipe regression does not signal a descendant after settlement, and on an earlier failure it signals only a command line that still contains that test's path.Follow the contribution scope.
Unresolved scope, authority, side effects, or required verification block
integration. Link the required maintainer scope decision for new providers or
capabilities involving target execution, injection, mutation, or protection
recovery; ordinary fixes within existing boundaries may state "not applicable".
Draft PRs may leave the scope decision pending and the readiness and merge checklists
unchecked. Maintainers can help resolve open questions.
Contract and boundary impact
Handleinnative/windows/src/authority.hppowns close.WindowsPrivateRuntimeowns admitted file wrappers whose close failed and the runtime's released-tree stage.WindowsOwnedProcessowns the close-only retry after settlement.execFileOutputowns settlement of the pipes it created. Scratch removal stays with the Darwin helper after that settlement.Failure(constraint, path, Win32 code) and keep the owner open. Sharing-lock retries 32/33 are unchanged. A repeated native close of a value whoseCloseHandlealready failed does not callCloseHandleagain.docs/public/product-catalog.json), package, or installation impact (CI generates and validates ignored catalogs andskills/; edit authored instructions in.agents/skills/reverse-engineer-anything/and never commit build outputs): none.Expected effects (check known effects; use documentation-only on its own).
Unchecked items do not establish absence; leave uncertainties visible.
Evidence and regression coverage
src/windows/WindowsHandleClose.test.tscompilesnative/windows/src/handle_close_test.ccwith injected close and liveness results, including that an open probe after a failed close does not close again.src/windows/WindowsPrivateRuntime.test.tskeeps a failed admitted-file close and retries that wrapper beforeruntime_close, and it refuses the tree walk while that close is still failing.src/windows/WindowsOwnedProcess.test.tsexpects a failed process close to be retried withprocess_closeonly.src/process/ExecFileOutput.test.tsspawns an inherited-pipe descendant that outlives the stop grace and records whether its scratch directory still exists, and it does not signal that descendant after settlement.main,Handle::resetignoredCloseHandle's result and replaced the value.readFiledropped the file wrapper after a failed close. Process cleanup retried a partial close through kill and poll. PR #5587's reader destruction is absent frommain(mergedAtnull). The inherited-pipe test deletes scratch only afterexecFileOutputsettles; the descendant writesscratchExists: trueand the helper rejectsETIMEDOUT/killed: true. Destroying readers at the grace period would delete scratch before that write.CloseHandleandGetHandleInformationwere not executed. MinGW was not installed, so the Windows addon was not cross-built. Real Windows runtime behavior is unverified. The pipe regression ran on Linux only; Swift and macOS were not rerun. A descendant that does not inherit the helper pipes is still outside this owner. The runtime parent-resume path is source-derived; it has no Windows execution.For evidence-bearing changes:
Validation performed
g++ -std=c++17 -Wall -Wextra -Werror -I native/windows/src native/windows/src/handle_close_test.cc -o /tmp/handle-close-test && /tmp/handle-close-test— exit 0, including after the close-block change.npm run test:local -- src/windows/WindowsHandleClose.test.ts src/process/ExecFileOutput.test.ts— 2 files, 32 tests passed (Node v24.18.0). The inherited-pipe case passed in about 7s withscratchExists: true.npm run test:local -- src/windows/WindowsHandleClose.test.ts— passed again after the close-block change.npm run test:local -- src/windows/WindowsPrivateRuntime.test.ts— 13 tests passed, including the retained file-close retry.npm run test:local -- src/windows/WindowsOwnedProcess.test.ts src/process/ExecFileOutput.test.ts— 51 tests passed after the close-resume and descendant-signal changes. The inherited-pipe case passed again.npm run verify:test-discovery— discovered all 1881 test files exactly once.npm run check:fast— typecheck and lint succeeded. The close-block commit did not change TypeScript, and the cached check passed.npm run format:check— all matched files use the correct format before the later commits;oxfmtwas run on the TypeScript files changed after that.npx oxlinton the touched TypeScript files — no new errors. ExistingDarwinProcessRunTokenReader.tssize warnings and the pre-existingWindowsOwnedProcessparameter-count warning remain.Compatibility, safety, and release
CloseHandleon it again.CloseHandleagain. No broader process-tree authority was added. An unconfirmed number that cannot be recorded is left open until process exit rather than closed. A failed admitted-file close stays on the runtime that opened it. The inherited-pipe test does not signal a process after settlement or a PID whose command line is no longer that descendant.Author readiness
Human owner: @morluto
Before merge
type(scope): outcome.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.