Skip to content

Unify TODO runtime and workflow tooling - #86

Open
moshloop wants to merge 283 commits into
mainfrom
feat/todo-prompt-runs
Open

Unify TODO runtime and workflow tooling#86
moshloop wants to merge 283 commits into
mainfrom
feat/todo-prompt-runs

Conversation

@moshloop

@moshloop moshloop commented Sep 1, 2026

Copy link
Copy Markdown
Member

What

  • Expand PR status, test/fixture, lint, process supervision, and project dashboard workflows.
  • Rework TODOs around native PostgreSQL, durable plans, runtime specs, verification, triage, and lifecycle-aware sessions.
  • Add AI-assisted commit grouping/staging, auto-merge, session-aware commits, and structured prompt configuration.

Notes

  • Includes breaking changes across CLI, API, and configuration contracts, including the pnpm migration and 0.0.0.0 default UI binding.

….0.0.0

Change the default interface binding for UI servers (PR dashboard, bench UI, lint UI, test UI) from localhost to 0.0.0.0 to expose dashboards on the LAN by default. Users can now explicitly set localhost to restrict access to the local machine.

Updates:
- Default addr flag to 0.0.0.0 across bench, lint, pr list, and test commands
- Add --addr flag to pr list command to control UI server binding
- Update bindUIListener() to accept host parameter for flexible binding
- Add tests for bindUIListener() to verify wildcard and loopback binding
- Refactor serve_dashboard.go with applyServeDefaults() helper
- Add todos edit/comment/reopen commands with body file support
- Simplify todos_commit.go by delegating to commitpkg.RunAfterAgent()

BREAKING CHANGE: UI servers now bind to 0.0.0.0 by default instead of localhost, making them accessible on the LAN. Set --addr=localhost to restore previous behavior.
Add RunAfterAgent function to stage and commit changes after TODO runs, supporting both CLI and dashboard auto-commit workflows.

Refactor stageFiles to respect .gavel.yaml commit.gitignore rules when staging untracked files, fixing the bug where `gavel commit -A` would stage ignored files via `git add -A`. Split staging into separate git add -u (tracked changes) and custom untracked filtering (respecting both .gitignore and .gavel.yaml rules).

Add helper functions gitAddUpdate, untrackedFiles, and addUntracked to handle staging with proper ignore semantics. Embedded git repositories are now safely skipped without aborting the entire stage operation.

Also includes:
- ScanFreePort now accepts configurable host parameter
- useTimeoutFlash React hook for transient state management
- NumberTicker animation cleanup improvements
- Comprehensive test coverage for staging scenarios
Change the default value of the Addr field from 'localhost' to '0.0.0.0' to expose the UI HTTP server on all network interfaces by default. Update the documentation to clarify that 0.0.0.0 is the default and users can set localhost to restrict access to the local machine.

BREAKING CHANGE: The --ui HTTP server now binds to all interfaces (0.0.0.0) by default instead of localhost only.
Add SVG app icon, PNG icon variants (192x512), Apple touch icon, and web manifest configuration for the gavel PR dashboard. Enables PWA installation support across iOS and Android platforms with proper icon scaling and theming.
Enhance the todos interface with several improvements:

- Add TodoGroupByMenu and TodoFilterMenu components to support grouping by severity/age and filtering by status in the menubar todos tab
- Refactor TodoCompose into separate TodoTitleEditor and TodoBodyEditor components with independent edit states
- Add inline edit pencils to TodoDetail for title and body, allowing users to edit without a full form modal
- Support defaultDir prop in CreateTodoDialog to preselect the current workspace when creating a new todo
- Add attachment support to TodoNewPage with screenshot preview display and multipart form submission
- Enhance TodoSession and TodoSessionTimer to display error events with HTTP status codes and context compaction metrics
- Update MenubarTodos to include grouping/filtering controls and a New button in a compact tab strip
- Improve TodoSection header layout to support action controls (edit pencils) outside the toggle button

These changes improve the UX by allowing todos to be created, grouped, filtered, and edited without leaving the current view.
Implement Progressive Web App capabilities with home-screen installation support, including manifest and icons. Add screenshot capture to React Grab plugin using getDisplayMedia and Region Capture APIs. Implement attachment persistence and serving with security validation. Fix menu-bar URL resolution to use loopback for WKWebView App Transport Security compliance. Add session error event streaming and improve todo attachment embedding with inline image rendering.

BREAKING CHANGE: Attachment summaries now include served URLs and image flags instead of just metadata; attachment bodies embed images inline as markdown rather than plain links.
Add support for detecting and properly handling API/network errors in Claude sessions. When an API error occurs (marked by EventError), the session now terminates immediately rather than waiting for normal completion signals.

Changes:
- Session tailer now recognizes EventError as a terminal event alongside EventTurnEnd
- awaitSessionCompletion captures API errors and returns them as failures
- handleSessionEvent processes EventError events and notifies the executor
- SessionStats tracks error state and reason, with new sessionStateError state
- Added sessionErrorText helper to format error messages from event metadata
- Track context window size (ContextTokens) and context compactions separately from total tokens
- SessionLogLine now parses compact_boundary system entries to track context compactions

This ensures API failures are surfaced loudly to users rather than being misreported as successful completions.
… and status

Add unstageGitIgnored to strip force-tracked but .gitignore'd files from the index after staging, while preserving manually staged files and !-negated paths. Refactor utils.FilterGitIgnored into PartitionGitIgnored to split kept/ignored paths. Apply filtering in status.Gather to hide ignored modifications from output, matching what gavel commit will actually commit. Add AddMetadata, IssueID, and SessionID options to stamp commit messages with gavel metadata.

BREAKING CHANGE: stageFiles now removes force-tracked ignored files from commits; release CI must re-commit with `git add -f`.
…trailers, and post-check loop

Add AIGroup flag to split changesets by LLM-determined logical groups instead of directory structure, with separate GroupModel for capable models. Add AddMetadata flag to append Gavel-Issue-Id and Claude-Session-Id trailers sourced from environment variables set by 'gavel todos run'.

Introduce --check flag for todos run to execute configured checks after agent completion and feed failures back until passing. Wire linter implementation via checks.SetLintRunner to avoid circular imports.

Refactor summary.go to delegate compact report building to shared report package, removing 260+ lines of duplicated formatting logic. Update lint.go and test.go to use new todosync package. Adjust pr_create.go BuildAgent signature to accept model as second parameter.

Gavel-Issue-Id: 71758008d9f6934bf59cc27ba70e0311
Claude-Session-Id: 5638f1a2-949a-4cd5-bd1e-afb0f0896777
Introduce --ai-group flag to split staged changes into logical commit groups using an LLM, plus a separate chore commit for lock/generated files. This complements the existing directory-based grouping.

Add commit metadata stamping (Gavel-Issue-Id and Claude-Session-Id trailers) via AgentRunMetadata, enabling in-process commits after todo runs to record issue and session context without relying on environment variables.

Refactor multi-commit pipeline into shared prepareMultiCommit and commitGroups helpers, reducing duplication between --commit-all and --ai-group flows. Support per-task LLM selection via messageModel() and groupModel() with appropriate defaults and fallbacks.

Add body-line scaling based on diff size to avoid verbose messages for trivial changes, and improve test coverage with new test files for AI grouping, metadata, and body-line logic.

Gavel-Issue-Id: 71758008d9f6934bf59cc27ba70e0311
Claude-Session-Id: 5638f1a2-949a-4cd5-bd1e-afb0f0896777
Pass maxBodyLines option through the AI analysis pipeline to control commit message body length. Update the commit message prompt template to conditionally display body line limits based on configuration. This allows fine-grained control over LLM output length for commit bodies.

Gavel-Issue-Id: 71758008d9f6934bf59cc27ba70e0311
Claude-Session-Id: 5638f1a2-949a-4cd5-bd1e-afb0f0896777
…focus control

Implement screenshot attachment support for todos with multipart form uploads and object URL previews. Add session event filtering by category and tool type with a compact overflow menu. Enable focusing the agent's cmux terminal from the session timer. Extract attachment handling into a reusable hook and add context-window usage visualization. Support post-completion test/lint checks via the advanced run dialog. Absolutize relative attachment URLs in prompts so agents can fetch stored screenshots.

Gavel-Issue-Id: 71758008d9f6934bf59cc27ba70e0311
Claude-Session-Id: 5638f1a2-949a-4cd5-bd1e-afb0f0896777
…iler

Introduce `gavel commit --since=<ref>` to review history in <since>..HEAD and merge commits sharing a Gavel-Issue-Id trailer into single commits with AI-simplified messages. This enables deduplication of related commits across a branch.

Also add --max-commits and --group-by-scope flags for AI grouping (-G):
- --max-commits caps the number of commits produced, with consolidation feedback when exceeded
- --group-by-scope makes scope the primary grouping boundary instead of logical change

Refactor AI grouping to use markdown status tables instead of scope-prefixed text, improving clarity and enabling scope-aware sorting. Extract git log format to a constant for reuse across multiple commands.

Add new report/compact.go package for rendering test/lint summaries in PR comments and agent feedback.

Refs #CW-2
Implement a post-completion check loop that runs configured gavel tests and linters after an agent reports done, feeding failures back to the agent for iterative fixes.

Key additions:
- New checkloop.go with runCheckLoop orchestrating test/lint runs and feedback rounds
- FeedbackExecutor interface for executors supporting agent re-runs with check results
- AgentChecksConfig type for test/lint configuration (project-level and per-TODO)
- checks/runner.go package coordinating test and lint execution
- SendFeedback implementations in claude and cmux executors
- Session start retry logic in cmux to handle dropped Enter keystrokes
- Model ID normalization for pricing registry lookups
- Context window tracking in session stats

The loop is opt-in, enabled via .gavel.yaml, TODO frontmatter, or --check flag. It runs up to MaxIterations feedback rounds (default 3) before reporting failures.
Move test failure and lint violation syncing into a new `todosync` package to break the import cycle between testrunner/linters and todos packages. Rename `TodoSync` to `TestFailureRecorder` and `lint_sync.go` to `lint_violations.go` for clarity. Update `RunOptions.TodoSync` callback to accept the new interface, allowing testrunner to invoke todo recording without direct package imports.

BREAKING CHANGE: `TodoSync` type renamed to `TestFailureRecorder`; `NewTodoSync` renamed to `NewTestFailureRecorder`; `SyncFailure` now accepts `parsers.Test` instead of `TestFailure`.
… check loop

Introduce `gavel commit -G` for LLM-assisted logical commit grouping with a separate chore commit for lock/generated files, backed by a new `commit.groupModel` config field (defaults to sonnet-class). Add `gavel todos run --check` to run tests/lint after agent completion and feed failures back for iterative fixing, with configurable `checks:` block in .gavel.yaml and TODO frontmatter. Update UI server defaults to bind `0.0.0.0` (all interfaces) instead of `localhost` for better LAN accessibility. Extend CLI with `--max-commits`, `--group-by-scope`, `--group-model`, `--addr`, and `--port` flags across relevant commands.
Replace the legacy agent+mode pair with a unified driver selection system that supports multiple execution mechanisms: cmux (interactive TUI), headless (stream-json CLI), sdk (Claude Agent SDK bridge), and api (direct Anthropic API).

