70 lines
3.9 KiB
Markdown
70 lines
3.9 KiB
Markdown
# Windows empty-profile startup verification
|
|
|
|
Follow-up to [#2345](https://github.com/morluto/rea/pull/2345), including
|
|
@gefrezim's diagnosis of the import-time Windows home lookup.
|
|
|
|
## Source and boundary
|
|
|
|
Baseline: main `172407787f1842dedbcd27b5385177595f786ce4`. Verification used
|
|
the real Windows 11 10.0.22631.0 host, official Windows x64 Node 24.18.0,
|
|
locked production dependencies and REA's compiled public CLI / SDK 2.3.1 MCP
|
|
server. No IDA or Ghidra engine was used. Runtime copies and compact receipts
|
|
live outside the checkout; no account profile path or ambient environment is
|
|
recorded here.
|
|
|
|
The tested dispatcher SHA-256 is
|
|
`526105418604cc6e5a202a6275b700814e27450bfaffd45e7510530ba669de8d`.
|
|
Only the dispatcher changed in the deployed runtime. It treats an empty Windows
|
|
`USERPROFILE` as unset before dependency imports. Nonempty selections continue
|
|
to reach the existing home resolver; no additional lookup or fallback owner is
|
|
introduced.
|
|
|
|
## Real Windows observations
|
|
|
|
With `HOME` empty in each case, the baseline produced:
|
|
|
|
| USERPROFILE selection | `--version` | `--help` | MCP discovery |
|
|
| --------------------------- | ----------------------- | ----------------------- | ------------- |
|
|
| Unset | Exit 0 | Exit 0 | Healthy |
|
|
| Empty | Exit 1, `uv_os_homedir` | Exit 1, `uv_os_homedir` | Healthy |
|
|
| Nonempty test-owned profile | Exit 0 | Exit 0 | Healthy |
|
|
|
|
The corrected CLI passed all six invocations with no stderr. Version output
|
|
remained 6 bytes and help output 15,497 bytes. Real setup dry runs with empty
|
|
and nonempty profile selections both exited 0, planned their configuration
|
|
under the expected home, preserved existing configuration bytes and created no
|
|
configuration under the working directory. No installation was performed.
|
|
|
|
MCP was already healthy in the baseline; this change does not claim to repair
|
|
an MCP startup failure. Complete baseline discovery was 187 tools and 2,545,790
|
|
serialized bytes, SHA-256
|
|
`1e6bbca7f62852134eb703ea098f5a302d1fe333b8433475429f6fc1b1aba18f`.
|
|
All three corrected MCP controls also passed with no stderr and the same
|
|
catalogue bytes and digest.
|
|
|
|
The existing `homeDirectoryFallback` acceptance test exercises the import-time
|
|
failure through the public setup dry run. Adding it to the Windows curated lane
|
|
makes that regression execute on the affected platform. No duplicate startup
|
|
test was retained. Nine related tests passed, including the existing MCP doctor
|
|
and curated-lane path checks; Linux passing alone does not prove Windows behavior.
|
|
Review caught a missing package-scope registration for the newly listed test;
|
|
the original CI shard failed that ownership invariant. The path is now also
|
|
registered in `scripts/ci/scopes.mjs`, and all 84 scope checks plus the two
|
|
curated-path checks pass. Runtime source and its tested digest are unchanged.
|
|
|
|
## Efficiency and resource limits
|
|
|
|
Heavy host probes ran serially at BelowNormal priority, with one CPU and a
|
|
512 MiB CLI/server heap setting (256 MiB for the probe parent). Heap settings do
|
|
not bound total process memory. An exit-time `process.resourceUsage()` observer
|
|
recorded individual corrected CLI invocations: CPU time ranged from 7.968 to
|
|
9.874 seconds and peak working set from 299,956 to 301,852 KiB. These figures
|
|
exclude the probe parent and any observer overhead outside the CLI process.
|
|
The six observed wall times ranged from 8.656 to 10.961 seconds.
|
|
|
|
The baseline did not use that resource observer, and cold/warm caches were not
|
|
normalized. These observations establish functional behavior and bounded probe
|
|
scope; no CPU, memory or latency improvement is claimed. The fix adds one
|
|
constant-time environment check, no filesystem lookup, engine call, retry or
|
|
cache. Output bytes are not model tokens; actual model usage was not measured.
|