YeonGyu-Kim
b3242e8c04
fix( #735 ): classify_error_kind: /compact and other interactive-only slash commands now emit error_kind:interactive_only not unknown
2026-05-26 14:08:53 +09:00
YeonGyu-Kim
d4494a8aeb
fix( #734 ): agents/plugins show not-found envelopes gain message field; parity with skills show
2026-05-26 13:34:36 +09:00
YeonGyu-Kim
cc86f54d65
fix( #701 ): doctor JSON details[] now {key,value} objects; prose preserved as details_prose[]; acceptance check passes
2026-05-26 13:10:05 +09:00
YeonGyu-Kim
db80c9b96e
fix( #733 ): diff JSON adds changed_file_count; run git diff --name-only for staged+unstaged and deduplicate into BTreeSet
2026-05-26 13:05:44 +09:00
YeonGyu-Kim
4c16a42f39
fix( #732 ): status JSON allowed_tools.entries:null→[] when unrestricted; callers can use .entries|length without null guard
2026-05-26 12:36:13 +09:00
YeonGyu-Kim
29dcd478a0
fix( #731 ): sandbox JSON status:error→warn when filesystem sandbox active but namespace unsupported (macOS degraded state)
2026-05-26 12:05:11 +09:00
YeonGyu-Kim
425d94ee43
fix( #730 ): add path field to plugins list/show JSON; completes path-discoverability trio (agents #728 , skills #729 , plugins #730 )
2026-05-26 11:38:48 +09:00
YeonGyu-Kim
8f44ad308d
fix( #729 ): add path field to skills list/show JSON; SkillSummary parity with AgentSummary ( #728 )
2026-05-26 11:32:53 +09:00
YeonGyu-Kim
fa29909f05
fix( #728 ): add path field to agents list/show JSON; AgentSummary now stores on-disk .toml path from discovery loop
2026-05-26 11:09:46 +09:00
YeonGyu-Kim
9757fef8a7
fix( #727 ): add has_upstream bool to branch_freshness JSON to disambiguate fresh:null-no-upstream from fresh:null-unknown
2026-05-26 10:34:28 +09:00
YeonGyu-Kim
a0c6c8ba53
fix( #726 ): classify legacy_session_no_workspace_binding error_kind in export path
2026-05-26 10:04:32 +09:00
YeonGyu-Kim
922c239863
fix( #723 ): add scripts/roadmap-next-id.sh to prevent concurrent ROADMAP id collision; document optimistic-append pattern
2026-05-26 08:09:54 +09:00
YeonGyu-Kim
d8a6109085
docs(#721/#722): re-add ROADMAP entry for config section expansion after rebase conflict
2026-05-26 08:06:11 +09:00
YeonGyu-Kim
02d1f6a04d
fix( #720 ): claw help <topic> now routes to subsystem help instead of cli_parse error; add Agents/Skills/Plugins/Mcp/Config/Diff help topics
2026-05-26 07:36:50 +09:00
YeonGyu-Kim
fe2b13a46a
fix( #719 ): plugins list <filter> now applies substring filter on plugin id, matching agents/skills parity
2026-05-26 07:03:22 +09:00
YeonGyu-Kim
556a598f2d
fix( #718 ): implement plugins show/info/describe command with not-found error, parity with agents/skills show
2026-05-26 06:33:52 +09:00
YeonGyu-Kim
8d80f2ffe7
test( #717 ): add contract tests for agents show not-found and agents list filter in output_format_contract
2026-05-26 06:04:23 +09:00
YeonGyu-Kim
a0b375c157
fix( #717 ): implement agents show/info/describe and list filter commands, mirror skills handler parity
2026-05-26 05:36:27 +09:00
YeonGyu-Kim and GitHub
6a007344ae
Merge pull request #3111 from Yeachan-Heo/fix/issue-694-prepush-build-gate
...
Fix ROADMAP #694 : add local pre-push build gate
2026-05-26 05:29:31 +09:00
YeonGyu-Kim
98f8926998
fix( #716 ): align 5 resume-path error JSON envelopes from legacy type:error shape to standard kind/action/status/error_kind/exit_code contract
2026-05-26 05:04:50 +09:00
YeonGyu-Kim and GitHub
76c8d4801e
Merge pull request #3110 from Yeachan-Heo/fix/issue-693-analog-phase-error
...
Fix claw-analog bootstrap phase drift errors
2026-05-26 04:39:36 +09:00
YeonGyu-Kim
4b8731ba11
fix( #715 ): add action+status fields to resume-path json responses: compact/clear/cost/stats/history/session_exists/session_delete/memory/restored
2026-05-26 04:35:46 +09:00
YeonGyu-Kim and GitHub
590b5b614c
Merge pull request #3109 from Yeachan-Heo/fix/issue-714-json-action-contract
...
Fix JSON action contract gaps
2026-05-26 04:09:55 +09:00
YeonGyu-Kim
7037d84d52
fix( #714 ): add action:help to top-level help json, render_export_help_json, render_help_topic_json, and resume repl help json
2026-05-26 04:03:34 +09:00
YeonGyu-Kim
7d6b2044d5
fix( #713 ): add missing action fields to acp and config json responses; acp->status, config bare->list, config section->show
2026-05-26 03:32:02 +09:00
YeonGyu-Kim
fdde5e45cf
fix( #712 ): add missing action fields to doctor/status/bootstrap-plan/dump-manifests json responses
2026-05-26 03:02:57 +09:00
YeonGyu-Kim
bae0099c7c
fix( #711 ): add missing action fields to version/system-prompt/export/init json responses; add contract test assertions
2026-05-26 02:33:26 +09:00
YeonGyu-Kim and GitHub
42c17bc4bf
Merge pull request #3108 from Yeachan-Heo/fix/issue-335-session-created-at-ms
...
Expose created_at_ms in session list JSON
2026-05-26 02:15:40 +09:00
YeonGyu-Kim
f8a901c2a5
fix( #710 ): diff --output-format json adds missing action:diff and working_directory fields to both ok and error branches
2026-05-26 02:07:46 +09:00
YeonGyu-Kim
8f8eb41e0f
fix( #709 ): remove duplicate status:ok keys from render_agents_report_json and render_skill_install_report_json; silent overwrite risk in serde_json json! macro
2026-05-26 01:32:37 +09:00
YeonGyu-Kim
47c0226a61
fix( #708 ): skills show/info/describe responses now emit action:show instead of action:list; remove duplicate status key from render_skills_report_json
2026-05-26 01:05:07 +09:00
YeonGyu-Kim and GitHub
26a50d918b
Merge pull request #3107 from Yeachan-Heo/fix/issue-698-config-warning-dedup
...
test: cover config warning dedup for inventory commands
2026-05-26 00:41:39 +09:00
YeonGyu-Kim
401f6b152c
fix( #707 ): init test temp_dir combines AtomicU64 counter+nanos to prevent same-process parallel test collisions
2026-05-26 00:36:07 +09:00
YeonGyu-Kim
dedad14ae4
fix( #706 ): skills show <name> returns error+exit1 when skill not found; classify_error_kind covers skill_not_found from prose message
2026-05-26 00:04:39 +09:00
YeonGyu-Kim
f84799c8ef
fix: auto_compact runs before every iteration break, including terminal no-tool turns; closes #3106
2026-05-25 23:59:04 +09:00
YeonGyu-Kim
732007da8e
fix( #705 ): add estimated_cost_usd_num (float) to usage JSON alongside string field; doc entry filed
2026-05-25 23:33:14 +09:00
YeonGyu-Kim
8f809d9a9e
fix( #704 ): DiagnosticCheck.json_value now emits stable snake_case id field; doctor checks addressable without scraping name prose
2026-05-25 23:04:06 +09:00
YeonGyu-Kim
f6cab2711f
docs(roadmap): add #704 doctor checks label:null makes check identity unaddressable by machine parsers
2026-05-25 23:01:22 +09:00
YeonGyu-Kim
1a6f54b970
fix( #703 ): plugins list JSON now has summary:{total,enabled,disabled,load_failures}; drop reload_runtime/target from list response in both top-level and resume paths
2026-05-25 22:34:20 +09:00
YeonGyu-Kim and GitHub
1555785294
Merge pull request #3104 from Yeachan-Heo/fix/issue-702-allowed-tools-ci
...
Stabilize allowedTools rejection contract in CI
2026-05-25 22:03:40 +09:00
YeonGyu-Kim
2f9429cbf0
fix: slash-command guard errors now emit error_kind:interactive_only instead of unknown; covers memory, permissions, review, and any bare_slash_command_guidance path
2026-05-25 22:02:30 +09:00
YeonGyu-Kim
a7a30627a9
docs(roadmap): add #703 plugins list JSON missing structured summary; leaks reload_runtime/target
2026-05-25 21:31:01 +09:00
YeonGyu-Kim and GitHub
5bca9ef039
Merge pull request #3103 from Yeachan-Heo/fix/issue-702-inventory-provenance
...
Fix #702 inventory provenance schema
2026-05-25 21:10:18 +09:00
YeonGyu-Kim
b8eca2a68e
fix( #349 ): plugins unknown action emits status:error + error_kind:unknown_plugins_action + exit 1 instead of status:ok with prose
2026-05-25 21:08:14 +09:00
YeonGyu-Kim
36b36267ec
fix( #458 ): add status:ok to config JSON envelope; unknown section now emits status:error + error_kind:unsupported_config_section
2026-05-25 20:33:36 +09:00
YeonGyu-Kim
21a986034e
docs(roadmap): add #702 agents source vs skills origin field name inconsistency
2026-05-25 20:02:44 +09:00
YeonGyu-Kim and GitHub
ee24ff2d83
Merge pull request #3102 from Yeachan-Heo/fix/issue-696-compact-nontty
...
Fix compact non-TTY hang
2026-05-25 19:41:27 +09:00
YeonGyu-Kim
de2e32c5d4
fix: skills install nonexistent path emits skill_not_found error kind with descriptive message; classify_error_kind adds skill_not_found branch
2026-05-25 19:34:25 +09:00
YeonGyu-Kim
9d1998b3fd
test(#458/#700/#701/#702): add status:ok assertions for help/bootstrap-plan/export-help contracts; add diff/export JSON shape tests
2026-05-25 19:07:03 +09:00
YeonGyu-Kim
181b12f0a9
fix: mcp show <nonexistent> now returns status:error + error_kind:server_not_found + exit 1; extend ok:false gate to also check status:error
2026-05-25 18:34:43 +09:00
YeonGyu-Kim
47521cf178
fix( #701 ): add detail_entries structured key/value to doctor check JSON; booleans/ints emitted as JSON scalars
2026-05-25 18:02:03 +09:00
YeonGyu-Kim
9c5f190fcc
docs(roadmap): add #701 doctor details prose-string gap; details[] should be structured key/value objects
2026-05-25 17:32:04 +09:00
YeonGyu-Kim
f9e98a2634
fix( #700 ): add status:ok to all help JSON envelopes; rename session_list kind to sessions with action:list
2026-05-25 17:05:28 +09:00
YeonGyu-Kim
c08395ca92
docs(roadmap): add #700 help JSON missing status + session_list kind inconsistency
2026-05-25 17:03:31 +09:00
YeonGyu-Kim
eb7c14c4ae
fix( #458 ): add status:ok to bootstrap-plan JSON envelope; all 12 JSON surfaces now have uniform status field
2026-05-25 16:34:33 +09:00
YeonGyu-Kim
11a6e081a2
fix( #458 ): add status field to export and diff JSON envelopes
2026-05-25 16:07:16 +09:00
YeonGyu-Kim
cc1462a7f8
fix( #458 ): add status:ok to skills install JSON envelope (missed in previous sweep)
2026-05-25 15:30:22 +09:00
YeonGyu-Kim
f2a90228fb
fix: doctor boot preflight detail shows Some(false) for trust_gate_allowed; use Display instead of Debug
2026-05-25 15:21:15 +09:00
YeonGyu-Kim
0581894b7e
fix( #458 ): add status:ok to agents and skills list JSON envelopes; all 9 subcommands now pass uniform status check
2026-05-25 15:02:25 +09:00
YeonGyu-Kim
5b79413e87
fix( #458 ): add status field to version/init/system-prompt JSON envelopes; all 9 subcommands now have uniform status field
2026-05-25 14:36:12 +09:00
YeonGyu-Kim
85e736c73f
fix: add status field to sandbox JSON envelope (ok/warn/error derived from enabled+active+supported)
2026-05-25 14:34:00 +09:00
YeonGyu-Kim
b64df99134
fix( #698 ): dedup config deprecation warnings per process; add tempfile dev-dep to runtime crate (fixes pre-existing test compile error)
2026-05-25 14:11:37 +09:00
YeonGyu-Kim
c345ce6d02
fix: mcp/agents/skills help envelopes set ok:false + status:error on unknown subcommand; exit 1 propagates correctly
2026-05-25 13:50:51 +09:00
YeonGyu-Kim
91a0681ae9
fix( #697 ): agents unknown subcommand exits 1 with typed error; plugins remove aliases uninstall and errors on not-found
2026-05-25 13:39:23 +09:00
YeonGyu-Kim
1003510a75
docs(roadmap): add #697 — plugins remove silent ok on missing plugin; agents unknown subcommand exit 0
2026-05-25 13:32:15 +09:00
YeonGyu-Kim
63a5a87471
fix( #696 ): exit with typed error when stdin is not a TTY and no prompt piped; fix anthropic/ prefix detection in metadata_for_model
2026-05-25 13:16:12 +09:00
YeonGyu-Kim
da7924d079
docs(roadmap): add #696 — compact hangs in non-interactive mode with no TTY guard
2026-05-25 13:08:51 +09:00
YeonGyu-Kim and GitHub
bb2a9238d9
Merge pull request #2839 from ultraworkers/docs/roadmap-324-resume-stats-zero
...
docs(roadmap): add #330 — resume mode stats/cost always zero
2026-05-25 13:01:13 +09:00
YeonGyu-Kim
8806e62a9f
docs(roadmap): add #330 — resume mode stats/cost always zero
2026-05-25 13:00:54 +09:00
YeonGyu-Kim and GitHub
78a0ff615a
Merge pull request #3014 from wangguan1995/fix_qwen
...
Add Qwen model token limits for DashScope compatibility
2026-05-25 12:58:59 +09:00
YeonGyu-Kim and GitHub
706ac0f8e1
Merge pull request #3097 from ultraworkers/fix-683-unsupported-skills-action
...
fix(#683 ): claw skills remove/add/uninstall/delete emits typed error, exit 1
2026-05-25 12:55:01 +09:00
YeonGyu-Kim and GitHub
bd8a27b100
Merge pull request #3096 from ultraworkers/fix-160-session-store-lifecycle
...
fix(#160 ): add regression test for SessionStore lifecycle
2026-05-25 12:54:42 +09:00
YeonGyu-Kim
60108dfbf6
fix(test): update client_integration version string 0.1.0 -> 0.1.3
2026-05-25 12:49:37 +09:00
YeonGyu-Kim
e7d5d08892
fix: ChunkDelta thinking field in test initializers; fix parse_local_help_action ? operator
2026-05-25 12:49:37 +09:00
YeonGyu-Kim
f003a108e3
fix: remove stale retry_after refs from openai_compat.rs
2026-05-25 12:49:37 +09:00
YeonGyu-Kim
a76dda2b19
chore: cargo fmt --all on fix-683 branch
2026-05-25 12:49:37 +09:00
YeonGyu-Kim
013694476e
chore: sync Cargo.lock and openai_compat.rs to main (stash artifact cleanup)
2026-05-25 12:49:37 +09:00
YeonGyu-Kim
3d02baf567
fix( #683 ): claw skills remove/add/uninstall/delete emits typed error, exit 1
...
- Add unsupported skills action guard in parse_args for remove/add/uninstall/delete
- Add unsupported_skills_action to classify_error_kind for structured JSON errors
- Fix pre-existing compile errors (stale retry_after field, missing Team variant)
- Add regression test unsupported_skills_actions_return_typed_error_683
2026-05-25 12:49:37 +09:00
YeonGyu-Kim
6f5465aeaf
fix(test): update client_integration version string 0.1.0 -> 0.1.3
2026-05-25 12:49:36 +09:00
YeonGyu-Kim
1f330c6737
chore: cargo fmt --all on fix-160 branch
2026-05-25 12:49:36 +09:00
YeonGyu-Kim
3489ec51d5
fix( #160 ): add regression test for SessionStore lifecycle (list_sessions, delete_session, session_exists)
...
Adds session_store_lifecycle_regression_160 test that verifies the full
SessionStore CRUD lifecycle. Also fixes pre-existing non-exhaustive match
errors in trident.rs for the ContentBlock::Thinking variant.
2026-05-25 12:49:36 +09:00
YeonGyu-Kim
0423321cb1
fix(test): update compact test to reflect flattened previous-context header
2026-05-25 12:49:34 +09:00
YeonGyu-Kim
06c126ab6b
fix(claw-analog): reject backslash paths in validate_rel_path (dotdot bypass on Linux)
2026-05-25 12:41:32 +09:00
YeonGyu-Kim
1f572ff8de
fix: add missing config_load_error_kind to test StatusContext initializers; remove stale retry_after refs again
2026-05-25 12:15:57 +09:00
YeonGyu-Kim
03bd461984
fix: ChunkDelta thinking field in tests, remove residual retry_after refs, fix parse_local_help_action return type
2026-05-25 12:09:29 +09:00
YeonGyu-Kim
ba941f7f69
docs(roadmap): add #695 — agent stale-worktree startup burn + sandbox .git writability opacity
2026-05-25 12:04:02 +09:00
YeonGyu-Kim
bf7bae82ae
docs(roadmap): add #694 — no pre-push cargo build gate lets broken main accumulate
2026-05-25 12:02:51 +09:00
YeonGyu-Kim
495e7a015c
fix: remove stale retry_after field, Team variant, config_load_error_kind, denied_tools initializer errors
...
- Remove retry_after: None from ApiError::Api structs in openai_compat.rs (field was removed)
- Remove SlashCommand::Team parse arm (variant was removed from enum)
- Add config_load_error_kind: None to doctor path StatusContext initializer
- Add Thinking arm to all ContentBlock match blocks in trident.rs
- Remove cargo fmt drift across commands, config, compact, tools, trident
2026-05-25 12:01:09 +09:00
YeonGyu-Kim
3364dc4bee
chore: fix conflict markers and cargo fmt drift in main (commands, openai_compat, trident, config, tools)
2026-05-25 11:51:44 +09:00
YeonGyu-Kim
499125c9a3
ci: fix rust.yml working-directory — set defaults.run.working-directory to rust/
...
All cargo commands were running from repo root where no Cargo.toml exists.
This was causing build/test/clippy/fmt failures for every PR with Rust changes.
Fixes : #3095 , #3096 CI failures.
2026-05-25 11:38:48 +09:00
YeonGyu-Kim
c32288bd6b
docs(roadmap): add #693 — claw-analog bootstrap phase parser silent unknown fallback
2026-05-25 11:34:35 +09:00
YeonGyu-Kim
88f79bb2a5
docs(roadmap): batch merge remaining open ROADMAP doc PRs (#2841-#2876)
2026-05-25 11:24:07 +09:00
YeonGyu-Kim
c881069ff8
docs(roadmap): batch merge #451-#470, #681-#691 roadmap entries
...
Merges all open ROADMAP documentation PRs into a single commit.
PRs: #3064-#3093 (all docs/roadmap branches)
2026-05-25 11:11:41 +09:00
YeonGyu-Kim
f8e1bb7262
docs(roadmap): add #450 — prompt JSON error routed to stderr not stdout; doctor missing prompt_ready field
2026-05-16 23:06:07 +09:00
YeonGyu-Kim
a35ee9a002
docs(roadmap): add #449 — session list routes through ResumeSession and hits auth gate despite being a local-only filesystem read
2026-05-16 23:02:25 +09:00
YeonGyu-Kim
8f55870dad
docs(roadmap): add #448 — sandbox JSON has contradictory enabled/supported/active flags
...
Pinpoint: 'enabled:true, supported:false' is semantic nonsense.
'filesystem_active:true allowed_mounts:[]' contradicts 'workspace-only'.
'active:false filesystem_active:true' has no documented aggregation rule.
Renaming 'enabled' to 'requested' and exposing 'active_components:[]'
would surface real isolation state to automation.
2026-05-11 23:32:30 +09:00
YeonGyu-Kim
7244a82b36
docs(roadmap): add #447 — JSON error envelopes go to stderr; stdout empty on error
...
Pinpoint: claw --no-such-flag --output-format json writes the JSON
envelope to stderr (115 bytes) while stdout is 0 bytes. Same for
missing_credentials, session_load_failed, invalid_model_syntax —
all 4 error kinds tested put JSON on stderr. Breaks the standard
'output=$(cmd --output-format json)' pattern. Every major CLI
(kubectl/gh/aws/jq/terraform -json) puts JSON on stdout regardless
of success/failure. Sibling: deprecation warnings precede the JSON
envelope on stderr, breaking 'tail -1 | jq' parsing.
2026-05-11 23:01:46 +09:00
YeonGyu-Kim
5ab969e7ae
docs(roadmap): add #446 — config loaded 2-3x per invocation; identical deprecation warnings spam
...
Pinpoint: status emits 3x deprecation warnings, doctor 2x, mcp 2x,
version 0x. Each duplicate is byte-identical (same file/line/field).
Config-load pipeline is fanned out across commands without a cache.
15 redundant disk reads in worst case. Real warnings drowned out by
copies. Count fluctuates between HEADs (3 at 6c0c305a , 4 at d7dbe951 ,
3 at 5a4cc506 ) — no architectural fix landed.
2026-05-11 22:33:34 +09:00
YeonGyu-Kim
5a4cc506d5
docs(roadmap): add #445 — skill name-vs-dirname mismatch silently accepted; sibling silent drops
...
Pinpoint: .claw/skills/wrong-name/SKILL.md with frontmatter name:
actually-different-name silently loads as the frontmatter name. Users
referencing by dir name get skill_not_found while skills list shows
the frontmatter name. Siblings: subdir without SKILL.md silently
skipped; loose .md at skills root dropped; no --scope filter for
workspace vs user merge.
2026-05-11 22:01:12 +09:00
YeonGyu-Kim
9e1eafd02d
docs(roadmap): add #444 — no broad-cwd guard for --resume; ROOT/HOME silently writable
...
Pinpoint: claw --resume latest from / hits 'Read-only file system'
(OS error 30) — only saved by root being read-only. From /tmp or
$HOME, silently creates .claw/sessions/<fingerprint>/ droppings.
Exit code 0 on the read-only-FS error. Stale /tmp/.claw from 13:31
dogfood still present at 21:30 (10 hours, 6+ HEADs later) — #435 's
deferred-creation fix hasn't landed. The broad-cwd guard only covers
shorthand prompt path, not resume/status/doctor.
2026-05-11 21:31:33 +09:00