The new drivers package centralizes driver selection logic, eliminating duplicated switch statements across CLI and dashboard. Each driver kind combines an agent (claude/codex) with a mechanism (cmux/headless/sdk/api), providing a cleaner UX than separate agent and mode dropdowns.

Add git trailer utilities to link commits back to todos via Gavel-Issue-Id, enabling the dashboard to display related commits. Implement tool approval workflow for drivers that need human permission before executing certain tools.

Update CLI flags to prefer --driver over the legacy --mode, maintaining backward compatibility. Refactor executor construction to use the new drivers factory.

BREAKING CHANGE: The internal executor API now returns (Executor, sessionID, error) instead of (Executor, sessionID).

Gavel-Issue-Id: 78f9070ff1ee361ef4d2bb462f9ed64a
Claude-Session-Id: 206ff2e6-357a-45b9-9aae-9c0bea06bc27
Add `--stage=<session-id>` mode to gavel commit that stages exactly the files a Claude agent's Edit/Write tools touched during a session, filtered by .gitignore and .gavel.yaml commit.gitignore rules. This scopes commits to agent changes rather than the whole working tree and backs both CLI usage and the todo runner's auto-commit.

Implement stageSessionFiles() to resolve session logs via captain's history API, extract modified file paths, validate they're within the work directory, and filter ignored paths. Update after_agent.go to use session ID when available, falling back to staging all changes with a log message.

Add CommitDiff() to git package to fetch and render ANSI-colored `git show` output capped at 256 KB, with truncation detection. Add IsValidCommitHash() to reject untrusted input before shelling out to git.

Update dashboard to expand commit rows to show diffs via new /api/todos/commits/diff endpoint. Migrate session streaming from custom event parsing to raw captain SessionEntry records consumed by clicky-ui's SessionViewer, simplifying the frontend and enabling richer rendering. Add tool-approval flow with pending request display and Allow/Deny buttons.

Extract RepoIcon component for reuse across PR and Todo lists. Bump clicky-ui to 0.3.6.

Gavel-Issue-Id: 863d567a955a277286c36a3b3de0d0ea
Claude-Session-Id: 8e9ba472-f783-46dc-9c91-2edf51786eb6
… list

Introduces aggregated git diff statistics (commits, files, adds/dels) per todo via the Gavel-Issue-Id trailer, displayed in the UI alongside creation and last-activity timestamps. Adds client-side activity time-range filtering with clicky-ui TimeRange picker, persisted to localStorage. Implements server-side caching of commit stats with TTL to avoid repeated git log passes. Sorts todos by priority then age to surface important, long-outstanding work. Extends Claude prompts to include issue comments for richer context. Adds iframe injection for React Grab plugin to support grabbable content in framed pages.

Gavel-Issue-Id: 55736bed99f884f64854c1d9dad956a0
Claude-Session-Id: bfe6e45a-bb19-4982-b7f9-c4ff182851ab
Add actorName() function to surface only human-readable actor names in the todo timeline. Opaque UUID identifiers (both 32-char and dashed forms) are now filtered out and return undefined, preventing meaningless IDs from being displayed to users while preserving actual actor names.

Gavel-Issue-Id: e90ab720de5f7e885c9fc83a849e96fd
Claude-Session-Id: 7d7c5558-32ba-4f0d-9658-fff61433ecfe
…lience

Add CommitFiles API to parse git diffs and enrich files with repomap scope/language classification, enabling per-file hover cards in the dashboard. Extend CommitDiff to support file-scoped diffs.

Refactor cmux submission and session monitoring: extract sendSurfaceText and session-start confirmation into reusable submitAndConfirm; add stall watchdog that detects hung turns via dual signals (log growth + surface changes) and nudges with re-pressed Enter; implement REPL-readiness detection for claude startup; add tool-permission approval handling for human-in-the-loop workflows.

Update UI to split driver selection into provider (claude/codex) and mechanism (cmux/headless/sdk/api) axes with dynamic catalog-driven pickers, improving UX and maintainability.

Gavel-Issue-Id: 48bfd19df0829a07c909a4c9e46c0970
Claude-Session-Id: 17a8538f-ec24-4100-bb68-8f65640d8c82
Refactor TodoCommits to display per-file change summaries instead of a single full-commit diff. Each file now shows its status (added/deleted/renamed/modified), language, scopes, and line counts, with individual diffs revealed on hover.

New CommitFiles component provides a repomap-based breakdown of commit changes, improving scannability and allowing users to focus on specific files. FileDiffCard lazily loads diffs for individual files, reducing initial payload.

Also upgrade @flanksource/clicky-ui from 0.2.21 to 0.3.6 and remove obsolete gitleaks comment from dagre-d3-es integrity hash.

Gavel-Issue-Id: fb88778c155e76f4f59d8f3252a3aae9
Claude-Session-Id: 1596fad8-2474-4fd0-bbaa-807af0303502
…d verification

Implement structured acceptance criteria for TODOs with full CRUD operations:

- Add CLI commands (list/add/remove/edit/generate) for criteria management
- Parse and render criteria from markdown "## Acceptance Criteria" sections
- Support static checks from verify catalog and custom criteria
- AI-powered criteria generation using LLM with structured output
- React UI component with inline editing, toggling, and verification
- Verification results display with per-criterion verdicts and evidence
- Flexible JSON parsing tolerates model output variations (objects vs strings)

Criteria round-trip through markdown with check IDs preserved for static checks. Editing custom criteria clears associated check IDs. Verification integrates with existing verify.AllChecks catalog.
…coring

Implement issue verification that scores commits against acceptance criteria and issue specifications. This enables:

- CLI command `gavel todos verify` to verify TODOs against their acceptance criteria
- Issue-aware verification context with custom criteria and static checks
- Persistent verification results stored in TODO files
- Dashboard UI endpoints for criteria management and verification
- Schema and prompt generation tailored to issue context
- Overall implementation verdict based on score threshold and acceptance criteria

The verification run now accepts an IssueContext containing the issue title, description, comments, selected checks, and custom criteria. Results include an `implemented` boolean and per-criterion verdicts. Acceptance criteria count toward the overall score computation alongside checks.
…activity status

Add SessionStats.Executing() to determine if a session is actively working, considering both live tailers and cold sessions with recent log updates within executingRecency (60s). This allows resumed sessions and continued REPL interactions to surface as in-progress rather than stale.

Add SessionAccumulator.SetState() to override live agent state, enabling the stall watchdog to mark tool-permission dialogs as "ask" status since Claude renders approval prompts only on the terminal without session-log events.

Update stallWatchdog to call markAwaitingHuman() when paused on user input, ensuring the dashboard and CLI show "awaiting input" instead of stale "working" status.
…neration

Implement post-commit issue verification that scores completed work against acceptance criteria, and AI-powered acceptance criteria generation during TODO creation.

Key changes:
- Add `--verify` flag to `todos run` to enable issue verification after commits
- Generate acceptance criteria from TODO title/body using LLM during creation
- Return commit hashes from RunAfterAgent for verification consumption
- Add ErrSessionNoFiles error when session edits no stageable files
- Extend Provider interface with SaveVerification method
- Add session status reconciliation in dashboard to surface live work
- Support criteria editing and verification result persistence in UI
…ate dependencies

Replace all native <button> elements with the Button component from clicky-ui throughout the PR UI to ensure consistent styling and behavior. Update package.json dependencies including React 19.2.7, TypeScript 5.9.3, and add iconify packages. Add oxlint configuration and update catalog versions. Fix ANSI regex patterns with eslint directives and remove unused functions. Replace native <select> elements with Select component. Update .gitignore to anchor gavel binary pattern.
Introduce a new Tests tab in the PR UI that displays a history of test and lint runs across registered workspaces. Implement per-run snapshot persistence (run-*.json files) with metadata tracking (start/end times, kind). Add TestRunSyncer to scan workspaces on an interval and cache run summaries in the database for efficient querying. Include database schema for TestRunCache and TestRunCursor to support incremental syncing via watermarks. Add ListRuns() to enumerate and classify runs (test/lint/test+lint) from snapshot files. Implement HTTP endpoints for fetching run lists and individual run details with path traversal protection.
…mode from backend

Executor now receives models fully resolved with capabilities and mode, not just
names. Execution mode is specified explicitly rather than inferred from backend,
enabling cleaner configuration layering and better provenance tracking.
@coderabbitai

coderabbitai Bot commented Sep 1, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 1339 files, which is 1239 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: d711bab4-bd76-402c-8fc9-75759c5ba756

📥 Commits

Reviewing files that changed from the base of the PR and between 43a9189 and 06287b2.

