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
{{ message }}
Repository navigation
[Context Engine] Security, performance, hostile-workspace and physical QA #321
Maintain release evidence for hostile-workspace safety, responsiveness and physical context UX.
Architecture boundary
Test trusted collectors and pure renderers separately; physical hosts/multiplexers are independent gates.
Canonical design: docs/design/context-engine.md. Continuation protocol: docs/development/context-engine-agent-protocol.md. Program umbrella: #305.
Non-goals
No arbitrary executable modules, marketplace, mass upstream ports, release or terminal-host structural dependency. This issue is a subsystem slice, not one issue per language.
Dependencies
Starts with kernel/Rail fixture seams; extends for each shipped capability and pack parser.
Program dependency links: Begins alongside #316/#317; expanded release QA follows #318, #319 and #320.
Security constraints
Entering an untrusted workspace grants no execution authority. Never source .envrc, shell config, themes/plugins or project scripts; never execute repository-selected or arbitrary discovered binaries; no ordinary-context network or broad secret inspection. Facts are hostile input: central bounded control/bidi sanitization, no shell interpolation. Modules get no unrestricted filesystem/process/environment/network access. Secret/never-store facts must not reach snapshots. Renderers perform no I/O.
Acceptance criteria
cd + collection + repeated render executes no repository code, sends no network and exposes no secrets.
documented real Ghostty/Terminal.app/host/mux QA before closure..
Major deferred work
Future parser fixtures until their capabilities ship; broad catalog expansion and terminal emulator ownership.
Validation and checkpoints
Run focused checks and canonical verification; reproduce any claimed base/environment failures at the exact accepted base. Use CONTEXT ENGINE CHECKPOINT comments after accepted checkpoints. Physical terminal validation is distinct and remains pending until actually performed; do not close on automated checks alone.
These are human observations only. Tests 1, 2 and 7 have no recorded observation and aren't reported here.
Terminal title
Test 3 — FAIL. With Project and session on, after /rename QA Ghostty still showed notMyShell, not notMyShell — QA.
Test 4 — FAIL. Project title + Vim: after :q the title stayed "Thanks for flying Vim" until a later redraw (e.g. cd).
Test 5 — PASS.less README.md; title staying notMyShell is acceptable; q exits cleanly.
Test 6 — Security PASS / presentation FAIL. For cd /tmp/$'evil\e]0;PWNED\a' the OSC did not execute or take over the title, but the title showed debris: evil�]0;PWNED.
Test 8 — N/A (no Ghostty prompt-jump binding configured).
Open in pager
Test 9 — PASS.seq 1 5000 → block action → Open in pager → full output in less; G reaches the end.
Test 10 — PASS. Resizing while less was open reflowed it; q restored NMSh and the shell kept working.
Note: F1 did not visibly open the palette; /palette and block actions work. Audit: com.apple.keyboard.fnState is unset on this Mac, so the top row sends media keys unless Fn is held. NMSh decodes ESC O P, CSI 11~ and (from Status Strip 2.0, module manager UX, and Ghostty physical-QA fixes #328) the kitty-protocol CSI P. Not yet re-tested with Fn+F1.
Prompt / modules
Test 11 — functional PASS (Modules/Catalog/Packs, Enter → details with reads/history/freshness). UX: Space silently did nothing when nothing was recommendable.
Test 12 — functional PASS (narrow: no overlap). UX: details truncated instead of wrapping; the two-line preview dominated narrow panels.
Test 13 — PASS (NO_COLOR=1).
Test 14 — PASS (Safe glyphs).
Test 15 — PASS (module routed to the Status Strip appears there). UX: no / search; saving required leaving Modules and saving /prompt; no direct /modules; external prompt providers made the module subsystem look dead.
tmux (fresh tmux new -s qa inside Ghostty, ./bin/nmsh)
Tests 16, 17, 18 — PASS. tmux's status bar stayed intact and separate from NMSh's Status Strip; Vim/less entered and exited cleanly; Ctrl-b d then tmux attach -t qa restored NMSh intact.
New defect: with NMSh owning the pane, the mouse wheel did not scroll the transcript. It cycled previous commands in the composer (like Up/Down), which can change the command being composed.
Not yet performed: Terminal.app subset; Claude Code bridge physical test.
Fixes for tests 3, 4, 6 (presentation), the tmux wheel defect and the module UX findings are in #328 (not merged). Each needs a physical re-test before it can count as passing. Keeping this issue open.
#330 and children #331–#341 are future specifications, not implemented work or new passing QA evidence. Their issues require separate physical keyboard/focus/resize/passthrough, Safe/NO_COLOR and relevant host/tmux validation after implementation. #333 adds future multi-instance tmux publication/performance evidence; #341 has an independent executable-mod isolation gate, not a claim covered by existing Context Engine tests.
Current #328 fixes/retests remain here unchanged. #329 remains paused until #328 lands. No existing FAIL/pending result is reclassified and no issue is closed.
Activity
raiseCatError commentedon Oct 7, 2026
Physical QA checkpoint — Ghostty 1.3.1, macOS
These are human observations only. Tests 1, 2 and 7 have no recorded observation and aren't reported here.
Terminal title
/rename QAGhostty still showednotMyShell, notnotMyShell — QA.:qthe title stayed "Thanks for flying Vim" until a later redraw (e.g.cd).less README.md; title stayingnotMyShellis acceptable;qexits cleanly.cd /tmp/$'evil\e]0;PWNED\a'the OSC did not execute or take over the title, but the title showed debris:evil�]0;PWNED.Open in pager
seq 1 5000→ block action → Open in pager → full output inless;Greaches the end.lesswas open reflowed it;qrestored NMSh and the shell kept working./paletteand block actions work. Audit:com.apple.keyboard.fnStateis unset on this Mac, so the top row sends media keys unless Fn is held. NMSh decodesESC O P,CSI 11~and (from Status Strip 2.0, module manager UX, and Ghostty physical-QA fixes #328) the kitty-protocolCSI P. Not yet re-tested with Fn+F1.Prompt / modules
NO_COLOR=1)./search; saving required leaving Modules and saving/prompt; no direct/modules; external prompt providers made the module subsystem look dead.tmux (fresh
tmux new -s qainside Ghostty,./bin/nmsh)Ctrl-b dthentmux attach -t qarestored NMSh intact.Not yet performed: Terminal.app subset; Claude Code bridge physical test.
Fixes for tests 3, 4, 6 (presentation), the tmux wheel defect and the module UX findings are in #328 (not merged). Each needs a physical re-test before it can count as passing. Keeping this issue open.
raiseCatError commentedon Oct 7, 2026
Physical QA update — Ghostty / tmux (human observations), plus pending retests
PASS (human, this pass):
/rename; Vim title restoration; terminal title for the hostile directory (evil)mouse offandmouse on; composer stays unchanged while scrolling/modulessearch/save/Tab;/prompt→ Modules draft/apply; narrow module detailsHostile cwd (
mkdir -p /tmp/$'evil\e]0;PWNED\a'; cd …):evil�]0;PWNED). Fixed in Status Strip 2.0, module manager UX, and Ghostty physical-QA fixes #328 (6818e73); awaiting physical retestCursor under Ghostty → tmux → NMSh: physical FAIL (rapid, irregular flicker while idle). Root cause measured; fixed in #328 (
4ea9c0a). Automated measurement only; awaiting physical retest.Not performed yet: Terminal.app subset, Claude Code bridge. Keeping this issue open.
raiseCatError commentedon Oct 8, 2026
Future roadmap QA boundaries
#330 and children #331–#341 are future specifications, not implemented work or new passing QA evidence. Their issues require separate physical keyboard/focus/resize/passthrough, Safe/NO_COLOR and relevant host/tmux validation after implementation. #333 adds future multi-instance tmux publication/performance evidence; #341 has an independent executable-mod isolation gate, not a claim covered by existing Context Engine tests.
Current #328 fixes/retests remain here unchanged. #329 remains paused until #328 lands. No existing FAIL/pending result is reclassified and no issue is closed.