You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: path/AGENTS.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ Thin entries `path/fount.{ps1,sh}` dispatch to `path/src/cmd/<name>.*` via inlin
16
16
17
17
`fount init` (and first install) registers a non-Steam shortcut when Steam is present — skip otherwise. Windows launchers use `$FOUNT_DIR/fount.exe` (written if missing, gitignored); other platforms use `path/fount`. `fount geneexe [path]` still defaults to `./fount.exe` (cwd). `remove` unregisters this install only (level 85, before Deno uninstall). No `data/config.json` (except `remove`) is `ensure_fount_config` / `Ensure-FountConfig` then the original command — not `cmd_open`. Interactive first-run starts `:8930` (wait/install liveness) and opens `wait/install/?from=runner`; `FOUNT_INSTALL_WAIT=1` is exported and `:8930` stays up until that process exits (after the dispatched command). `cmd_open` opens `wait?cold_bootting=true` only when that flag is unset. Docker / `FOUNT_ACCEPT_EULA` skip the prompt and copy default config; refusing the EULA or running without a console removes the installation (`N` → `fount remove`). See [runner AGENTS](../src/runner/AGENTS.md). `fount.exe` compile / Steam registration traps (ps12exe, favicon, `shortcuts.vdf`): [docs/exe-notes.md](docs/exe-notes.md).
18
18
19
-
Same logic is isomorphic across `foo.{ps1,sh}`; platform-only code under `path/src/win/` or `unix/`. Shared helpers: `in_container`, `run_with_updates`, `trap_terminal_teardown` (optional extra cleanup function name), `handle_docker_passthrough`, `check_temp_guard`, `sed_escape`.
19
+
Same logic is isomorphic across `foo.{ps1,sh}`; platform-only code under `path/src/win/` or `unix/`. Shared helpers: `in_container`, `run_with_updates`, `trap_terminal_teardown` (optional extra cleanup function name), `handle_docker_passthrough`, `check_temp_guard`, `sed_escape`. Server liveness: pwsh uses `Test-FountRunning` (from `fount-pwsh`, IPC ping 16698, ~100ms fast-fail); sh uses `test_fount_running` (`unix/ipc`, same IPC ping via nc/socat). `cmd_default` (bare `fount`) uses it to skip `background keepalive` and go straight to `log` when the server is already listening; on probe failure (no module/nc) it falls back to starting keepalive. Deno-side port probe (test kernel): `src/scripts/listener.mjs`.
20
20
21
21
`remove` scans `**/*.uninstall.<level>.*` under `path/src`, highest level first; level `0` deletes the install tree.
- **Performance bench (`tools/bench/`)**: four standalone scripts that break down `fount test` wall time — `kernel_startup.mjs` (spawn→healthy with in-kernel phase split: init/link, graph eval, catalog load, bind), `kernel_link.mjs` (Deno init+link vs graph eval vs kernel logic, plus `deno cache` cost), `test_cycle.mjs` (per-suite child spawn/read/rm overhead via the real `buildSuiteInvocation`/`runCommand`), `viewer_cycle.mjs` (WS connect→hello→accepted→close round trips). Kernel records env-gated phases to `FOUNT_TEST_BENCH_PHASES_FILE` (`onPhase` callback through `startTestKernel`/`TestKernel.start`); tools spawn on `TEST_PORT_BASE+20000` and shut down each iteration. Run from repo root: `deno run --allow-scripts --allow-all -c ./deno.json ./src/scripts/test/tools/bench/<tool>.mjs [iterations]`. Known hot spots (baseline on this machine): kernel `deno cache` cold ≈17s (amortized across runs), kernel spawn→healthy ≈1s (dominated by Deno graph eval, ~500ms), per-suite `deno test --no-check` child spawn ≈120ms (Deno-runtime-bound). Optimizations applied: port liveness probes live in shared `src/scripts/listener.mjs` (`listenerPid`/`isPortListening`/`parseNetstatListenPid`); kernel shutdown + `kernelHealthy` check the port first (netstat/lsof, ~50–100ms) instead of waiting the 1.5s health-check timeout on a closed Windows port (`ensure.mjs`); manifest discovery walks directories with bounded concurrency (`findManifestFilesParallel`, `manifest.mjs`), cutting `catalogLoad` from ~220ms to ~80ms and `loadAllSuites` from ~170ms to ~50ms.
86
87
-**Hung run**: `data/test/state/logs/`; rerun with env from the log. Watchdogs / sleep retry / baselines: [host-keep-awake.md](docs/host-keep-awake.md), [resource-scheduling.md](docs/resource-scheduling.md). Opt out: `FOUNT_TEST_ALLOW_SLEEP=1`. Module-check mutex leaks (killed Deno child never POSTs ready) auto-release the mutex after the idle window and still fail the suite as missed-ready; they must not freeze later suites. Stuck detached kernel: `fount test --kernel shutdown` / `--kernel reboot`.
0 commit comments