⛔ Files ignored due to path filters (12)
  • go.sum is excluded by !**/*.sum
  • go.work.sum is excluded by !**/*.sum
  • pr/ui/brand/app-icon.svg is excluded by !**/*.svg
  • pr/ui/brand/apple-touch-icon.png is excluded by !**/*.png
  • pr/ui/brand/icon-192.png is excluded by !**/*.png
  • pr/ui/brand/icon-512.png is excluded by !**/*.png
  • pr/ui/brand/menubar.png is excluded by !**/*.png
  • pr/ui/package-lock.json is excluded by !**/package-lock.json
  • pr/ui/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • site/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • testrunner/ui/package-lock.json is excluded by !**/package-lock.json
  • testrunner/ui/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (1339)
  • .agents/skills/gavel-fixture-tester/SKILL.md
  • .claude-plugin/marketplace.json
  • .gavel.yaml
  • .github/workflows/gavel-action.yml
  • .github/workflows/lint.yml
  • .github/workflows/npm-publish.yml
  • .github/workflows/release.yml
  • .github/workflows/test.yml
  • .gitignore
  • .todos/81/lint-go-mod-tidy-check.md
  • .todos/81/lint-golangci-lint.md
  • .todos/81/test-test-ubuntu-latest-go-1-25.md
  • .worktreeinclude
  • AGENTS.md
  • CLAUDE.md
  • MANUAL.md
  • Makefile
  • README.md
  • SCHEMA.md
  • Taskfile.yaml
  • action.yml
  • ai/agent.go
  • ai/agent_test.go
  • ai/aifix/aifix.go
  • ai/aifix/aifix_test.go
  • ai/aifix/lint-ai-fix.prompt
  • ai/aifix/render.go
  • ai/aifix/render_test.go
  • ai/close_test.go
  • ai/config.go
  • ai/prfix/pr-status-fix.prompt
  • ai/prfix/prfix.go
  • ai/prfix/prfix_test.go
  • cmd/gavel/ai_runtime.go
  • cmd/gavel/ai_runtime_test.go
  • cmd/gavel/bench.go
  • cmd/gavel/commit.go
  • cmd/gavel/commit_aifix.go
  • cmd/gavel/commit_batch_options_ginkgo_test.go
  • cmd/gavel/commit_lint.go
  • cmd/gavel/commit_options_test.go
  • cmd/gavel/config.go
  • cmd/gavel/config_render.go
  • cmd/gavel/config_render_test.go
  • cmd/gavel/config_test.go
  • cmd/gavel/configure.go
  • cmd/gavel/ctx.go
  • cmd/gavel/fixtures.go
  • cmd/gavel/fixtures_outline.go
  • cmd/gavel/fixtures_render.go
  • cmd/gavel/fixtures_render_test.go
  • cmd/gavel/fixtures_schema.go
  • cmd/gavel/fixtures_test.go
  • cmd/gavel/fixtures_ui.go
  • cmd/gavel/fixtures_ui_ginkgo_test.go
  • cmd/gavel/fixtures_verify_report.go
  • cmd/gavel/fixtures_verify_report_ginkgo_test.go
  • cmd/gavel/gavel_suite_ginkgo_test.go
  • cmd/gavel/git.go
  • cmd/gavel/git_ai_flags_test.go
  • cmd/gavel/help_test.go
  • cmd/gavel/lint.go
  • cmd/gavel/lint_aifix.go
  • cmd/gavel/lint_linter_subcmds.go
  • cmd/gavel/main.go
  • cmd/gavel/main_mcp_test.go
  • cmd/gavel/menubar_darwin.go
  • cmd/gavel/menubar_darwin_test.go
  • cmd/gavel/menubar_stub.go
  • cmd/gavel/pr.go
  • cmd/gavel/pr_close.go
  • cmd/gavel/pr_close_ginkgo_test.go
  • cmd/gavel/pr_create.go
  • cmd/gavel/pr_create_test.go
  • cmd/gavel/pr_dev.go
  • cmd/gavel/pr_dev_test.go
  • cmd/gavel/pr_fix.go
  • cmd/gavel/pr_list.go
  • cmd/gavel/pr_list_test.go
  • cmd/gavel/pr_snapshot.go
  • cmd/gavel/pr_snapshot_ginkgo_test.go
  • cmd/gavel/pr_status_aifix.go
  • cmd/gavel/pr_status_aifix_test.go
  • cmd/gavel/proc.go
  • cmd/gavel/proc_list.go
  • cmd/gavel/proc_logs.go
  • cmd/gavel/proc_progress.go
  • cmd/gavel/proc_progress_test.go
  • cmd/gavel/proc_restart.go
  • cmd/gavel/proc_run.go
  • cmd/gavel/proc_start.go
  • cmd/gavel/proc_status.go
  • cmd/gavel/proc_stop.go
  • cmd/gavel/proc_stream.go
  • cmd/gavel/project_action_options.go
  • cmd/gavel/project_action_options_ginkgo_test.go
  • cmd/gavel/projects.go
  • cmd/gavel/repomap_get.go
  • cmd/gavel/repomap_view.go
  • cmd/gavel/serve.go
  • cmd/gavel/serve_dashboard.go
  • cmd/gavel/serve_dashboard_test.go
  • cmd/gavel/serve_runtime.go
  • cmd/gavel/serve_runtime_test.go
  • cmd/gavel/ssh_install.go
  • cmd/gavel/status.go
  • cmd/gavel/status_ai_flags_test.go
  • cmd/gavel/status_test.go
  • cmd/gavel/summary.go
  • cmd/gavel/summary_test.go
  • cmd/gavel/system_install.go
  • cmd/gavel/system_start.go
  • cmd/gavel/system_status.go
  • cmd/gavel/system_stop.go
  • cmd/gavel/system_uninstall.go
  • cmd/gavel/test.go
  • cmd/gavel/test_ansi.go
  • cmd/gavel/test_ansi_ginkgo_test.go
  • cmd/gavel/test_ansi_test.go
  • cmd/gavel/test_args_test.go
  • cmd/gavel/test_failure.go
  • cmd/gavel/test_failure_test.go
  • cmd/gavel/test_framework_flags_ginkgo_test.go
  • cmd/gavel/test_framework_subcmds.go
  • cmd/gavel/test_history.go
  • cmd/gavel/test_history_test.go
  • cmd/gavel/test_outline.go
  • cmd/gavel/test_outline_ginkgo_test.go
  • cmd/gavel/test_rerun_options_test.go
  • cmd/gavel/test_snapshot.go
  • cmd/gavel/test_snapshot_test.go
  • cmd/gavel/test_timeout_config_ginkgo_test.go
  • cmd/gavel/todo_select.go
  • cmd/gavel/todos.go
  • cmd/gavel/todos_check.go
  • cmd/gavel/todos_commit_test.go
  • cmd/gavel/todos_create.go
  • cmd/gavel/todos_create_ginkgo_test.go
  • cmd/gavel/todos_create_help.go
  • cmd/gavel/todos_edit.go
  • cmd/gavel/todos_edit_labels_test.go
  • cmd/gavel/todos_edit_test.go
  • cmd/gavel/todos_labels.go
  • cmd/gavel/todos_link.go
  • cmd/gavel/todos_list_provider_test.go
  • cmd/gavel/todos_plan.go
  • cmd/gavel/todos_plan_test.go
  • cmd/gavel/todos_portable.go
  • cmd/gavel/todos_portable_test.go
  • cmd/gavel/todos_provider_test.go
  • cmd/gavel/todos_push.go
  • cmd/gavel/todos_resolve_test.go
  • cmd/gavel/todos_run.go
  • cmd/gavel/todos_run_test.go
  • cmd/gavel/todos_runtime_guard_test.go
  • cmd/gavel/todos_steps.go
  • cmd/gavel/todos_steps_test.go
  • cmd/gavel/todos_sync.go
  • cmd/gavel/todos_test_provider_test.go
  • cmd/gavel/todos_text.go
  • cmd/gavel/todos_transfer.go
  • cmd/gavel/ui_serve.go
  • cmd/gavel/ui_serve_test.go
  • cmd/gavel/verify.go
  • cmd/gavel/verify_sync.go
  • cmd/gavel/verify_sync_test.go
  • commit/after_agent.go
  • commit/after_agent_test.go
  • commit/agent_hooks.go
  • commit/agent_hooks_test.go
  • commit/agent_lifecycle.go
  • commit/agent_lifecycle_ginkgo_test.go
  • commit/ai_group.go
  • commit/ai_group_test.go
  • commit/analysis.go
  • commit/body_lines_test.go
  • commit/check_modes.go
  • commit/commit-grouping.prompt
  • commit/commit.go
  • commit/commit_all_test.go
  • commit/commit_test.go
  • commit/compatibility_check.go
  • commit/compatibility_check_test.go
  • commit/file_size_check.go
  • commit/files.go
  • commit/files_test.go
  • commit/fixup.go
  • commit/fixup_since.go
  • commit/fixup_since_test.go
  • commit/git.go
  • commit/gitignore.go
  • commit/gitignore_check.go
  • commit/gitignore_check_test.go
  • commit/gitignore_test.go
  • commit/group.go
  • commit/grouping_prompt_test.go
  • commit/interactive.go
  • commit/interactive_batch.go
  • commit/interactive_batch_test.go
  • commit/interactive_test.go
  • commit/interactive_tree.go
  • commit/linked_deps_check.go
  • commit/linked_deps_check_test.go
  • commit/lint_test.go
  • commit/metadata.go
  • commit/metadata_test.go
  • commit/multi_commit.go
  • commit/planner.go
  • commit/pr-content.prompt
  • commit/precommit_mode_test.go
  • commit/prompt_select.go
  • commit/prompt_select_test.go
  • commit/prompts.go
  • commit/push.go
  • commit/push_automerge_test.go
  • commit/push_no_commit_test.go
  • commit/push_prompt.go
  • commit/push_prompt_test.go
  • commit/push_protected_branch_test.go
  • commit/push_test.go
  • commit/rebase.go
  • commit/rebase_test.go
  • commit/result.go
  • commit/stage_session.go
  • commit/stage_session_captain_test.go
  • commit/stage_session_test.go
  • commit/stage_test.go
  • commit/staging.go
  • commit/testdata/grouping-base.golden
  • commit/tokenlimit.go
  • commit/tokenlimit_test.go
  • docs/SessionDataModel.html
  • docs/SessionDataModel.tsx
  • docs/postgres-performance.md
  • docs/session-data-model.md
  • example_config.go
  • examples/help.fixture.md
  • examples/pre-release.fixture.md
  • examples/precommit.fixture.md
  • examples/sample-app/main.go
  • examples/sample-app/sample_test.go
  • examples/smoke-test.fixture.md
  • fixtures/aistep_criteria_section_ginkgo_test.go
  • fixtures/aistep_parse.go
  • fixtures/aistep_parse_test.go
  • fixtures/ansi.go
  • fixtures/ansi_capture.go
  • fixtures/ansi_capture_ginkgo_test.go
  • fixtures/ansi_capture_test.go
  • fixtures/ansi_screen.go
  • fixtures/ansi_settle.go
  • fixtures/ansi_settle_test.go
  • fixtures/ansi_test.go
  • fixtures/cel_evaluator.go
  • fixtures/cel_trace.go
  • fixtures/cel_trace_ginkgo_test.go
  • fixtures/examples_test.go
  • fixtures/expand_files.go
  • fixtures/expand_files_ginkgo_test.go
  • fixtures/expectations.go
  • fixtures/expectations_test.go
  • fixtures/fixture_result_pretty.go
  • fixtures/markdown_section.go
  • fixtures/outline.go
  • fixtures/outline_test.go
  • fixtures/parser.go
  • fixtures/parser_ast.go
  • fixtures/parser_ast_test.go
  • fixtures/parser_codeblock.go
  • fixtures/parser_codeblock_test.go
  • fixtures/pretty_result_ginkgo_test.go
  • fixtures/pretty_stdout.go
  • fixtures/pretty_stdout_ginkgo_test.go
  • fixtures/progress.go
  • fixtures/progress_ginkgo_test.go
  • fixtures/progress_reporter.go
  • fixtures/progress_types.go
  • fixtures/record/ca.go
  • fixtures/record/cast.go
  • fixtures/record/cast_test.go
  • fixtures/record/cel.go
  • fixtures/record/cel_test.go
  • fixtures/record/gormlogger.go
  • fixtures/record/gormlogger_test.go
  • fixtures/record/har.go
  • fixtures/record/har_test.go
  • fixtures/record/pgproxy.go
  • fixtures/record/pgproxy_test.go
  • fixtures/record/pgwire.go
  • fixtures/record/pgwire_test.go
  • fixtures/record/proxy.go
  • fixtures/record/proxy_conn.go
  • fixtures/record/proxy_entry.go
  • fixtures/record/proxy_test.go
  • fixtures/record/result.go
  • fixtures/record/roundtripper.go
  • fixtures/record/roundtripper_test.go
  • fixtures/record/spec.go
  • fixtures/record/spec_test.go
  • fixtures/record/sql.go
  • fixtures/record/sql_test.go
  • fixtures/record/store.go
  • fixtures/record/store_test.go
  • fixtures/record_test.go
  • fixtures/recorders.go
  • fixtures/recorders_e2e_test.go
  • fixtures/registry.go
  • fixtures/run_nodes.go
  • fixtures/run_nodes_ginkgo_test.go
  • fixtures/runner.go
  • fixtures/runner_env.go
  • fixtures/runner_spec_ginkgo_test.go
  • fixtures/runner_testing.go
  • fixtures/runstep_parse_test.go
  • fixtures/runstep_runner_test.go
  • fixtures/setup.go
  • fixtures/setup_lifecycle_test.go
  • fixtures/setup_test.go
  • fixtures/testdata/pr-status-ansi-short-screen.md
  • fixtures/testdata/pr-status-ansi.md
  • fixtures/testdata/runner-steps.md
  • fixtures/testdata/runstep_sample/sample_test.go
  • fixtures/testdata/setup_dotenv.env
  • fixtures/testdata/setup_dotenv.md
  • fixtures/testdata/setup_worktree.md
  • fixtures/types.go
  • fixtures/types/aistep.go
  • fixtures/types/aistep_spec_ginkgo_test.go
  • fixtures/types/aistep_test.go
  • fixtures/types/exec.go
  • fixtures/types/exec_test.go
  • fixtures/types/runartifact.go
  • fixtures/types/runartifact_test.go
  • fixtures/types/runstep.go
  • fixtures/types/runstep_test.go
  • fixtures/types/types_suite_test.go
  • fixtures/verifier/feedback.go
  • fixtures/verifier/report.go
  • fixtures/verifier/report_ginkgo_test.go
  • fixtures/verifier/retry.go
  • fixtures/verifier/verifier.go
  • fixtures/verifier/verifier_ginkgo_test.go
  • gavel.schema.json
  • gavel.yaml.example
  • gen_schema.go
  • git/ai-commit-compatibility-issues.md
  • git/ai-commit-functionality-removed.md
  • git/ai-commit-message.md
  • git/ai-commit-message.prompt
  • git/ai-summary-group.prompt
  • git/ai.go
  • git/ai_commit_types_test.go
  • git/ai_test.go
  • git/amend_commits.go
  • git/analyze_agent_test.go
  • git/commit_files.go
  • git/commit_files_test.go
  • git/dedupe_prefix_test.go
  • git/diff.go
  • git/filter_types.go
  • git/git_analyzer.go
  • git/git_log.go
  • git/kubernetes/change_analyzer.go
  • git/parser.go
  • git/prompt_golden_test.go
  • git/prompts.go
  • git/summary.go
  • git/summary_ai.go
  • git/summary_example.go
  • git/testdata/commit-message-with-maxbody.golden
  • git/testdata/commit-message-without-maxbody.golden
  • git/testdata/summary-group.golden
  • git/trailer_commits.go
  • git/trailer_commits_test.go
  • git/trailer_diff.go
  • git/trailer_diff_test.go
  • github/artifacts.go
  • github/artifacts_test.go
  • github/automerge.go
  • github/automerge_test.go
  • github/branch_status.go
  • github/branch_status_test.go
  • github/cache/commit_stats.go
  • github/cache/db.go
  • github/cache/db_test.go
  • github/cache/favicon.go
  • github/cache/favicon_test.go
  • github/cache/http_test.go
  • github/cache/models.go
  • github/cache/test_runs.go
  • github/cache/test_runs_test.go
  • github/client.go
  • github/client_test.go
  • github/graphql.go
  • github/graphql_exec.go
  • github/graphql_exec_test.go
  • github/http_cache.go
  • github/issue_write.go
  • github/issue_write_test.go
  • github/orgs.go
  • github/pr_actions.go
  • github/pr_actions_test.go
  • github/pr_create.go
  • github/pr_diffs.go
  • github/pr_diffs_test.go
  • github/pretty_format_test.go
  • github/pretty_meta_test.go
  • github/probe.go
  • github/search.go
  • github/search_test.go
  • github/types.go
  • go.mod
  • handoff.yaml
  • internal/cache/db.go
  • internal/cache/doc.go
  • internal/cache/linter_stats.go
  • internal/cache/migration_manager.go
  • internal/cache/violation_cache.go
  • internal/changegraph/build_tags_ginkgo_test.go
  • internal/changegraph/git.go
  • internal/changegraph/git_test.go
  • internal/changegraph/golist.go
  • internal/changegraph/golist_test.go
  • internal/database/database.go
  • internal/database/database_test.go
  • internal/database/label_backfill_integration_test.go
  • internal/database/migration_integration_test.go
  • internal/database/migration_lock_integration_test.go
  • internal/database/options_ginkgo_test.go
  • internal/database/options_suite_test.go
  • internal/database/projection_integration_support_test.go
  • internal/database/projection_integration_test.go
  • internal/database/require.go
  • internal/database/schema/090_prepare_runtime_state.sql
  • internal/database/schema/100_todo_captain_constraints.sql
  • internal/database/schema/102_todo_prompt_run_step_kind.sql
  • internal/database/schema/105_view_todo_plan_revisions.sql
  • internal/database/schema/110_todo_projection_functions.sql
  • internal/database/schema/111_todo_projection_triggers.sql
  • internal/database/schema/112_view_todo_issue_runtime.sql
  • internal/database/schema/115_backfill_todo_activity.sql
  • internal/database/schema/116_backfill_triage_step_kind.sql
  • internal/database/schema/120_backfill_todo_labels.sql
  • internal/database/schema/130_task_history_storage_params.sql
  • internal/database/schema/131_todo_storage_params.sql
  • internal/database/schema/140_todo_prompt_run_step_open.sql
  • internal/database/schema/base.hcl
  • internal/database/schema/github_cache.hcl
  • internal/database/schema/linter_cache.hcl
  • internal/database/schema/task_history.hcl
  • internal/database/schema/todos.hcl
  • internal/database/schema_bundle_test.go
  • internal/database/shared.go
  • internal/database/shared_test.go
  • internal/database/todos_migration_integration_test.go
  • internal/httpx/httpx.go
  • internal/runcache/hash.go
  • internal/runcache/hash_test.go
  • internal/taskhistory/history.go
  • internal/taskhistory/history_ginkgo_test.go
  • internal/taskhistory/history_suite_test.go
  • internal/taskhistory/store.go
  • internal/taskhistory/store_integration_test.go
  • internal/ttyrender/ttyrender.go
  • internal/ttyrender/ttyrender_test.go
  • lint/discovery.go
  • lint/filter_test.go
  • lint/lint.go
  • lint/lint_test.go
  • lint/options.go
  • lint/registry.go
  • lint/resolution.go
  • lint/resolution_test.go
  • linters/betterleaks/betterleaks.go
  • linters/betterleaks/betterleaks_test.go
  • linters/betterleaks/config.go
  • linters/betterleaks/gitignore.go
  • linters/betterleaks/gitignore_ginkgo_test.go
  • linters/doc.go
  • linters/gitignore_filter.go
  • linters/gitignore_filter_test.go
  • linters/interface.go
  • linters/jscpd/jscpd.go
  • linters/lint_sync.go
  • linters/lint_sync_test.go
  • linters/oxlint/oxlint.go
  • linters/oxlint/oxlint_test.go
  • linters/reactdoctor/reactdoctor.go
  • linters/reactdoctor/reactdoctor_test.go
  • linters/ruff/ruff.go
  • linters/runner.go
  • linters/runner_database_test.go
  • linters/runner_v2.go
  • linters/summary_view.go
  • linters/summary_view_test.go
  • linters/tsc/testdata/typescript/index.js
  • linters/tsc/tsc-json.cjs
  • linters/tsc/tsc_test.go
  • models/git_scope.go
  • pr/menubar/menubar_darwin.go
  • pr/menubar/menubar_stub.go
  • pr/ui/.oxlintrc.json
  • pr/ui/assets.go
  • pr/ui/assets/react-grab-install.html
  • pr/ui/assets/react-grab-plugin.js
  • pr/ui/assets_test.go
  • pr/ui/brand/manifest.webmanifest
  • pr/ui/buildinfo.go
  • pr/ui/buildinfo_test.go
  • pr/ui/closed_test.go
  • pr/ui/detail_cache.go
  • pr/ui/devproxy.go
  • pr/ui/devproxy_test.go
  • pr/ui/gavel_results.go
  • pr/ui/gavel_results_test.go
  • pr/ui/handler.go
  • pr/ui/index.html
  • pr/ui/main_test.go
  • pr/ui/package.json
  • pr/ui/pnpm-workspace.yaml
  • pr/ui/pprof.go
  • pr/ui/pprof_ginkgo_test.go
  • pr/ui/pr_actions.go
  • pr/ui/pr_actions_test.go
  • pr/ui/pr_detail_stream_ginkgo_test.go
  • pr/ui/pr_diffs.go
  • pr/ui/pr_diffs_test.go
  • pr/ui/proc.go
  • pr/ui/proc_metrics.go
  • pr/ui/proc_metrics_test.go
  • pr/ui/proc_stream_test.go
  • pr/ui/proc_test.go
  • pr/ui/project_action_runs.go
  • pr/ui/project_commit_queue.go
  • pr/ui/project_commit_queue_ginkgo_test.go
  • pr/ui/project_diff.go
  • pr/ui/project_diff_ginkgo_test.go
  • pr/ui/project_ignore.go
  • pr/ui/project_ignore_ginkgo_test.go
  • pr/ui/project_lifecycle.go
  • pr/ui/project_lifecycle_ginkgo_test.go
  • pr/ui/project_open_pr_ginkgo_test.go
  • pr/ui/projects.go
  • pr/ui/projects_clicky.go
  • pr/ui/projects_entity.go
  • pr/ui/projects_entity_test.go
  • pr/ui/projects_ginkgo_test.go
  • pr/ui/projects_list_test.go
  • pr/ui/projects_test.go
  • pr/ui/prompt_catalog.go
  • pr/ui/prompt_catalog_ginkgo_test.go
  • pr/ui/prompt_catalog_http.go
  • pr/ui/prompts.go
  • pr/ui/react_grab_plugin_ginkgo_test.go
  • pr/ui/react_grab_plugin_test.go
  • pr/ui/routes.go
  • pr/ui/routes_test.go
  • pr/ui/server_timing_ginkgo_test.go
  • pr/ui/settings.go
  • pr/ui/settings_gavel.go
  • pr/ui/settings_gavel_test.go
  • pr/ui/settings_prompts.go
  • pr/ui/settings_prompts_effective.go
  • pr/ui/settings_prompts_ginkgo_test.go
  • pr/ui/settings_prompts_store.go
  • pr/ui/settings_prompts_test.go
  • pr/ui/src/App.tsx
  • pr/ui/src/ansi.ts
  • pr/ui/src/build-info.d.ts
  • pr/ui/src/clipboard.test.ts
  • pr/ui/src/clipboard.ts
  • pr/ui/src/components/ActivityView.test.tsx
  • pr/ui/src/components/ActivityView.tsx
  • pr/ui/src/components/AddProjectDialog.tsx
  • pr/ui/src/components/Avatar.tsx
  • pr/ui/src/components/BotComment.tsx
  • pr/ui/src/components/CommandPalette.test.tsx
  • pr/ui/src/components/CommandPalette.tsx
  • pr/ui/src/components/Elapsed.tsx
  • pr/ui/src/components/ErrorBoundary.tsx
  • pr/ui/src/components/FilterBar.tsx
  • pr/ui/src/components/GitChangesBadge.tsx
  • pr/ui/src/components/LogViewer.test.tsx
  • pr/ui/src/components/LogViewer.tsx
  • pr/ui/src/components/Markdown.tsx
  • pr/ui/src/components/MenubarTodos.tsx
  • pr/ui/src/components/OrgChooser.test.tsx
  • pr/ui/src/components/OrgChooser.tsx
  • pr/ui/src/components/PRActions.test.tsx
  • pr/ui/src/components/PRActions.tsx
  • pr/ui/src/components/PRDetail.test.tsx
  • pr/ui/src/components/PRDetail.tsx
  • pr/ui/src/components/PRList.tsx
  • pr/ui/src/components/PRRow.tsx
  • pr/ui/src/components/PollStatus.tsx
  • pr/ui/src/components/ProcControl.tsx
  • pr/ui/src/components/ProcessDetails.test.tsx
  • pr/ui/src/components/ProcessDetails.tsx
  • pr/ui/src/components/ProcessManager.tsx
  • pr/ui/src/components/ProcessTable.test.tsx
  • pr/ui/src/components/ProcessTable.tsx
  • pr/ui/src/components/ProgressBar.tsx
  • pr/ui/src/components/ProjectActionDialog.test.tsx
  • pr/ui/src/components/ProjectActionDialog.tsx
  • pr/ui/src/components/ProjectActionFeedback.tsx
  • pr/ui/src/components/ProjectActionRunDialog.tsx
  • pr/ui/src/components/ProjectCommitTasks.test.tsx
  • pr/ui/src/components/ProjectCommitTasks.tsx
  • pr/ui/src/components/ProjectDiffView.test.tsx
  • pr/ui/src/components/ProjectDiffView.tsx
  • pr/ui/src/components/ProjectFileTree.tsx
  • pr/ui/src/components/ProjectForm.test.tsx
  • pr/ui/src/components/ProjectForm.tsx
  • pr/ui/src/components/ProjectOpenPR.test.tsx
  • pr/ui/src/components/ProjectStatusView.fixture.ts
  • pr/ui/src/components/ProjectStatusView.test.tsx
  • pr/ui/src/components/ProjectStatusView.tsx
  • pr/ui/src/components/ProjectsBar.test.tsx
  • pr/ui/src/components/ProjectsBar.tsx
  • pr/ui/src/components/ProjectsPlaceholder.test.tsx
  • pr/ui/src/components/ProjectsPlaceholder.tsx
  • pr/ui/src/components/ProjectsView.test.tsx
  • pr/ui/src/components/ProjectsView.tsx
  • pr/ui/src/components/PromptOverrideField.test.tsx
  • pr/ui/src/components/PromptOverrideField.tsx
  • pr/ui/src/components/ReactGrabHelp.tsx
  • pr/ui/src/components/RelativeTime.tsx
  • pr/ui/src/components/RepoIcon.tsx
  • pr/ui/src/components/RepoSelector.tsx
  • pr/ui/src/components/SearchControls.tsx
  • pr/ui/src/components/SplitPane.tsx
  • pr/ui/src/components/StatusIndicator.test.tsx
  • pr/ui/src/components/StatusIndicator.tsx
  • pr/ui/src/components/Summary.tsx
  • pr/ui/src/components/SyncIndicator.tsx
  • pr/ui/src/components/ThemeToggle.tsx
  • pr/ui/src/components/TodoBadge.tsx
  • pr/ui/src/components/TodoView.test.tsx
  • pr/ui/src/components/TodoView.tsx
  • pr/ui/src/components/WorkflowView.test.tsx
  • pr/ui/src/components/WorkflowView.tsx
  • pr/ui/src/components/oneShotQueries.test.ts
  • pr/ui/src/components/oneShotQueries.ts
  • pr/ui/src/components/processMutations.ts
  • pr/ui/src/components/project-commit-tasks.test.ts
  • pr/ui/src/components/project-commit-tasks.ts
  • pr/ui/src/components/projectMutations.test.ts
  • pr/ui/src/components/projectMutations.ts
  • pr/ui/src/components/prompts/PromptsView.test.tsx
  • pr/ui/src/components/prompts/PromptsView.tsx
  • pr/ui/src/components/prompts/promptCatalog.ts
  • pr/ui/src/components/settings/AIDefaultsField.test.tsx
  • pr/ui/src/components/settings/AIDefaultsField.tsx
  • pr/ui/src/components/settings/LayerSwitch.tsx
  • pr/ui/src/components/settings/SaveBar.tsx
  • pr/ui/src/components/settings/SettingsPage.test.tsx
  • pr/ui/src/components/settings/SettingsPage.tsx
  • pr/ui/src/components/settings/SettingsSectionCard.tsx
  • pr/ui/src/components/settings/extensions.tsx
  • pr/ui/src/components/settings/models.test.ts
  • pr/ui/src/components/settings/models.ts
  • pr/ui/src/components/settings/mutations.test.tsx
  • pr/ui/src/components/settings/mutations.ts
  • pr/ui/src/components/settings/provenance.test.ts
  • pr/ui/src/components/settings/provenance.ts
  • pr/ui/src/components/settings/queries.test.ts
  • pr/ui/src/components/settings/queries.ts
  • pr/ui/src/components/settings/schema.ts
  • pr/ui/src/components/settings/tags/TagDefinitionsPanel.test.tsx
  • pr/ui/src/components/settings/tags/TagDefinitionsPanel.tsx
  • pr/ui/src/components/settings/widgets/ChipsEditor.tsx
  • pr/ui/src/components/settings/widgets/LayerBadge.tsx
  • pr/ui/src/components/tests/CreateTodoFromRunDialog.test.tsx
  • pr/ui/src/components/tests/CreateTodoFromRunDialog.tsx
  • pr/ui/src/components/tests/LintResults.tsx
  • pr/ui/src/components/tests/RunFailureCandidates.test.ts
  • pr/ui/src/components/tests/RunFailureCandidates.ts
  • pr/ui/src/components/tests/TestRunDetail.test.tsx
  • pr/ui/src/components/tests/TestRunDetail.tsx
  • pr/ui/src/components/tests/TestRunResults.test.tsx
  • pr/ui/src/components/tests/TestRunResults.tsx
  • pr/ui/src/components/tests/types.test.ts
  • pr/ui/src/components/tests/types.ts
  • pr/ui/src/components/todos/AcceptanceCriteria.test.tsx
  • pr/ui/src/components/todos/AcceptanceCriteria.tsx
  • pr/ui/src/components/todos/CreateTodoDialog.test.tsx
  • pr/ui/src/components/todos/CreateTodoDialog.tsx
  • pr/ui/src/components/todos/CreateTodoFromPRDialog.test.tsx
  • pr/ui/src/components/todos/CreateTodoFromPRDialog.tsx
  • pr/ui/src/components/todos/PRTodoContent.test.ts
  • pr/ui/src/components/todos/PRTodoContent.ts
  • pr/ui/src/components/todos/PRTodoWorkspaceField.tsx
  • pr/ui/src/components/todos/PlanReview.tsx
  • pr/ui/src/components/todos/PromptRunButton.tsx
  • pr/ui/src/components/todos/SessionErrorDetails.tsx
  • pr/ui/src/components/todos/TagPicker.test.tsx
  • pr/ui/src/components/todos/TagPicker.tsx
  • pr/ui/src/components/todos/TodoBodyField.test.tsx
  • pr/ui/src/components/todos/TodoBodyField.tsx
  • pr/ui/src/components/todos/TodoBucketGroup.tsx
  • pr/ui/src/components/todos/TodoCommitFiles.tsx
  • pr/ui/src/components/todos/TodoCommits.tsx
  • pr/ui/src/components/todos/TodoCompose.tsx
  • pr/ui/src/components/todos/TodoDetail.test.tsx
  • pr/ui/src/components/todos/TodoDetail.tsx
  • pr/ui/src/components/todos/TodoDetailStack.tsx
  • pr/ui/src/components/todos/TodoDetailTabs.tsx
  • pr/ui/src/components/todos/TodoGroupByMenu.tsx
  • pr/ui/src/components/todos/TodoGroupSelectAll.tsx
  • pr/ui/src/components/todos/TodoLabelsMenu.test.tsx
  • pr/ui/src/components/todos/TodoLabelsMenu.tsx
  • pr/ui/src/components/todos/TodoNavigationControls.test.tsx
  • pr/ui/src/components/todos/TodoNavigationControls.tsx
  • pr/ui/src/components/todos/TodoNewPage.test.tsx
  • pr/ui/src/components/todos/TodoNewPage.tsx
  • pr/ui/src/components/todos/TodoPhaseButton.test.tsx
  • pr/ui/src/components/todos/TodoPhaseButton.tsx
  • pr/ui/src/components/todos/TodoPhaseCell.test.tsx
  • pr/ui/src/components/todos/TodoPhaseCell.tsx
  • pr/ui/src/components/todos/TodoPlan.test.tsx
  • pr/ui/src/components/todos/TodoPlan.tsx
  • pr/ui/src/components/todos/TodoRunActionButton.test.tsx
  • pr/ui/src/components/todos/TodoRunActionButton.tsx
  • pr/ui/src/components/todos/TodoRunAdvancedDialog.test.tsx
  • pr/ui/src/components/todos/TodoRunAdvancedDialog.tsx
  • pr/ui/src/components/todos/TodoRunEffortBadge.tsx
  • pr/ui/src/components/todos/TodoRunStatusStrip.tsx
  • pr/ui/src/components/todos/TodoRuntimeSummary.tsx
  • pr/ui/src/components/todos/TodoSelectionBar.tsx
  • pr/ui/src/components/todos/TodoSession.test.tsx
  • pr/ui/src/components/todos/TodoSession.tsx
  • pr/ui/src/components/todos/TodoSessionDetail.test.tsx
  • pr/ui/src/components/todos/TodoSessionDetail.tsx
  • pr/ui/src/components/todos/TodoSessionStart.test.tsx
  • pr/ui/src/components/todos/TodoSessionStart.tsx
  • pr/ui/src/components/todos/TodoSessionTimer.test.tsx
  • pr/ui/src/components/todos/TodoSessionTimer.tsx
  • pr/ui/src/components/todos/TodoSortByMenu.test.tsx
  • pr/ui/src/components/todos/TodoSortByMenu.tsx
  • pr/ui/src/components/todos/TodoTable.test.tsx
  • pr/ui/src/components/todos/TodoTable.tsx
  • pr/ui/src/components/todos/TodoTag.test.tsx
  • pr/ui/src/components/todos/TodoTag.tsx
  • pr/ui/src/components/todos/TodoTimeline.tsx
  • pr/ui/src/components/todos/TodoToolbar.test.tsx
  • pr/ui/src/components/todos/TodoToolbar.tsx
  • pr/ui/src/components/todos/TodoVerification.test.tsx
  • pr/ui/src/components/todos/TodoVerification.tsx
  • pr/ui/src/components/todos/TodoVerificationAttempts.test.tsx
  • pr/ui/src/components/todos/TodoVerificationAttempts.tsx
  • pr/ui/src/components/todos/VerificationAttemptSession.tsx
  • pr/ui/src/components/todos/WorkspaceTodoGroup.tsx
  • pr/ui/src/components/todos/attachments.tsx
  • pr/ui/src/components/todos/fixtureSchema.test.ts
  • pr/ui/src/components/todos/fixtureSchema.ts
  • pr/ui/src/components/todos/format.test.tsx
  • pr/ui/src/components/todos/format.tsx
  • pr/ui/src/components/todos/lifecycleMock.ts
  • pr/ui/src/components/todos/planActions.requestBody.test.tsx
  • pr/ui/src/components/todos/planActions.test.tsx
  • pr/ui/src/components/todos/planActions.tsx
  • pr/ui/src/components/todos/providers.ts
  • pr/ui/src/components/todos/queryTestWrapper.tsx
  • pr/ui/src/components/todos/reviewQueue.ts
  • pr/ui/src/components/todos/run.test.ts
  • pr/ui/src/components/todos/run.tsx
  • pr/ui/src/components/todos/runAction.test.tsx
  • pr/ui/src/components/todos/runChoiceStorage.ts
  • pr/ui/src/components/todos/tagPalette.ts
  • pr/ui/src/components/todos/tagQueries.ts
  • pr/ui/src/components/todos/tagResolve.test.ts
  • pr/ui/src/components/todos/tagResolve.ts
  • pr/ui/src/components/todos/todoActions.test.tsx
  • pr/ui/src/components/todos/todoActions.tsx
  • pr/ui/src/components/todos/todoBodyPaste.test.ts
  • pr/ui/src/components/todos/todoBodyPaste.ts
  • pr/ui/src/components/todos/todoDensity.ts
  • pr/ui/src/components/todos/todoEntity.test.tsx
  • pr/ui/src/components/todos/todoEntity.ts
  • pr/ui/src/components/todos/todoFilter.test.ts
  • pr/ui/src/components/todos/todoFilter.ts
  • pr/ui/src/components/todos/todoFilterBar.tsx
  • pr/ui/src/components/todos/todoGithubPush.test.ts
  • pr/ui/src/components/todos/todoGroup.test.ts
  • pr/ui/src/components/todos/todoGroup.ts
  • pr/ui/src/components/todos/todoLayout.test.ts
  • pr/ui/src/components/todos/todoLayout.ts
  • pr/ui/src/components/todos/todoMutations.test.tsx
  • pr/ui/src/components/todos/todoMutations.ts
  • pr/ui/src/components/todos/todoNavigation.test.ts
  • pr/ui/src/components/todos/todoNavigation.ts
  • pr/ui/src/components/todos/todoQueries.test.tsx
  • pr/ui/src/components/todos/todoQueries.ts
  • pr/ui/src/components/todos/todoSelection.test.ts
  • pr/ui/src/components/todos/todoSelection.ts
  • pr/ui/src/components/todos/todoSort.test.ts
  • pr/ui/src/components/todos/todoSort.ts
  • pr/ui/src/components/todos/todoTimeRange.ts
  • pr/ui/src/components/todos/usePRTodoProjectWorkspace.ts
  • pr/ui/src/components/todos/useWorkspaceTodos.test.tsx
  • pr/ui/src/components/todos/useWorkspaceTodos.ts
  • pr/ui/src/components/todos/verificationReport.test.ts
  • pr/ui/src/components/todos/verificationReport.ts
  • pr/ui/src/components/todos/workspaceTodoQueries.ts
  • pr/ui/src/icons/ProjectFileIcon.tsx
  • pr/ui/src/icons/Spinner.tsx
  • pr/ui/src/icons/VercelIcon.tsx
  • pr/ui/src/icons/iconifyFallback.tsx
  • pr/ui/src/icons/issues.tsx
  • pr/ui/src/icons/settings.tsx
  • pr/ui/src/icons/tags.tsx
  • pr/ui/src/index.css
  • pr/ui/src/index.tsx
  • pr/ui/src/joplin-turndown.d.ts
  • pr/ui/src/jsx-custom-elements.d.ts
  • pr/ui/src/query.test.ts
  • pr/ui/src/query.ts
  • pr/ui/src/routes.test.ts
  • pr/ui/src/routes.ts
  • pr/ui/src/storage.ts
  • pr/ui/src/types.ts
  • pr/ui/src/useAppMutations.test.tsx
  • pr/ui/src/useAppMutations.ts
  • pr/ui/src/useAppQueries.test.tsx
  • pr/ui/src/useAppQueries.ts
  • pr/ui/src/useContainerWidth.ts
  • pr/ui/src/useCopyFeedback.ts
  • pr/ui/src/useDocumentVisible.ts
  • pr/ui/src/useIsMobile.ts
  • pr/ui/src/useNow.ts
  • pr/ui/src/usePRDetailStream.test.tsx
  • pr/ui/src/usePRDetailStream.ts
  • pr/ui/src/useProjectCatalog.ts
  • pr/ui/src/useTimeoutFlash.ts
  • pr/ui/src/utils.ts
  • pr/ui/src/vite-env.d.ts
  • pr/ui/tailwind.config.js
  • pr/ui/task_source.go
  • pr/ui/task_source_ginkgo_test.go
  • pr/ui/test_run_syncer.go
  • pr/ui/test_runs.go
  • pr/ui/test_runs_latest_ginkgo_test.go
  • pr/ui/test_runs_test.go
  • pr/ui/todo_approvals.go
  • pr/ui/todo_approvals_ginkgo_test.go
  • pr/ui/todo_attachments.go
  • pr/ui/todo_attachments_test.go
  • pr/ui/todo_batch.go
  • pr/ui/todo_batch_ginkgo_test.go
  • pr/ui/todo_commits.go
  • pr/ui/todo_commits_test.go
  • pr/ui/todo_continue.go
  • pr/ui/todo_continue_test.go
  • pr/ui/todo_create.go
  • pr/ui/todo_entity.go
  • pr/ui/todo_entity_ginkgo_test.go
  • pr/ui/todo_filters.go
  • pr/ui/todo_github.go
  • pr/ui/todo_github_ginkgo_test.go
  • pr/ui/todo_item_write.go
  • pr/ui/todo_labels.go
  • pr/ui/todo_lifecycle.go
  • pr/ui/todo_links.go
  • pr/ui/todo_plan.go
  • pr/ui/todo_plan_test.go
  • pr/ui/todo_request.go
  • pr/ui/todo_review.go
  • pr/ui/todo_review_actions.go
  • pr/ui/todo_review_ginkgo_test.go
  • pr/ui/todo_review_test.go
  • pr/ui/todo_run.go
  • pr/ui/todo_run_context.go
  • pr/ui/todo_run_context_ginkgo_test.go
  • pr/ui/todo_run_context_metadata.go
  • pr/ui/todo_run_control.go
  • pr/ui/todo_run_control_ginkgo_test.go
  • pr/ui/todo_run_ginkgo_test.go
  • pr/ui/todo_run_mode_dedup_test.go
  • pr/ui/todo_session.go
  • pr/ui/todo_session_approve_ginkgo_test.go
  • pr/ui/todo_session_detail.go
  • pr/ui/todo_session_detail_test.go
  • pr/ui/todo_session_stream.go
  • pr/ui/todo_session_stream_ginkgo_test.go
  • pr/ui/todo_session_test.go
  • pr/ui/todo_summary.go
  • pr/ui/todo_verification_fixture_test.go
  • pr/ui/todo_verify.go
  • pr/ui/todos.go
  • pr/ui/todos_counts_test.go
  • pr/ui/todos_test.go
  • pr/ui/todos_test_provider_test.go
  • pr/ui/tsconfig.json
  • pr/ui/vite.config.ts
  • pr/ui/vitest.config.ts
  • procfile/control.go
  • procfile/detach_unix.go
  • procfile/env.go
  • procfile/env_test.go
  • procfile/export_test.go
  • procfile/lock.go
  • procfile/logs.go
  • procfile/logs_test.go
  • procfile/manager.go
  • procfile/manager_ginkgo_test.go
  • procfile/multiplex.go
  • procfile/procfile.go
  • procfile/procfile_suite_test.go
  • procfile/procfile_test.go
  • procfile/report.go
  • procfile/resolve_test.go
  • procfile/resources_test.go
  • procfile/state.go
  • procfile/state_test.go
  • procfile/supervisor.go
  • procfile/supervisor_options.go
  • procfile/supervisor_state.go
  • procfile/supervisor_test.go
  • procfile/userenv.go
  • procfile/userenv_test.go
  • prompts/prompts.go
  • prompts/registry/registry.go
  • prompts/registry/registry_test.go
  • prwatch/coderabbit.go
  • prwatch/filter.go
  • prwatch/filter_test.go
  • prwatch/gavel_results.go
  • prwatch/gavel_results_ginkgo_test.go
  • prwatch/gavel_results_pretty.go
  • prwatch/model_test.go
  • prwatch/pr_snapshot.go
  • prwatch/pr_snapshot_ginkgo_test.go
  • prwatch/pr_status_fixture.go
  • prwatch/pr_status_fixture_test.go
  • prwatch/prwatch_suite_test.go
  • prwatch/result.go
  • prwatch/result_render_test.go
  • prwatch/todo_sync.go
  • prwatch/todo_sync_test.go
  • prwatch/watch.go
  • prwatch/watch_test.go
  • report/compact.go
  • report/resultfile.go
  • report/resultfile_test.go
  • scripts/gavel-crash-stub.md
  • scripts/gavel-crash-stub.sh
  • service/dbconfig.go
  • service/dbconfig_test.go
  • service/install.go
  • service/install_ginkgo_test.go
  • service/service.go
  • service/service_darwin.go
  • service/service_darwin_test.go
  • service/service_linux.go
  • service/service_linux_test.go
  • service/service_suite_test.go
  • service/service_test.go
  • service/user_unit.go
  • site/content/blog/why-we-built-gavel.mdx
  • site/content/docs/fixture-ai-review.mdx
  • site/content/docs/fixture-formats.mdx
  • site/content/docs/fixture-runner-steps.mdx
  • site/content/docs/fixtures-overview.mdx
  • site/content/docs/getting-started.mdx
  • site/content/docs/prompt-overrides.mdx
  • site/content/docs/todo-engine.mdx
  • site/content/docs/todo-run-loop.mdx
  • site/content/docs/verification.mdx
  • site/package.json
  • site/pnpm-workspace.yaml
  • site/src/components/site/BentoGrid.tsx
  • site/src/components/site/CopyInstall.tsx
  • site/src/components/site/FAQ.tsx
  • site/src/components/site/FeatureList.tsx
  • site/src/components/site/MdxLayout.tsx
  • site/src/lib/useTimeoutFlash.ts
  • site/src/magic/NumberTicker.tsx
  • site/src/routes/DocsPage.tsx
  • site/src/styles/globals.css
  • site/vite.config.ts
  • snapshots/list.go
  • snapshots/list_ginkgo_test.go
  • snapshots/list_test.go
  • snapshots/running.go
  • snapshots/running_test.go
  • snapshots/snapshots.go
  • snapshots/snapshots_test.go
  • spec_embedding_test.go
  • status/ai-file-summary.prompt
  • status/ai_renderer.go
  • status/ai_renderer_test.go
  • status/ai_stream.go
  • status/ai_summary.go
  • status/pretty.go
  • status/problems.go
  • status/problems_test.go
  • status/prompts.go
  • status/results_ginkgo_test.go
  • status/scope_group_test.go
  • status/snapshot_enrich.go
  • status/status.go
  • status/status_suite_test.go
  • status/status_test.go
  • testrunner/build_tags_ginkgo_test.go
  • testrunner/fixture_origin_ginkgo_test.go
  • testrunner/fixture_progress.go
  • testrunner/fixture_progress_ginkgo_test.go
  • testrunner/focus_test.go
  • testrunner/history/history_test.go
  • testrunner/outline/ai.go
  • testrunner/outline/ai_internal_test.go
  • testrunner/outline/build.go
  • testrunner/outline/build_internal_test.go
  • testrunner/outline/complexity.go
  • testrunner/outline/complexity_test.go
  • testrunner/outline/describe.go
  • testrunner/outline/duplication.go
  • testrunner/outline/duplication_internal_test.go
  • testrunner/outline/fixtures.go
  • testrunner/outline/fixtures_internal_test.go
  • testrunner/outline/ginkgo.go
  • testrunner/outline/ginkgo_internal_test.go
  • testrunner/outline/gotest.go
  • testrunner/outline/gotest_internal_test.go
  • testrunner/outline/historyjoin.go
  • testrunner/outline/historyjoin_internal_test.go
  • testrunner/outline/javascript_tokens.go
  • testrunner/outline/jest.go
  • testrunner/outline/jest_internal_test.go
  • testrunner/outline/jest_source.go
  • testrunner/outline/node.go
  • testrunner/outline/node_collectors_internal_test.go
  • testrunner/outline/outline_suite_test.go
  • testrunner/outline/playwright.go
  • testrunner/outline/playwright_internal_test.go
  • testrunner/outline/prompts.go
  • testrunner/outline/render.go
  • testrunner/outline/render_internal_test.go
  • testrunner/outline/test-summary.prompt
  • testrunner/outline/testdata/ginkgo/sample_ginkgo_test.go
  • testrunner/outline/testdata/gotest/sample_test.go
  • testrunner/outline/testdata/vitest/list-output.json
  • testrunner/outline/types.go
  • testrunner/outline/vitest.go
  • testrunner/outline/vitest_internal_test.go
  • testrunner/parsers/detail_test.go
  • testrunner/parsers/failure_format_test.go
  • testrunner/parsers/ginkgo_json.go
  • testrunner/parsers/ginkgo_json_trimpath_test.go
  • testrunner/parsers/gotest_locations.go
  • testrunner/parsers/gotest_locations_test.go
  • testrunner/parsers/modulepath.go
  • testrunner/parsers/types.go
  • testrunner/prebuild.go
  • testrunner/prebuild_test.go
  • testrunner/runner.go
  • testrunner/runner_test.go
  • testrunner/runners/build_tags_ginkgo_test.go
  • testrunner/runners/ginkgo.go
  • testrunner/runners/ginkgo_test.go
  • testrunner/runners/go_common.go
  • testrunner/runners/gotest.go
  • testrunner/runners/gotest_test.go
  • testrunner/runners/jest.go
  • testrunner/runners/jest_test.go
  • testrunner/runners/node_common.go
  • testrunner/runners/playwright.go
  • testrunner/runners/runners_suite_ginkgo_test.go
  • testrunner/runners/types.go
  • testrunner/runners/vitest.go
  • testrunner/selector.go
  • testrunner/selector_diff_ginkgo_test.go
  • testrunner/todo_sync.go
  • testrunner/todo_sync_test.go
  • testrunner/ui/handler.go
  • testrunner/ui/package.json
  • testrunner/ui/pnpm-workspace.yaml
  • testrunner/ui/snapshot.go
  • testrunner/ui/src/App.tsx
  • testrunner/ui/src/components/DetailPanel.test.tsx
  • testrunner/ui/src/components/DetailPanel.tsx
  • testrunner/ui/src/hooks/use-copy-feedback.ts
  • testrunner/ui/src/testrunner.ts
  • testrunner/ui/src/types.ts
  • testrunner/ui/src/utils.ts
  • testrunner/ui/vite.config.ts
  • todos/attachments.go
  • todos/attachments_test.go
  • todos/attempts.go
  • todos/attempts_test.go
  • todos/backlog.go
  • todos/bulk/actions.go
  • todos/bulk/result.go
  • todos/bulk/result_test.go
  • todos/bulk/run_actions.go
  • todos/checker.go
  • todos/claude/agent.go
  • todos/claude/agent.ts
  • todos/claude/git.go
  • todos/claude/git_test.go
  • todos/claude/messages.go
  • todos/claude/messages_test.go
  • todos/claude/package.json
  • todos/claude/prompt.go
  • todos/claude/prompt_test.go
  • todos/claude/prompts.go
  • todos/claude/runner.go
  • todos/claude/runner_test.go
  • todos/context.go
  • todos/criteria.go
  • todos/criteria_test.go
  • todos/discovery.go
  • todos/discovery_test.go
  • todos/dod_fixture.go
  • todos/entity/entity.go
  • todos/entity/entity_test.go
  • todos/execution.go
  • todos/executor.go
  • todos/executor_test.go
  • todos/export.go
  • todos/githubpush/baseurl.go
  • todos/githubpush/push.go
  • todos/githubpush/push_ginkgo_test.go
  • todos/githubpush/target.go
  • todos/grouping.go
  • todos/grouping_test.go
  • todos/labels/builtin.go
  • todos/labels/definition.go
  • todos/labels/labels_ginkgo_test.go
  • todos/labels/palette.go
  • todos/labels/palette_test.go
  • todos/labels/removal.go
  • todos/labels/render.go
  • todos/labels/render_test.go
  • todos/labels/resolver.go
  • todos/labels/schema_parity_test.go
  • todos/lifecycle/cel.go
  • todos/lifecycle/engine.go
  • todos/lifecycle/engine_ginkgo_test.go
  • todos/lifecycle/host.go
  • todos/lifecycle/host_defaults.go
  • todos/lifecycle/host_envelope.go
  • todos/lifecycle/host_envelope_internal_ginkgo_test.go
  • todos/lifecycle/host_ginkgo_test.go
  • todos/lifecycle/host_hooks.go
  • todos/lifecycle/host_identity.go
  • todos/lifecycle/host_identity_ginkgo_test.go
  • todos/lifecycle/host_layers.go
  • todos/lifecycle/host_layers_ginkgo_test.go
  • todos/lifecycle/host_outcome.go
  • todos/lifecycle/host_progress.go
  • todos/lifecycle/host_resolve.go
  • todos/lifecycle/host_resolve_ginkgo_test.go
  • todos/lifecycle/host_run.go
  • todos/lifecycle/host_run_ginkgo_test.go
  • todos/lifecycle/host_steps.go
  • todos/lifecycle/host_steps_ginkgo_test.go
  • todos/lifecycle/host_template.go
  • todos/lifecycle/host_template_internal_test.go
  • todos/lifecycle/host_verify.go
  • todos/lifecycle/host_verify_ginkgo_test.go
  • todos/lifecycle/lifecycle_suite_test.go
  • todos/lifecycle/load.go
  • todos/lifecycle/load_ginkgo_test.go
  • todos/lifecycle/todos.yaml
  • todos/lifecycle/types.go
  • todos/native/create_issue_plan.go
  • todos/native/create_issue_plan_ginkgo_test.go
  • todos/native/create_issue_session.go
  • todos/native/execution.go
  • todos/native/execution_integration_test.go
  • todos/native/labels.go
  • todos/native/labels_integration_test.go
  • todos/native/launch.go
  • todos/native/links.go
  • todos/native/ownership.go
  • todos/native/ownership_test.go
  • todos/native/phase_runs_integration_test.go
  • todos/native/relationships.go
  • todos/native/repository.go
  • todos/native/repository_events.go
  • todos/native/repository_integration_test.go
  • todos/native/repository_issue.go
  • todos/native/repository_list.go
  • todos/native/repository_m6_integration_test.go
  • todos/native/repository_test.go
  • todos/native/repository_workspace.go
  • todos/native/run_history.go
  • todos/native/types.go
  • todos/parser.go
  • todos/plans.go
  • todos/plans_test.go
  • todos/portable/portable.go
  • todos/portable/portable_integration_test.go
  • todos/portable/portable_test.go
  • todos/progress_persister.go
  • todos/progress_persister_ginkgo_test.go
  • todos/prompt/catalog.go
  • todos/prompt/catalog_test.go
  • todos/prompt/inputs.go
  • todos/prompt/prompt.go
  • todos/prompt/prompt_test.go
  • todos/prompt/sections.go
  • todos/prompt/source.go
  • todos/prompt/source_test.go
  • todos/prompt/todos-plan.prompt
  • todos/prompt/todos-run.prompt
  • todos/prompt/todos-triage.prompt
  • todos/provider.go
  • todos/query/list_opts.go
  • todos/query/list_opts_test.go
  • todos/run/confirm.go
  • todos/run/continue.go
  • todos/run/continue_test.go
  • todos/run/options.go
  • todos/run/options_test.go
  • todos/run/registry.go
  • todos/run/run_suite_test.go
  • todos/run/start.go
  • todos/runtime/aliases.go
  • todos/runtime/aliases_integration_test.go
  • todos/runtime/counts.go
  • todos/runtime/counts_integration_test.go
  • todos/runtime/create_plan.go
  • todos/runtime/create_plan_ginkgo_test.go
  • todos/runtime/execution_index.go
  • todos/runtime/labels.go
  • todos/runtime/lifecycle.go
  • todos/runtime/lifecycle_ginkgo_test.go
  • todos/runtime/lifecycle_history.go
  • todos/runtime/lifecycle_iterations.go
  • todos/runtime/lifecycle_iterations_ginkgo_test.go
  • todos/runtime/lifecycle_outcome_ginkgo_test.go
  • todos/runtime/lifecycle_plan.go
  • todos/runtime/lifecycle_prepare.go
  • todos/runtime/lifecycle_resume_integration_test.go
  • todos/runtime/lifecycle_runs.go
  • todos/runtime/lifecycle_seed_test.go
  • todos/runtime/mapping.go
  • todos/runtime/mutations.go
  • todos/runtime/ownership.go
  • todos/runtime/ownership_integration_test.go
  • todos/runtime/phases.go
  • todos/runtime/phases_test.go
  • todos/runtime/plan_review.go
  • todos/runtime/plan_revision_ginkgo_test.go
  • todos/runtime/provider.go
  • todos/runtime/provider_integration_test.go
  • todos/runtime/provider_test.go
  • todos/runtime/relationships.go
  • todos/runtime/relationships_integration_test.go
  • todos/runtime/rendered_spec.go
  • todos/runtime/rendered_spec_test.go
  • todos/runtime/schema_guard.go
  • todos/runtime/session_hierarchy.go
  • todos/runtime/session_hierarchy_ginkgo_test.go
  • todos/runtime/verification_output_test.go
  • todos/runtime/workspace_ginkgo_test.go
  • todos/sections.go
  • todos/state.go
  • todos/state_test.go
  • todos/transfer.go
  • todos/triage.go
  • todos/triage_test.go
  • todos/types/agent_checks_test.go
  • todos/types/envelope.go
  • todos/types/envelope_test.go
  • todos/types/labels_render_test.go
  • todos/types/phase.go
  • todos/types/phase_json_test.go
  • todos/types/phase_render.go
  • todos/types/phase_render_test.go
  • todos/types/phase_table_test.go
  • todos/types/relationship.go
  • todos/types/relationship_test.go
  • todos/types/runmode.go
  • todos/types/runmode_test.go
  • todos/types/status.go
  • todos/types/status_test.go
  • todos/types/triage_envelope_test.go
  • todos/types/types.go
  • todos/types/types_config.go
  • todos/types/types_render.go
  • todos/types/types_test.go
  • todos/types/verify_report_pretty.go
  • todos/validator.go
  • todos/verification_fixture.go
  • todos/verification_fixture_ginkgo_test.go
  • todos/verification_fixture_test.go
  • todos/verification_spec_ginkgo_test.go
  • todosync/source_comments.go
  • todosync/source_comments_test.go
  • utils/gitignore_native.go
  • utils/gitignore_native_test.go
  • utils/process.go
  • utils/process_test.go
  • utils/walk.go
  • utils/walk_test.go
  • verify/adapter.go
  • verify/adapter_claude.go
  • verify/adapter_claude_test.go
  • verify/adapter_codex.go
  • verify/adapter_codex_test.go
  • verify/adapter_gemini.go
  • verify/adapter_gemini_test.go
  • verify/autofix.go
  • verify/autofix_test.go
  • verify/checks.go
  • verify/cli.go
  • verify/config.go
  • verify/config_bench_test.go
  • verify/config_duration.go
  • verify/config_load.go
  • verify/config_merge.go
  • verify/config_removed_keys_test.go
  • verify/config_schema.go
  • verify/config_schema_sections.go
  • verify/config_schema_test.go
  • verify/config_test.go
  • verify/input.go
  • verify/input_test.go
  • verify/model.go
  • verify/models.go
  • verify/models_test.go
  • verify/parse_helpers.go
  • verify/parse_helpers_test.go
  • verify/prompt.go
  • verify/prompt_spec.go
  • verify/prompt_spec_test.go
  • verify/removed_keys.go
  • verify/schema.go
  • verify/test_timeouts_test.go
  • verify/testdata/verify.md
  • verify/todos_config.go
  • verify/todos_config_test.go
  • verify/types.go
  • verify/verify-prompt.md
  • verify/verify.go
  • verify/verify_test.go

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-advanced-security github-advanced-security AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CodeQL found more than 20 potential problems in the proposed changes. Check the Files changed tab for more details.

