Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
242 commits
Select commit Hold shift + click to select a range
1b271e8
refactor(tui): retire the test-only resume snapshot renderer
furgalep Sep 2, 2026
38eab14
perf(tui): memoize event detail rendering
furgalep Sep 2, 2026
7092fc9
fix(tui): resolve deferred prompts when the model probe is cancelled
furgalep Sep 2, 2026
81d612f
fix(tui): enforce the arm/confirm gesture window
furgalep Sep 2, 2026
99b18b2
test(tui): drop the load race in the cancel-status acknowledgement test
furgalep Sep 2, 2026
7751dc3
test(tui): stop the list-fill fixture leaking fake sessions
furgalep Sep 2, 2026
8af5a35
refactor(tui): template-method the shared browser construction
furgalep Sep 2, 2026
9a301b0
feat: add shared interactive session foundation
furgalep Aug 3, 2026
57e96de
perf(sessions): query session summaries directly
furgalep Aug 4, 2026
adf95a5
fix(cli): bound coding activity payloads
furgalep Aug 4, 2026
ef5aea9
feat(cli): add shared coding TUI
furgalep Aug 4, 2026
2411ce4
feat(cli): support explicit LLM registry configs
furgalep Aug 4, 2026
ce8d8b8
feat(cli): load remote model registries
furgalep Aug 4, 2026
d19950c
refactor(cli): fetch registry files directly
furgalep Aug 4, 2026
2d43d03
refactor(cli): keep model registries local
furgalep Aug 4, 2026
32661eb
fix(tui): confirm clean exit on ctrl-c
furgalep Aug 4, 2026
5ef7e35
feat(tui): refine command and model workflows
furgalep Aug 4, 2026
3a5ab54
feat(tui): redesign NOOA splash
furgalep Aug 5, 2026
45fab16
refine(tui): strengthen NOOA wordmark
furgalep Aug 5, 2026
4f5c52a
refine(tui): center green NOOA wordmark
furgalep Aug 5, 2026
85f0c57
fix(tui): streamline MCP command workflows
furgalep Aug 5, 2026
23d3b41
fix(tui): restore MCP subcommand completion
furgalep Aug 5, 2026
c245c52
feat(tui): add skill directory workflow
furgalep Aug 5, 2026
1a09bef
test: isolate NOOA config writes
furgalep Aug 5, 2026
d4579e0
fix(tui): make MCP OAuth URLs accessible
furgalep Aug 5, 2026
919e346
feat(tui): complete registered model endpoints
furgalep Aug 5, 2026
5db5384
fix(skills): discover packaged and text skills together
furgalep Aug 5, 2026
a1bf522
feat(tui): capture model token limits
furgalep Aug 5, 2026
6a7ca47
Improve TUI backend connection flow
alessiodevoto Aug 5, 2026
85c1705
Address /connect review feedback
alessiodevoto Aug 5, 2026
c3477a1
Unify /connect on URL + probe-based routing detection
alessiodevoto Aug 5, 2026
ad194dd
Scope PR to /connect: remove --api-base / --api-key-env CLI overrides
alessiodevoto Aug 5, 2026
dffe7be
Simplify README /connect section
alessiodevoto Aug 5, 2026
227b508
Label /connect URL examples in README
alessiodevoto Aug 5, 2026
bb90155
Fix connect secret confirmation flow
alessiodevoto Aug 6, 2026
810abd3
Drop mouse escape sequences leaking into TUI subview input
alessiodevoto Aug 6, 2026
d36379e
Clarify RespondResult.explanation is not the user reply channel
alessiodevoto Aug 6, 2026
b39a2b5
fix(tui): improve explorer mouse and selection UX
furgalep Aug 5, 2026
e505625
fix(tui): complete file mentions in slash commands
furgalep Aug 6, 2026
f1e8971
fix(tui): report actual diff truncation
furgalep Aug 7, 2026
c4f16ae
feat(tui): add padded input composer
furgalep Aug 8, 2026
f34fc93
refactor(tui): title sessions in the agent turn
furgalep Aug 10, 2026
2a032ad
fix(memory): harden shared SQLite stores
furgalep Aug 10, 2026
3748f24
fix(tui): support MCP server names with spaces
furgalep Aug 10, 2026
7c06fb0
fix(memory): tolerate recovered JSON payloads
furgalep Aug 10, 2026
92409ab
fix(tui): show OAuth URL in scrollback (#136)
furgalep Aug 14, 2026
d380351
feat(tui): add Herdr NOOA detection patch
rdasilveiracabral Aug 14, 2026
7da7a18
fix(mcp): harden OAuth flow in remote TUI sessions (#151)
furgalep Aug 17, 2026
e56a15c
fix(skills): honor source-tree entry point targets (#156)
furgalep Aug 18, 2026
b470fb0
feat(tui): clear input on first Ctrl-C (#158)
furgalep Aug 18, 2026
007d3e9
fix(tui): stabilize native scrollback rendering (#162)
furgalep Aug 19, 2026
a33da64
fix(cli): show only the head of large diffs (#169)
furgalep Aug 19, 2026
86fdba5
Speed up TUI startup path (#165)
alessiodevoto Aug 20, 2026
b565573
feat(tui): deliver direct-agent fullscreen experience (#176)
furgalep Aug 21, 2026
c750def
fix(tui): harden fullscreen interaction and queued input (#185)
furgalep Aug 22, 2026
4937882
fix(tui): avoid displayless clipboard helpers (#192)
furgalep Aug 24, 2026
573ba86
fix(tui): restore active skills before resume event (#155)
furgalep Aug 24, 2026
79cb39b
fix(tui): preserve transcript text when copying (#198)
furgalep Aug 24, 2026
237591d
fix(tui): coalesce native resize redraw (#204)
furgalep Aug 24, 2026
88e04aa
feat(tui): improve fullscreen follow behavior
furgalep Aug 24, 2026
510edfb
fix(tui): preserve and word-wrap fullscreen prose
furgalep Aug 25, 2026
0e58ac4
fix(tui): preserve multiline list structure
furgalep Aug 25, 2026
5662a79
fix(tui): make interrupt keys unambiguous
furgalep Aug 25, 2026
700921e
fix(tui): place code copy action in footer
furgalep Aug 25, 2026
b45c7cd
fix(tui): acknowledge turn interruption immediately
furgalep Aug 25, 2026
b8375b9
feat: add compact and delegating bench agents
furgalep Aug 20, 2026
c783092
fix(tui): tighten acceptance interactions
furgalep Aug 25, 2026
32a915b
feat(codeact): add experimental single-tool strategy
furgalep Aug 20, 2026
6459c64
fix(tui): harden interrupt and code copy edge cases
furgalep Aug 25, 2026
8c447a4
feat(tui): add opt-in experimental coding agent
furgalep Aug 20, 2026
914aa51
fix(tui): render file links and refresh themed history
furgalep Aug 25, 2026
36c7666
feat(bench): use experimental strategy and same-kind delegation
furgalep Aug 20, 2026
86a7ab5
feat(tui): persist theme selection
furgalep Aug 25, 2026
6ecb76b
fix(tui): preserve summarization for custom coding agents
furgalep Aug 20, 2026
59b4a91
fix(tui): support absolute file URL shorthand
furgalep Aug 25, 2026
a36b680
docs(bench): remove context design notes
furgalep Aug 21, 2026
52f040e
fix(tui): keep interrupt acknowledgement visible
furgalep Aug 25, 2026
20a9998
refactor(agents): simplify prompts and delegation
furgalep Aug 21, 2026
25e068d
fix(tui): isolate delayed interrupt status
furgalep Aug 25, 2026
93b3988
feat(coding): prefer background subagent spawning
furgalep Aug 21, 2026
4ee4894
fix(tui): replace interrupt status before completion
furgalep Aug 25, 2026
aadb74d
docs(agents): clarify background delegation flow
furgalep Aug 21, 2026
1374c08
feat(tui): pulse interrupt status
furgalep Aug 25, 2026
48387b9
docs(agents): tighten delegation prompts
furgalep Aug 21, 2026
20fb89e
fix(tui): address final interrupt review
furgalep Aug 25, 2026
9159cfd
refactor(interactive): standardize need-input reason
furgalep Aug 21, 2026
9076c2d
fix(tui): preserve code padding without copy header
furgalep Aug 25, 2026
980a890
feat(tui): hide pending input previews
furgalep Aug 21, 2026
f7097b4
fix(tui): make theme switching comprehensive
furgalep Aug 25, 2026
997f2e2
fix(tui): render python_cell code events
furgalep Aug 21, 2026
dfdc071
fix(tui): address theme review findings
furgalep Aug 25, 2026
bce2d3f
fix(tui): format python_cell in event explorer
furgalep Aug 21, 2026
c0a31ee
fix(tui): defer retained theme refresh
furgalep Aug 25, 2026
b1f511b
fix(tui): shorten delegation job labels
furgalep Aug 21, 2026
0fc5e29
feat(tui): compact large text pastes
furgalep Aug 25, 2026
090fe4c
feat(agents): delegate todo objects with merged notes
furgalep Aug 22, 2026
881e8e9
fix(tui): expand pasted text in scrollback
furgalep Aug 26, 2026
f8eb287
feat(tui): make single-tool agent the default
furgalep Aug 24, 2026
4d91197
fix(tui): lower paste attachment thresholds
furgalep Aug 26, 2026
9728986
fix(tui): restore queued command rendering after rebase
furgalep Aug 24, 2026
9ef9350
fix(tui): address paste attachment review findings
furgalep Aug 26, 2026
30b9f82
fix(runtime): harden background job lifecycle
furgalep Aug 24, 2026
d55f1e5
feat(tui): add subtle edges to user message bars
furgalep Aug 26, 2026
eac9475
refactor(codeact): promote the single-tool strategy API
furgalep Aug 24, 2026
199a2c9
fix(tui): use terminal default for user bar edges
furgalep Aug 26, 2026
2621a7d
feat(todo): expose bounded task status and delegation helpers
furgalep Aug 24, 2026
90a8614
test(tui): verify semantic user bar edge colors
furgalep Aug 26, 2026
e8f4ee5
fix(coding): harden delegated workspace context
furgalep Aug 24, 2026
b3fb6f9
style(tui): apply current formatter after rebase
furgalep Aug 26, 2026
687ea11
fix(bench): close resources and sanitize delegation context
furgalep Aug 24, 2026
af5a72a
fix(coding): keep session title requests host-owned
furgalep Aug 26, 2026
f60924d
fix: address CodeRabbit review findings
furgalep Aug 24, 2026
4ae25ac
fix(tui): wrap quoted and user text safely
furgalep Aug 26, 2026
d712fb7
fix: yield while awaiting spawned agents
furgalep Aug 25, 2026
17c9742
fix(tui): harden text wrapping edge cases
furgalep Aug 26, 2026
bf75a00
feat: rename experimental CodeAct tool to python_cell
furgalep Aug 25, 2026
de67f64
feat(cli): add headless run command
furgalep Aug 26, 2026
78b0c57
feat(runtime): describe active background jobs
furgalep Aug 25, 2026
4c6a3c9
fix(cli): harden headless run contracts
furgalep Aug 26, 2026
4ab0277
docs(tui): add bounded RLM delegation guidance
furgalep Aug 25, 2026
e707ce4
Improve TUI first-run model connection flow
alessiodevoto Aug 25, 2026
707c9a7
fix(tui): retire duplicate queued message rows
furgalep Aug 25, 2026
741b123
Refresh native transcript blocks by span
alessiodevoto Aug 27, 2026
cb7edb1
fix(tui): constrain nested code block width
furgalep Aug 25, 2026
aab63b1
Replay native transcript after startup refresh
alessiodevoto Aug 27, 2026
4cead3c
feat(todo): surface a single active task
furgalep Aug 25, 2026
2ad108b
feat(tui): add native session resume picker
furgalep Aug 26, 2026
7346dc0
feat(tui): streamline agent working context
furgalep Aug 25, 2026
a4ea987
refactor(tui): match session picker to conversation flow
furgalep Aug 26, 2026
5f7a5f5
fix(tui): make Python state context concise
furgalep Aug 25, 2026
17681ed
refactor(tui): add conversation preview to resume picker
furgalep Aug 27, 2026
6fb3e22
fix(tui): include types for persistent state
furgalep Aug 25, 2026
d01130e
fix(tui): harden resume picker interactions
furgalep Aug 27, 2026
e97d421
fix(tui): expose full Python state inventory
furgalep Aug 25, 2026
a4f6271
perf(tui): cache resume picker search text
furgalep Aug 27, 2026
2a90058
fix(tui): make Python state guidance actionable
furgalep Aug 25, 2026
bd3ad29
fix(tui): refine resume picker navigation
furgalep Aug 27, 2026
d80e8ec
feat(agents): clarify durable state ownership
furgalep Aug 25, 2026
fe6aa1c
refactor(tui): compact resume picker layout
furgalep Aug 27, 2026
7243f01
refactor(agents): unify persistent variable proxies
furgalep Aug 25, 2026
632a38e
refactor(tui): unify resume picker controls
furgalep Aug 27, 2026
d3148cc
fix(tui): show imports in Python state
furgalep Aug 25, 2026
ab460c6
feat(tui): navigate resume transcript matches
furgalep Aug 27, 2026
743e311
feat(tui): unify fullscreen search on word-AND terms
furgalep Sep 2, 2026
1e89dc1
refactor(tui): rename Python cell state surface
furgalep Aug 25, 2026
5ba5a69
perf(tui): prepare resume previews asynchronously
furgalep Aug 27, 2026
8f8f7ce
fix(tui): honest event search and shared detail highlighting
furgalep Sep 2, 2026
6e613b9
docs(tui): list preloaded Python cell helpers
furgalep Aug 25, 2026
3f548c8
fix(tui): make resume sort controls reliable
furgalep Aug 27, 2026
b8b006a
fix(tui): confirm destructive memory actions and keep Alt-chords in s…
furgalep Sep 2, 2026
6788803
fix(tui): show Python import state as delta
furgalep Aug 25, 2026
a01a857
fix(tui): make resume search predictable
furgalep Aug 27, 2026
20463d5
fix(tui): resume list fills its pane like other browsers
furgalep Sep 2, 2026
8e99a9c
style(agents): standardize actionable hint prefixes
furgalep Aug 25, 2026
d071d34
refactor(tui): unify fullscreen explorers
furgalep Aug 27, 2026
d399b7a
feat(tui): unify up/down navigation on the resume contract
furgalep Sep 2, 2026
a4db777
feat(tui): select and copy fullscreen viewer text
furgalep Aug 31, 2026
505b1d1
feat(codeact): advertise static cell capabilities
furgalep Aug 25, 2026
2eaf4a0
fix(tui): newline sanitization, separator lines, and mouse scroll rou…
furgalep Aug 28, 2026
dc4e4d0
feat(tui): show match position in every detail header
furgalep Sep 2, 2026
0d54abc
fix(tui): preserve preview drag across redraw
furgalep Sep 1, 2026
494bf16
docs(codeact): clarify cell state lifetime
furgalep Aug 26, 2026
680cabd
fix(tui): enable search match jumping in event explorer detail view
furgalep Aug 28, 2026
a7d3090
fix(tui): keep the search reveal visible in explorer detail views
furgalep Sep 2, 2026
0c60073
fix(tui): polish fullscreen selection feedback
furgalep Sep 1, 2026
2825384
refactor(tui): trim experimental worker context
furgalep Aug 26, 2026
855c09d
fix(tui): route mouse events before text fallback
furgalep Aug 28, 2026
f3a785b
refactor(tui): delete dead config, dead search code, and dead match m…
furgalep Sep 2, 2026
23f4efc
fix(tui): route mouse input to shared explorers
furgalep Sep 1, 2026
0216e33
refactor(context): rename Python cell tools block
furgalep Aug 26, 2026
61a7dfc
fix(tui): anchor option popup below its control
furgalep Aug 28, 2026
eecf0c3
refactor(tui): resume options join the shared option machinery
furgalep Sep 2, 2026
3bae6fa
refactor(tui): specialize explorer browser for resume
furgalep Sep 1, 2026
c786039
fix(codeact): separate app state policy
furgalep Aug 26, 2026
865b581
fix(tui): address explorer review findings
furgalep Aug 28, 2026
57468af
refactor(tui): share the resume search control and add Home/End parity
furgalep Sep 2, 2026
67f6274
style(tui): terminal default foreground for fullscreen text
furgalep Sep 1, 2026
f470cf1
fix(tui): preserve compact queue labels after rebase
furgalep Aug 26, 2026
a79b917
test(tui): verify list wheel keeps detail fixed
furgalep Aug 28, 2026
f4d6e61
refactor(tui): route resume keys through the shared browser dispatch
furgalep Sep 2, 2026
ed0d5b6
fix(tui): theme-aware inline code spans
furgalep Sep 1, 2026
4cfc29c
refactor(tui): streamline experimental agent context
furgalep Aug 26, 2026
fb35121
fix(tui): clear stale detail matches on row move
furgalep Aug 28, 2026
a4c8723
fix(tui): center revealed search matches vertically
furgalep Sep 2, 2026
9247762
fix(tui): reserve list marker column in shared browser
furgalep Sep 1, 2026
3584881
fix(rebase): reconcile coding agent with latest dev tui
furgalep Aug 26, 2026
332ed3d
fix(tui): invalidate stale detail match caches
furgalep Aug 28, 2026
5a08cdf
test(tui): close coverage gaps from the re-review
furgalep Sep 2, 2026
e819261
test(tui): close review gaps in fullscreen browser
furgalep Sep 1, 2026
d86b4e1
feat: add runtime support and behavior evaluation
furgalep Aug 28, 2026
d358ddf
fix(tui): queue prompts during startup probe
furgalep Aug 28, 2026
da4ccb0
fix(tui): complete session ids after /resume
furgalep Sep 2, 2026
c3d0539
fix(tui): close correctness review findings in fullscreen browser
furgalep Sep 1, 2026
959c34f
fix: complete beautiful bench integration
furgalep Sep 2, 2026
6742dd6
fix(tui): harden deferred prompt ownership
furgalep Aug 28, 2026
9bbb908
fix(tui): adapt tests to upstream TodoExplorerRow description field
furgalep Sep 2, 2026
fc5e28d
fix(tui): adapt fullscreen selection to current dev/tui
furgalep Sep 1, 2026
4c11619
fix: address remaining CodeRabbit findings
furgalep Sep 2, 2026
16c4f0a
fix(tui): stabilize context usage status
furgalep Aug 28, 2026
1fc357d
fix(tui): address CodeRabbit review findings
furgalep Sep 2, 2026
e218c8d
fix(tui): rail color, visible resume matches, colored event search
furgalep Sep 2, 2026
99d33e0
Merge pull request #179 from NVIDIA-NeMo/feat/beautiful-bench-agents
furgalep Sep 2, 2026
6aa9a71
fix(tui): keep the detail pane scrolling while searching
furgalep Sep 2, 2026
52840b2
Merge pull request #244 from NVIDIA-NeMo/fix/fullscreen-viewer-select…
furgalep Sep 2, 2026
084a13d
Merge pull request #245 from NVIDIA-NeMo/fix/fullscreen-search-unific…
furgalep Sep 2, 2026
cf1d81a
fix(coding): keep snapshot-backed models opaque in delegated context
furgalep Sep 2, 2026
ac69cd6
fix(tui): apply PR #248 review findings
furgalep Sep 2, 2026
364c688
fix(tui): apply PR #248 correctness review findings
furgalep Sep 2, 2026
4cbf66a
fix(tui): address the PR #248 CodeRabbit pass
furgalep Sep 3, 2026
8e213b6
fix(tui): expire the memory arm/confirm hint at the window edge
furgalep Sep 3, 2026
d8e6d30
Merge pull request #248 from NVIDIA-NeMo/fix/tui-fullscreen-followups
furgalep Sep 3, 2026
75e1071
feat(strategy): accept registry aliases in @strategy(llm=...)
furgalep Sep 3, 2026
cb8c7c9
refactor(strategy): share alias resolution across all llm= call sites
furgalep Sep 3, 2026
74a2cdd
fix(strategy): address subagent review findings on alias resolution
furgalep Sep 3, 2026
66e4421
fix(tui): stop preview-build storms from stalling /resume navigation
furgalep Sep 3, 2026
5de2696
feat(tui): stream the /resume preview in as it builds
furgalep Sep 3, 2026
903a250
Merge pull request #251 from NVIDIA-NeMo/feat/strategy-llm-alias
furgalep Sep 3, 2026
fc05178
fix(tui): reveal resume previews from the bottom up
furgalep Sep 3, 2026
4f648ba
fix(tui): retain replacement resume preview tasks
furgalep Sep 3, 2026
d31a45d
fix(tui): address resume preview review findings
furgalep Sep 3, 2026
1ec1ad5
Merge pull request #254 from NVIDIA-NeMo/fix/tui-picker-resume-perf
furgalep Sep 3, 2026
e8268d6
fix(tui): restore corrupted fullscreen sources
furgalep Sep 4, 2026
49bae14
Merge pull request #257 from NVIDIA-NeMo/fix/tui-corrupted-files
furgalep Sep 4, 2026
4ff3975
fix(storage): expose active sessions across sandboxes
furgalep Sep 4, 2026
2244970
fix(storage): always release local session locks
furgalep Sep 4, 2026
ca9f2b9
Merge pull request #255 from NVIDIA-NeMo/fix/sandbox-session-active-c…
furgalep Sep 4, 2026
85eb521
fix(tui): bound resume preview workers
furgalep Sep 4, 2026
eff541e
docs(tui): document touched preview helpers
furgalep Sep 4, 2026
00011bc
Merge pull request #259 from NVIDIA-NeMo/fix/resume-picker-worker-bac…
furgalep Sep 4, 2026
429114c
feat(tui): add accessible extensible themes
furgalep Sep 3, 2026
c89b7bd
Merge pull request #253 from NVIDIA-NeMo/feat/improve-highlight-colors
furgalep Sep 4, 2026
fd23dd8
feat(tui): add on-demand theme gallery
furgalep Sep 4, 2026
0c11d3c
fix(tui): address theme gallery review
furgalep Sep 4, 2026
ebd0c54
fix(tui): bound expanded gallery archives
furgalep Sep 4, 2026
7a61bc6
fix(tui): harden gallery archive parsing
furgalep Sep 4, 2026
7b57335
Merge pull request #260 from NVIDIA-NeMo/feat/theme-gallery
furgalep Sep 4, 2026
2fef2b3
fix(llm): retain OpenAI Responses reasoning state 🤖🤖🤖
furgalep Sep 4, 2026
924e4f0
address review: parse Responses cache tokens; clarify reasoning-state…
furgalep Sep 4, 2026
12dedcd
address review: annotate Responses config; capability-gate /reasoning…
furgalep Sep 4, 2026
f1d2a54
feat(codeact): append-only text-only recovery with pluggable correcti…
furgalep Sep 5, 2026
7ee4940
feat(codeact): model-family provenance gate for replayed reasoning st…
furgalep Sep 5, 2026
582f335
feat(llm): retain + replay plain-text reasoning for chat families (#2…
furgalep Sep 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,18 @@
from nooa.storage.sqlite import _ensure_schema


@pytest.fixture(autouse=True)
def _isolate_config_dirs(tmp_path, monkeypatch):
"""Keep tests out of the developer's real NOOA config directories.

Project config discovery normally walks up from the checkout. Any test
exercising a settings writer would therefore mutate this repository's
``.nooa/settings.yaml`` unless both writable config roots are isolated.
"""
monkeypatch.setenv("NEMO_OO_USER_DIR", str(tmp_path / "user"))
monkeypatch.setenv("NEMO_OO_PROJECT_DIR", str(tmp_path / "project"))


@pytest.fixture
def sqlite_conn():
"""In-memory SQLite connection with schema initialized."""
Expand Down
4 changes: 4 additions & 0 deletions docs/concepts/strategies.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ class ResearchAgent(Agent, llm=fast_llm):
...
```

The `llm=` override also accepts a registry alias or model string
(``@strategy(PredictStrategy(), llm="gpt-5-mini")``) — resolved lazily on the
first call per instance, so declaring it constructs no client at import time.

LLM overrides may also be supplied per instance or per call. Keep model routing
out of the public method contract unless the application truly needs callers to
choose it.
Expand Down
325 changes: 325 additions & 0 deletions evaluations/agent-interface-changes.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,325 @@
{
"schema_version": 1,
"signal_catalog": "nooa_bench.behavior_analyzer:SIGNAL_DESCRIPTIONS",
"changes": [
{
"id": "event-summary-readable-collapse",
"status": "implemented",
"component": "event history",
"hypothesis": "Readable collapse labels and drill-down hints improve history recovery without corrupting tool pairing.",
"deterministic_checks": [
"tests/context_blocks/test_formatters.py summary rendering and tool pairing"
],
"trace_expectations": [
{
"signal": "execution_error_rate",
"direction": "non_increasing"
}
],
"benchmark_slices": [
"long-context",
"compaction"
]
},
{
"id": "suppress-redundant-controller-context",
"status": "implemented",
"component": "controller prompt",
"hypothesis": "Suppressing generic state/execution/context-usage blocks reduces prompt noise while preserving tool-directed behavior.",
"deterministic_checks": [
"tests/runtime/test_context_builder.py suppression and cache-boundary tests"
],
"trace_expectations": [
{
"signal": "self_reference_rate",
"direction": "non_decreasing"
},
{
"signal": "completion_rate",
"direction": "non_decreasing"
}
],
"benchmark_slices": [
"all"
]
},
{
"id": "hide-framework-expr-metadata",
"status": "implemented",
"component": "context rendering",
"hypothesis": "Only user-authored dynamic expressions should expose expr metadata; framework internals should remain readable.",
"deterministic_checks": [
"tests/context_blocks/test_formatters.py expression metadata tests"
],
"trace_expectations": [
{
"signal": "execution_error_rate",
"direction": "non_increasing"
}
],
"benchmark_slices": [
"interface-discovery"
]
},
{
"id": "deduplicate-worker-todo-docs",
"status": "implemented",
"component": "worker prompt",
"hypothesis": "Removing duplicate TodoManager docs saves context without reducing structured task-state use.",
"deterministic_checks": [
"packages/nooa-cli/tests/tui/test_experimental_agent.py capability-size and discovery tests"
],
"trace_expectations": [
{
"signal": "todo_state_uses",
"direction": "non_decreasing"
},
{
"signal": "todo_comments",
"direction": "non_decreasing"
}
],
"benchmark_slices": [
"delegated-multistep"
]
},
{
"id": "bounded-generic-execution-context",
"status": "implemented",
"component": "CodeAct execution context",
"hypothesis": "An 8000-character deterministic capability listing preserves discovery while preventing unbounded prompt growth.",
"deterministic_checks": [
"tests/strategies/test_execution_context_leaks.py aggregate-cap and namespace tests"
],
"trace_expectations": [
{
"signal": "self_reference_rate",
"direction": "non_decreasing"
},
{
"signal": "execution_error_rate",
"direction": "non_increasing"
}
],
"benchmark_slices": [
"large-agent-surface",
"all"
]
},
{
"id": "bounded-experimental-capabilities",
"status": "implemented",
"component": "experimental python context",
"hypothesis": "Capping displayed modules and separating static imports from live locals reduces noise without hiding discoverability paths.",
"deterministic_checks": [
"tests/strategies/test_codeact_experimental.py compact-capability tests"
],
"trace_expectations": [
{
"signal": "self_reference_rate",
"direction": "non_decreasing"
},
{
"signal": "execution_error_rate",
"direction": "non_increasing"
}
],
"benchmark_slices": [
"large-agent-surface"
]
},
{
"id": "safe-default-state-selection",
"status": "implemented",
"component": "generic state context",
"hypothesis": "An aggregate-bounded state display should prevent oversized prompts while retaining visible user state; nosnapshot must remain distinct from hidden.",
"deterministic_checks": [
"tests/utils/test_doc_utility.py aggregate prompt-state cap and unchanged small-state rendering",
"tests/utils/test_doc_utility.py nosnapshot/hidden marker independence",
"tests/runtime/test_context_integration.py explicit protected-block suppression"
],
"trace_expectations": [
{
"signal": "persistent_state_uses",
"direction": "non_decreasing"
},
{
"signal": "execution_error_rate",
"direction": "non_increasing"
}
],
"benchmark_slices": [
"large-state",
"persistent-state"
]
},
{
"id": "compact-stateful-shell-state",
"status": "implemented",
"component": "tool state",
"hypothesis": "Compact shell cwd and repository root/session state let models orient after directory changes without exposing session internals.",
"deterministic_checks": [
"packages/nooa-bench/tests/test_bench_agent.py compact state tracks shell cwd and omits session internals"
],
"trace_expectations": [
{
"signal": "shell_commands",
"direction": "non_decreasing"
},
{
"signal": "execution_error_rate",
"direction": "non_increasing"
}
],
"benchmark_slices": [
"multi-directory",
"repository-navigation"
]
},
{
"id": "clarify-python-shell-cwd-boundary",
"status": "implemented",
"component": "python cell state",
"hypothesis": "Explicitly distinguishing the persistent shell cwd from the host Python process cwd reduces misplaced relative Python file operations after shell cd.",
"deterministic_checks": [
"packages/nooa-cli/tests/tui/test_experimental_agent.py rendered prompt names self.shell-only cwd boundary",
"tests/strategies/test_codeact_experimental.py fallback cwd is explicitly informational"
],
"trace_expectations": [
{
"signal": "execution_error_rate",
"direction": "non_increasing"
},
{
"signal": "shell_commands",
"direction": "non_decreasing"
}
],
"benchmark_slices": [
"multi-directory",
"file-editing"
]
},
{
"id": "argv-safe-shell-execution",
"status": "implemented",
"component": "shell tool",
"hypothesis": "Accepting argv sequences on the familiar run/run_stream methods reduces quoting and shell-injection mistakes while preserving persistent cwd and environment state.",
"deterministic_checks": [
"tests/tools/test_shell_tools_modern_behavior.py literal metacharacters, validation, persistence, and streaming",
"packages/nooa-cli/tests/test_coding_activity.py telemetry records normalized command"
],
"trace_expectations": [
{
"signal": "shell_argv_commands",
"direction": "increase"
},
{
"signal": "execution_error_rate",
"direction": "decrease"
}
],
"benchmark_slices": [
"argument-heavy-shell",
"paths-with-spaces",
"untrusted-input"
]
},
{
"id": "structured-restricted-code-errors",
"status": "implemented",
"component": "code validation feedback",
"hypothesis": "Stable visible validator codes plus structured exception fields make restriction failures diagnosable and recovery measurable without adding traceback noise.",
"deterministic_checks": [
"tests/runtime/test_code_validator.py validates visible [E501], code, line_number, and fix_hint",
"tests/test_error_formatting.py preserves traceback-free validation errors"
],
"trace_expectations": [
{
"signal": "restricted_code_errors",
"direction": "non_increasing"
},
{
"signal": "execution_error_rate",
"direction": "non_increasing"
}
],
"benchmark_slices": [
"restricted-code-recovery",
"all"
]
},
{
"id": "canonical-facades-and-structured-errors",
"status": "implemented",
"component": "coordination and validation feedback",
"hypothesis": "Canonical Todo ownership, capability-aware queue hints, and stable validator error codes reduce invalid API calls and improve recovery from rejected cells.",
"deterministic_checks": [
"tests/runtime/test_queue_status_cheat_sheet.py hides reader hints for host-owned channels",
"packages/nooa-cli/tests/test_coding_agent.py Todo skill owns todo_status",
"tests/runtime/test_code_validator.py exposes structured code/line/fix fields",
"packages/nooa-bench/tests/test_behavior_analyzer.py counts restriction errors and recovery"
],
"trace_expectations": [
{
"signal": "restricted_code_errors",
"direction": "non_increasing"
},
{
"signal": "recovered_restricted_code_errors",
"direction": "increase"
},
{
"signal": "todo_state_uses",
"direction": "non_decreasing"
}
],
"benchmark_slices": [
"restricted-code-recovery",
"delegated-multistep"
]
},
{
"id": "structured-path-diagnostics",
"status": "implemented",
"component": "shell and repository tools",
"hypothesis": "Path errors that expose the requested path, resolved path, and actual resolution base reduce repeated wrong-directory operations.",
"deterministic_checks": [
"tests/tools/test_shell_tools_modern_behavior.py ShellTools read reports shell-cwd resolution",
"packages/nooa-cli/tests/test_repo_tools_diagnostics.py RepoTools returns repo-root diagnostic"
],
"trace_expectations": [
{
"signal": "path_resolution_errors",
"direction": "decrease"
},
{
"signal": "execution_error_rate",
"direction": "non_increasing"
}
],
"benchmark_slices": [
"multi-directory",
"missing-path-recovery"
]
},
{
"id": "deterministic-interface-behavior-ledger",
"status": "implemented",
"component": "evaluation",
"hypothesis": "AST-derived trajectory signals make prompt/interface effects comparable across models and agent variants without an LLM judge.",
"deterministic_checks": [
"packages/nooa-bench/tests/test_behavior_analyzer.py end-to-end synthetic trajectory"
],
"trace_expectations": [
{
"signal": "completion_rate",
"direction": "non_decreasing"
}
],
"benchmark_slices": [
"all"
]
}
]
}
Loading