Skip to content

feat(session_store): add list_sessions, delete_session, session_exists (#160)#2

Open
code-yeongyu wants to merge 679 commits into
mainfrom
feat/160-session-store-crud
Open

feat(session_store): add list_sessions, delete_session, session_exists (#160)#2
code-yeongyu wants to merge 679 commits into
mainfrom
feat/160-session-store-crud

Conversation

@code-yeongyu

@code-yeongyu code-yeongyu commented May 25, 2026

Copy link
Copy Markdown
Owner

Pinpoint ultraworkers#160. session_store has no list_sessions, delete_session, or session_exists.

Changes

  • Add list_sessions(directory) -> list[str] to enumerate stored sessions without touching the filesystem directly.
  • Add session_exists(session_id, directory) -> bool for pre-load checks.
  • Add delete_session(session_id, directory) -> bool for cleanup.
  • Add SessionNotFoundError(KeyError) so callers can distinguish "not found" from IO errors instead of catching raw FileNotFoundError.

Regression tests

  • test_list_sessions_returns_sorted_ids
  • test_list_sessions_returns_empty_for_missing_dir
  • test_session_exists_true_when_present / false_when_absent
  • test_delete_session_removes_file / returns_false_when_absent
  • test_load_session_raises_typed_error_when_missing
  • test_full_crud_round_trip

All 8 tests pass.


Summary by cubic

Add CRUD helpers to session_store so callers can list, check, and delete sessions, and get a typed error when a session is missing. This improves pre-load checks, cleanup flows, and clearer error handling.

  • New Features

    • list_sessions(directory) -> list[str]: returns sorted session IDs (empty if directory is missing).
    • session_exists(session_id, directory) -> bool: fast pre-load existence check.
    • delete_session(session_id, directory) -> bool: removes a session; returns false if it didn’t exist.
    • SessionNotFoundError(KeyError): raised on load for missing sessions to distinguish “not found” from I/O errors.
  • Migration

    • Catch SessionNotFoundError instead of relying on FileNotFoundError when loading sessions.

Written for commit df31fa3. Summary will update on new commits. Review in cubic

code-yeongyu and others added 30 commits May 5, 2026 07:02
…passes (ultraworkers#2996)

Scripts-only PR — CI intentionally does not run for scripts/ (path filter covers rust/** and docs only). Manually verified: dogfood-build.sh builds, injects GIT_SHA, verifies provenance, and documents CLAW_CONFIG_HOME isolation. Zero stderr with isolated config.
…t-hardening

openai: harden token-limit handling and default output-token caps
…-heavy-dirs

runtime: prune heavy directories during glob searches
…om 12 conflicting PRs

Batch-appended ROADMAP entries from PRs ultraworkers#2950, ultraworkers#2951, ultraworkers#2953, ultraworkers#2954,
ultraworkers#2955, ultraworkers#2956, ultraworkers#2957, ultraworkers#2959, ultraworkers#2960, ultraworkers#2962, ultraworkers#2963, ultraworkers#2964.

All PRs were CI-green but conflicting on ROADMAP.md due to serial
appends to the same file.
… thinking blocks

Five interrelated fixes from parallel Hephaestus sessions:

1. fix(repl): display assistant text after spinner (ultraworkers#2981, ultraworkers#2982, ultraworkers#2937)
   - Added final_assistant_text() call after run_turn spinner completes
   - REPL now shows response text like run_prompt_json does

2. fix(compact): handle Thinking content blocks (ultraworkers#2985)
   - Added ContentBlock::Thinking variant throughout compact summarizer
   - Prevents panic when /compact encounters thinking blocks

3. fix(prompt): provider-aware model identity (ultraworkers#2822)
   - New ModelFamilyIdentity enum (Claude vs Generic)
   - Non-Anthropic models no longer say 'I am Claude'
   - model_family_identity_for() detects provider and sets identity

4. fix(openai): preserve DeepSeek reasoning_content (ultraworkers#2821)
   - Stream parser now captures reasoning_content from OpenAI-compat
   - Emits ThinkingDelta/SignatureDelta events for reasoning models
   - Thinking blocks included in conversation history for re-send

5. feat(runtime): Thinking block support across codebase
   - AssistantEvent::Thinking variant in conversation.rs
   - ContentBlock::Thinking in session serialization
   - Thinking-aware compact summarization
   - Tests for thinking block ordering and content

Closes ultraworkers#2981, ultraworkers#2982, ultraworkers#2937, ultraworkers#2985, ultraworkers#2822, ultraworkers#2821
…e-fixes

fix: REPL display, /compact panic, identity leak, DeepSeek reasoning, thinking blocks
…ck test arity

Cherry-pick from Yeachan-Heo's ultraworkers#2945 with manual conflict resolution:
- classify_skills_slash_command now catches -h/--help anywhere in args
- Restored pending_thinking parameter in push_output_block test calls

Co-authored-by: Yeachan-Heo <bellman@ultraworkers.dev>
… canonicalization on macOS

Pinpoint from Jobdori dogfood on b98b9a7 in response to Clawhip nudge.
status.workspace.cwd, mcp.working_directory all canonicalize cwd
(intentional for ultraworkers#151 session bleed) but leak the result into JSON
output, breaking string-match automation across macOS symlinks.
…t as chat prompt

Pinpoint from Jobdori dogfood. claw <bogus> with valid creds reaches
Anthropic API as a chat message. Sibling exit-code parity bug:
api_http_error envelope exits 0 while cli_parse exits 1.
…:unknown for missing arg

Pinpoint from Jobdori dogfood. `echo X | claw prompt` returns
'prompt subcommand requires a prompt string' instead of reading stdin.
Sibling: error kind is 'unknown' not typed 'missing_argument'.
…cted; stale 4-6 suggestion

Pinpoint from Jobdori dogfood. claw --model claude-opus-4-7 returns
invalid_model_syntax error suggesting 'claude-opus-4-6' (one model
behind). Sibling: settings.json deprecation warning repeats 3x per
status invocation (config loaded 3x).
… deprecation warning 4×

Pinpoint: .claw/settings.json silently wins over .claw.json. config
--output-format json reports both loaded:true with no precedence_rank
or per-key attribution. Sibling: deprecation warning fired 3× in
ultraworkers#424's probe, now 4× — config load count regressing upward.
…valid_model validator

Pinpoint: --model rejects 'bogus-model-xyz' as invalid_model_syntax
but ANTHROPIC_MODEL=bogus-model-xyz returns status:ok with the bogus
value. Siblings: opus alias resolves to 4-6 not 4-7 (current frontier),
CLAW_MODEL and ANTHROPIC_DEFAULT_MODEL silently ignored.
…/config; resume hits auth gate

Pinpoint: claw resume --help, session --help, compact --help all hit
missing_credentials without producing usage. resume <bogus-id> also
requires API creds instead of local-first session_not_found lookup.
Sibling: exit code 0 on these error envelopes (parity bug from ultraworkers#422).
…er-full-access

Pinpoint: claw runs with full filesystem+network+tool access by default,
no opt-in flag, doctor stays silent. Fix shape: change default to
workspace-write, require explicit opt-in for danger-full-access, add
permissions check to doctor that warns when mode source is default.
Siblings: kind:unknown for invalid_permission_mode (typed-error
catch-all bug), --skip-permissions flag rejected (Claude Code parity).
…g 'Did you mean --acp' hint

Pinpoint: claw --cwd PATH rejected as unknown option globally. --cwd
exists ONLY for system-prompt subcommand. Every other major CLI
(cargo -C, git -C, npm --prefix) has global cwd override. Sibling:
'Did you mean --acp?' hint algorithm matches first-character not
semantic category — --acp is ACP/Zed integration, unrelated to cwd.
…m TS source; export PATH dropped

Pinpoint: dump-manifests --help advertises 'emit manifests for current
cwd' but actually requires CLAUDE_CODE_UPSTREAM env or --manifests-dir
pointing at upstream TypeScript Claude Code source. Unusable for users
without the original TS repo. Siblings: derivative-work disclosure leak,
kind drift between manifests-dir override path vs default path, export
<PATH> positional silently dropped before validation.
…; install error leaks OS string

Pinpoint: claw skills uninstall <bogus> requires API creds despite
being a pure local filesystem op. Siblings: skills install <bogus>
returns raw 'No such file or directory (os error 2)' with kind:unknown;
skills install (no args) treats valid subcommand as unknown action;
agents create doesn't exist (no scaffolding command for agents).
…ency + missing-value parser bug

Pinpoint: tool-name registry mixes snake_case/PascalCase/UPPERCASE
in single error message; undocumented CamelCase->snake_case alias map
(Read->read_file etc.); missing flag value consumes next positional
(subcommand swallowed). kind:unknown catch-all yet again.
… override + case-sensitive enum

Pinpoint: --output-format json --output-format text silently picks
text, no warning, scripts that compose flags get wrong format.
Siblings: JSON (uppercase) rejected as kind:unknown; CLAW_OUTPUT_FORMAT
env silently ignored; RUST_LOG/CLAW_LOG undocumented.
…ed; shorthand prompts can't start with dash

Pinpoint: claw -- 'anything' returns 'unknown option: --' with the
misleading 'Did you mean -V?' hint. Every other major CLI (cargo,
git, gh, kubectl, grep) honors POSIX -- as end-of-flags. Shorthand
prompt mode cannot accept any TEXT starting with - or --, forcing
users to remember the explicit 'prompt' verb.
… json + creates partition dir

Pinpoint: claw --resume latest on fresh workspace exits 0 in text mode
but 1 in JSON mode (same input, different outcome). Side effect:
.claw/sessions/<fingerprint>/ created on disk despite failure. Siblings:
claw --compact alone drops into REPL; claw --compact 'hello' rejects
shorthand prompt; kind:unknown catch-all yet again.
…defaultMode:dontAsk + empty .claw/

Pinpoint: claw init creates .claw.json with permissions.defaultMode:
dontAsk (disabled permission prompts by default) — compounds with ultraworkers#428.
Sibling: .claw/ artifact created as an empty directory (no
settings.json template inside). When .claw/ pre-exists, init skips
the entire artifact without materializing expected sub-content.
…ranch/commit_date/rustc; git_sha truncated

Pinpoint: claw version --output-format json omits is_dirty, branch,
commit_date, commit_timestamp, rustc_version. git_sha is 7-char short
form (collision risk + no git rev-parse round-trip). executable_path
leaks compile-host path /tmp/claw-dog-0530/... Sibling: prose 'message'
field still duplicates structured data (ultraworkers#391 supposedly fixed).
…s CLAUDE.md, ignores AGENTS.md + CLAW.md

Pinpoint: claw-code reads CLAUDE.md (inherited from upstream Claude Code)
but silently ignores AGENTS.md (industry convention used by OpenCode/
Codex/Aider/Cursor/Continue.dev) and CLAW.md (project's own brand name).
Users with mixed-tool workflows maintaining a shared AGENTS.md see
memory_file_count stay low with no warning.
…silent context bleed

Pinpoint: from /tmp/proj/sub/deep, claw walks ALL ancestors loading
every CLAUDE.md up to $HOME boundary. Stale /tmp/CLAUDE.md silently
bleeds into every workspace under /tmp/*. No --no-parent-memory flag,
no .claw-root boundary marker, no per-file attribution in status JSON.
Git-root is NOT a discovery boundary either.
…ocks ALL valid servers

Pinpoint: .claw.json with one valid mcpServers entry + one missing-command
entry → mcp list returns configured_servers:0, servers:[]. The valid
server is silently dropped because parser halts on first error.
Five invalid entries in the same file produce only ONE error message
(first one); user must iterate N times to discover all problems.
Violates ROADMAP product principle ultraworkers#5 (partial success first-class).
…de Code documented format

Pinpoint: claw-code expects {hooks:{PreToolUse:['cmd-string']}} while
Claude Code docs specify {hooks:{PreToolUse:[{matcher,hooks:[{type,command}]}]}}.
Users copy-pasting from Claude Code docs get the cryptic 'must be an
array of strings, got an array' error. PR ultraworkers#3000 already addresses
this but is conflicting and unmerged. Siblings: unknown hook event
rejects entire hooks config (ultraworkers#440 pattern); first-error-only halting;
kind:unknown catch-all (13th occurrence).
bellman and others added 30 commits May 15, 2026 11:19
Keep G010 resumed session UX compilable after worker integrations by routing every /session action through the shared resumed-session command handler.\n\nConstraint: Rust exhaustive matching rejected partial /session arms after task integrations introduced action-without-target cases.\nRejected: adding ad hoc match arms per action | the shared handler already owns list, exists, delete, and unsupported action behavior.\nConfidence: high\nScope-risk: narrow\nDirective: Preserve run_resumed_session_command as the single resumed /session dispatch point.\nTested: cargo fmt --manifest-path rust/Cargo.toml --all -- --check; cargo test --manifest-path rust/Cargo.toml -p rusty-claude-cli --bin claw session_exists_resume_command_reports_json_contract -- --nocapture; cargo test --manifest-path rust/Cargo.toml -p rusty-claude-cli --bin claw resumed_session_exists_and_delete_have_json_contracts -- --nocapture; cargo check --manifest-path rust/Cargo.toml --workspace; git diff --check\nNot-tested: full cargo test --workspace not run.
Preserve the passing G010 quality-gate evidence after fixing resumed /session exhaustiveness.\n\nConstraint: Ultragoal checkpoints require concrete verification artifacts that mention G010-session-hygiene and .omx/ultragoal state.\nRejected: relying only on terminal scrollback | rerun log is durable and reviewable.\nConfidence: high\nScope-risk: narrow\nDirective: Use this rerun log, not the earlier failed g010-final-quality-gate.log, as the passing G010 quality evidence.\nTested: .omx/ultragoal/g010-final-quality-gate-rerun.log records fmt, targeted runtime/commands/CLI tests, workspace check, and git diff --check passing.\nNot-tested: full cargo test --workspace remains not run for G010.
Record G010-session-hygiene as complete so the remaining Claw Code 2.0 delivery can advance to G011/G012.\n\nConstraint: OMX ultragoal checkpoint requires fresh Codex get_goal evidence and durable .omx/ultragoal ledger/goals artifacts.\nRejected: marking the aggregate Codex goal complete | only G010 is complete; G011 and G012 remain pending.\nConfidence: high\nScope-risk: narrow\nDirective: Continue with G011-ecosystem-ops-ux next; do not call update_goal until G012/final audit is complete.\nTested: omx ultragoal checkpoint --goal-id G010-session-hygiene --status complete with .omx/ultragoal/get-goal-G010-session-hygiene.complete.json and .omx/ultragoal/quality-gate-G010-session-hygiene.json; G010 final verification evidence in .omx/ultragoal/g010-final-quality-gate-rerun.log.\nNot-tested: G011/G012 not started in this commit.
Advance the Claw Code 2.0 ultragoal from completed G010 into G011 ecosystem, issue-ops, and UX lateral work.\n\nConstraint: G011 must remain an intermediate OMX story under the active aggregate Codex goal; G012 final gate remains pending.\nRejected: calling update_goal | aggregate delivery is not complete until G011 and G012 finish.\nConfidence: high\nScope-risk: narrow\nDirective: Implement G011 with team lanes for ACP/Zed/JSON-RPC serve plan/status, anti-slop issue/PR triage/templates, navigation/file-context docs, TUI UX improvements, and explicit desktop/marketplace deferrals.\nTested: omx ultragoal start-next --json selected G011-ecosystem-ops-ux after G010 checkpoint.\nNot-tested: G011 implementation not started in this commit.
Keep the integrated G011 worker outputs buildable and whitespace-clean before final stream verification.

Constraint: worker auto-checkpoints left a test-scope import gap and committed trailing whitespace.

Rejected: waiting for another worker auto-merge | leader verification already identified the narrow repair.

Confidence: high

Scope-risk: narrow

Directive: preserve the ACP unsupported JSON contract and anti-slop template cleanliness when editing G011 artifacts.

Tested: git diff --check; python3 .github/scripts/check_doc_source_of_truth.py; cargo fmt --manifest-path rust/Cargo.toml --all -- --check; cargo check --manifest-path rust/Cargo.toml -p rusty-claude-cli; 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

Not-tested: full workspace tests pending G011 final gate.
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>
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 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>
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>
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>
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>
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>
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.
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.
…umeSession and hits auth gate despite being a local-only filesystem read
…err not stdout; doctor missing prompt_ready field
…source schema (ultraworkers#3094)

Co-authored-by: Yeachan-Heo <119558624+Yeachan-Heo@users.noreply.github.com>
…rkers#681-ultraworkers#691 roadmap entries

Merges all open ROADMAP documentation PRs into a single commit.
PRs: ultraworkers#3064-ultraworkers#3093 (all docs/roadmap branches)
…s and typed error

Pinpoint ultraworkers#160: session_store has no list_sessions, delete_session, or session_exists.

- Add list_sessions(directory) -> list[str] to enumerate stored sessions

- Add session_exists(session_id, directory) -> bool for pre-load checks

- Add delete_session(session_id, directory) -> bool for cleanup

- Add SessionNotFoundError(KeyError) so callers distinguish missing from IO errors

- Regression tests cover empty dir, round-trip, and typed exception

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants