Worktrunk is a CLI for Git worktree management, designed for parallel AI agent workflows
This report summarizes scanner evidence for max-sixty/worktrunk, a Rust project with 9,176 GitHub stars. SynthScan examined 327,362 lines of code across 467 source files, recording 1853 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 6.8 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1716 finding(s).
Are imports declared and package/API names verified? 40 finding(s).
Are wrappers, guards, and repeated structures necessary? 105 finding(s).
Which changes need focused human review? 1853 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1853 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Cargo.toml | 1 | [workspace] | COMMENT |
| LOW | Cargo.toml | 181 | # `log` is still used pervasively for application logging; events flow into | COMMENT |
| LOW | Cargo.toml | 261 | # `src/config/expansion.rs::codename`). We use only the static wordlists, | COMMENT |
| LOW | Cargo.toml | 281 | # table — not under `[target.'cfg(unix)']` — or the picker fails to compile on | COMMENT |
| LOW | Cargo.toml | 301 | # not panic on push/pop keyboard enhancement flags failure") and is | COMMENT |
| LOW | dist-workspace.toml | 1 | [workspace] | COMMENT |
| LOW | .config/wt.toml | 1 | [[post-start]] | COMMENT |
| LOW | .config/tend.yaml | 21 | # nightly is actionable: Tend fixes it instead of leaving main's gaps | COMMENT |
| LOW | plugins/worktrunk/hooks/wt.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | tests/cancel_background.rs | 1 | //! Cancellation of background commands (`worktrunk::shell_exec`). | COMMENT |
| LOW | tests/cancel_background.rs | 21 | /// | COMMENT |
| LOW | tests/integration_tests/shell_integration_windows.rs | 1 | //! Windows-specific shell integration tests. | COMMENT |
| LOW | tests/integration_tests/completion_validation.rs | 41 | /// it to every user's shell. | COMMENT |
| LOW | tests/integration_tests/switch.rs | 381 | assert!( | COMMENT |
| LOW | tests/integration_tests/switch.rs | 661 | /// Since tests run via `cargo test`, argv[0] contains a path (`target/debug/wt`), which | COMMENT |
| LOW | tests/integration_tests/switch.rs | 761 | /// rev-parse --git-dir failed (exit 128)`. | COMMENT |
| LOW | tests/integration_tests/switch.rs | 901 | "sh", | COMMENT |
| LOW | tests/integration_tests/switch.rs | 1041 | /// The context map built at that call site feeds `expand_template` and nothing | COMMENT |
| LOW | tests/integration_tests/switch.rs | 2281 | fn test_select_deprecated_alias_requires_tty(repo: TestRepo) { | COMMENT |
| LOW | tests/integration_tests/switch.rs | 2961 | // fetch path swallows every error into a stashed warning and still exits 0, | COMMENT |
| LOW | tests/integration_tests/switch.rs | 3021 | .unwrap_or_else(|| panic!("no pr:42 Log cache entry in dump:\n{stdout}")); | COMMENT |
| LOW | tests/integration_tests/switch.rs | 3241 | /// an MR row's deferred `log` and `comments` tabs load via background `glab api | COMMENT |
| LOW | tests/integration_tests/switch.rs | 3701 | /// nothing happened. `git worktree add -b` creates the branch and the worktree | COMMENT |
| LOW | tests/integration_tests/switch.rs | 3801 | "feature-fix must still point at the unpushed commit" | COMMENT |
| LOW | tests/integration_tests/switch.rs | 6481 | let mut cmd = make_snapshot_cmd(&repo, "switch", &["pr:101"], None); | COMMENT |
| LOW | tests/integration_tests/foreground_jobs.rs | 361 | assert!(shell.output.contains("Usage:"), "{}", shell.output); | COMMENT |
| LOW | tests/integration_tests/foreground_jobs.rs | 1181 | #[case("bash", "default")] | COMMENT |
| LOW | tests/integration_tests/foreground_jobs.rs | 1681 | "{name}, {body}" | COMMENT |
| LOW | tests/integration_tests/for_each.rs | 421 | let json: serde_json::Value = serde_json::from_slice(&output.stdout) | COMMENT |
| LOW | tests/integration_tests/remove.rs | 61 | COMMENT | |
| LOW | tests/integration_tests/remove.rs | 541 | COMMENT | |
| LOW | tests/integration_tests/remove.rs | 701 | &["feature-current"], | COMMENT |
| LOW | tests/integration_tests/remove.rs | 941 | COMMENT | |
| LOW | tests/integration_tests/remove.rs | 1021 | /// with its own uncommitted work. | COMMENT |
| LOW | tests/integration_tests/remove.rs | 1061 | /// The ownership gate is re-decided at the rename, not carried over from | COMMENT |
| LOW | tests/integration_tests/remove.rs | 2441 | /// 3. Main advances with more commits (file B) | COMMENT |
| LOW | tests/integration_tests/remove.rs | 2541 | /// 1. Branch modifies file A | COMMENT |
| LOW | tests/integration_tests/remove.rs | 2621 | } | COMMENT |
| LOW | tests/integration_tests/remove.rs | 3481 | } | COMMENT |
| LOW | tests/integration_tests/remove.rs | 3561 | )); | COMMENT |
| LOW | tests/integration_tests/remove.rs | 3841 | &["@"], | COMMENT |
| LOW | tests/integration_tests/remove.rs | 4161 | .run() | COMMENT |
| LOW | tests/integration_tests/remove.rs | 4441 | /// | COMMENT |
| LOW | tests/integration_tests/remove.rs | 5281 | } | COMMENT |
| LOW | tests/integration_tests/remove.rs | 5381 | } | COMMENT |
| LOW | tests/integration_tests/remove.rs | 5941 | ); | COMMENT |
| LOW | tests/integration_tests/security.rs | 1 | //! Security tests for shell injection vulnerabilities | COMMENT |
| LOW | tests/integration_tests/security.rs | 21 | //! ## What These Tests Verify | COMMENT |
| LOW | tests/integration_tests/security.rs | 41 | //! `echo PWNED > /tmp/…` and anything carrying a newline can never become a | COMMENT |
| LOW | tests/integration_tests/security.rs | 401 | "Malicious code was executed alongside legitimate -x command!" | COMMENT |
| LOW | tests/integration_tests/list.rs | 1381 | COMMENT | |
| LOW | tests/integration_tests/list.rs | 1581 | repo.run_git_in(&feature_auth, &["add", "auth.rs", "lib.rs"]); | COMMENT |
| LOW | tests/integration_tests/list.rs | 1601 | /// - `+234 -24` main…± — Major refactoring: new Router, handlers, middleware (~250 LOC) | COMMENT |
| LOW | tests/integration_tests/list.rs | 1621 | /// **`wip`** — REST docs (stale) | COMMENT |
| LOW | tests/integration_tests/list.rs | 2781 | /// Generate README example: `wt list --branches --full` output | COMMENT |
| LOW | tests/integration_tests/list.rs | 3421 | // Set user marker emoji (🤖) | COMMENT |
| LOW | tests/integration_tests/list.rs | 3801 | } | COMMENT |
| LOW | tests/integration_tests/list.rs | 3821 | COMMENT | |
| LOW | tests/integration_tests/list.rs | 3921 | assert_cmd_snapshot!(list_snapshots::command(&repo, repo.root_path())); | COMMENT |
| LOW | tests/integration_tests/list.rs | 4161 | "wt list should succeed; stderr:\n{stderr}" | COMMENT |
| 1561 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ns/worktrunk/skills/worktrunk/reference/llm-commits.md | 0 | write a commit message for this diff. one line, under 50 chars. branch: {{ branch }} diff: {{ git_diff }} | STRING |
| HIGH | docs/public/llm-commits.md | 0 | write a commit message for this diff. one line, under 50 chars. branch: {{ branch }} diff: {{ git_diff }} | STRING |
| HIGH | docs/src/content/docs/llm-commits.md | 0 | write a commit message for this diff. one line, under 50 chars. branch: {{ branch }} diff: {{ git_diff }} | STRING |
| HIGH | skills/worktrunk/reference/llm-commits.md | 0 | write a commit message for this diff. one line, under 50 chars. branch: {{ branch }} diff: {{ git_diff }} | STRING |
| HIGH | …ns/worktrunk/skills/worktrunk/reference/llm-commits.md | 0 | combine these {{ commit_details | length }} commits into one message: {% for c in commit_details %} - {{ c.subject }} {% | STRING |
| HIGH | docs/public/llm-commits.md | 0 | combine these {{ commit_details | length }} commits into one message: {% for c in commit_details %} - {{ c.subject }} {% | STRING |
| HIGH | docs/src/content/docs/llm-commits.md | 0 | combine these {{ commit_details | length }} commits into one message: {% for c in commit_details %} - {{ c.subject }} {% | STRING |
| HIGH | skills/worktrunk/reference/llm-commits.md | 0 | combine these {{ commit_details | length }} commits into one message: {% for c in commit_details %} - {{ c.subject }} {% | STRING |
| HIGH | …ns/worktrunk/skills/worktrunk/reference/llm-commits.md | 0 | # - use conventional commits (feat:, fix:, docs:, …) # - reference the relevant issue id in the body # | STRING |
| HIGH | docs/public/llm-commits.md | 0 | # - use conventional commits (feat:, fix:, docs:, …) # - reference the relevant issue id in the body # | STRING |
| HIGH | docs/src/content/docs/llm-commits.md | 0 | # - use conventional commits (feat:, fix:, docs:, …) # - reference the relevant issue id in the body # | STRING |
| HIGH | skills/worktrunk/reference/llm-commits.md | 0 | # - use conventional commits (feat:, fix:, docs:, …) # - reference the relevant issue id in the body # | STRING |
| HIGH | plugins/worktrunk/skills/worktrunk/reference/config.md | 0 | # - use conventional commits (feat:, fix:, docs:, …) # - reference the relevant issue id in the body # | STRING |
| HIGH | docs/public/config.md | 0 | # - use conventional commits (feat:, fix:, docs:, …) # - reference the relevant issue id in the body # | STRING |
| HIGH | docs/src/content/docs/config.md | 0 | # - use conventional commits (feat:, fix:, docs:, …) # - reference the relevant issue id in the body # | STRING |
| HIGH | skills/worktrunk/reference/config.md | 0 | # - use conventional commits (feat:, fix:, docs:, …) # - reference the relevant issue id in the body # | STRING |
| HIGH | src/cli/mod.rs | 0 | # - use conventional commits (feat:, fix:, docs:, …) # - reference the relevant issue id in the body # | STRING |
| HIGH | dev/wt.example.toml | 0 | # - use conventional commits (feat:, fix:, docs:, …) # - reference the relevant issue id in the body # | STRING |
| HIGH | …gins/worktrunk/skills/worktrunk/reference/extending.md | 0 | git fetch --all --prune; wt step for-each -- sh -c ' git rev-parse --verify -q @{u} >/dev/null || exit 0 g=$(git rev-par | STRING |
| HIGH | docs/public/extending.md | 0 | git fetch --all --prune; wt step for-each -- sh -c ' git rev-parse --verify -q @{u} >/dev/null || exit 0 g=$(git rev-par | STRING |
| HIGH | docs/src/content/docs/extending.md | 0 | git fetch --all --prune; wt step for-each -- sh -c ' git rev-parse --verify -q @{u} >/dev/null || exit 0 g=$(git rev-par | STRING |
| HIGH | skills/worktrunk/reference/extending.md | 0 | git fetch --all --prune; wt step for-each -- sh -c ' git rev-parse --verify -q @{u} >/dev/null || exit 0 g=$(git rev-par | STRING |
| HIGH | …gins/worktrunk/skills/worktrunk/reference/extending.md | 0 | if git diff --quiet head && test -z "$(git ls-files --others --exclude-standard)"; then wt switch --create {{ to }} --ex | STRING |
| HIGH | docs/public/extending.md | 0 | if git diff --quiet head && test -z "$(git ls-files --others --exclude-standard)"; then wt switch --create {{ to }} --ex | STRING |
| HIGH | docs/src/content/docs/extending.md | 0 | if git diff --quiet head && test -z "$(git ls-files --others --exclude-standard)"; then wt switch --create {{ to }} --ex | STRING |
| HIGH | skills/worktrunk/reference/extending.md | 0 | if git diff --quiet head && test -z "$(git ls-files --others --exclude-standard)"; then wt switch --create {{ to }} --ex | STRING |
| HIGH | …gins/worktrunk/skills/worktrunk/reference/extending.md | 0 | tail -f "$(wt config state logs --format=json | jq -r --arg branch {{ branch }} --arg name {{ name | sanitize_hash }} -- | STRING |
| HIGH | docs/public/extending.md | 0 | tail -f "$(wt config state logs --format=json | jq -r --arg branch {{ branch }} --arg name {{ name | sanitize_hash }} -- | STRING |
| HIGH | docs/src/content/docs/extending.md | 0 | tail -f "$(wt config state logs --format=json | jq -r --arg branch {{ branch }} --arg name {{ name | sanitize_hash }} -- | STRING |
| HIGH | skills/worktrunk/reference/extending.md | 0 | tail -f "$(wt config state logs --format=json | jq -r --arg branch {{ branch }} --arg name {{ name | sanitize_hash }} -- | STRING |
| HIGH | plugins/worktrunk/skills/worktrunk/reference/config.md | 0 | # <task>write a commit message for the staged changes below.</task> # # <format> # - subject line under 50 chars # - for | STRING |
| HIGH | docs/public/config.md | 0 | # <task>write a commit message for the staged changes below.</task> # # <format> # - subject line under 50 chars # - for | STRING |
| HIGH | docs/src/content/docs/config.md | 0 | # <task>write a commit message for the staged changes below.</task> # # <format> # - subject line under 50 chars # - for | STRING |
| HIGH | skills/worktrunk/reference/config.md | 0 | # <task>write a commit message for the staged changes below.</task> # # <format> # - subject line under 50 chars # - for | STRING |
| HIGH | src/cli/mod.rs | 0 | # <task>write a commit message for the staged changes below.</task> # # <format> # - subject line under 50 chars # - for | STRING |
| HIGH | dev/config.example.toml | 0 | # <task>write a commit message for the staged changes below.</task> # # <format> # - subject line under 50 chars # - for | STRING |
| HIGH | plugins/worktrunk/skills/worktrunk/reference/config.md | 0 | # <task>write a commit message for the change in <diff>, which is everything the squash will record. <commits> lists wha | STRING |
| HIGH | docs/public/config.md | 0 | # <task>write a commit message for the change in <diff>, which is everything the squash will record. <commits> lists wha | STRING |
| HIGH | docs/src/content/docs/config.md | 0 | # <task>write a commit message for the change in <diff>, which is everything the squash will record. <commits> lists wha | STRING |
| HIGH | skills/worktrunk/reference/config.md | 0 | # <task>write a commit message for the change in <diff>, which is everything the squash will record. <commits> lists wha | STRING |
| HIGH | src/cli/mod.rs | 0 | # <task>write a commit message for the change in <diff>, which is everything the squash will record. <commits> lists wha | STRING |
| HIGH | dev/config.example.toml | 0 | # <task>write a commit message for the change in <diff>, which is everything the squash will record. <commits> lists wha | STRING |
| HIGH | plugins/worktrunk/skills/worktrunk/reference/config.md | 0 | # - explain the rationale in the body, not just the change # | STRING |
| HIGH | docs/public/config.md | 0 | # - explain the rationale in the body, not just the change # | STRING |
| HIGH | docs/src/content/docs/config.md | 0 | # - explain the rationale in the body, not just the change # | STRING |
| HIGH | skills/worktrunk/reference/config.md | 0 | # - explain the rationale in the body, not just the change # | STRING |
| HIGH | src/cli/mod.rs | 0 | # - explain the rationale in the body, not just the change # | STRING |
| HIGH | dev/config.example.toml | 0 | # - explain the rationale in the body, not just the change # | STRING |
| HIGH | …/worktrunk/skills/worktrunk/reference/tips-patterns.md | 0 | if [ {{ target }} = main ]; then npm run deploy:production elif [ {{ target }} = staging ]; then npm run deploy:staging | STRING |
| HIGH | docs/public/tips-patterns.md | 0 | if [ {{ target }} = main ]; then npm run deploy:production elif [ {{ target }} = staging ]; then npm run deploy:staging | STRING |
| HIGH | docs/src/content/docs/tips-patterns.md | 0 | if [ {{ target }} = main ]; then npm run deploy:production elif [ {{ target }} = staging ]; then npm run deploy:staging | STRING |
| HIGH | skills/worktrunk/reference/tips-patterns.md | 0 | if [ {{ target }} = main ]; then npm run deploy:production elif [ {{ target }} = staging ]; then npm run deploy:staging | STRING |
| HIGH | …/worktrunk/skills/worktrunk/reference/tips-patterns.md | 0 | wt config state vars set container='{{ repo }}-{{ branch | sanitize }}-postgres' && wt config state vars set port='{{ (' | STRING |
| HIGH | docs/public/tips-patterns.md | 0 | wt config state vars set container='{{ repo }}-{{ branch | sanitize }}-postgres' && wt config state vars set port='{{ (' | STRING |
| HIGH | docs/src/content/docs/tips-patterns.md | 0 | wt config state vars set container='{{ repo }}-{{ branch | sanitize }}-postgres' && wt config state vars set port='{{ (' | STRING |
| HIGH | skills/worktrunk/reference/tips-patterns.md | 0 | wt config state vars set container='{{ repo }}-{{ branch | sanitize }}-postgres' && wt config state vars set port='{{ (' | STRING |
| HIGH | …/worktrunk/skills/worktrunk/reference/tips-patterns.md | 0 | docker run -d --rm \ --name {{ vars.container }} \ -p {{ vars.port }}:5432 \ -e postgres_db={{ branch | sanitize_db }} \ | STRING |
| HIGH | docs/public/tips-patterns.md | 0 | docker run -d --rm \ --name {{ vars.container }} \ -p {{ vars.port }}:5432 \ -e postgres_db={{ branch | sanitize_db }} \ | STRING |
| HIGH | docs/src/content/docs/tips-patterns.md | 0 | docker run -d --rm \ --name {{ vars.container }} \ -p {{ vars.port }}:5432 \ -e postgres_db={{ branch | sanitize_db }} \ | STRING |
| HIGH | skills/worktrunk/reference/tips-patterns.md | 0 | docker run -d --rm \ --name {{ vars.container }} \ -p {{ vars.port }}:5432 \ -e postgres_db={{ branch | sanitize_db }} \ | STRING |
| 24 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | README.md | 94 | - **[`wt list --full`](https://worktrunk.dev/list/#full-mode)** — [CI status](https://worktrunk.dev/list/#ci-status) and | CODE |
| HIGH | README.md | 94 | - **[`wt list --full`](https://worktrunk.dev/list/#full-mode)** — [CI status](https://worktrunk.dev/list/#ci-status) and | CODE |
| HIGH | …gins/worktrunk/skills/worktrunk/reference/worktrunk.md | 77 | - **[`wt list --full`](https://worktrunk.dev/list/#full-mode)** — [CI status](https://worktrunk.dev/list/#ci-status) and | CODE |
| HIGH | …gins/worktrunk/skills/worktrunk/reference/worktrunk.md | 77 | - **[`wt list --full`](https://worktrunk.dev/list/#full-mode)** — [CI status](https://worktrunk.dev/list/#ci-status) and | CODE |
| HIGH | docs/public/worktrunk.md | 77 | - **[`wt list --full`](https://worktrunk.dev/list/#full-mode)** — [CI status](https://worktrunk.dev/list/#ci-status) and | CODE |
| HIGH | docs/public/worktrunk.md | 77 | - **[`wt list --full`](https://worktrunk.dev/list/#full-mode)** — [CI status](https://worktrunk.dev/list/#ci-status) and | CODE |
| HIGH | docs/src/content/docs/worktrunk.md | 105 | - **[`wt list --full`](/list/#full-mode)** — [CI status](/list/#ci-status) and [AI-generated summaries](/list/#llm-summa | CODE |
| HIGH | skills/worktrunk/reference/worktrunk.md | 77 | - **[`wt list --full`](https://worktrunk.dev/list/#full-mode)** — [CI status](https://worktrunk.dev/list/#ci-status) and | CODE |
| HIGH | skills/worktrunk/reference/worktrunk.md | 77 | - **[`wt list --full`](https://worktrunk.dev/list/#full-mode)** — [CI status](https://worktrunk.dev/list/#ci-status) and | CODE |
| HIGH | src/commands/statusline.rs | 919 | // What the schema-2 envelope reports as requested — read from the task | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/integration_tests/switch.rs | 2241 | // Step 2: From ping-pong worktree, switch back to main | COMMENT |
| LOW⚡ | tests/integration_tests/switch.rs | 2250 | // Step 3: From main worktree, wt switch - should go to ping-pong | COMMENT |
| LOW⚡ | tests/integration_tests/switch.rs | 2259 | // Step 4: From ping-pong worktree, wt switch - should go back to main | COMMENT |
| LOW⚡ | tests/integration_tests/switch.rs | 2263 | // Step 5: From main worktree, wt switch - should go to ping-pong again (ping-pong!) | COMMENT |
| LOW⚡ | tests/integration_tests/switch.rs | 8140 | // Step 2: Switch to hist-feature again while already there (AlreadyAt) | COMMENT |
| LOW⚡ | tests/integration_tests/switch.rs | 8149 | // Step 3: `wt switch -` should still go to main (the real previous), | COMMENT |
| LOW | tests/integration_tests/switch.rs | 2226 | // Step 1: From main worktree, switch to ping-pong (creates worktree) | COMMENT |
| LOW | tests/integration_tests/switch.rs | 8128 | // Step 1: Switch from main to hist-feature (establishes history: previous=main) | COMMENT |
| LOW⚡ | tests/integration_tests/list.rs | 108 | // Step 1: From main, switch to feature (history: current=feature, previous=main) | COMMENT |
| LOW⚡ | tests/integration_tests/list.rs | 115 | // Step 2: From feature, switch back to main (history: current=main, previous=feature) | COMMENT |
| LOW⚡ | tests/integration_tests/readme_sync.rs | 2729 | // Step 0: Fill docs-example bodies in src/cli/mod.rs from snapshots. Runs | STRING |
| LOW⚡ | tests/integration_tests/readme_sync.rs | 2735 | // Step 1: Sync command pages into the Starlight content collection. | STRING |
| LOW⚡ | tests/integration_tests/readme_sync.rs | 2739 | // Step 2: Sync standalone docs files from snapshots. | STRING |
| LOW⚡ | tests/integration_tests/readme_sync.rs | 2765 | // Step 3: Sync skill files (Starlight Markdown → skills/*) | STRING |
| LOW⚡ | tests/integration_tests/readme_sync.rs | 2774 | // Step 4: Sync .well-known/agent-skills/ (skills/ → docs/public/) | STRING |
| LOW⚡ | tests/integration_tests/readme_sync.rs | 2778 | // Step 5: Generate docs/public/llms.txt from Starlight frontmatter. | STRING |
| LOW | tests/integration_tests/readme_sync.rs | 2789 | // Step 6: Sync README from the now-fresh docs files. Runs last because | STRING |
| LOW⚡ | tests/integration_tests/shell_wrapper.rs | 3017 | # Step 1: Verify SOME completion is registered for 'wt' (black-box check) | COMMENT |
| LOW⚡ | tests/integration_tests/shell_wrapper.rs | 3024 | # Step 2: Get the completion function name (whatever it's called) | COMMENT |
| LOW⚡ | tests/integration_tests/shell_wrapper.rs | 3032 | # Step 3: Set up completion environment and call the function | COMMENT |
| LOW⚡ | tests/integration_tests/shell_wrapper.rs | 3042 | # Step 4: Verify we got completions (black-box: just check we got results) | COMMENT |
| LOW⚡ | tests/integration_tests/shell_wrapper.rs | 3152 | # Step 1: Verify SOME completion is registered for 'wt' (black-box check) | COMMENT |
| LOW⚡ | tests/integration_tests/shell_wrapper.rs | 3161 | # Step 2: Test that COMPLETE mode works through our shell function | COMMENT |
| LOW | tests/integration_tests/shell_wrapper.rs | 3055 | # Step 5: Verify expected subcommands are present | COMMENT |
| LOW | tests/integration_tests/shell_wrapper.rs | 3183 | # Step 3: Verify expected subcommands are present | COMMENT |
| LOW | tests/integration_tests/approval_pty.rs | 788 | // Step 1: project config with only the hook; pre-approve it. | COMMENT |
| LOW | tests/integration_tests/approval_pty.rs | 800 | // Step 2: add an unapproved commit append (hook command unchanged, so it | COMMENT |
| LOW | src/llm.rs | 326 | // Step 1: Filter out lock files | COMMENT |
| LOW | src/llm.rs | 358 | // Step 2: Truncate each section, accumulating until the budget is spent | COMMENT |
| LOW | src/commands/list/ci_status/gitlab.rs | 153 | // Step 1: Parse mr list output to find matching MR. | COMMENT |
| LOW | src/commands/list/ci_status/gitlab.rs | 194 | // Step 2: Fetch full MR details to get pipeline status. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/integration_tests/switch.rs | 2241 | // Step 2: From ping-pong worktree, switch back to main | COMMENT |
| LOW⚡ | tests/integration_tests/switch.rs | 2250 | // Step 3: From main worktree, wt switch - should go to ping-pong | COMMENT |
| LOW⚡ | tests/integration_tests/switch.rs | 2259 | // Step 4: From ping-pong worktree, wt switch - should go back to main | COMMENT |
| LOW⚡ | tests/integration_tests/switch.rs | 2263 | // Step 5: From main worktree, wt switch - should go to ping-pong again (ping-pong!) | COMMENT |
| LOW⚡ | tests/integration_tests/switch.rs | 8140 | // Step 2: Switch to hist-feature again while already there (AlreadyAt) | COMMENT |
| LOW | tests/integration_tests/switch.rs | 2226 | // Step 1: From main worktree, switch to ping-pong (creates worktree) | COMMENT |
| LOW | tests/integration_tests/switch.rs | 8128 | // Step 1: Switch from main to hist-feature (establishes history: previous=main) | COMMENT |
| LOW⚡ | tests/integration_tests/list.rs | 108 | // Step 1: From main, switch to feature (history: current=feature, previous=main) | COMMENT |
| LOW⚡ | tests/integration_tests/list.rs | 115 | // Step 2: From feature, switch back to main (history: current=main, previous=feature) | COMMENT |
| LOW | tests/integration_tests/list.rs | 1630 | /// NOTE: This function is used for doc generation. It removes fixture worktrees | COMMENT |
| LOW⚡ | tests/integration_tests/readme_sync.rs | 2729 | // Step 0: Fill docs-example bodies in src/cli/mod.rs from snapshots. Runs | STRING |
| LOW⚡ | tests/integration_tests/readme_sync.rs | 2735 | // Step 1: Sync command pages into the Starlight content collection. | STRING |
| LOW⚡ | tests/integration_tests/readme_sync.rs | 2739 | // Step 2: Sync standalone docs files from snapshots. | STRING |
| LOW⚡ | tests/integration_tests/readme_sync.rs | 2765 | // Step 3: Sync skill files (Starlight Markdown → skills/*) | STRING |
| LOW⚡ | tests/integration_tests/readme_sync.rs | 2774 | // Step 4: Sync .well-known/agent-skills/ (skills/ → docs/public/) | STRING |
| LOW⚡ | tests/integration_tests/readme_sync.rs | 2778 | // Step 5: Generate docs/public/llms.txt from Starlight frontmatter. | STRING |
| LOW | tests/integration_tests/readme_sync.rs | 2789 | // Step 6: Sync README from the now-fresh docs files. Runs last because | STRING |
| LOW⚡ | tests/integration_tests/shell_wrapper.rs | 3017 | # Step 1: Verify SOME completion is registered for 'wt' (black-box check) | COMMENT |
| LOW⚡ | tests/integration_tests/shell_wrapper.rs | 3024 | # Step 2: Get the completion function name (whatever it's called) | COMMENT |
| LOW⚡ | tests/integration_tests/shell_wrapper.rs | 3032 | # Step 3: Set up completion environment and call the function | COMMENT |
| LOW⚡ | tests/integration_tests/shell_wrapper.rs | 3042 | # Step 4: Verify we got completions (black-box: just check we got results) | COMMENT |
| LOW⚡ | tests/integration_tests/shell_wrapper.rs | 3152 | # Step 1: Verify SOME completion is registered for 'wt' (black-box check) | COMMENT |
| LOW⚡ | tests/integration_tests/shell_wrapper.rs | 3161 | # Step 2: Test that COMPLETE mode works through our shell function | COMMENT |
| LOW | tests/integration_tests/shell_wrapper.rs | 3055 | # Step 5: Verify expected subcommands are present | COMMENT |
| LOW | tests/integration_tests/shell_wrapper.rs | 3183 | # Step 3: Verify expected subcommands are present | COMMENT |
| LOW | tests/integration_tests/approval_pty.rs | 788 | // Step 1: project config with only the hook; pre-approve it. | COMMENT |
| LOW | tests/integration_tests/approval_pty.rs | 800 | // Step 2: add an unapproved commit append (hook command unchanged, so it | COMMENT |
| LOW | src/llm.rs | 326 | // Step 1: Filter out lock files | COMMENT |
| LOW | src/llm.rs | 358 | // Step 2: Truncate each section, accumulating until the budget is spent | COMMENT |
| LOW | src/commands/list/ci_status/gitlab.rs | 153 | // Step 1: Parse mr list output to find matching MR. | COMMENT |
| LOW | src/commands/list/ci_status/gitlab.rs | 194 | // Step 2: Fetch full MR details to get pipeline status. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/integration_tests/step_promote.rs | 390 | // ─── Swap tests ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docs/demos/shared/lib.py | 1406 | # ============================================================================= | COMMENT |
| MEDIUM | docs/demos/shared/lib.py | 1408 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | src/commands/list/collect/mod.rs | 139 | //! ──────────────── ───────────── | COMMENT |
| MEDIUM⚡ | src/commands/list/collect/mod.rs | 141 | //! J1 rayon::scope ───────────────────────┬─ list_worktrees [cell] worktree list --porcelain | COMMENT |
| MEDIUM⚡ | src/commands/list/collect/mod.rs | 149 | //! join ◄──────────────────────────────┘ (waits for the slowest: worktree list + backfill) | COMMENT |
| MEDIUM⚡ | src/commands/list/collect/mod.rs | 155 | //! layout; render skeleton ─────────────────── FIRST PAINT (wt list) | COMMENT |
| MEDIUM⚡ | src/commands/list/collect/mod.rs | 156 | //! [picker] on_skeleton: rows → skim ───────── FIRST PAINT (picker) | COMMENT |
| MEDIUM⚡ | src/commands/list/collect/mod.rs | 160 | //! J2 rayon::scope ───────────────────────┬─ switch_previous | COMMENT |
| MEDIUM⚡ | src/commands/list/collect/mod.rs | 170 | //! join ◄──────────────────────────────┘ (waits for the slowest) | COMMENT |
| MEDIUM | src/git/repository/integration.rs | 1077 | /// └────── squash ── pad1 ── … ── padN = target (each pad reuses parent's tree) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 3 | CODE | |
| LOW | docs/demos/shared/__init__.py | 44 | CODE | |
| LOW | docs/demos/shared/__init__.py | 44 | CODE | |
| LOW | docs/demos/shared/validation.py | 23 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/integration_tests/switch_picker_dry_run.rs | 107 | // schema (not specific branches/modes) keeps the test robust to fixture | COMMENT |
| MEDIUM | tests/common/pty.rs | 51 | // this is the more robust replacement. | COMMENT |
| MEDIUM | docs/demos/shared/lib.py | 1168 | """Set up comprehensive mock CLIs for all demo scenarios. | STRING |
| MEDIUM | .github/workflows/benchmarks.yaml | 9 | # harness still builds — create-issue-on-benchmark-failure surfaces a break. | COMMENT |
| MEDIUM | .github/workflows/tend-review.yaml | 46 | # local actions' POST chains; the harness moves the agent's view of it to | COMMENT |
| MEDIUM | src/commands/list/collect/mod.rs | 406 | //! ### Fundamentally uncacheable | COMMENT |
| MEDIUM | src/commands/list/collect/mod.rs | 406 | //! ### Fundamentally uncacheable | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/demos/shared/lib.py | 258 | f" git -C {vhs_dir} pull && rm -f {vhs_dir / 'vhs'}" | CODE |
| HIGH | docs/demos/shared/lib.py | 1158 | set -l branch (git rev-parse --abbrev-ref HEAD 2>/dev/null) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/integration_tests/shell_wrapper.rs | 2729 | def test_login_invalid_password(): | CODE |
| LOW | docs/demos/tests/test_recording.py | 16 | def test_each_theme_records_from_a_fresh_environment(tmp_path: Path) -> None: | CODE |
| LOW | docs/demos/tests/test_recording.py | 76 | def test_docs_demos_open_on_a_complete_command_before_execution() -> None: | CODE |
| LOW | docs/demos/tests/test_recording.py | 108 | def test_docs_demos_hide_all_setup_and_cleanup_from_the_recording() -> None: | CODE |
| LOW | docs/demos/tests/test_recording.py | 131 | def test_mobile_core_demo_has_a_readable_dedicated_recording_contract() -> None: | CODE |
| LOW | docs/demos/shared/lib.py | 248 | def _require_current_vhs_fork(vhs_dir: Path) -> None: | CODE |
| LOW | docs/demos/shared/lib.py | 1539 | def extract_commands_from_tape( | CODE |
| LOW | docs/demos/shared/validation.py | 451 | def validate_tui_demo_verbose( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/demos/shared/lib.py | 866 | "# This file contains fish universal variable definitions.", | STRING |
| MEDIUM | .github/workflows/release.yaml | 354 | # Create a GitHub Release while uploading all files to it | COMMENT |
| MEDIUM | src/cli/mod.rs | 658 | ## Creating a branch | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/integration_tests/shell_wrapper.rs | 2174 | # Check if wt completion is registered and write result to marker file | COMMENT |
| LOW | tests/integration_tests/shell_wrapper.rs | 2225 | # Check if wt completions are registered and write result to marker file | COMMENT |
| LOW | tests/integration_tests/shell_wrapper.rs | 2282 | # Check if wt wrapper function is defined and write result to marker file | COMMENT |
| LOW | .github/workflows/ci.yaml | 172 | # Check if Cargo/CI files changed (for conditional jobs below) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/demos/shared/lib.py | 73 | except FileNotFoundError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | Cargo.toml | 194 | # scaffolding; `registry` composes layers. Pinned to ≥ 0.3.17: that's when | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/demos/shared/__init__.py | 46 | __all__ = [ | CODE |