mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
[PR #6099] [MERGED] fix(process): report the effective regex heap and uncertain signal retry #7145
Closed
opened 2026-11-01 21:45:44 +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#7145
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/6099
Author: @morluto
Created: 10/21/2026
Status: ✅ Merged
Merged: 10/21/2026
Merged by: @morluto
Base:
main← Head:cursor/process-limit-wording-d7ef📝 Commits (9)
607ea75fix(process): report the effective regex worker heape2b5d9dfix(process): keep SIGXCPU and SIGXFSZ retries uncertain4e4b70efix(process): leave percentage heap overrides unestablished3d61585fix(process): read launch NODE_OPTIONS, not process.envbc0c9dafix(process): leave env-file heap overrides unestablisheda8e194afix(process): leave --max-heap-size old generation unestablished93db004fix(process): leave config-file heap options unestablishedc2dcae6fix(process): read launch exec argv from the command lineca68b26fix(process): leave a title-overwritten command line unestablished📊 Changes
7 files changed (+1361 additions, -19 deletions)
View changed files
📝
docs/kuna-provider.md(+1 -1)📝
docs/native-investigation.md(+31 -3)📝
src/process/ArtifactAnalysisResources.test.ts(+49 -0)📝
src/process/ArtifactAnalysisResources.ts(+4 -1)➕
src/process/RegexMatcher.test.ts(+493 -0)📝
src/process/RegexMatcher.ts(+404 -6)📝
tests/boundary/process/regexMatcher.test.ts(+379 -8)📄 Description
Summary
Follow-up to #6071 for post-merge Codex P2 findings, plus the Greptile percentage-heap finding, the Codex launch-
NODE_OPTIONSfinding, the env-file heap finding, the--max-heap-sizefinding, the Node config-file finding, the mutable-execArgvfinding, and the command-line title finding. Part of #5910 (parent #5808).The regex worker reports the effective old-generation heap instead of an unchangeable 128 MiB cap. A launch
--max-old-space-size-percentagetakes precedence over that absolute flag and leaves the effective heap unestablished. The launchNODE_OPTIONSvalue is read from the process initial environment, not from a laterprocess.envedit. The launch Node options are read from the initial command line when that buffer still has a program entry, not from a laterprocess.execArgvedit.process.titleand--titleoverwrite that command line, so a buffer without a program entry leaves the heap unestablished.--env-fileand--env-file-if-existsleave the heap unestablished when that variable was absent, because the file can supply it. A positive--max-heap-sizeleaves the old generation unestablished, because that flag sets the total heap and can be lower than the 128 MiB request.--experimental-config-fileand--experimental-default-config-fileleave the heap unestablished, because the config file can supply a heap percentage and is not read back. SIGXCPU and SIGXFSZ no longer say an unchanged retry fails the same way when the signal's cause is not established.Problem and expected behavior
REGEX_MATCHING_LIMITATIONand the heap error said the worker heap was a fixed 128 MiB cap and that this release has no runtime override. Node gives--max-old-space-size, including a value supplied only throughNODE_OPTIONS, precedence overresourceLimits.maxOldGenerationSizeMb(Worker API). The worker can exceed 128 MiB and may not raiseERR_WORKER_OUT_OF_MEMORYat that budget.NODE_OPTIONSis not copied intoprocess.execArgv.--max-old-space-size-percentagealso overrides the 128 MiB request and takes precedence over--max-old-space-sizein either order (CLI). Node computes that MiB from constrained or total memory while parsing options. On this host, cgroupmemory.highmoved between reads, and some Node versions also cap total memory at 4 GiB when pointer compression is on. A later read is not the value Node applied. Reporting 128 or the absolute flag is the wrong heap.process.env.NODE_OPTIONSis mutable. A preload started from that variable can clear or rewrite it after V8 has already applied the original flags. Reading the rewritten string reports 128 MiB, or some other false effective limit, whileprocess.execArgvstill does not contain the original flag.process.execArgvis mutable too. On Node 24.15.0,node --max-old-space-size=64 --require=preload.cjsstill applied the 64 MiB heap after the preload setprocess.execArgv.length = 0. Deriving the heap from the emptied array reports the 128 MiB request.process.titleand--titleoverwrite the argv memory behind/proc/self/cmdline. On Node v22.23.3,node --max-old-space-size=64with a preload that setsprocess.title = "rea", andnode --title=rea --max-old-space-size=64, both left that file asreafollowed by NULs while the worker heap stayed at 64 MiB. Treating that buffer as an empty option list advertised the 128 MiB request. Node documents that setting the title overwrites argv memory.--env-fileand--env-file-if-existsset environment variables from a file at startup. WhenNODE_OPTIONSis absent from the initial environment,NODE_OPTIONS=--max-old-space-size=256in that file raises the worker heap, but/proc/self/environhas noNODE_OPTIONSentry andprocess.execArgvrecords only the file flag. Classifying the missing entry as recovered advertises 128 MiB. The file is not an immutable launch source: it can change after startup, and--env-file-if-existsmay have been missing. A percentage in the file also beats a later absolute flag. Node does not let the file replace aNODE_OPTIONSvalue that was already in the initial environment.--max-heap-sizesets the total heap, not the old generation. On Node v22.23.3,node --max-heap-size=64with a workermaxOldGenerationSizeMbof 128 kept that resource limit at 128 and reportedheap_size_limitof exactly 64 MiB. The underscore form did the same. A later--max-old-space-sizedid not restore a pure old-generation size. Treating the flag as absent advertised an effective 128 MiB old generation. Node 22.23.3 rejects the flag insideNODE_OPTIONS; Node 24 and later allow it there. A zero or empty value cleared the total-heap cap and left the old-space result. A split value and a non-integer aborted the process.--experimental-config-fileand--experimental-default-config-fileload a Node config whosenodeOptionscan includemax-old-space-size-percentage. On Node v22.23.3, a config of{"nodeOptions":{"max-old-space-size-percentage":"1"}}keptresourceLimits.maxOldGenerationSizeMbat 128 and lowered the workerheap_size_limiton this host.process.execArgvcontained only the config-file flag. The same lowered heap remained when--max-old-space-size=256followed the flag. Node accepts the path as=or the next argument.--experimental-default-config-filereadsnode.config.jsonfrom the working directory. The file is not an immutable launch source. A 1% heap is not a stable comparison: on a large host without Node's 4 GiB cap it can exceed the 128 MiB request.The SIGXCPU/SIGXFSZ remediation said
Repeating the unchanged request fails the same wayin the same branch that says the signal's exact cause is not independently established. A producer can self-raise or externally receive either signal without exhausting the reported rlimit, so an unchanged retry may succeed.The matching deadline remains a fixed cap with no runtime override. The inherited producer ceiling still has no REA setting that raises it.
Change and scope
Wording and error projection.
resolveRegexWorkerHeapderives the effective old-generation heap from a recovered launchNODE_OPTIONSstring, then recovered launch Node options. It does not readprocess.envorprocess.execArgv. A positive--max-old-space-sizeor--max_old_space_sizeis that heap. A zero or empty value leaves the 128 MiB request in effect. An unparsed absolute flag leaves the effective heap unestablished instead of claiming 128.Any
--max-old-space-size-percentagetoken, including the underscore form and a value passed as the next argument, leaves the effective heap unestablished. It wins over an absolute flag in either source and either order, including a later zero or a value Node rejects. The rawNODE_OPTIONSstring is not retained. OOM details reportworker_heap_mibonly for an established heap andrequested_worker_heap_mibas 128.On Linux, the launch string is the
NODE_OPTIONSentry in/proc/self/environ, theexecveenvironment block. A laterprocess.envassignment does not change that block. The rest of the block is not retained. When that block cannot be read, or the platform has no equivalent immutable block, the effective heap stays unestablished. A missing reading is not treated as an absentNODE_OPTIONS.On Linux, the launch Node options are recovered from
/proc/self/cmdlineonly when that buffer still has a program entry: a script path, stdin-, an eval or print argument, or the token after--. The parser skips the executable and omits arguments after the entry. A title overwrite is one token plus NUL padding and has no program entry, so it is unrecoverable rather than an empty option list. An unrecognized option immediately before the entry, invalid UTF-8, or a failed read is also unrecoverable. Other platforms have no equivalent block. Unrecoverable provenance stays unknown.process.execArgvis not a fallback.When
NODE_OPTIONSis absent and the recovered command line contains--env-fileor--env-file-if-exists, including a path in the next argument, the effective heap stays unestablished. An initialNODE_OPTIONS, including an empty one, is still parsed together with the command line, because the file does not replace it.A positive
--max-heap-sizeor--max_heap_size, on the CLI or in the recoveredNODE_OPTIONSstring, leaves the old generation unestablished. An old-space flag does not restore a claimed MiB while that total-heap value is in effect. A final zero or empty value clears it and the old-space result stands. An unparsed value stays unestablished, including when a later zero or old-space flag follows it.When the recovered command line or the recovered
NODE_OPTIONSstring contains--experimental-config-fileor--experimental-default-config-file, including a path in=or the next argument, the effective heap stays unestablished. That is true when an absolute--max-old-space-sizeis also present and whenNODE_OPTIONSwas recovered. The config file is not read.SIGXCPU/SIGXFSZ remediation says an unchanged retry may succeed or may fail the same way. The projected
retryableflag is true so it does not contradict that sentence.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.
Not applicable. This stays inside existing process error text. No new provider, target execution, injection, mutation, or protection recovery.
Contract and boundary impact
RegexMatcher; producer signal recovery is owned byArtifactAnalysisResources.commandFailure.maxOldGenerationSizeMb: 128. Linux can recover launchNODE_OPTIONSfrom the initial environment block and launch Node options from the initial command line when a program entry is still present. Other platforms leave that heap unestablished.NODE_OPTIONS, a positive--max-heap-size, a Node config-file flag, a title-overwritten command line, and an unrecoverable command line are reported as unestablished rather than a reconstructed MiB. The currentprocess.env.NODE_OPTIONSstring and the currentprocess.execArgvarray are not launch provenance. An env file and a Node config file are not reread.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): docs updated indocs/kuna-provider.mdanddocs/native-investigation.md. No package or catalog source change.Expected effects (check known effects; use documentation-only on its own).
Unchecked items do not establish absence; leave uncertainties visible.
The SIGXCPU/SIGXFSZ projection now reports
retryable: true. That matches "an unchanged retry may succeed." It does not change target interaction. Reading/proc/self/environretains only theNODE_OPTIONSentry long enough to parse heap flags. Reading/proc/self/cmdlineretains only the recovered Node option tokens, and only when a program entry is present.Evidence and regression coverage
src/process/RegexMatcher.test.ts,tests/boundary/process/regexMatcher.test.ts,src/process/ArtifactAnalysisResources.test.ts.resourceLimits.maxOldGenerationSizeMb: 128kept reporting that resource limit whilev8.getHeapStatistics().heap_size_limitfollowed--max-old-space-size. Comparisons use pinned 64 MiB and 256 MiB heaps rather than an unconstrained baseline.node --max-old-space-size=64 --require=preload.cjswith the preload settingprocess.execArgv.length = 0reported an emptyprocess.execArgvand a worker heap within 5% of a pinned 64 MiB child. The intact/proc/self/cmdlinestill contained the 64 MiB flag, and the resolver reported effective 64 MiB. Passing the emptied array toresolveRegexWorkerHeapwould report the 128 MiB request.process.title = "rea"after--max-old-space-size=64, and--title=rea --max-old-space-size=64, both replaced/proc/self/cmdlinewithreaand NUL padding. The worker heap stayed within 5% of the pinned 64 MiB child andresourceLimits.maxOldGenerationSizeMbstayed 128. The parser returned unrecoverable, and the launch heap was unknown rather than 128 MiB. A synthetic command line ofnodeplusscript.jsand no heap flag still recovers an empty option list. A singlereatoken andreaplus NUL padding do not.readLaunchExecArgvis unrecoverable and the launch heap stays unknown even when a recoveredNODE_OPTIONSstring contains--max-old-space-size=64. The boundary probe that reads/proc/self/cmdlinedoes not spawn on those platforms.--max-heap-size, and config-file evidence from the earlier commits on this branch still applies. Percentage and config-file probes no longer compareheap_size_limitwith a host-memory baseline.NODE_OPTIONS, an unrecoverable command line, a title-overwritten command line, an env-file launch with no initialNODE_OPTIONS, a positive--max-heap-size, or a Node config-file flag says the effective heap was not established.reaplus NUL shape. macOS and Windows have no equivalent command-line block, so those platforms leave the heap unestablished. Anodelaunch with no script, such as a REPL, is unrecoverable because it has no program entry.For evidence-bearing changes:
Validation performed
npx oxfmton the touched files, thennpm run format:check— all matched files use the correct format (4736 files).npm run check:fast— typecheck and lint succeeded (turbo 2.11.7, 2 tasks, 4.195s) after the title-overwrite change.npm run test:focused -- src/process/RegexMatcher.test.ts tests/boundary/process/regexMatcher.test.ts— 2 files passed, 58 tests passed. The env-file probe passed in 321ms. The config-file probe passed in 329ms.npm run test:focused -- src/process/ArtifactAnalysisResources.test.ts tests/boundary/captures/captureProvider.test.ts tests/boundary/signals/recordingProvider.test.tscovered the SIGXCPU/SIGXFSZ wording. Those later edits do not change that path.Compatibility, safety, and release
retryable: true. A clearedprocess.execArgvno longer changes the reported heap. A title-overwritten command line no longer reports 128 MiB. A missing command-line reading no longer reports 128 MiB. A percentage flag, env-file launch with no initialNODE_OPTIONS, positive--max-heap-size, or Node config-file flag no longer reports a MiB that the launch provenance does not establish./proc/self/environ,/proc/self/cmdline, title, env-file,--max-heap-size, and config-file probes only.process.execArgv, a title-overwritten command line, a percentage flag, an env file, a positive--max-heap-size, or a Node config file. The initial environment block is read only to parseNODE_OPTIONS. The command line is read only to recover Node option tokens when a program entry is present. The env file and the Node config file are not read back.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.