…ection

- Discover nested project roots while pruning node_modules and nested git repositories
- Skip linting nested projects when their ancestors are already scheduled, eliminating redundant runs
- Add workspace-local binary resolution for oxlint with fallback to PATH
- Update TypeScript linter to use SolutionBuilder for project references without writing artifacts
- Fix logging format strings in ruff and runner
…atterns

- Fix logger.Errorf format verbs: %w is only valid for fmt.Errorf wrapping,
  not for general error logging; use %v instead
- Add missing o.Tags parameter to goPreBuildArgs function call
- Simplify field access by accessing embedded/direct fields instead of
  navigating through parent structs (countingConn.Conn → Conn)
- Use capturePolicy conversion constructor instead of manual struct init
- Fix string trim check on incorrect field (req.Model.Name → req.Name)
- Remove unused httpx import
Use cached run summaries for the Tests view while retaining disk fallback for uncached runs, reducing repeated snapshot decoding during polling and requests.

BREAKING CHANGE: replace GetTestRunPath with GetTestRun

Claude-Session-Id: 99c7e635-d775-4786-bbe2-7fcf1c0272c2
Avoid decoding snapshot files that cannot affect incremental results, reducing watermark-based scans while preserving full-scan parse errors.

Claude-Session-Id: 99c7e635-d775-4786-bbe2-7fcf1c0272c2
Avoids backlog-wide prompt-run scans by loading workspace-linked runs only, removing an N+1 query pattern and reducing database work. Adds storage settings to keep frequently updated TODO tables HOT-friendly and promptly vacuumed.

