Commit Graph

  • 527c0f971c fix(#160): harden delete_session contract — idempotency, race-safety, typed partial-failure YeonGyu-Kim 2026-04-22 17:11:26 +09:00
  • 504d238af1 fix: #160 — add list_sessions, session_exists, delete_session to session_store YeonGyu-Kim 2026-04-22 17:08:01 +09:00
  • 41a6091355 file: #163 — run_turn_loop injects [turn N] suffix into follow-up prompts; multi-turn sessions semantically broken YeonGyu-Kim 2026-04-22 10:07:35 +09:00
  • bc94870a54 file: #162 — submit_message appends budget-exceeded turn before returning max_budget_reached; session state corrupted on overflow YeonGyu-Kim 2026-04-22 09:38:00 +09:00
  • ee3aa29a5e file: #161 — run_turn_loop has no wall-clock timeout, stalled turn blocks indefinitely YeonGyu-Kim 2026-04-22 08:57:38 +09:00
  • a389f8dff1 file: #160 — session_store missing list_sessions, delete_session, session_exists — claw cannot enumerate or clean up sessions without filesystem hacks YeonGyu-Kim 2026-04-22 08:47:52 +09:00
  • 7a014170ba file: #159 — run_turn_loop hardcodes empty denied_tools, permission denials absent from multi-turn sessions YeonGyu-Kim 2026-04-22 06:48:03 +09:00
  • 986f8e89fd file: #158 — compact_messages_if_needed drops turns silently, no structured compaction event YeonGyu-Kim 2026-04-22 06:37:54 +09:00
  • ef1cfa1777 file: #157 — structured remediation registry for error hints (Phase 3 of #77) YeonGyu-Kim 2026-04-22 05:31:00 +09:00
  • f1e4ad7574 feat: #156 — error classification for text-mode output (Phase 2 of #77) YeonGyu-Kim 2026-04-22 00:21:32 +09:00
  • 14c5ef1808 file: #156 — error classification for text-mode output (Phase 2 of #77) YeonGyu-Kim 2026-04-21 23:19:58 +09:00
  • 9362900b1b feat: #77 Phase 1 — machine-readable error classification in JSON error payloads YeonGyu-Kim 2026-04-21 22:38:13 +09:00
  • ff45e971aa fix: #80 — session-lookup error messages now show actual workspace-fingerprint directory YeonGyu-Kim 2026-04-21 22:18:12 +09:00
  • 4b53b97e36 docs: #155 — add USAGE.md documentation for /ultraplan, /teleport, /bughunter commands YeonGyu-Kim 2026-04-21 21:49:04 +09:00
  • 3cfe6e2b14 feat: #154 — hint provider prefix and env var when model name looks like different provider YeonGyu-Kim 2026-04-21 21:40:48 +09:00
  • 71f5f83adb feat: #153 — add post-build binary location and verification guide to README YeonGyu-Kim 2026-04-21 21:29:59 +09:00
  • 79352a2d20 feat: #152 — hint --output-format json when user types --json on diagnostic verbs YeonGyu-Kim 2026-04-21 21:23:17 +09:00
  • dddbd78dbd file: #152 — diagnostic verb suffixes allow arbitrary positional args, double error prefix YeonGyu-Kim 2026-04-21 21:19:51 +09:00
  • 7bc66e86e8 feat: #151 — canonicalize workspace path in SessionStore::from_cwd/data_dir YeonGyu-Kim 2026-04-21 21:06:09 +09:00
  • eaa077bf91 fix: #150 — eliminate symlink canonicalization flake in resume_latest test + file #246 (reminder outcome ambiguity) YeonGyu-Kim 2026-04-21 21:01:09 +09:00
  • bc259ec6f9 fix: #149 — eliminate parallel-test flake in runtime::config tests YeonGyu-Kim 2026-04-21 20:54:12 +09:00
  • f84c7c4ed5 feat: #148 + #128 closure — model provenance in claw status JSON/text YeonGyu-Kim 2026-04-21 20:48:46 +09:00
  • 4cb8fa059a feat: #147 — reject empty / whitespace-only prompts at CLI fallthrough YeonGyu-Kim 2026-04-21 20:35:17 +09:00
  • f877acacbf feat: #146 — wire claw config and claw diff as standalone subcommands YeonGyu-Kim 2026-04-21 20:07:28 +09:00
  • 7d63699f9f feat: #145 — wire claw plugins subcommand to CLI parser (prompt misdelivery fix) YeonGyu-Kim 2026-04-21 19:36:49 +09:00
  • faeaa1d30c feat: #144 phase 1 + ROADMAP filing — claw mcp degrades gracefully on malformed config YeonGyu-Kim 2026-04-21 19:07:17 +09:00
  • e2a43fcd49 feat: #143 phase 1 — claw status degrades gracefully on malformed config YeonGyu-Kim 2026-04-21 18:37:42 +09:00
  • fcd5b49428 ROADMAP #143: claw status hard-fails on malformed MCP config while doctor degrades gracefully YeonGyu-Kim 2026-04-21 18:32:09 +09:00
  • e73b6a2364 docs: USAGE.md sections for claw init (#142) and claw state (#139) YeonGyu-Kim 2026-04-21 18:28:21 +09:00
  • 541c5bb95d feat: #139 actionable worker-state guidance in claw state error + help YeonGyu-Kim 2026-04-21 18:04:04 +09:00
  • 611eed1537 feat: #142 structured fields in claw init --output-format json YeonGyu-Kim 2026-04-21 17:42:00 +09:00
  • 7763ca3260 feat: #141 unify claw <subcommand> --help contract across all 14 subcommands YeonGyu-Kim 2026-04-21 17:36:48 +09:00
  • 2665ada94e ROADMAP #142: claw init --output-format json emits unstructured message string instead of created/skipped fields YeonGyu-Kim 2026-04-21 17:31:11 +09:00
  • 21b377d9c0 ROADMAP #141: claw <subcommand> --help has 5 different behaviors — inconsistent help surface YeonGyu-Kim 2026-04-21 17:01:46 +09:00
  • 27ffd75f03 fix: #140 isolate test cwd + env in punctuation_bearing_single_token test YeonGyu-Kim 2026-04-21 16:34:58 +09:00
  • 0cf8241978 ROADMAP #140: deprecated permissionMode migration silently downgrades DangerFullAccess to WorkspaceWrite — 1 test failure on main HEAD 36b3a09 YeonGyu-Kim 2026-04-21 16:23:00 +09:00
  • 36b3a09818 ROADMAP #139: claw state error references undocumented 'worker' concept (unactionable for claws) YeonGyu-Kim 2026-04-21 16:01:54 +09:00
  • f3f6643fb9 feat: #108 add did-you-mean guard for subcommand typos (prevents silent LLM dispatch) YeonGyu-Kim 2026-04-21 15:37:58 +09:00
  • 883cef1a26 docs: #138 add concrete evidence — feat/134-135 branch pushed but no PR (closure-state gap) YeonGyu-Kim 2026-04-21 15:02:33 +09:00
  • 768c1abc78 ROADMAP #138: dogfood cycle report-gate opacity — nudge surface needs explicit closure state YeonGyu-Kim 2026-04-21 14:49:36 +09:00
  • a8beca1463 fix: #136 support --output-format json with --compact flag YeonGyu-Kim 2026-04-21 14:47:15 +09:00
  • 21adae9570 fix: #137 update test fixtures to use canonical 'opus' alias for main branch consistency YeonGyu-Kim 2026-04-21 14:32:49 +09:00
  • 7235260c61 fix: preserve session path in /status text output when resuming (regression from #135) feat/134-135-session-identity YeonGyu-Kim 2026-04-21 14:05:22 +09:00
  • 230d97a8fa fix: #137 update test fixtures to use canonical 'opus' alias after #124 validation tightening YeonGyu-Kim 2026-04-21 13:36:09 +09:00
  • 724a78604d ROADMAP #137: model-alias shorthand regression in test suite — bare alias parsing broken on feat/134-135-session-identity; 3 tests fail with invalid model syntax error after #134/#135 validation tightening YeonGyu-Kim 2026-04-21 13:27:10 +09:00
  • 2b7095e4ae feat: surface active session status and session id YeonGyu-Kim 2026-04-21 12:55:06 +09:00
  • f55612ea47 feat: emit boot-scoped session id in lane events YeonGyu-Kim 2026-04-21 12:51:13 +09:00
  • 91ba54d39f ROADMAP #136: --compact flag silently overrides --output-format json — compact turn always emits plain text even when JSON requested; unreachable Json arm in run_with_output() match; joins output-format completeness cluster #90/#91/#92/#127/#130 and CLI/REPL parity §7.1 YeonGyu-Kim 2026-04-21 12:27:06 +09:00
  • 8b52e77f23 ROADMAP #135: claw status --json missing active_session bool and session.id cross-reference — status query side of #134 round-trip; joins session identity completeness §4.7 and status surface completeness cluster #80/#83/#114/#122; natural bundle #134+#135 closes session-identity round-trip YeonGyu-Kim 2026-04-21 06:55:09 +09:00
  • 2c42f8bcc8 docs: remove duplicate ROADMAP #134 entry YeonGyu-Kim 2026-04-21 04:50:43 +09:00
  • f266505546 ROADMAP #134: no run/correlation ID at session boundary — session.id missing from startup event and status JSON; observer must infer session identity from timing YeonGyu-Kim 2026-04-21 01:55:42 +09:00
  • 50e3fa3a83 docs: add --output-format to diagnostic verb help text YeonGyu-Kim 2026-04-20 21:32:02 +09:00
  • a51b2105ed docs: add JSON output example for diagnostic verbs post-#127 YeonGyu-Kim 2026-04-20 21:01:10 +09:00
  • a3270db602 fix: #127 reject unrecognized suffix args for diagnostic verbs YeonGyu-Kim 2026-04-20 19:23:35 +09:00
  • 12f1f9a74e feat: wire ship.prepared provenance emission at bash execution boundary YeonGyu-Kim 2026-04-20 17:03:28 +09:00
  • 2678fa0af5 fix: #124 --model validation rejects malformed syntax at parse time YeonGyu-Kim 2026-04-20 16:32:17 +09:00
  • b9990bb27c fix: #122 + #125 doctor consistency and git_state clarity YeonGyu-Kim 2026-04-20 16:13:43 +09:00
  • f33c315c93 fix: #122 doctor invocation now checks stale-base condition YeonGyu-Kim 2026-04-20 15:49:56 +09:00
  • 5c579e4a09 §4.44.5.1: file ship event wiring pinpoint (schema landed, wiring missing) YeonGyu-Kim 2026-04-20 15:30:34 +09:00
  • 8a8ca8a355 ROADMAP #4.44.5: Ship/provenance events — implement §4.44.5 YeonGyu-Kim 2026-04-20 15:06:50 +09:00
  • b0b579ebe9 ROADMAP #133: Blocked-state subphase contract — implement §6.5 YeonGyu-Kim 2026-04-20 15:04:08 +09:00
  • c956f78e8a ROADMAP #4.44.5: Ship/provenance opacity — filed from dogfood YeonGyu-Kim 2026-04-20 14:35:07 +09:00
  • f079b7b616 ROADMAP #132: --output-format json global error renderer flattens every typed error variant into {type:"error",error:<prose>}, erasing §4.44 envelope structure at the final serialization boundary — runtime has 5 typed error enums (SessionError/ConfigError/McpServerManagerError/PromptBuildError/SessionControlError) but ~11 CLI emission sites call error.to_string() and wrap in flat {type,error} shape; kind/operation/target/errno/hint/retryable all discarded. #130 fix lands typed envelope in text mode but JSON mode still emits flat string. Commit d305178 body self-declares this debt. Closes the renderer-side half of §4.44. Joins JSON-envelope asymmetry family #90/#91/#92/#110/#115/#116 as 7th; joins silent-state inventory #102/#127/#129/#130/#131 as 6th. Bundle: #130+#132 export-surface typed errors text+json parity. feat/jobdori-130-export-error-envelope YeonGyu-Kim 2026-04-20 14:14:41 +09:00
  • 93da4f14ab ROADMAP #131: claw export positional arg silently treated as output PATH not session reference — operator types 'claw export <session-id> --output /tmp/x.md' expecting to export <session-id>, but parser puts <session-id> in output_path slot and session_reference defaults to LATEST. Result: wrong session exported with no warning. Discovered while auditing #130 export error path during scope-truth pass on 2026-04-20 dogfood cycle. Joins silent-state inventory family (#102 + #127 + #129 + #130) and parser-level trust gap quintet (#108 + #117 + #119 + #122 + #127). YeonGyu-Kim 2026-04-20 14:07:27 +09:00
  • d305178591 fix(cli): #130 export error envelope — wrap fs::write() in run_export() with structured ExportError per Phase 2 §4.44 typed-error envelope contract; eliminates zero-context errno output. ExportError struct includes kind/operation/target/errno/hint/retryable fields with serde::Serialize and Display impls. wrap_export_io_error() classifies io::ErrorKind into filesystem/permission/invalid_path categories and synthesizes actionable hints (e.g. 'intermediate directory does not exist; try mkdir -p X first'). Verified end-to-end: ENOENT, EPERM, IsADirectory, empty path, trailing slash all emit structured envelope; success case unchanged (backward-compat anchor preserved). JSON mode still uses string error rendering — separate concern requiring global error renderer refactor (tracked for follow-up cycle). YeonGyu-Kim 2026-04-20 14:02:15 +09:00
  • 0cbff5dc76 prep(cli): #130 structured ExportError type design ready — conforms to §4.44 typed-error envelope contract; includes kind/operation/target/errno/hint/retryable fields, Display + serde::Serialize impl, wrap_export_io_error helper; ready for integration into run_export handler YeonGyu-Kim 2026-04-20 13:42:57 +09:00
  • dd73962d0b ROADMAP #122: doctor invocation does not check stale-base condition — run_stale_base_preflight() only invoked in Prompt + REPL paths, missing in doctor action handler; inconsistency: doctor says 'ok' but prompt warns 'stale base'; joins boot preflight / doctor contract family (#80-#83/#114) and silent-state inventory (#102/#127/#129/#245) YeonGyu-Kim 2026-04-20 13:11:12 +09:00
  • 027efb2f9f ROADMAP §4.44: Typed-error envelope contract (Silent-state inventory roll-up) — locks in structured error.kind/operation/target/errno/hint/retryable contract that closes the family of pinpoints currently scattered across #102 + #121 + #127 + #129 + #130 + #245; backward-compat additive; regression locked via golden-fixture; gates 'Run claw --help for usage' trailer on error.kind == usage; drafted jointly with gaebal-gajae during 2026-04-20 dogfood cycle YeonGyu-Kim 2026-04-20 13:03:50 +09:00
  • 866f030713 ROADMAP #130: claw export --output filesystem errors surface raw OS errno strings with zero context — 5 distinct failure modes all produce different errno strings but the same zero-context shape; no path echoed, no operation named, no io::ErrorKind classification, no actionable hint; JSON envelope flattens to {error, type} losing all structure; Run claw --help for usage trailer misleads on non-usage errors; joins JSON-envelope asymmetry family #90/#91/#92/#110/#115/#116 and truth-audit #80-#127/#129 YeonGyu-Kim 2026-04-20 12:52:22 +09:00
  • d2a83415dc ROADMAP #129: MCP server startup blocks credential validation in Prompt path — cred check ordered AFTER MCP child handshake await; misbehaved/slow MCP wedges every claw <prompt> invocation indefinitely; npx restart loop wastes resources; runtime-side companion to #102's config-time MCP gap; PARITY.md Lane 7 acceptance gap YeonGyu-Kim 2026-04-20 12:43:11 +09:00
  • 8122029eba ROADMAP #128: claw --model <malformed> (spaces, empty string, invalid syntax) silently accepted at parse time, falls through to cred-error misdirection; joins parser-level trust gap family #108/#117/#119/#122/#127; joins token-burn family #99/#127 YeonGyu-Kim 2026-04-20 12:32:56 +09:00
  • d284ef774e ROADMAP #127: claw <subcommand> --json silently falls through to LLM Prompt dispatch — diagnostic verbs (doctor, status, sandbox, skills, version, help) reject --json with cred-error misdirection; valid verb + unrecognized suffix arg = Prompt fall-through; 18th silent-flag, 5th parser-level trust gap, joins #108 + #117 + #119 + #122 YeonGyu-Kim 2026-04-20 12:05:05 +09:00
  • 7370546c1c ROADMAP #126: /config [env|hooks|model|plugins] ignores section argument — all 4 subcommands return bit-identical file-list envelope; 4-way dispatch collapse YeonGyu-Kim 2026-04-18 20:32:52 +09:00
  • b56841c5f4 ROADMAP #125: git_state 'clean' emitted for non-git directories; GitWorkspaceSummary default all-zeros → is_clean() → 'clean' even when in_git_repo: false; contradictory doctor fields YeonGyu-Kim 2026-04-18 20:03:32 +09:00
  • debbcbe7fb ROADMAP #124: --model accepts any string with zero validation; typos silently pass through; empty string accepted; status JSON has no model provenance YeonGyu-Kim 2026-04-18 19:03:02 +09:00
  • bb76ec9730 ROADMAP #123: --allowedTools tool-name normalization asymmetric; snake_case canonicals accept variants, PascalCase canonicals reject snake_case; whitespace+comma split undocumented; allowed_tools not surfaced in JSON YeonGyu-Kim 2026-04-18 18:38:24 +09:00
  • 2bf2a11943 ROADMAP #122: --base-commit greedy-consumes next arg with zero validation; subcommand/flag swallow; stale-base signal missing from status/doctor JSON surfaces YeonGyu-Kim 2026-04-18 18:03:35 +09:00
  • d1608aede4 ROADMAP #121: hooks schema incompatible with Claude Code; error message misleading; doctor JSON emits 2 objects on failure breaking single-doc parsing; doctor has duplicate message+report fields YeonGyu-Kim 2026-04-18 17:03:14 +09:00
  • b81e6422b4 ROADMAP #120: .claw.json custom JSON5-partial parser accepts trailing commas but silently drops comments/unquoted/BOM; combined with alias table 'default'→ReadOnly + no-config→DangerFullAccess creates security-critical user-intent inversion YeonGyu-Kim 2026-04-18 16:34:19 +09:00
  • 78592221ec ROADMAP #119: claw <slash-only verb> + any arg silently falls through to Prompt; bare_slash_command_guidance gated by rest.len() != 1; 9 known verbs affected YeonGyu-Kim 2026-04-18 16:03:37 +09:00
  • 3848ea64e3 ROADMAP #118: /stats, /tokens, /cache all collapse to SlashCommand::Stats; 3-way dispatch collapse with 3 distinct help descriptions YeonGyu-Kim 2026-04-18 15:32:30 +09:00
  • b9331ae61b ROADMAP #117: -p flag is super-greedy, swallows all subsequent args into prompt; --help/--version/--model after -p silently consumed; flag-like prompts bypass emptiness check YeonGyu-Kim 2026-04-18 15:01:47 +09:00
  • f2d653896d ROADMAP #116: unknown keys in .claw.json hard-fail startup with exit 1; Claude Code migration parity broken (apiKeyHelper rejected); forward-compat impossible; only first error surfaces YeonGyu-Kim 2026-04-18 14:03:20 +09:00
  • ad02761918 ROADMAP #115: claw init hardcodes 'defaultMode: dontAsk' alias for danger-full-access; init output zero security signal; JSON wraps prose YeonGyu-Kim 2026-04-18 13:32:46 +09:00
  • ca09b6b374 ROADMAP #114: /session list and --resume disagree after /clear; reported session_id unresumable; .bak files invisible; 0-byte files fabricate phantoms YeonGyu-Kim 2026-04-18 12:09:31 +09:00
  • 43eac4d94b ROADMAP #113: /session switch/fork/delete unsupported from --resume; no claw session CLI subcommand; REPL-only programmatic gap YeonGyu-Kim 2026-04-18 11:33:10 +09:00
  • 8b25daf915 ROADMAP #112: concurrent /compact and /clear race with raw 'No such file or directory (os error 2)' on session file YeonGyu-Kim 2026-04-18 11:03:12 +09:00
  • a049bd29b1 ROADMAP #111: /providers documented as 'List available model providers' but dispatches to Doctor YeonGyu-Kim 2026-04-18 10:34:25 +09:00
  • b2366d113a ROADMAP #110: ConfigLoader only checks cwd paths; .claw.json at project_root invisible from subdirectories YeonGyu-Kim 2026-04-18 10:05:31 +09:00
  • 16244cec34 ROADMAP #109: config validation warnings stderr-only; structured ConfigDiagnostic flattened to prose, JSON-invisible YeonGyu-Kim 2026-04-18 09:34:05 +09:00
  • 21b2773233 ROADMAP #108: subcommand typos silently fall through to LLM prompt dispatch, burning billed tokens YeonGyu-Kim 2026-04-18 09:05:32 +09:00
  • 91c79baf20 ROADMAP #107: hooks subsystem fully invisible to JSON diagnostic surfaces; doctor no hook check, /hooks is stub, progress events stderr-only YeonGyu-Kim 2026-04-18 08:05:20 +09:00
  • a436f9e2d6 ROADMAP #106: config merge deep_merge_objects REPLACES arrays; permission deny rules can be silently erased by downstream config layer YeonGyu-Kim 2026-04-18 07:33:47 +09:00
  • 71e77290b9 ROADMAP #105: claw status ignores .claw.json model, doctor mislabels alias as Resolved, 4 surfaces disagree YeonGyu-Kim 2026-04-18 07:08:25 +09:00
  • 6580903d20 ROADMAP #104: /export and claw export are two paths with incompatible filename semantics; slash silently .txt-rewrites YeonGyu-Kim 2026-04-18 06:34:38 +09:00
  • 7447232688 ROADMAP #103: claw agents silently drops every non-.toml file; claude-code convention .md files ignored, no content validation YeonGyu-Kim 2026-04-18 06:03:22 +09:00
  • 6a16f0824d ROADMAP #102: mcp list/show/doctor surface MCP config-time only; no preflight, no liveness, not even command-exists check YeonGyu-Kim 2026-04-18 05:34:30 +09:00
  • eabd257968 ROADMAP #101: RUSTY_CLAUDE_PERMISSION_MODE env var silently fails OPEN to danger-full-access on any invalid value YeonGyu-Kim 2026-04-18 05:04:28 +09:00
  • d63d58f3d0 ROADMAP #100: claw status/doctor JSON expose no commit identity; stale-base subsystem unplumbed YeonGyu-Kim 2026-04-18 04:36:47 +09:00
  • 63a0d30f57 ROADMAP #99: claw system-prompt --cwd/--date unvalidated, prompt-injection via newline YeonGyu-Kim 2026-04-18 04:03:29 +09:00