327: mcp help now includes .claw.json in sources list
328: agents help now includes ~/.codex/agents in sources list
408: status JSON now has is_clean boolean field
6: terminal is transport principle — implementation tracked by #810-#816
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
#327: mcp help now includes .claw.json in documented sources list
#328: agents help now includes ~/.codex/agents in documented sources list
#408: added is_clean boolean to status JSON workspace for unambiguous
dirty-state detection; changed_files documented as total non-clean count
#338: resume help field consistency (committed earlier)
Also marked 52 items with explicit done/verified evidence as DONE
in ROADMAP.md, including product principles (1-6) and items with
confirmed fix text (13-75, 96, 200).
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
338: resume help now uses 'message' field consistent with top-level help
410: mcp and skills list now expose 'count' field for polymorphic consumption
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
#410: Added field to mcp list and skills list JSON for
polymorphic consumption parity with agents list. All three sibling
list commands now expose a canonical integer field alongside
their command-specific details.
#338: Changed resume JSON from to field for
consistency with top-level .
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
#683-#692: help topic JSON now includes usage, purpose, formats,
related, local_only, requires_credentials, and aliases extracted
from help prose. Export and doctor keep their custom structured
responses.
#466: new check_base_url_health() validates ANTHROPIC_BASE_URL,
OPENAI_BASE_URL, XAI_BASE_URL, and DASHSCOPE_BASE_URL for basic
HTTP(S) URL format. Non-http schemes and empty values produce a
warn-level diagnostic.
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
status --output-format json now exposes duplicate_flags array listing
any --model, --output-format, or --permission-mode flags specified
more than once. Uses a module-level static for cross-function access.
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
render_config_json now includes a 'merged' object with actual
key-value pairs from the resolved runtime configuration, not just
the count.
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
check_auth_health data fields now include openai_key_present alongside
api_key_present and auth_token_present. any_auth_present already
includes OPENAI_API_KEY for prompt_ready status.
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__ is now filtered from the sections
array in JSON output. boundary_index field exposed for callers that
need the static/dynamic split point.
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
700: help JSON already has status field
701: doctor details already structured {key,value}
702: agents/skills both use source field
703: plugins list has structured summary
704: doctor checks have stable id field
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
71 items with verified fixes marked as DONE. All have Fix/Fix applied
sections with corresponding code evidence in the current codebase.
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
All items already fixed in prior commits:
705: estimated_cost_usd_num companion field
706: skills show not-found error
707: init temp_dir AtomicU64 counter
708: skills show action field
709: duplicate status keys removed
710: diff action and working_directory
711: version/system-prompt/export/init action field
712: doctor/status/bootstrap-plan/dump-manifests action field
713: acp and config action field
714: help action and status fields
715: resume-path action and status fields
716: resume-path error JSON standard envelope
717: agents show implemented
718: plugins show implemented
719: plugins list filter
720: help <topic> routing
721: config sections support
722: rebase conflict resolved
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
The catch-all in render_mcp_report_json_for now returns
render_mcp_unsupported_action_json with ok:false and
error_kind:unsupported_action instead of help JSON with exit 0.
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
Only fire the slash-command guard for multi-word commands when the
first token is a known CLI subcommand (help, version, status, etc.).
Slash commands with additional arguments (explain this, cost list)
are treated as prompts.
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
When input is a prefix of a candidate (e.g., mcp → mcpServers), return
the prefix match directly instead of relying on edit-distance which
would incorrectly suggest env (distance 3) over mcpServers (distance 7).
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
Changed rest.len() != 1 guard to rest.is_empty() so claw cost list,
claw model list, claw permissions show, etc. now reach the
bare_slash_command_guidance guard and emit typed slash-command
guidance instead of falling through to CliAction::Prompt.
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
claw models is already wired as CliAction::Models with full
print_models implementation. Both models list and models help
return bounded JSON without touching provider runtime.
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
Added specific handler for --help when rest contains --resume, so
claw --resume --help shows resume help instead of consuming --help
as a session-id literal.
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
The status_context function now filters loader.discover() to only count
paths that exist on disk, matching the check_config_health behavior.
Both config.discovered_files_count and workspace.discovered_config_files
now report the same number.
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
Added list to KNOWN_SUBCOMMANDS so claw list is caught by typo
suggestion instead of falling through to CliAction::Prompt. Also
verified #455 (missing_credentials hint already newline-delimited).
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
Added prompt_ready:bool and prompt_blocked_reason:string|null to the
auth check in doctor --output-format json. prompt_ready is true when
any auth credential is present, false otherwise. prompt_blocked_reason
is auth_missing when prompt_ready is false.
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
Added dedicated CliAction::SessionList variant for claw session list so
it no longer requires API credentials. run_session_list() calls
list_managed_sessions() directly without instantiating an API client.
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
Added requested field (alias for enabled) and active_components object
with namespace/network/filesystem booleans for precise subsystem visibility.
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
The enforce_broad_cwd_policy function was sending JSON error envelopes
to stderr instead of stdout. Fixed to use println! for JSON mode,
matching the main error handler and all resume error paths.
Also closed ROADMAP #446 (config warning deduplication already handled
by emit_config_warning_once) and #447 (JSON errors already routed to
stdout in main handler).
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
Skill discovery now tracks dir_name alongside frontmatter name and detects
when they differ. skills list --output-format json includes metadata_drift
array and reports degraded status when drift entries exist.
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
Adds dir_name field to SkillSummary to enable detection of skills where
the SKILL.md frontmatter name differs from the parent directory name.
Also adds SkillMetadataDrift struct for tracking mismatches (used by
skills JSON output in follow-up).
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
claw --resume now enforces the same broad-cwd safety policy as claw prompt
and the interactive REPL. Running from /, $HOME, or other broad directories
blocks execution unless --allow-broad-cwd is passed.
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
claw acp serve now exits 2 (not implemented) instead of 0, so automation
pipelines can detect the no-op via exit code gating.
Key changes:
- acp serve exits 2 instead of 0
- Removed discoverability_tracking, tracking, recommended_workflows from JSON
- Removed phase, exit_code, serve_alias_only fields from JSON
- Status changed from unsupported/discoverability_only to not_implemented
- Error kind for unsupported ACP invocations uses typed prefix
- Updated tests to match new exit code and JSON structure
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
Agent discovery now loads .md files with YAML frontmatter alongside .toml
files, matching the Claude Code agent definition convention. Markdown
agent files must have ----delimited YAML frontmatter with at least name
or description fields.
Key changes:
- parse_agent_frontmatter extracts name, description, model, model_reasoning_effort
- load_agents_from_roots_with_invalids collects both valid and invalid agents
- InvalidAgentConfig tracks rejected .md files with reason
- AgentCollection groups valid agents with invalid entries
- agents JSON output includes valid_count, invalid_count, invalid_agents
- Status is degraded when invalid agents exist
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
Hook config now supports the Claude Code structured hook format with
partial validation. Invalid hook entries are recorded in invalid_hooks
while valid siblings are retained, following the same pattern as MCP
partial validation (#440).
Key changes:
- RuntimeInvalidHookConfig now includes typed kind field (invalid_hooks_config
or unknown_hook_event) for machine-readable error classification
- Hook parsing collects all invalid entries instead of halting at first error
- Unknown hook event names recorded as invalid without rejecting valid hooks
- Legacy bare-string hooks still load with deprecation warnings
- Claude Code documented format loads without error (matcher + nested hooks)
- config/status/doctor JSON surfaces hook_validation metadata
- classify_error_kind maps hook errors to invalid_hooks_config
Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
Record G012 as complete so the durable OMX audit trail matches the finished Claw Code 2.0 delivery.
Constraint: OMX required a completed Codex goal snapshot plus aiSlopCleaner, verification, and clean codeReview evidence before accepting the final checkpoint.
Rejected: leaving G012 pending after code/test completion | the user requested roadmap backlog completion and durable ledger reconciliation.
Confidence: high
Scope-risk: narrow
Directive: Treat .omx/ultragoal/ledger.jsonl as the authoritative completion audit for G001-G012.
Tested: omx ultragoal checkpoint --goal-id G012-final-gate --status complete; omx ultragoal status => 12/12 complete
Not-tested: remote GitHub PR merges or issue closures, because G012 evidence classified them as unsafe without maintainer approval/fresh green checks/conflict-free branches.
Resolve the G012 evidence gate by fixing permission-mode regressions, platform-sensitive tests, and the clippy surface that blocked an all-targets verification run.
Constraint: G012 final gate required docs, board, full workspace tests, and clippy -D warnings evidence before checkpointing.
Rejected: documenting the worker-2 gate failure as an accepted gap | the failing tests and lints were locally reproducible and fixable.
Confidence: high
Scope-risk: moderate
Directive: Preserve read-only permission requirements for read/glob/grep tools; write/edit remain workspace-write or danger-full-access when outside the workspace.
Tested: python3 .github/scripts/check_doc_source_of_truth.py; python3 .github/scripts/check_release_readiness.py; python3 scripts/validate_cc2_board.py --board .omx/cc2/board.json; python3 .omx/cc2/validate_issue_parity_intake.py .omx/cc2/issue-parity-intake.json; cargo fmt --manifest-path rust/Cargo.toml --all -- --check; cargo check --manifest-path rust/Cargo.toml --workspace; cargo test --manifest-path rust/Cargo.toml --workspace -- --nocapture; cargo clippy --manifest-path rust/Cargo.toml --workspace --all-targets -- -D warnings
Not-tested: live network provider smoke tests and remote PR/issue mutations.
G012 requires a fresh PR reconciliation snapshot before Claw Code 2.0 can close, and the live GitHub state does not provide enough safety evidence for worker-side merges.
Constraint: Worker-3 must not mutate .omx/ultragoal and may merge only correct, safe, non-conflicting, resolvable PRs with evidence.
Rejected: Blindly merging GitHub-mergeable PRs | GitHub reported UNSTABLE/no fresh check evidence for mergeable PRs and DIRTY conflicts for the rest.
Confidence: high
Scope-risk: narrow
Directive: Keep PR merge decisions gated by fresh CI, conflict-free merge state, and content/source-of-truth review.
Tested: python3 -m json.tool docs/pr-triage-g012-final-gate.json; python3 .github/scripts/check_doc_source_of_truth.py; (cd rust && cargo check --workspace); (cd rust && cargo fmt --check --all)
Not-tested: (cd rust && cargo test --workspace) failed in unrelated rusty-claude-cli tests tests::resume_usage_mentions_latest_shortcut and tests::session_lifecycle_prefers_running_process_over_idle_shell; no Rust files changed.
Co-authored-by: OmX <omx@oh-my-codex.dev>
Constraint: G012 worker boundary prohibits mutating .omx/ultragoal and W1 must avoid W2/W3/W4 action lanes except to reference evidence.
Rejected: Remote PR or issue actions from W1 | W3 and W4 own reconciliation, and current roadmap PRs are mostly conflicting or product-fit gated.
Confidence: high
Scope-risk: narrow
Directive: Treat docs/g012-final-release-readiness-report.md as an evidence map, not release approval by itself.
Tested: git diff --check; cargo fmt --manifest-path rust/Cargo.toml --all -- --check; cargo check --manifest-path rust/Cargo.toml --workspace; python3 .github/scripts/check_doc_source_of_truth.py; python3 .github/scripts/check_release_readiness.py; python3 scripts/validate_cc2_board.py; python3 .omx/cc2/validate_issue_parity_intake.py; gh pr/issue list snapshots.
Not-tested: full cargo test --workspace; W2 owns final quality gate.
Co-authored-by: OmX <omx@oh-my-codex.dev>
Capture the fresh G012 issue snapshot and classify open issues without mutating remote state so the final gate has durable evidence despite the team claim-token mismatch.
Constraint: Task 5 remains lifecycle-blocked because task metadata assigns the W4 lane in text but keeps owner=worker-1, so worker-4 cannot obtain a claim token.
Rejected: Closing or labeling issues from this worker lane | remote issue mutation requires maintainer-owned approval and a valid task claim.
Confidence: medium
Scope-risk: narrow
Directive: Do not mark G012 issue reconciliation complete until leader repairs the task claim conflict or explicitly reconciles this evidence-only commit.
Tested: python3 .github/scripts/check_doc_source_of_truth.py; python3 .github/scripts/check_release_readiness.py; git diff --check
Not-tested: full Rust test/typecheck suite was not run because this commit changes only the docs evidence artifact.
Co-authored-by: OmX <omx@users.noreply.github.com>
The ultragoal ledger must reflect that the G011 ecosystem ops UX team finished and passed the leader quality gate before final G012 release reconciliation starts.
Constraint: OMX ultragoal checkpoint requires fresh Codex goal reconciliation and durable .omx/ultragoal goals/ledger updates.
Rejected: leaving G011 only in team state | G012 needs the aggregate ledger to show 11/12 goals complete.
Confidence: high
Scope-risk: narrow
Directive: start G012 only from this 11/12-complete ledger state and keep final PR/issue reconciliation evidence fresh.
Tested: omx ultragoal checkpoint --goal-id G011-ecosystem-ops-ux --status complete; omx ultragoal status shows 11/12 complete and G012 pending.
Not-tested: G012 final gate not run yet.
Co-authored-by: OmX <omx@oh-my-codex.dev>
G011 needs final evidence without committing generated local port-session scratch files from worker verification.
Constraint: .port_sessions is a local Python session-store scratch directory and worker-4 auto-checkpoint added transient test artifacts.
Rejected: keeping generated .port_sessions files | they are not required by tests and obscure the G011 acceptance diff.
Confidence: high
Scope-risk: narrow
Directive: keep .port_sessions ignored unless a future test intentionally needs checked-in fixtures under a dedicated fixture path.
Tested: omx team status g011-ecosystem-ops-ux-e61d2271; git diff --check; python3 .github/scripts/check_doc_source_of_truth.py; python3 .github/scripts/check_release_readiness.py; cargo fmt --manifest-path rust/Cargo.toml --all -- --check; cargo check --manifest-path rust/Cargo.toml -p commands -p rusty-claude-cli; cargo test --manifest-path rust/Cargo.toml -p rusty-claude-cli --test output_format_contract acp_guidance_emits_json_when_requested; cargo test --manifest-path rust/Cargo.toml -p rusty-claude-cli parses_acp_command_surfaces; cargo test --manifest-path rust/Cargo.toml -p rusty-claude-cli acp_status_json_is_truthful_unsupported_contract; cargo test --manifest-path rust/Cargo.toml -p commands renders_help_with_grouped_categories_and_keyboard_shortcuts; python3 -m unittest tests.test_porting_workspace.PortingWorkspaceTests.test_plugin_command_filter_excludes_plugin_sources tests.test_porting_workspace.PortingWorkspaceTests.test_plugin_command_aliases_execute_as_local_commands tests.test_porting_workspace.PortingWorkspaceTests.test_route_plugin_slash_commands_match_commands tests.test_porting_workspace.PortingWorkspaceTests.test_plugin_command_stream_emits_command_match tests.test_porting_workspace.PortingWorkspaceTests.test_turn_loop_plugin_commands_are_not_prompt_only
Not-tested: full workspace test suite and clippy -D warnings; pre-existing api dead_code warnings remain.
Co-authored-by: OmX <omx@oh-my-codex.dev>
Replace placeholder pytest/nonexistent cargo filters with repository-native unittest and exact cargo filters so the final UX/verification matrix can be rerun without extra dependencies.
Constraint: worker-4 task 7 owns the final G011 verification map and must not mutate .omx/ultragoal.
Rejected: leaving pytest-based guidance | pytest is not installed in this worktree and unittest covers the existing plugin regression cases.
Confidence: high
Scope-risk: narrow
Directive: Keep desktop, marketplace, clipboard, and clickable-link surfaces explicit as deferrals until their contracts have implementation tests.
Tested: git diff --check; python3 .github/scripts/check_doc_source_of_truth.py; python3 .github/scripts/check_release_readiness.py; cargo check --manifest-path rust/Cargo.toml -p commands -p rusty-claude-cli; targeted commands/rusty-claude-cli/output_format cargo tests; python3 -m unittest plugin porting tests.
Not-tested: full cargo test --workspace.
Co-authored-by: OmX <omx@local>
G011 W3 needs non-destructive anti-slop issue and PR triage templates plus a fresh PR/issue snapshot so the leader can complete the aggregate gate without merging or closing from a worker lane.
Constraint: Worker lanes must not mutate .omx/ultragoal or merge/close remote PRs/issues; task 3 claim conflicted, so task 6 carried this support slice.
Rejected: Remote PR/issue mutation from the worker lane | Maintainer-owned approval is required for merge/close actions.
Confidence: high
Scope-risk: narrow
Directive: Refresh the GitHub snapshots at final gate time because the documented counts are point-in-time evidence, not terminal proof.
Tested: python3 .github/scripts/check_doc_source_of_truth.py; ruby YAML parse of .github/ISSUE_TEMPLATE/anti_slop_triage.yml; git diff --cached --check; cargo check --workspace; cargo test --workspace (fails only existing rusty-claude-cli tests resume_usage_mentions_latest_shortcut and session_lifecycle_prefers_running_process_over_idle_shell, reproduced individually).
Not-tested: Full cargo test workspace green due unrelated pre-existing rusty-claude-cli failures.
Co-authored-by: OmX <omx@oh-my-codex.dev>