Claude-Session-Id: 99c7e635-d775-4786-bbe2-7fcf1c0272c2
Batch prompt-run link reads across workspace listings to eliminate per-issue N+1 queries while preserving point reads for detail views. Skip markdown parsing when verification content is absent to reduce backlog listing overhead.

Claude-Session-Id: 99c7e635-d775-4786-bbe2-7fcf1c0272c2
Prime execution metadata during TODO listing to avoid repeated per-row queries, and add benchmarks for configuration loading costs.

Claude-Session-Id: 99c7e635-d775-4786-bbe2-7fcf1c0272c2
Allow trusted process-port proxy requests to fetch loopback and private-network favicons while retaining SSRF protection by default.

BREAKING CHANGE: Update FetchFavicon callers to pass FaviconOptions.

Claude-Session-Id: 99c7e635-d775-4786-bbe2-7fcf1c0272c2
Separate archived run metadata from snapshots so listings stay lightweight while details remain available on demand. Add spool sweep filtering and require an explicit reference time for retention decisions.

Claude-Session-Id: 99c7e635-d775-4786-bbe2-7fcf1c0272c2
Cache task history by invalidation and memoize supervisor discovery to reduce repeated filesystem and database work while keeping dashboard state fresh. Optimize spool imports by skipping unchanged files, and preserve SSRF protections with explicit favicon fetch policies.

