Historical record (11 October 2026). This page was written while the Terminal was being built, before Strata 0.2.0. It is kept for the record and is not kept up to date: it describes six views, source-run commands and checks that had not yet been run on target hardware. For what the Terminal does now, see TERMINAL.md, TERMINAL_LAUNCH.md and TERMINAL_QUICKSTART.md.
This matrix separates checks already run in this source checkout from release gates that need the supplied UI/harness/TUI assets or a target host. A passed synthetic client test does not establish engine performance or platform support. Record exact commands, source commit, artifacts and environment for every final gate.
| Gate | Evidence in this checkout | Remaining acceptance work |
|---|---|---|
| Telemetry contract and privacy | Versioned /v1/telemetry, bounded client sanitization, read-only key, mock/fake-engine terminal and server tests. Field meanings: telemetry matrix. |
Review the actual UI data binding and run a redaction audit with real workloads. |
| Serving, batching and four-card display | YASD-inspired one-screen Overview at 110 and 80 columns, including bounded aggregate-output, batch-row and pre-admission queue trends and selected-card histories with unavailable rows for missing sensors, with compact detail views at 60 and 40; fake batched engine tests for slot/group/queue and BSTAT/PSTAT transport; occupied slots and read/decode/idle phases require a complete, unique slot report; exact group occupancy additionally requires a valid group on every slot. Display-cell clipping tests cover CJK device/request labels, combining marks, flags and joined emoji. The Overview suppresses retained BSTAT/PSTAT samples older than five seconds while detail keeps their reported age. Screenshots are illustrative. | Native CUDA/HIP/SYCL build and tests; measured four-card sensors, stage visibility, requested/effective slots, batch rows/window, group mapping and per-request progress on the exact target hardware. Repeat Unicode layout checks on supported Windows/Linux terminals. |
| Two-replica monitor contract | A fake-engine HTTP test correlates the second replica's live request with global slot 5 and global group 1, checks configured [[0,1],[2,3]] GPU assignment, keeps each child's BSTAT rows/window and PSTAT host-stage spans separate, and reports each child's startup stage/layer ranges only when its launch visibility order maps into the configured card group. Terminal tests sanitize bounded replica IDs, samples and stage plans, reject mismatched device assignments, and render R0/R1 and uniquely mapped local stage labels at 110 and 80 columns. The 110- and 80-column screenshots are synthetic. | Qualify the mapping, per-child sample age, startup log and request progress with the intended four-card hardware; qualify per-replica PSTAT host spans on native hardware; GPU kernel occupancy remains unavailable. |
| Parallel and cancellation behavior | Mock and fake-engine overload, active/queued disconnect and partial-prompt disconnect suites; server tests. Ten fresh fake-engine active/queued cancellation cycles passed; each recovered, exited its child and closed its listener. | Sustained multi-client load on the real model, ten load/generate/cancel/unload cycles, no orphan workers or cross-request content, and recorded recovery latency. |
| Read-only monitor stability | Unit and integration tests for v1/legacy and status-only fallback, reconnect, freeze, resizing, bounded rows and detach. Explicit connecting, stale, disconnected, auth-required, incompatible and telemetry-unavailable states mask cached rates; all six views replace cached request/GPU values with a connection panel for connecting, disconnected and blocked states. Headless tests cover automatic and manual recovery, plus a 110-to-40-to-110 terminal resize with selected request detail retained and the tiny footer visible. Headless tests also verify that the live Overview and Logs expose observed sequence gaps after a frozen display resumes and reset that notice on a server instance change. An outage now clears the aggregate-rate baseline and an unexpected collector exception becomes a redacted stale/disconnected state; the first recovered sample does not claim a cross-outage rate. A native Desktop browser smoke checked the same rate reset while retaining the observed activity gap. The 30-minute synthetic 0.5-second headless soak passed with two outages, one instance restart, bounded request/activity rows, one in-flight HTTP collection and a readable server after detach. Raw JSON and late-run RSS series are in the transfer packet. | Repeat on target Linux/Windows terminals and with the real server. Measure server and client CPU/RSS separately in the hardware run. |
| Command and lifecycle safety | POSIX owned fake-engine start/verify/restart/rollback/stop, digest-pinned source migration, calibration review/apply/rollback, typed recipes and bounded journal tests. A one-shot owner-local JSON bridge shares runtime actions and journal records with CLI; malformed requests and stale start reviews are rejected before engine launch. Stale stop reviews are rejected before drain, including at the owner host. The owner host repeats the start revision/digest check after process handoff. Foreground serve --output jsonl emits typed ready/drain/stop records with JSON-only stdout in fake-engine SIGTERM and Ctrl-C subprocess tests. The --json shortcut covers all 43 human/JSON parser leaves, including portable connection/config commands; streaming modes reject incompatible combinations. Quiet-mode tests cover human success/error handling, requested log rows, portable one-shot output and JSONL serving through a generated response. Source and portable clients reject JSON monitor output without --once before opening a connection. |
Connect Desktop to one lifecycle authority and operation journal; qualify Windows ownership and ACL; test real model, corrupted components, lost GPU and long-running cancellation. |
| Optional installation | Portable monitor zipapp verified by adjacent SHA-256/member manifest; version 3 includes the one-screen dashboard, records telemetry/Python compatibility and bundles the MIT notice while verification still accepts versions 1 and 2 for update/rollback. Offline local digest-pinned install/update/rollback/commit/remove tests; eight focused bundle tests passed on Python 3.10 and 3.11 on macOS. The current r31 bundle passed isolated -I -S one-shot HTTP, verified install, installed status and digest-pinned uninstall smokes on both interpreters against a loopback fixture; each made three telemetry GETs, including one deeply nested JSON error probe. A separate -I headless packaged Textual check on Python 3.11 imported the Monitor from the bundle, connected, rendered six Overview panels and detached; it made four telemetry GETs total with the lifecycle and malformed-response checks. The default setup dependency list now excludes CMake/Ninja; the local compile path installs only missing build helpers from a separate pinned file. doctor now distinguishes absent, pinned and unverified Textual versions without importing the optional TUI into serving. |
Signed release artifacts, publisher trust, clean Windows/Linux installation, optional Textual dependency and rollback qualification. Verify a fresh ready-made-engine setup has no CMake/Ninja in its private environment, then qualify local compilation on each target backend. |
| Harness and native host runtime | strata code reports missing component; host-adapter contract is in the architecture plan. The imported Desktop has an opt-in, loopback, single-profile owner-backed Serving status and reviewed Start/Stop/Restart path. Its native Monitor now reads bounded v1 telemetry through the host, verifies the owner instance ID, retains the read-only key on the host, shows six live panels and leaves missing sensors unavailable; native mode does not start the prototype monitor sampler. A read-only Components screen uses the same Python inspection report as the CLI, with a manual live GPU probe and bounded browser fields. A native Profile screen reviews a source run config and typed serving overrides, pins revision and digest for save, and leaves the running instance unchanged; installed model choices come from the same Python inventory as CLI. Native Restart requires a second explicit review for source switching or in-place migration and passes those allowances to the owner. The shared management bridge and owner now reject a stale Restart owner/instance review before drain; editable restart recipes accept the same reviewed identities and config digest. It passed Node host route tests for runtime, components, profile save and saved benchmark report/compare with the real Python bridge. Native Calibration now reviews the same Python decode-sweep plan, apply and rollback as CLI, requires a single-use review and exclusive-access acknowledgement, and exposes a pollable host job while journaling the underlying action. Fake-engine Python tests cover stale digests, measure, smoke apply and exact rollback; a real browser fixture checked review and responsive layout, not a real engine action. Calibration and benchmark host jobs save owner-only progress and journal receipts; a restarted host can query the same job ID and reconcile a finished report. Exact-run leases distinguish an active worker from a released path, and both workflows accept cancellation. Abrupt worker death, real-engine stop latency and Windows locking still need qualification. Chat, Tuning and the browser profile store remain prototype. |
Supplied DeepSeek harness and TUI source audit, common session/approval behavior, coding CLI parity, remaining Desktop mappings, abrupt-worker and real-engine lifecycle tests, Windows locking, and LM Studio/Unsloth host integration tests. |
| Performance overhead | Bench tool records privacy-safe latency/TTFT and compare metadata; no real GPU result exists. | Fix budgets from M0 baseline. Run no-client, default Monitor, 0.5-second Monitor and Monitor-plus-code-client on identical workload, at least three retained trials after warmup. Record tokens/s, client TTFT, queue wait, cancellation latency, server/client CPU/RSS and HTTP calls/bytes/s with raw reports. |
Use the transfer packet's commit/patch and the exact baseline described in DEVELOPER_INTEGRATION_HANDOFF.md. The 11 October checkout passed 218 terminal tests, including a headless filter paste/focus check, 706 server tests (11 skipped), and 116 Desktop Node tests with TypeScript checking and a production build; the replica HTTP and rendering tests use fake engines and illustrative fixture values. monitor-soak-synthetic-2026-10-10.json records a passing 1,800.28-second synthetic client run: four expected HTTP failure responses across two disconnects, recovery after a server instance change, 32 activity and 50 request rows retained, one maximum in-flight collection, zero non-GET methods and a readable server after detach. It recorded 3,577 GETs, 27,487,739 response bytes, 89.734 seconds of combined process CPU and 17,338 bytes of final traced-memory growth from its post-start baseline. monitor-soak-rss-samples-2026-10-10.csv contains 45 combined-process RSS samples over the final 1,320.7 seconds, ranging from 32,992 to 42,912 KiB; it did not cover the first eight minutes. The synthetic sampler's 20 MiB growth limit is a regression threshold, not a release performance budget. None of these results proves native RTX 6000 throughput. The available machine is macOS ARM64 and has no NVIDIA host/container runtime. A local UI handover ZIP exists in the parent workspace; the final TUI ZIP and DeepSeek harness repository have not been supplied to this checkout.
portable-monitor-stdlib-smoke-py310-r31-2026-10-11.json and portable-monitor-stdlib-smoke-py311-r31-2026-10-11.json record the current r31 portable bundle on macOS ARM64 with Python 3.10.20 and 3.11.15. Both used -I -S, verified the bundle, read one versioned loopback telemetry snapshot, installed into a new temporary owner directory with its SHA-256 pinned, read status from that installed copy and removed it with its digest pinned. Each used exactly three GETs, including one deeply nested JSON error probe, no other HTTP methods and no site packages. tools/portable_monitor_smoke.py repeats the check on a target host. This is client and local packaging evidence, not Linux/Windows distribution or Textual rendering qualification.
A local loopback server returning a syntactically valid but excessively nested JSON response produced one redacted ClientError in both source and isolated portable status clients, with exit 3 and no traceback. The full 218-test terminal suite passed after the parser boundary fix.
portable-monitor-interactive-smoke-py311-r31-2026-10-11.json records the same r31 bundle on macOS ARM64 with Python 3.11.15 and locally installed Textual 8.2.8. The optional --interactive mode ran the lifecycle check, then imported strata_cli.monitor from the .pyz in an isolated -I process, connected to loopback v1 telemetry, rendered all six one-screen Overview panels at 110 x 30 and detached with q. It made four GETs total and no other HTTP methods. This is packaged headless rendering evidence; target OS terminals and actual engine telemetry remain unqualified.
portable-monitor-pty-smoke-py311-r31-2026-10-11.json records the packaged r31 Monitor in a real POSIX pseudo-terminal on macOS ARM64. Both q and Ctrl-C sessions entered raw/no-echo mode, exited 0, restored the exact prior terminal settings and left the loopback telemetry server readable. Each session fetched one telemetry snapshot; the final server-alive check made one more GET, with no non-GET methods. .github/workflows/terminal-portable-monitor.yml now schedules the same PTY check on Ubuntu/Python 3.11 after installing Textual, but that CI job has not run. This does not qualify Windows Terminal or a physical Linux terminal/SSH session.
minimal-cli-no-site-py310-2026-10-11.json and minimal-cli-no-site-py311-2026-10-11.json record source CLI checks on macOS with Python -S, which hides site packages including Rich and Textual. Help, JSON status, JSON one-shot monitor, missing-config offline serve and missing-harness coding error returned their expected schemas and exit codes. The loopback server saw two GETs and no other methods. The Windows/Linux CI matrix now includes this check but has not run. This proves lazy source dispatch for these paths; it does not prove a real engine serves in a clean minimal installation.
minimal-server-runtime-module-macos-py311-2026-10-11.json records a separate, newly created Python 3.11 virtual environment containing only the pinned requirements.txt runtime packages. Rich and Textual were absent. All 32 owned-runtime integration tests passed, including foreground machine JSONL ready/stop, managed start/restart/stop, source migration, rollback and fake-engine generation checks. .github/workflows/terminal-minimal-server.yml now repeats this module in a fresh Ubuntu virtual environment, but has not run. The report establishes source-checkout serving with a fake engine and excludes actual model, GPU, Windows, release-package and one-click installer qualification.
The full serve/ suite also passed in that same environment: 706 tests ran, 11 skipped, all others passed in 270.073 seconds; see minimal-server-serve-suite-macos-py311-2026-10-11.json. Its SHA-256 links to the retained local raw log. The Linux CI job includes this full suite but has not run. These tests use fake engines and do not qualify actual model loading, GPU drivers or target-host installation.
.github/workflows/terminal-portable-monitor.yml defines a small Linux/Windows matrix for Python 3.10 and 3.11. It builds the bundle from source and runs the same standard-library smoke; the Python 3.11 jobs additionally install the optional Textual dependency and exercise the packaged Overview. The workflow has not run in this local checkout. Retain its run URLs and reports after the integration branch is published; passing CI still does not replace a physical terminal, full installer or real-engine qualification.
monitor-soak-60s-status-2026-10-10.json records a separate 60.31-second synthetic run on an earlier Monitor lifecycle revision. It exercised the interactive connecting path, saw stale state during two outages, recovered after one synthetic instance restart, retained 32 activity and 50 request rows, kept at most one in-flight collection, and left the test server readable after detach. It made 100 GETs, received four expected HTTP failures and used no other HTTP methods. The shorter run checks those lifecycle changes; it does not replace the earlier 30-minute memory-stability evidence or target-hardware qualification.
monitor-soak-60s-trend-2026-10-11.json records an earlier 60.29-second synthetic 0.5-second run with the bounded output trend enabled. Two deliberate outages and one instance restart ended in a recovered monitor; the final history held 32 valid samples, never exceeded 32, and was attached to the final instance. The server handled 99 GETs including four expected HTTP failures, no other methods and at most one collection in flight, and remained readable after detach. The report observed 32 activity and 50 request rows retained. This is client stability evidence, not real-model or GPU performance evidence.
monitor-soak-60s-current-2026-10-11.json is an earlier 60.29-second run on the selected-card monitor revision after the selected-card history and resize fixes. It passed two synthetic outages, one instance restart, a bounded 32-sample output history attached to the final instance, one maximum in-flight collection, and a readable server after detach. The server handled 98 GETs, including four expected HTTP failures and no non-GET methods; the final snapshot retained 32 activity and 50 request rows. This is client stability evidence only. The live resize path is covered separately by the headless 110-to-40-to-110 selection test.
parallel-cancel-ten-cycle-synthetic-2026-10-10.json records ten fresh runs of serve.test_parallel.ParallelService.test_benchmark_cancel_suite_releases_batch_queue_and_slots. The repeated fake batched engine suite generates, cancels active and queued streams, checks recovery and returns admission to zero; a wrapper also checked that each engine process exited after unload and each HTTP listener closed. All ten passed in 33.836 seconds. This does not test a real model or driver unload.
For each target-hardware run, record source SHA, engine/backend version, exact RTX 6000 generation and VRAM, driver and OS, model/revision and hashes, selected device indices and topology, effective slot/group counts, context and request mix, warmup, repeats, failure counts and raw outputs. Compare each rate only over a defined interval. Store fixture screenshots separately from measured results.
- Install the exact reviewed build in a clean Windows or Linux environment; record installer/component hashes, versions, rights/notices and rollback result. Confirm the pure server starts with Desktop, harness and Textual absent. Install and remove the optional Monitor separately.
- Create a saved four-card profile, run
profile show --effective,doctor --components --live,components verify --live,runtime startandruntime verify. Save the effective argv, owned instance ID, configured and resolved device order, model identity and actual slot/group counts. A successful one-token verify is only a smoke check. - Use
status --jsonand the Serving, Requests, Engine, Hardware and Logs views at 110, 80, 60 and 40 columns. Verify each displayed count against the v1 response and the field matrix. Record unavailable fields explicitly. For opt-in BSTAT/PSTAT samples, retain raw engine lines, sample windows/age and native-backend build identity. A reported layer range must not be labelled live GPU occupancy. - Run the same fixed serving workload with no monitor, default Monitor, 0.5-second Monitor and Monitor plus the coding client. Warm up, then retain at least three repeated trials per condition. Save
bench rundirectories andbench compareresults only when workload fingerprints and available environment match. Measure server and terminal CPU/RSS separately, HTTP calls/bytes/s, tokens/s, client TTFT, queue wait, cancellation latency and every slow or failed request. Declare pass budgets from the M0 baseline before looking at the trial deltas. - Run mixed parallel, overload, active/queued cancellation and partial-prompt cancellation suites with the monitor both attached and detached. Choose concurrency from reported effective slots and admission limit; the overload suite must exceed the limit. Exercise at least ten load/generate/cancel/unload cycles and verify no orphan workers, stale topology, leaked request content or changed engine state after monitor detach.
- Restart the server during a 30-minute real Monitor soak, add two deliberate network interruptions, and check bounded memory/rows, one in-flight poll, reconnect, selection reset and clean detach. Repeat terminal key, resize, freeze, theme, color and ASCII glyph checks on each supported OS/terminal. Capture actual terminal screenshots separately from illustrative fixtures.
The synthetic tools/monitor_soak.py report is a useful client regression check before step 6. It runs a local fake telemetry server and cannot supply the real server CPU/RSS, inference performance, native GPU sample accuracy or operating-system qualification required above.
This is the status of the separate terminal milestone, not a claim that the full product work order is complete. Use the original development work plan for each milestone's complete acceptance criteria.
| Milestone | Terminal milestone contribution | Still required for the product gate |
|---|---|---|
| M0 intake | Current baseline, command grammar, fixture screenshots and v1 field source map recorded; the UI handover ZIP is available locally. | Audit the available UI handover; receive and audit the TUI and harness assets; pin licenses/revisions and real-model baseline; agree target OS/hardware and MVP parity. |
| M1 pure start | Opt-in foreground strata serve, explicit profile resolution, offline flag, ready file, loopback/key checks and drain handling. |
Qualify all legacy start paths, blocked-egress/offline behavior and Windows/Linux process trees on supported models. |
| M2 shared runtime contract | v1 read-only telemetry, admission controls, POSIX owned host, typed profiles/recipes, authenticated generation readiness and a versioned Desktop owner bridge with recoverable benchmark/calibration journal receipts. | Complete remaining Desktop mappings and host-worker protocol, schema migrations, security boundary and real-model cancellation/unload acceptance. |
| M3 verified distribution | Thin offline Monitor zipapp with unsigned SHA-256 manifest and local update/rollback test. | Signed release packages and trust/rotation design, whole-runtime install/update/rollback, target dependency locks and clean-room offline acceptance. |
| M4 Desktop UI | The imported native shell has owner-backed Serving, read-only Monitor/Components/Models, reviewed Profiles, Benchmarks and Calibration. | Finish Chat/Tuning and browser-store authority mapping; pass Desktop/API/CLI parity on a clean install. |
| M5 coding harness | strata code marks the missing shared component explicitly. |
Review supplied DeepSeek harness, implement shared sessions/permissions and CLI mode, then pass real-model parity scenarios. |
| M6 TUI | Six-view read-only Textual monitor with a YASD-inspired one-screen Overview, separate batch/queue/replica trends, fixtures, keyboard/resize tests and bounded telemetry client. | Reconcile supplied TUI design, real four-card and supported Windows/Linux terminal runs, attached-client overhead budget. |
| M7 cleanup and benchmarks | Privacy-safe serving benchmark suites, comparison checks, command docs and qualification matrix. The separate integration branch now merges public main at 61b3fb5d. |
Review and land the integrated changes in small PRs, remove superseded paths after migration, run full hardware suites and signed candidate release checks. |
| M8 native host runtimes | Host-adapter requirements are recorded in the plans; no native runtime package is claimed. | Build and qualify Strata as a native runtime in the chosen LM Studio/Unsloth host paths with signed packages and lifecycle tests. |
monitor-soak-30s-work-trends-2026-10-11.json records a later 30.32-second synthetic pass on the batch/queue-trend revision: 20 resizes across four terminal sizes, two outages, one restart, at most 29 batch and pre-admission samples, one in-flight read and a readable server after detach. The trend values are fixtures, not measured GPU batching. monitor-soak-30s-current-work-age-2026-10-11.json records a further 30.35-second pass on the sample-age Overview revision with the same resize/outage/restart/detach scenarios, at most 26 batch and queue history samples and one read in flight. Focused renderer tests check that a BSTAT/PSTAT sample older than five seconds is unavailable in Overview; the synthetic soak is not a native engine timing measurement.
monitor-soak-30s-ui-fixed-2026-10-11.json records a 30.31-second synthetic UI stress pass on the compact-renderer revision. It rotated four terminal sizes from 110x30 to 40x12, retained only four selected GPU histories despite unrelated, missing and duplicate sensor records, observed two outages and one restart, kept a single read in flight, and detached while the test server remained readable. A separate headless regression renders connection failures at 40, 60 and 80 columns in all six views and hides cached work values. monitor-soak-30s-ui-current-2026-10-11.json repeats this path on display revision e885bf8 after the light-palette and host-span label corrections.
monitor-soak-30s-vram-final-2026-10-11.json exercises the later per-card VRAM history through the same four terminal sizes, selected-card sensor churn, two outages, one restart and detach. The report bounds both load and VRAM series to four selected cards and 32 samples each, observes unavailable gaps in each, and checks one in-flight read and server survival. The values are fixture memory readings, not target GPU measurements.
monitor-soak-30m-ui-2026-10-11.json records the passing 1,800.31-second synthetic UI stress run started on monitor revision ba138f6: 360 terminal resizes across 110x30, 80x24, 60x16 and 40x12; two deliberate outages; one instance restart; selected-card sensor gaps and duplicates; at most four card histories and 32 samples per history; 3,581 GETs including four expected failures, no non-GET requests and one maximum in-flight collection; and a readable test server after detach. Final traced-memory growth was 597,327 bytes from the post-start baseline. monitor-soak-30m-ui-rss-2026-10-11.csv holds 26 combined-process RSS samples spanning the final 1,500.4 seconds: 44,880–45,904 KiB, first-to-last +480 KiB. The sampler missed the first five minutes. The UI and server in this test were synthetic and headless; no real model, GPU or physical Windows/Linux terminal was measured.