Claude-Session-Id: 99c7e635-d775-4786-bbe2-7fcf1c0272c2
Claude-Session-Id: 99c7e635-d775-4786-bbe2-7fcf1c0272c2
Avoid unnecessary control-socket round trips during status reads by periodically publishing fresh resource samples to state.json. Preserve socket probing for stale snapshots while keeping read-only status checks from creating state directories.

Claude-Session-Id: 99c7e635-d775-4786-bbe2-7fcf1c0272c2
Add `gavel configure` for validated model selection and move todo execution onto lifecycle-defined steps. Remove implicit AI model defaults and obsolete todo prompt, driver, grouping, approval, and check iteration settings.

BREAKING CHANGE: Existing configurations using removed keys or relying on built-in AI model defaults must be updated.

Claude-Session-Id: c8701ae4-de66-4204-bf9a-c4a2c7e4294d
Unifies TODO execution, verification, step selection, spec layering, and status transitions behind a declarative lifecycle engine. Persists Captain-native run history, verification reports, plans, and lifecycle events consistently across CLI and dashboard paths.

BREAKING CHANGE: Replace the removed TODOExecutor, drivers, todos/spec, and standalone checks APIs with lifecycle.Host and lifecycle.Engine APIs.

Claude-Session-Id: c8701ae4-de66-4204-bf9a-c4a2c7e4294d
…untime state

Route TODO execution through lifecycle steps and Captain-native run state, history, plans, events, and verification reports. Split the native repository into focused files and derive execution state at read time.

BREAKING CHANGE: Replace bulk run prompt/driver resolution and removed runtime-selection interfaces with lifecycle step and approval-broker APIs.

Claude-Session-Id: c8701ae4-de66-4204-bf9a-c4a2c7e4294d
Centralize TODO dispatch, configuration resolution, continuations, and outcome handling in the lifecycle runner. Add lifecycle step discovery, previews, per-TODO execution, runtime inheritance, and focused coverage for model fallbacks and plan transitions.

BREAKING CHANGE: Replace `todos run --mode`, `--prompt`, `--driver`, `--group-by`, and `--check` with lifecycle steps and compact model options; remove grouped execution and legacy run APIs.

Claude-Session-Id: c8701ae4-de66-4204-bf9a-c4a2c7e4294d
Add Captain-compatible fixture verification reports and progress streaming, unify fixture node dispatch across callers, and support scoped changed-file verification. Render TODO definitions of done as executable fixture documents with isolated acceptance-criteria parsing and configurable retry predicates.

Claude-Session-Id: c8701ae4-de66-4204-bf9a-c4a2c7e4294d
Make Captain projections responsible only for activity watermarks and transient execution state, leaving durable issue status to the lifecycle host. Open step-kind validation for project-defined lifecycle steps and remove the unused per-issue projection writer.

BREAKING CHANGE: Remove public.gavel_project_todo_issue(uuid); durable status is no longer updated by SQL projection triggers.

Claude-Session-Id: c8701ae4-de66-4204-bf9a-c4a2c7e4294d
Route dashboard TODO runs, continuations, verification, and bulk actions through the shared lifecycle runtime, while persisting tool approvals in Captain for cross-process recovery. Add lifecycle-aware responses, previews, CRUD workflows, and strict request validation.\n\nBREAKING CHANGE: Remove the standalone verification run endpoint and legacy TODO run fields; clients must use lifecycle steps and nested spec options.

Claude-Session-Id: c8701ae4-de66-4204-bf9a-c4a2c7e4294d
Move lifecycle decisions and verification rendering onto shared server and Clicky UI contracts. Preserve todo list state during detail navigation, support custom lifecycle steps, and align approval payloads and cache invalidation with current APIs.

BREAKING CHANGE: Todo run requests now use `step` and verification runs use `/api/todos/run`; legacy driver/runMode payloads and client-side phase/verification models are removed.

Claude-Session-Id: c8701ae4-de66-4204-bf9a-c4a2c7e4294d
Ensure AI commands consistently honor .gavel.yaml and --ai-* selections instead of silently using defaults. Propagate caller-owned agents, configured timeouts, commit types, prompt models, and explicit changed files through their execution paths. Enumerate configured commit types in generated output schemas and prevent task-renderer deadlocks during nested analysis.

BREAKING CHANGE: Remove ai.GetDefaultAgent and the unused git analyze --model flag; callers must explicitly select an AI model and supply agents where required.

Claude-Session-Id: c8701ae4-de66-4204-bf9a-c4a2c7e4294d
Document the lifecycle-driven todo workflow, custom steps, verification runner contract, and updated AI model configuration. Clarify retired flags and configuration keys so users can migrate to the new API.

BREAKING CHANGE: Remove the legacy todo driver, mode, prompt, grouping, and checks.maxIterations options.

Claude-Session-Id: c8701ae4-de66-4204-bf9a-c4a2c7e4294d
Claude-Session-Id: c8701ae4-de66-4204-bf9a-c4a2c7e4294d
Claude-Session-Id: c8701ae4-de66-4204-bf9a-c4a2c7e4294d
Add a reversible PR-closing workflow that validates state before mutation and optionally records a closure reason first. Reuse shared PR reference resolution and cover URL, state, comment ordering, and failure behavior.
Add GitHub GraphQL actions for closing pull requests and posting comments, with validation and error propagation. Preserve TODO accessibility by warning about unsupported verification front matter instead of rejecting the entire definition.
Comment thread git/trailer_commits.go
} else {
args = append(args, "--stat", "--patch", hash)
}
cmd := exec.Command("git", args...)
Comment thread pr/ui/handler.go
func handleReactGrabInstall(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/html; charset=utf-8")
w.Header().Set("Cache-Control", "no-cache")
fmt.Fprint(w, strings.ReplaceAll(reactGrabInstallHTML, "__GAVEL_ORIGIN__", requestOrigin(r)))
Comment thread pr/ui/handler.go
<div id="root"></div>
<script>` + bundleJS + `</script>
<script>` + buildGlobalJS() + `</script>
if !filepath.IsAbs(target) {
target = filepath.Join(write.Dir, target)
}
if err := os.WriteFile(target, []byte(write.Text), 0o644); err != nil {
// overlayFrontmatter lays an override's keys over a base frontmatter, merging
// the prompt block one level deep so prompt.system does not erase prompt.schema.
func overlayFrontmatter(base, over map[string]any) map[string]any {
merged := make(map[string]any, len(base)+len(over))
Comment thread pr/ui/test_runs.go
http.Error(w, `{"error":"run not found"}`, http.StatusNotFound)
return
}
data, err := os.ReadFile(path)
Comment thread snapshots/list.go
return info.ModTime().UTC()
}
}
if info, err := os.Stat(path); err == nil {
Comment thread todos/lifecycle/load.go
if !filepath.IsAbs(path) {
path = filepath.Join(workDir, path)
}
data, err := os.ReadFile(path)
Comment thread verify/config_load.go
}

func loadSingleGavelConfig(path string) (GavelConfig, string, error) {
data, err := os.ReadFile(path)
Comment thread verify/prompt_spec.go
// A configured-but-unreadable File is a hard error.
func (s PromptSpec) TemplateSource(dir, fallback string) (string, error) {
if s.File != "" {
data, err := os.ReadFile(s.resolvedFilePath(dir))
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