Fast, small, and fully autonomous AI personal assistant infrastructure, any OS, any platform — deploy anywhere, swap anything 🦀
This report summarizes scanner evidence for zeroclaw-labs/zeroclaw, a Rust project with 32,952 GitHub stars. SynthScan examined 1,293,677 lines of code across 1943 source files, recording 4605 pattern matches distributed across 19 syntactic categories. The legacy adjusted pattern signal is 6.5 (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? 2467 finding(s).
Are imports declared and package/API names verified? 181 finding(s).
Are wrappers, guards, and repeated structures necessary? 2244 finding(s).
Which changes need focused human review? 4605 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 4605 distinct pattern matches across 19 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 |
|---|---|---|---|---|
| MEDIUM | install.sh | 4 | # ── ZeroClaw installer ─────────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 11 | # ── Output helpers (terminal-aware) ────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 38 | # ── Parse Cargo.toml (source of truth) ──────────────────────────── | COMMENT |
| MEDIUM | install.sh | 92 | # ── App registry ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 131 | # ── Feature validation ──────────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 159 | # ── List features ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 196 | # ── Version comparison ──────────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 215 | # ── Detect user's shell ────────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 236 | # ── Platform / target triple detection ─────────────────────────── | COMMENT |
| MEDIUM | install.sh | 290 | # ── Pre-built binary install ────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 395 | # ── Usage ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 447 | # ── Uninstall ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 519 | # ── Quickstart-needed status check ─────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 537 | # ── Interactive feature picker ─────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 691 | # ── Web dashboard build for source installs ────────────────────── | COMMENT |
| MEDIUM | install.sh | 734 | # ── Low-memory build heuristic ──────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 760 | # ── Parse arguments ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 855 | # ── Derive paths from prefix ───────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 866 | # ── List features (can run without cloning if in repo) ──────────── | COMMENT |
| MEDIUM | install.sh | 879 | # ── Decide: pre-built or source ─────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 939 | # ── Locate source ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 970 | # ── Parse Cargo.toml ────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 976 | # ── Preflight: Rust ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 1006 | # ── Preflight: 32-bit ARM ──────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 1021 | # ── Build feature flags ────────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 1109 | # ── Detect existing installs ────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 1139 | # ── Build profile RAM heuristic (Linux low-mem hosts) ───────────── | COMMENT |
| MEDIUM | install.sh | 1143 | # ── Build and install ───────────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 1179 | # ── Web dashboard (gateway feature only) ────────────────────────── | COMMENT |
| MEDIUM | install.sh | 1207 | # ── Apps (standalone binaries under apps/<dir>) ────────────────── | COMMENT |
| MEDIUM | install.sh | 1269 | # ── Summary ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 1303 | # ── PATH setup ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | install.sh | 1354 | # ── Quickstart prompt ───────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | crates/zeroclaw-tool-call-parser/src/lib.rs | 5317 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | crates/zeroclaw-tool-call-parser/src/lib.rs | 5319 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | crates/zeroclaw-tool-call-parser/src/lib.rs | 5322 | // ═══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 3685 | // ── FTS5 search tests ──────────────────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 3786 | // ── Embedding cache tests ──────────────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 3802 | // ── Schema tests ───────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 3842 | // ── FTS5 sync trigger tests ────────────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 3928 | // ── Open timeout tests ──────────────────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 3977 | // ── Graceful degrade on embedding failure ──────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 4029 | // ── Embedder hot-swap──────────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 4570 | // ── With-embedder constructor test ─────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 4590 | // ── Reindex test ───────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 4611 | // ── Embedding identity primitives────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 4738 | // ── Recall limit test ──────────────────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 4761 | // ── Score presence test ────────────────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 4777 | // ── Edge cases: FTS5 special characters ────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 4913 | // ── Edge cases: store ──────────────────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 4972 | // ── Edge cases: recall ─────────────────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 5038 | // ── Edge cases: schema idempotency ─────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 5070 | // ── Edge cases: forget + FTS5 consistency ──────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 5109 | // ── Edge cases: reindex ────────────────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 5132 | // ── Edge cases: content_hash ───────────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 5157 | // ── Edge cases: category helpers ───────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 5177 | // ── Edge cases: list ───────────────────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 5216 | // ── Bulk deletion tests ─────────────────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 5314 | // ── Session isolation ───────────────────────────────────────── | COMMENT |
| MEDIUM | crates/zeroclaw-memory/src/sqlite.rs | 5797 | // ── §4.1 Concurrent write contention tests ────────────── | COMMENT |
| 1868 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | Cargo.toml | 141 | # Capability-scoped directory handles (beneath/no-follow). Used by the agent-bundle | COMMENT |
| LOW | Cargo.toml | 381 | # | COMMENT |
| LOW | install.sh | 521 | # Detect whether the operator already has a configured ZeroClaw so the | COMMENT |
| LOW | install.sh | 1201 | info "Web dashboard already built for embedded-web" | COMMENT |
| LOW | clippy.toml | 1 | # Clippy configuration for ZeroClaw. | COMMENT |
| LOW | clippy.toml | 41 | # `anyhow::Error::msg`, or a typed error. Do not sidestep this by | COMMENT |
| LOW | clippy.toml | 61 | # They are NOT in disallowed-macros yet because ~430 existing violations across | COMMENT |
| LOW | docker-compose.yml | 1 | # ZeroClaw Docker Compose Example | COMMENT |
| LOW | docker-compose.yml | 21 | # dockerfile: Dockerfile.debian | COMMENT |
| LOW | docker-compose.yml | 41 | # this. `allow_public_bind` only acknowledges the non-loopback listener | COMMENT |
| LOW | demo/docker-compose.yml | 21 | # - esp32_sim example + visualizer | COMMENT |
| LOW | crates/zeroclaw-tool-call-parser/src/lib.rs | 41 | /// matching-rule change cannot drift one path. | COMMENT |
| LOW | crates/zeroclaw-tool-call-parser/src/lib.rs | 61 | /// assert_eq!(strip_trailing_terminal_markers("Summary<eom> \n"), "Summary"); | COMMENT |
| LOW | crates/zeroclaw-tool-call-parser/src/lib.rs | 621 | .iter() | COMMENT |
| LOW | crates/zeroclaw-tool-call-parser/src/lib.rs | 1881 | /// invokes one. Every other alias in [`TOOL_CALL_OPEN_TAGS`] has exactly one | COMMENT |
| LOW | crates/zeroclaw-tool-call-parser/src/lib.rs | 1901 | && (inner.contains_key("description") || inner.contains_key("parameters")) | COMMENT |
| LOW | crates/zeroclaw-tool-call-parser/src/lib.rs | 1921 | // The discriminator has to authorize the same representation that crosses the | COMMENT |
| LOW | crates/zeroclaw-tool-call-parser/src/lib.rs | 1941 | /// Byte offset in `after_open` where the body ends. | COMMENT |
| LOW | crates/zeroclaw-tool-call-parser/src/lib.rs | 1961 | /// no close at all -- the three ways a span can end -- so all three share one | COMMENT |
| LOW | crates/zeroclaw-tool-call-parser/src/lib.rs | 2061 | } | COMMENT |
| LOW | crates/zeroclaw-tool-call-parser/src/lib.rs | 2721 | } | COMMENT |
| LOW | crates/zeroclaw-tool-call-parser/src/lib.rs | 2821 | assert_eq!(calls[0].name, "file_write"); | COMMENT |
| LOW | crates/zeroclaw-memory/src/sqlite.rs | 1481 | } | COMMENT |
| LOW | crates/zeroclaw-memory/src/sqlite.rs | 1881 | COMMENT | |
| LOW | crates/zeroclaw-memory/src/scanned.rs | 1 | //! Write- and read-boundary content screening for durable memory. | COMMENT |
| LOW | crates/zeroclaw-memory/src/principal_plane.rs | 1 | //! A memory handle pinned to one principal's PRIVATE plane (RFC 7141). | COMMENT |
| LOW | crates/zeroclaw-memory/src/normalize.rs | 1 | //! Score normalization helpers for recall candidates. | COMMENT |
| LOW | crates/zeroclaw-memory/src/lib.rs | 241 | /// turn composed. Storing either as a `user_msg` row feeds known internal | COMMENT |
| LOW | crates/zeroclaw-memory/src/lib.rs | 941 | // Operator surface (bulk import + CLI management): writes are still | COMMENT |
| LOW | crates/zeroclaw-memory/src/lib.rs | 1001 | COMMENT | |
| LOW | crates/zeroclaw-memory/src/lib.rs | 2221 | .err() | COMMENT |
| LOW | crates/zeroclaw-memory/src/retrieval.rs | 1 | //! Optional read-cache decorator over a single backend recall. | COMMENT |
| LOW | crates/zeroclaw-memory/src/threat.rs | 1 | //! Content scanning for durable memory entries. | COMMENT |
| LOW | crates/zeroclaw-config/src/policy.rs | 341 | /// from cross-agent `AccessMode::Read` grants at policy | COMMENT |
| LOW | crates/zeroclaw-config/src/policy.rs | 361 | /// allowed set comes from `allowed_tools` or from the unrestricted | COMMENT |
| LOW | crates/zeroclaw-config/src/policy.rs | 621 | COMMENT | |
| LOW | crates/zeroclaw-config/src/policy.rs | 641 | #[derive(Debug, Clone, PartialEq, Eq)] | COMMENT |
| LOW | crates/zeroclaw-config/src/policy.rs | 661 | CommandNotInParent { command: String }, | COMMENT |
| LOW | crates/zeroclaw-config/src/policy.rs | 821 | /// does not exist yet (a *dangling* symlink `link -> /outside/new` — the write | COMMENT |
| LOW | crates/zeroclaw-config/src/policy.rs | 881 | current = parent.to_path_buf(); | COMMENT |
| LOW | crates/zeroclaw-config/src/policy.rs | 901 | /// | COMMENT |
| LOW | crates/zeroclaw-config/src/policy.rs | 2641 | /// grammar. Two shapes are rejected because the token the later provider, path, | COMMENT |
| LOW | crates/zeroclaw-config/src/policy.rs | 2661 | /// as `(...)`, script blocks, type literals, call operators, or backtick | COMMENT |
| LOW | crates/zeroclaw-config/src/policy.rs | 3741 | // existing ancestor (the leaf may be about to be created, e.g. | COMMENT |
| LOW | crates/zeroclaw-config/src/policy.rs | 3901 | /// policy using the host platform's default shell syntax. | COMMENT |
| LOW | crates/zeroclaw-config/src/policy.rs | 3921 | /// runs IN the workspace: each workspace-relative path argument is also | COMMENT |
| LOW | crates/zeroclaw-config/src/policy.rs | 3981 | #[cfg(target_os = "windows")] | COMMENT |
| LOW | crates/zeroclaw-config/src/policy.rs | 4241 | /// A path can be covered by overlapping grants, such as a workspace nested | COMMENT |
| LOW | crates/zeroclaw-config/src/policy.rs | 4261 | self.configured_approved_roots(resolved, true) | COMMENT |
| LOW | crates/zeroclaw-config/src/policy.rs | 4281 | /// the path cannot be resolved (a symlink cycle, or a target whose parents | COMMENT |
| LOW | crates/zeroclaw-config/src/policy.rs | 6881 | // ── deny-before-allow with most-specific-match wins ───────────────── | COMMENT |
| LOW | crates/zeroclaw-config/src/agent_bundle.rs | 1 | //! Agent bundle export planning. | COMMENT |
| LOW | crates/zeroclaw-config/src/agent_bundle.rs | 181 | /// | COMMENT |
| LOW | crates/zeroclaw-config/src/agent_bundle.rs | 201 | /// this bundle excludes does not travel: [`SkillBundleConfig::admits_skill`] | COMMENT |
| LOW | crates/zeroclaw-config/src/agent_bundle.rs | 221 | /// Install-relative path of the agent's workspace when it uses the | COMMENT |
| LOW | crates/zeroclaw-config/src/agent_bundle.rs | 241 | pub risk_flags: Vec<RiskFlag>, | COMMENT |
| LOW | crates/zeroclaw-config/src/agent_bundle.rs | 281 | } | COMMENT |
| LOW | crates/zeroclaw-config/src/agent_bundle.rs | 421 | let Ok(source) = crate::skill_bundles::resolve_directory(config, &install_root, &bundle) | COMMENT |
| LOW | crates/zeroclaw-config/src/agent_bundle.rs | 881 | // them rather than left to differ between Windows versions. | COMMENT |
| LOW | crates/zeroclaw-config/src/agent_bundle.rs | 901 | /// are read by whoever opens the bundle rather than by the host that wrote | COMMENT |
| 1833 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/src/contexts/historyTrimNotices.logic.ts | 26 | export function buildHistoryTrimmedNotice( | CODE |
| LOW | web/src/contexts/contextLimits.logic.ts | 14 | export function contextLimitsFromDoneFrame( | CODE |
| LOW | web/src/components/ToolPermissionGrid.logic.ts | 63 | export function parseOptionalAllowedTools(value: string): { | CODE |
| LOW | web/src/components/ToolPermissionGrid.logic.ts | 215 | export function isAlwaysAskWildcardLocked({ | CODE |
| LOW | web/src/components/ToolPermissionGrid.tsx | 260 | function autoApproveWildcardApplies(name: string): boolean { | CODE |
| LOW | web/src/components/sections/CostRatesEditor.tsx | 72 | async function applyCatalogPricingToResource( | CODE |
| LOW | web/src/components/sections/FieldForm.tsx | 661 | export function clearFieldFormCatalogCaches() { | CODE |
| LOW | web/src/lib/configuredModels.ts | 11 | export async function walkConfiguredModelBindings( | CODE |
| LOW | web/src/lib/configuredModels.ts | 53 | export async function resolveModelToProviderType( | CODE |
| LOW | web/src/lib/api.ts | 1385 | export function createAgentWorkspaceDirectory( | CODE |
| LOW | web/src/lib/chatHistoryStorage.ts | 62 | export function mapServerMessagesToPersisted(rows: SessionMessageRow[]): PersistedChatBubble[] { | CODE |
| LOW | web/src/lib/historyTrimNotice.ts | 5 | export function formatHistoryTrimmedNotice(msg: WsMessage, translate: Translate): string { | CODE |
| LOW | web/src/lib/validationWarnings.test.ts | 4 | async function loadValidationWarningMessage() { | CODE |
| LOW | web/src/lib/modelProviders.ts | 20 | export function primeModelProviderCatalog(): Promise<void> { | CODE |
| LOW | web/src/pages/Cron.tsx | 67 | function describeCronSettingsError(err: unknown) { | CODE |
| LOW | web/src/pages/quickstart/runtime-selection.ts | 13 | export function runtimeDefaultForProvider( | CODE |
| LOW | web/src/pages/quickstart/runtime-selection.ts | 24 | export function runtimeAfterProviderChange( | CODE |
| LOW | web/src/pages/quickstart/runtime-selection.ts | 41 | export function requiredQuickstartSelectionsComplete(input: { | CODE |
| LOW | web/src/pages/quickstart/channel-fields.ts | 29 | export function initialChannelFieldValues( | CODE |
| LOW⚡ | tests/manual/telegram/generate_test_messages.py | 21 | def generate_exact_limit_message(): | CODE |
| LOW⚡ | tests/manual/telegram/generate_test_messages.py | 26 | def generate_over_limit_message(): | CODE |
| LOW⚡ | tests/manual/telegram/generate_test_messages.py | 30 | def generate_multi_chunk_message(): | CODE |
| LOW⚡ | tests/manual/telegram/generate_test_messages.py | 38 | def generate_word_boundary_message(): | CODE |
| LOW | scripts/ci/lru_advisory_scope_test.py | 26 | def validate_version_boundary() -> None: | CODE |
| LOW⚡ | scripts/ci/list_git_dep_keys_test.py | 39 | def test_empty_git_dependencies_accept_empty_hashes(self): | STRING |
| LOW⚡ | scripts/ci/list_git_dep_keys_test.py | 43 | def test_registry_migration_rejects_stale_hash(self): | STRING |
| LOW⚡ | scripts/ci/list_git_dep_keys_test.py | 48 | def test_missing_hash_is_rejected(self): | STRING |
| LOW⚡ | scripts/ci/list_git_dep_keys_test.py | 53 | def test_extra_hash_is_rejected_with_git_dependencies(self): | STRING |
| LOW⚡ | scripts/ci/list_git_dep_keys_test.py | 60 | def test_matching_git_dependencies_pass(self): | STRING |
| LOW⚡ | scripts/ci/check_internal_docs_links_test.py | 29 | def test_accepts_existing_markdown_link_and_summary_entry(self) -> None: | CODE |
| LOW⚡ | scripts/ci/check_internal_docs_links_test.py | 39 | def test_reports_missing_target_with_source_location(self) -> None: | CODE |
| LOW⚡ | scripts/ci/check_internal_docs_links_test.py | 46 | def test_ignores_generated_reference_targets(self) -> None: | CODE |
| LOW⚡ | scripts/ci/check_internal_docs_links_test.py | 55 | def test_ignores_code_fences_external_links_and_fragments(self) -> None: | CODE |
| LOW | scripts/ci/check_internal_docs_links_test.py | 68 | def test_reports_missing_target_in_anchored_include(self) -> None: | CODE |
| LOW | scripts/ci/check_internal_docs_links_test.py | 88 | def test_scopes_anchored_links_to_each_rendered_page(self) -> None: | CODE |
| LOW | scripts/ci/check_internal_docs_links_test.py | 109 | def test_resolves_nested_include_links_from_rendered_page(self) -> None: | CODE |
| LOW | scripts/ci/check_internal_docs_links_test.py | 135 | def test_resolves_line_range_from_rendered_page(self) -> None: | CODE |
| LOW | scripts/ci/check_internal_docs_links_test.py | 146 | def test_ignores_inline_and_nested_fenced_examples_but_checks_following_link(self) -> None: | CODE |
| LOW | scripts/ci/check_internal_docs_links_test.py | 176 | def test_unmatched_or_escaped_backticks_do_not_hide_real_links(self) -> None: | CODE |
| LOW | scripts/ci/check_internal_docs_links_test.py | 226 | def test_preserves_multiline_inline_code_in_blockquotes(self) -> None: | CODE |
| LOW | scripts/ci/check_internal_docs_links_test.py | 241 | def test_preserves_multiline_inline_code_in_list_items(self) -> None: | CODE |
| LOW | scripts/ci/check_internal_docs_links_test.py | 256 | def test_even_backslash_run_does_not_escape_code_span_delimiter(self) -> None: | CODE |
| LOW | scripts/ci/collect_changed_links.py | 141 | def mdbook_link_escapes_source(source_path: str, target: str) -> bool: | CODE |
| LOW | scripts/ci/dependency_footprint.py | 92 | def require_stable_context_string(value: Any, label: str) -> str: | CODE |
| LOW | scripts/ci/dependency_footprint.py | 212 | def reject_duplicate_json_pairs(pairs: list[tuple[str, Any]]) -> dict[str, Any]: | CODE |
| LOW | scripts/ci/dependency_footprint.py | 369 | def normalize_resolved_selections(value: Any, label: str) -> dict[str, list[str]]: | CODE |
| LOW | scripts/ci/dependency_footprint.py | 380 | def require_policy_selection_keys( | CODE |
| LOW | scripts/ci/dependency_footprint.py | 573 | def output_identity_exclusions(repo_root: Path, output_path: Path) -> set[bytes]: | CODE |
| LOW⚡ | scripts/ci/collect_changed_links_test.py | 65 | def test_rejects_repository_relative_target_outside_book_source(self) -> None: | CODE |
| LOW⚡ | scripts/ci/collect_changed_links_test.py | 72 | def test_accepts_target_within_book_source(self) -> None: | CODE |
| LOW⚡ | scripts/ci/collect_changed_links_test.py | 79 | def test_does_not_apply_book_boundary_to_other_repository_docs(self) -> None: | CODE |
| LOW | scripts/ci/collect_changed_links_test.py | 92 | def test_cli_rejects_mdbook_link_outside_source_root(self) -> None: | CODE |
| LOW | scripts/ci/collect_changed_links_test.py | 108 | def test_cli_accepts_repository_link_outside_book(self) -> None: | CODE |
| LOW | scripts/ci/windows_test_scope.py | 305 | def close_over_reverse_dependents( | CODE |
| LOW | scripts/ci/release_attestation_contract_test.py | 47 | def test_redundant_release_signing_paths_are_absent(self) -> None: | CODE |
| LOW | scripts/ci/release_attestation_contract_test.py | 59 | def test_publish_keeps_required_attestation_permissions(self) -> None: | CODE |
| LOW | scripts/ci/release_attestation_contract_test.py | 63 | def test_sboms_are_read_only_inputs_to_publish(self) -> None: | CODE |
| LOW⚡ | scripts/ci/release_attestation_contract_test.py | 81 | def test_payload_attestation_is_pinned_and_best_effort(self) -> None: | CODE |
| LOW⚡ | scripts/ci/release_attestation_contract_test.py | 87 | def test_direct_attestation_action_is_used_exactly_three_times(self) -> None: | CODE |
| LOW⚡ | scripts/ci/release_attestation_contract_test.py | 91 | def test_archive_is_built_only_from_verified_offline_material(self) -> None: | CODE |
| 227 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/fill-translations/src/main.rs | 698 | // Step 1: Run the production leak-repair path via the shared helper. | COMMENT |
| LOW | tools/fill-translations/src/main.rs | 716 | // Step 2: Simulate the trailing-`\n` pre-pass (same logic as main()). | COMMENT |
| LOW | tools/fill-translations/src/main.rs | 734 | // Step 3: write_po end-to-end — the final output must contain the | COMMENT |
| LOW | crates/zeroclaw-memory/src/sqlite.rs | 2413 | // Step 1: Rebuild FTS5 (always safe, cheap) | COMMENT |
| LOW | crates/zeroclaw-memory/src/sqlite.rs | 2424 | // Step 2: Re-embed memories with NULL vectors, if embedder is configured | COMMENT |
| LOW | crates/zeroclaw-tools/src/a2a_client.rs | 185 | // Step 1: decrypt if the value is encrypted ciphertext (mirrors | COMMENT |
| LOW | crates/zeroclaw-tools/src/a2a_client.rs | 203 | // Step 2: resolve `${VAR}` env references on the (possibly decrypted) | COMMENT |
| LOW | crates/zeroclaw-tools/src/linkedin_client.rs | 601 | // Step 1: Register upload | COMMENT |
| LOW | crates/zeroclaw-tools/src/linkedin_client.rs | 653 | // Step 2: Upload binary | COMMENT |
| LOW⚡ | crates/zeroclaw-providers/src/bedrock.rs | 217 | // Step 1: get IMDSv2 token | COMMENT |
| LOW⚡ | crates/zeroclaw-providers/src/bedrock.rs | 226 | // Step 2: get IAM role name | COMMENT |
| LOW | crates/zeroclaw-providers/src/bedrock.rs | 237 | // Step 3: get credentials for that role | COMMENT |
| LOW | crates/zeroclaw-providers/src/bedrock.rs | 284 | // Step 4: get region from instance identity document | COMMENT |
| LOW | crates/zeroclaw-channels/src/lark.rs | 7889 | // Step 1: fast-ack POSTs 👀 and writes (om_dedupe, "👀") → R1. | COMMENT |
| LOW | crates/zeroclaw-channels/src/matrix.rs | 1507 | // Step 1: restore an existing session, or fresh-login. | COMMENT |
| LOW | crates/zeroclaw-channels/src/transcription.rs | 516 | // Step 1: Upload the audio file. | COMMENT |
| LOW | crates/zeroclaw-channels/src/transcription.rs | 542 | // Step 2: Create transcription job. | COMMENT |
| LOW | crates/zeroclaw-channels/src/transcription.rs | 575 | // Step 3: Poll for completion. | COMMENT |
| LOW | …s/zeroclaw-runtime/tests/relay_frontdoor_enrollment.rs | 444 | // Step 1: the page fetches the CA so it can show the operator a SAS. | COMMENT |
| LOW | …s/zeroclaw-runtime/tests/relay_frontdoor_enrollment.rs | 474 | // Step 2: the operator confirmed the SAS; the browser sends its CSR. The key | COMMENT |
| LOW | crates/zeroclaw-runtime/src/sop/engine.rs | 10497 | // Step 1: WaitApproval | COMMENT |
| LOW⚡ | crates/zeroclaw-runtime/src/agent/agent.rs | 14876 | // Step 1: filter excluded tools (mirrors from_config logic) | COMMENT |
| LOW⚡ | crates/zeroclaw-runtime/src/agent/agent.rs | 14880 | // Step 2: register skill tools (mirrors from_config logic) | COMMENT |
| LOW⚡ | crates/zeroclaw-runtime/src/daemon/mod.rs | 2178 | // Step 3: merged set, sorted by name for determinism. | COMMENT |
| LOW⚡ | crates/zeroclaw-runtime/src/daemon/mod.rs | 2183 | // Step 4: identity-stable no-churn check. If the merged set is | COMMENT |
| LOW | crates/zeroclaw-runtime/src/daemon/mod.rs | 2153 | // Step 1: split current into healthy (kept) and dead (dropped / | COMMENT |
| LOW | crates/zeroclaw-runtime/src/daemon/mod.rs | 2166 | // Step 2: identify the slice of `fresh` that is NOT already | COMMENT |
| LOW | crates/zeroclaw-runtime/src/daemon/mod.rs | 2232 | // Step 5: when the merged set is exactly `fresh`'s server set | COMMENT |
| LOW | crates/zeroclaw-runtime/src/daemon/mod.rs | 2251 | // Step 6: build the new registry from the merged handles. | COMMENT |
| LOW⚡ | tests/integration/memory_loop_continuity.rs | 205 | // Step 1: tool call | COMMENT |
| LOW⚡ | tests/integration/memory_loop_continuity.rs | 212 | // Step 2: another tool call | COMMENT |
| LOW⚡ | tests/integration/memory_loop_continuity.rs | 219 | // Step 3: final text | COMMENT |
| LOW | .claude/skills/github-pr/SKILL.md | 46 | ### Step 1: Gather Context | COMMENT |
| LOW | .claude/skills/github-pr/SKILL.md | 85 | ### Step 2: Pre-Fill the Template | COMMENT |
| LOW | .claude/skills/github-pr/SKILL.md | 99 | ### Step 3: Present Draft for Review | COMMENT |
| LOW | .claude/skills/github-pr/SKILL.md | 115 | ### Step 4: Push and Create | COMMENT |
| LOW | .claude/skills/github-pr/SKILL.md | 141 | ### Step 1: Identify the PR | COMMENT |
| LOW | .claude/skills/github-pr/SKILL.md | 157 | ### Step 2: Fetch Current State | COMMENT |
| LOW | .claude/skills/github-pr/SKILL.md | 173 | ### Step 3: Determine What to Update | COMMENT |
| LOW | .claude/skills/github-pr/SKILL.md | 188 | ### Step 4: Handle Body Section Edits | COMMENT |
| LOW | .claude/skills/github-pr/SKILL.md | 197 | ### Step 5: Smart Update After New Commits | COMMENT |
| LOW | .claude/skills/github-pr/SKILL.md | 217 | ### Step 6: Apply Updates | COMMENT |
| LOW | .claude/skills/github-pr/SKILL.md | 237 | ### Step 7: Confirm | COMMENT |
| LOW | .claude/skills/squash-merge/SKILL.md | 45 | ### Step 1: Resolve the PR and Run Pre-flight Checks | COMMENT |
| LOW | .claude/skills/squash-merge/SKILL.md | 231 | ### Step 2: Get Commit History | COMMENT |
| LOW | .claude/skills/squash-merge/SKILL.md | 263 | ### Step 3: Derive the Squash Commit Subject | COMMENT |
| LOW | .claude/skills/squash-merge/SKILL.md | 296 | ### Step 4: Confirm — MANDATORY, NO EXCEPTIONS | COMMENT |
| LOW | .claude/skills/squash-merge/SKILL.md | 331 | ### Step 5: Execute | COMMENT |
| LOW | .claude/skills/squash-merge/SKILL.md | 374 | ### Step 6: Verify | COMMENT |
| LOW | .claude/skills/squash-merge/SKILL.md | 392 | ### Step 7: Public Tracker Follow-Through | COMMENT |
| LOW | .claude/skills/github-issue/SKILL.md | 13 | ### Step 1: Route the Request and Read the Template | COMMENT |
| LOW | .claude/skills/github-issue/SKILL.md | 37 | ### Step 2: Auto-Gather Context | COMMENT |
| LOW | .claude/skills/github-issue/SKILL.md | 57 | ### Step 3: Pre-Fill and Present the Form | COMMENT |
| LOW | .claude/skills/github-issue/SKILL.md | 87 | ### Step 4: Scope Guard | COMMENT |
| LOW | .claude/skills/github-issue/SKILL.md | 102 | ### Step 5: Construct Issue Body | COMMENT |
| LOW | .claude/skills/github-issue/SKILL.md | 131 | ### Step 6: Final Preview and Submit | COMMENT |
| LOW | .claude/skills/feature-matrix-parity/SKILL.md | 73 | ### Step 1: Read the live page for ground truth | COMMENT |
| LOW | .claude/skills/feature-matrix-parity/SKILL.md | 89 | ### Step 2: Shallow-clone both competitors | COMMENT |
| LOW | .claude/skills/feature-matrix-parity/SKILL.md | 106 | ### Step 3: Walk every row against real modules | COMMENT |
| LOW | .claude/skills/feature-matrix-parity/SKILL.md | 126 | ### Step 4: Check the issue tracker for `planned` verdicts | COMMENT |
| 61 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | firmware/esp32-ui/src/main.rs | 1 | //! ZeroClaw ESP32 UI firmware scaffold. | COMMENT |
| MEDIUM | crates/zeroclaw-config/src/skill_bundles.rs | 48 | /// Reject directories that escape `<install>/shared/`. Run at scaffold time | COMMENT |
| MEDIUM | crates/zeroclaw-tools/src/model_routing_config.rs | 1041 | // synthesize runtime_profiles[name] from agentic/max_iterations/max_depth. | COMMENT |
| MEDIUM | crates/zeroclaw-providers/src/compatible.rs | 13343 | let json = r#"{"content":null,"reasoning":"chain-of-thought via vllm","tool_calls":null}"#; | CODE |
| MEDIUM | crates/zeroclaw-providers/src/reliable.rs | 322 | /// A fallback scope can span an agentic tool loop, which issues several model | COMMENT |
| MEDIUM | crates/zeroclaw-macros/src/lib.rs | 2074 | // leaving a partial sub-table that fails strict reload. The scaffold | COMMENT |
| MEDIUM | crates/zeroclaw-macros/src/lib.rs | 2093 | /// bare/ancestor-prefix `init_defaults` scaffold must not | COMMENT |
| MEDIUM | crates/zeroclaw-channels/src/transcription.rs | 2420 | // Step 2 — the real scaffold: no handcrafted struct assignment. | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/AGENTS.md | 27 | | Manual native-Code context compaction in `locales/en/cli.ftl`, `src/agent/agent.rs`, and `src/rpc/{compaction,dispatch | CODE |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 301 | /// Parent tool registry for agentic sub-agents. | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 304 | /// agentic delegation. | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 320 | /// named runtime profiles for agentic/tools/iteration resolution. | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 572 | /// independent agentic delegation. | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 644 | /// Attach runtime profiles for agentic/tools/iteration resolution. | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 1127 | // bounded agentic loops must fail closed until approval forwarding is | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 1593 | /// Resolve agentic run timeout from the named runtime profile. | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 1619 | /// Resolve agentic mode flag from the named runtime profile (default: false). | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 2583 | // The inner future owns the complete delegated agentic loop. Keep it | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 2776 | // The dispatched future holds the whole agentic tool loop. Inlining | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 2779 | // agentic delegate test aborted with SIGABRT in CI), so it lives on | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 2800 | /// Provider resolution plus the agentic/non-agentic dispatch for a sync | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 2861 | // Build enriched system prompt for non-agentic sub-agent. | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 4496 | // non-agentic one-shot) keep the generic default guidance. | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 4631 | // Every delegated agentic turn is non-interactive: there is no operator | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 8674 | // still a valid agentic run. The fallback is a tool-less loop, not a | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 8700 | // filters every candidate out, agentic execution should continue without | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 8889 | /// The bounded agentic child turn gates image markers with the PARENT's | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 9501 | // rebuilds a delegate tool instance before entering the agentic loop. | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 9820 | // Recursive agentic delegation is still unsupported. Even if the target | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 13377 | // A bounded agentic child currently has no approval manager or | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 13584 | // has a wider runtime policy. Bounded agentic execution applies the | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 13673 | // the caller's filtered tool registry still remains the agentic ceiling. | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 14394 | /// roster, and the shared agentic runtime profile. Delegation is allowed | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 15595 | // agentic delegation must ignore that parent ceiling and build the | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 17703 | /// loop agentic. The nested-chain fixtures price every hop this way. | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 17749 | /// Caller + agentic targets sharing one delegatable risk profile, with a | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 19637 | // The agentic loop prices under the target agent's `model_provider` | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 19743 | // agentic loop prices under, not the provider_type argument. | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/delegate.rs | 19856 | // agentic loop prices under, not the provider_type argument. | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/tools/mod.rs | 1327 | // Independent agentic delegates use it later to build the target-owned tool | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/agent/turn/mod.rs | 211 | /// Default maximum agentic tool-use iterations per user message to prevent runaway loops. | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/skills/constants.rs | 1 | //! Canonical filenames + scaffold subdirs for the Agent Skills spec. | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/skills/scaffold.rs | 43 | #[error("failed to write skill scaffold: {0}")] | COMMENT |
| MEDIUM | web/src/components/sections/PersonalityEditor.tsx | 7 | // `agent` is reserved for #5890 (multi-agent workspaces). Today it is | COMMENT |
| MEDIUM | web/src/components/sections/SkillsBundleEditor.tsx | 2 | // bundle's resolved directory, scaffold new ones (strict-spec: name + | COMMENT |
| MEDIUM | docs/book/src/hardware/adding-boards-and-tools.md | 37 | ## Adding a Datasheet (RAG) | COMMENT |
| MEDIUM | docs/book/src/hardware/hardware-peripherals-design.md | 115 | ### RAG Pipeline (Datasheet Retrieval) | COMMENT |
| MEDIUM | docs/book/src/agents/overview.md | 8 | {{#include ../_snippets/concept-multi-agent.md}} | CODE |
| MEDIUM | …ok/src/foundations/fnd-001-intentional-architecture.md | 37 | | 3 | 2026-04-10 | Terminology correction per implementation feedback from PR #5559: "kernel" → "runtime" for the agent | CODE |
| MEDIUM | …re/decisions/ADR-011-multi-agent-runtime-boundaries.md | 20 | Accepted RFC [#5890](https://github.com/zeroclaw-labs/zeroclaw/issues/5890) proposed a broader multi-agent UX and config | CODE |
| MEDIUM | docs/book/src/getting-started/concepts.md | 13 | {{#include ../_snippets/concept-multi-agent.md}} | CODE |
| MEDIUM | docs/book/src/ops/observability.md | 169 | ### Turn-nested memory and RAG spans (`observability-otel`) | COMMENT |
| MEDIUM | scripts/release/bump-version.test.py | 57 | # Allow these orchestration tests to run on macOS's Bash 3, while the | STRING |
| MEDIUM | src/lib.rs | 510 | /// Open SKILL.md in $EDITOR after scaffold. | COMMENT |
| MEDIUM | src/skills/mod.rs | 797 | // Slash options are authored in the dashboard editor, not at scaffold time. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | crates/zeroclaw-providers/src/auth/mod.rs | 1579 | let alias_cfg = ctx.config.providers.models.gemini.get(alias_name); | CODE |
| CRITICAL | crates/zeroclaw-runtime/src/agent/cost.rs | 72 | for (provider_type, _model_id, _rates) in config.cost.rates.providers.models.iter_entries() { | CODE |
| CRITICAL | crates/zeroclaw-runtime/src/agent/cost.rs | 113 | for (rate_provider_type, model_id, rates) in config.cost.rates.providers.models.iter_entries() { | CODE |
| CRITICAL | crates/zeroclaw-runtime/src/agent/cost.rs | 1466 | config.cost.rates.providers.models.deepseek.insert( | CODE |
| CRITICAL | crates/zeroclaw-runtime/src/agent/cost.rs | 1551 | config.cost.rates.providers.models.deepseek.insert( | CODE |
| CRITICAL | crates/zeroclaw-runtime/src/agent/cost.rs | 2003 | config.cost.rates.providers.models.deepseek.insert( | CODE |
| CRITICAL | tests/component/config_patch_cli.rs | 746 | cfg.cost.rates.providers.models.openai.is_empty(), | CODE |
| CRITICAL | tests/component/config_patch_cli.rs | 778 | let keys: Vec<&String> = cfg.cost.rates.providers.models.openai.keys().collect(); | CODE |
| CRITICAL | docs/book/src/ops/cost-tracking.md | 62 | `config.cost.rates.providers.models.iter_entries()` and merges the | CODE |
| CRITICAL | apps/zerocode/src/config/mod.rs | 2407 | assert!(c.connection.wss.tls.skip_verify_routes.is_empty()); | CODE |
| CRITICAL | apps/zerocode/src/config/mod.rs | 2410 | assert!(parsed.connection.wss.tls.skip_verify_routes.is_empty()); | CODE |
| CRITICAL | src/main.rs | 16842 | config.cost.rates.providers.models.openai.is_empty(), | CODE |
| CRITICAL | src/main.rs | 17040 | assert!(config.cost.rates.providers.models.openai.is_empty()); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/zeroclaw-infra/src/net_guard.rs | 1431 | "user@example.com", | CODE |
| LOW | crates/zeroclaw-infra/src/net_guard.rs | 1850 | assert!(normalize_domain("user@example.com").is_none()); | CODE |
| LOW | crates/zeroclaw-tools/src/image_gen.rs | 929 | unsafe { std::env::set_var("FAL_API_KEY_TEST_SIZE", "dummy_key") }; | CODE |
| LOW | crates/zeroclaw-tools/src/image_gen.rs | 977 | unsafe { std::env::set_var("FAL_API_KEY_TEST_MODEL", "dummy_key") }; | CODE |
| LOW | crates/zeroclaw-tools/src/git_operations.rs | 2247 | &["config", "user.email", "test@test.com"], | CODE |
| LOW | crates/zeroclaw-tools/src/git_operations.rs | 4919 | ["config", "user.email", "test@test.com"].as_slice(), | CODE |
| LOW | crates/zeroclaw-tools/src/git_operations.rs | 5138 | ["config", "user.email", "test@test.com"].as_slice(), | CODE |
| LOW | crates/zeroclaw-tools/src/jira_tool.rs | 2203 | ("acc-123".to_string(), "John Doe".to_string()), | CODE |
| LOW | crates/zeroclaw-tools/src/browser.rs | 1509 | "enum": ["role", "text", "label", "placeholder", "testid"], | CODE |
| LOW | crates/zeroclaw-tools/src/browser.rs | 2080 | "placeholder" => format!("[placeholder=\"{escaped}\"]"), | CODE |
| LOW | crates/zeroclaw-tools/src/browser.rs | 2326 | let sel = selector_for_find("placeholder", "Search"); | CODE |
| LOW | crates/zeroclaw-tools/src/microsoft365/graph_client.rs | 472 | let base = user_path("user@example.com"); | CODE |
| LOW⚡ | crates/zeroclaw-api/src/channel.rs | 1591 | reply_target: "user@example.com".into(), | CODE |
| LOW⚡ | crates/zeroclaw-api/src/channel.rs | 1594 | ..ChannelMessage::new("msg-001", "alice", "user@example.com", "", "email", 0) | CODE |
| LOW⚡ | crates/zeroclaw-api/src/channel.rs | 1597 | assert_eq!(reply.recipient, "user@example.com"); | CODE |
| LOW | crates/zeroclaw-api/src/channel.rs | 1608 | ..ChannelMessage::new("msg-002", "alice", "user@example.com", "", "email", 0) | CODE |
| LOW | crates/zeroclaw-api/src/channel.rs | 1626 | ..ChannelMessage::new("c", "alice", "user@example.com", "", "email", 0) | CODE |
| LOW | crates/zeroclaw-api/src/channel.rs | 1663 | let inbound = ChannelMessage::new("c", "alice", "user@example.com", "", "email", 0); | CODE |
| LOW | crates/zeroclaw-hardware/src/uf2.rs | 337 | msg.contains("placeholder") || msg.contains("UF2"), | CODE |
| LOW | crates/zeroclaw-providers/src/gemini.rs | 2570 | let model_provider = test_model_provider(Some(test_oauth_auth("fake_token"))); | CODE |
| LOW | crates/zeroclaw-channels/src/imessage.rs | 604 | assert!(is_valid_imessage_target("user@example.com")); | CODE |
| LOW | crates/zeroclaw-channels/src/imessage.rs | 809 | "INSERT INTO handle (ROWID, id) VALUES (2, 'user@example.com')", | CODE |
| LOW | crates/zeroclaw-channels/src/imessage.rs | 833 | "user@example.com".to_string(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 8702 | bot_token: "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 8712 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 8726 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 9024 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 9073 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 9110 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 9154 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 9234 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 9255 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 9651 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 9664 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 9689 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 9714 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 9722 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 9757 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 9772 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 9789 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 9824 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 9871 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 10400 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 12044 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 12061 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 12077 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 12095 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 12115 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 12165 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 12213 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 12256 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 15395 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 15472 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 15549 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 15676 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 15716 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 15748 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 15770 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 15789 | "fake-token".into(), | CODE |
| LOW | crates/zeroclaw-channels/src/telegram.rs | 15811 | "fake-token".into(), | CODE |
| 84 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | firmware/uno-q-bridge/python/main.py | 36 | except Exception: | CODE |
| HIGH | …de/skills/skill-creator/eval-viewer/generate_review.py | 303 | except subprocess.TimeoutExpired: | CODE |
| HIGH | …de/skills/skill-creator/eval-viewer/generate_review.py | 231 | except (json.JSONDecodeError, OSError, KeyError): | CODE |
| HIGH | …de/skills/skill-creator/eval-viewer/generate_review.py | 428 | except (json.JSONDecodeError, OSError): | CODE |
| HIGH | …de/skills/skill-creator/eval-viewer/generate_review.py | 97 | except (json.JSONDecodeError, OSError): | CODE |
| HIGH | …de/skills/skill-creator/eval-viewer/generate_review.py | 135 | except (json.JSONDecodeError, OSError): | CODE |
| HIGH | …de/skills/skill-creator/eval-viewer/generate_review.py | 111 | except OSError: | CODE |
| HIGH | …de/skills/skill-creator/eval-viewer/generate_review.py | 299 | except (ProcessLookupError, ValueError): | CODE |
| HIGH | …de/skills/skill-creator/eval-viewer/generate_review.py | 340 | except (json.JSONDecodeError, OSError): | CODE |
| HIGH | …de/skills/skill-creator/scripts/aggregate_benchmark.py | 146 | except json.JSONDecodeError: | CODE |
| HIGH | scripts/ci/dependency_footprint.py | 708 | except OSError: | CODE |
| HIGH | scripts/ci/dependency_footprint.py | 713 | except (FileNotFoundError, OSError, NotImplementedError): | CODE |
| HIGH | scripts/ci/dependency_footprint.py | 718 | except OSError: | CODE |
| HIGH | scripts/github/pr_risk_label.py | 1131 | except OSError: | CODE |
| HIGH | dev/kill-port.py | 57 | except ProcessLookupError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | demo/docker-compose.yml | 17 | # This harness completes the split of the original #6148 bundle. | COMMENT |
| MEDIUM | crates/zeroclaw-hardware/src/serial.rs | 129 | // Match on the error kind for robust cross-platform disconnect detection. | COMMENT |
| MEDIUM | crates/zeroclaw-tls/fuzz/Cargo.toml | 1 | # cargo-fuzz harness for the TLS crate's untrusted-input parsers (threat A12): the | COMMENT |
| MEDIUM | crates/zeroclaw-relay-proto/fuzz/Cargo.toml | 1 | # cargo-fuzz harness for the relay wire protocol's parsers (threat A12). This is a | COMMENT |
| MEDIUM | crates/zeroclaw-channels/src/matrix.rs | 11668 | // Construct via Default + struct update so we stay robust to | COMMENT |
| MEDIUM | crates/zeroclaw-runtime/src/agent/loop_.rs | 19056 | // assert each field == scrub_for_export(raw) (robust regardless of exact regex). | COMMENT |
| MEDIUM | scripts/ci/path_labeler_matrix.test.sh | 4 | # This harness deliberately uses the same matcher dependency as the pinned | COMMENT |
| LOW | .github/workflows/release-stable-manual.yml | 1066 | # For tag push, the tag already exists — just create the release. | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 666 | # Split out of the Windows build leg so the recovery harness compiles in | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 837 | # `cargo test` accepts only one positional TESTNAME; the harness ORs them. | COMMENT |
| MEDIUM⚡ | dev/test-harness.sh | 5 | # Validates the 9-phase harness implementation: | COMMENT |
| MEDIUM⚡ | dev/test-harness.sh | 13 | # docker exec zeroclaw-dev bash /zeroclaw-data/workspace/test-harness.sh | COMMENT |
| MEDIUM⚡ | dev/test-harness.sh | 14 | # or: ./dev/test-harness.sh (if running on host with gateway at localhost:42617) | COMMENT |
| MEDIUM⚡ | dev/test-harness.sh | 141 | # TEST 6: Tools List (verify harness tools present) | COMMENT |
| MEDIUM⚡ | dev/test-harness.sh | 183 | # TEST 8: Config Verification (harness features enabled) | COMMENT |
| MEDIUM | dev/run-tauri-dev.sh | 21 | # Prefer the Tauri CLI (hot-reload, proper dev harness). Fall back to a plain | COMMENT |
| MEDIUM | dev/ci.sh | 105 | # harness's default process model). | COMMENT |
| MEDIUM | apps/zerorelay/src/frontdoor_assets.rs | 375 | // The button is disabled while submitting; this flag is the robust backstop. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/fill-translations/src/main.rs | 698 | // Step 1: Run the production leak-repair path via the shared helper. | COMMENT |
| LOW | tools/fill-translations/src/main.rs | 716 | // Step 2: Simulate the trailing-`\n` pre-pass (same logic as main()). | COMMENT |
| LOW | tools/fill-translations/src/main.rs | 734 | // Step 3: write_po end-to-end — the final output must contain the | COMMENT |
| LOW | crates/zeroclaw-memory/src/sqlite.rs | 2413 | // Step 1: Rebuild FTS5 (always safe, cheap) | COMMENT |
| LOW | crates/zeroclaw-memory/src/sqlite.rs | 2424 | // Step 2: Re-embed memories with NULL vectors, if embedder is configured | COMMENT |
| LOW | crates/zeroclaw-tools/src/a2a_client.rs | 185 | // Step 1: decrypt if the value is encrypted ciphertext (mirrors | COMMENT |
| LOW | crates/zeroclaw-tools/src/a2a_client.rs | 203 | // Step 2: resolve `${VAR}` env references on the (possibly decrypted) | COMMENT |
| LOW | crates/zeroclaw-tools/src/linkedin_client.rs | 601 | // Step 1: Register upload | COMMENT |
| LOW | crates/zeroclaw-tools/src/linkedin_client.rs | 653 | // Step 2: Upload binary | COMMENT |
| LOW⚡ | crates/zeroclaw-providers/src/bedrock.rs | 217 | // Step 1: get IMDSv2 token | COMMENT |
| LOW⚡ | crates/zeroclaw-providers/src/bedrock.rs | 226 | // Step 2: get IAM role name | COMMENT |
| LOW | crates/zeroclaw-providers/src/bedrock.rs | 237 | // Step 3: get credentials for that role | COMMENT |
| LOW | crates/zeroclaw-providers/src/bedrock.rs | 284 | // Step 4: get region from instance identity document | COMMENT |
| LOW | crates/zeroclaw-channels/src/lark.rs | 7889 | // Step 1: fast-ack POSTs 👀 and writes (om_dedupe, "👀") → R1. | COMMENT |
| LOW | crates/zeroclaw-channels/src/matrix.rs | 1507 | // Step 1: restore an existing session, or fresh-login. | COMMENT |
| LOW | crates/zeroclaw-channels/src/transcription.rs | 516 | // Step 1: Upload the audio file. | COMMENT |
| LOW | crates/zeroclaw-channels/src/transcription.rs | 542 | // Step 2: Create transcription job. | COMMENT |
| LOW | crates/zeroclaw-channels/src/transcription.rs | 575 | // Step 3: Poll for completion. | COMMENT |
| LOW | …s/zeroclaw-runtime/tests/relay_frontdoor_enrollment.rs | 444 | // Step 1: the page fetches the CA so it can show the operator a SAS. | COMMENT |
| LOW | …s/zeroclaw-runtime/tests/relay_frontdoor_enrollment.rs | 474 | // Step 2: the operator confirmed the SAS; the browser sends its CSR. The key | COMMENT |
| LOW | crates/zeroclaw-runtime/src/sop/engine.rs | 10497 | // Step 1: WaitApproval | COMMENT |
| LOW⚡ | crates/zeroclaw-runtime/src/agent/agent.rs | 14876 | // Step 1: filter excluded tools (mirrors from_config logic) | COMMENT |
| LOW⚡ | crates/zeroclaw-runtime/src/agent/agent.rs | 14880 | // Step 2: register skill tools (mirrors from_config logic) | COMMENT |
| LOW⚡ | crates/zeroclaw-runtime/src/daemon/mod.rs | 2178 | // Step 3: merged set, sorted by name for determinism. | COMMENT |
| LOW⚡ | crates/zeroclaw-runtime/src/daemon/mod.rs | 2183 | // Step 4: identity-stable no-churn check. If the merged set is | COMMENT |
| LOW | crates/zeroclaw-runtime/src/daemon/mod.rs | 2153 | // Step 1: split current into healthy (kept) and dead (dropped / | COMMENT |
| LOW | crates/zeroclaw-runtime/src/daemon/mod.rs | 2166 | // Step 2: identify the slice of `fresh` that is NOT already | COMMENT |
| LOW | crates/zeroclaw-runtime/src/daemon/mod.rs | 2232 | // Step 5: when the merged set is exactly `fresh`'s server set | COMMENT |
| LOW | crates/zeroclaw-runtime/src/daemon/mod.rs | 2251 | // Step 6: build the new registry from the merged handles. | COMMENT |
| LOW⚡ | tests/integration/memory_loop_continuity.rs | 205 | // Step 1: tool call | COMMENT |
| LOW⚡ | tests/integration/memory_loop_continuity.rs | 212 | // Step 2: another tool call | COMMENT |
| LOW⚡ | tests/integration/memory_loop_continuity.rs | 219 | // Step 3: final text | COMMENT |
| LOW | xtask/src/cmd/mdbook/sync.rs | 31 | // Step 1: extract English msgids | COMMENT |
| LOW⚡ | apps/zerorelay/src/frontdoor_assets.rs | 839 | // Step 1: /enroll/ca resolves immediately, advancing the page to the SAS step. | COMMENT |
| LOW⚡ | apps/zerorelay/src/frontdoor_assets.rs | 849 | // Step 2: confirm, with /enroll held open until we release it. | COMMENT |
| LOW⚡ | apps/zerorelay/src/frontdoor_assets.rs | 923 | // Step 1: /enroll/ca resolves, advancing the page to the SAS step. | COMMENT |
| LOW⚡ | apps/zerorelay/src/frontdoor_assets.rs | 933 | // Step 2: confirm, but /enroll fails - the code and CSR still went out. | COMMENT |
| LOW | src/main.rs | 2178 | // Step 1: pick Existing or Fresh, when there are | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …de/skills/skill-creator/eval-viewer/generate_review.py | 85 | CODE | |
| LOW | …de/skills/skill-creator/eval-viewer/generate_review.py | 149 | CODE | |
| LOW | …de/skills/skill-creator/eval-viewer/generate_review.py | 288 | CODE | |
| LOW | .claude/skills/skill-creator/scripts/run_eval.py | 35 | CODE | |
| LOW | .claude/skills/skill-creator/scripts/package_skill.py | 42 | CODE | |
| LOW | …de/skills/skill-creator/scripts/improve_description.py | 50 | CODE | |
| LOW | …de/skills/skill-creator/scripts/aggregate_benchmark.py | 67 | CODE | |
| LOW | .claude/skills/skill-creator/scripts/generate_report.py | 16 | CODE | |
| LOW | .claude/skills/skill-creator/scripts/utils.py | 7 | CODE | |
| LOW | scripts/migrate-skill-toml.py | 80 | CODE | |
| LOW | scripts/migrate-skill-toml.py | 250 | CODE | |
| LOW | scripts/ci/check_internal_docs_links.py | 282 | CODE | |
| LOW | scripts/ci/collect_changed_links.py | 243 | CODE | |
| LOW | scripts/ci/dependency_footprint.py | 103 | CODE | |
| LOW | scripts/ci/dependency_footprint.py | 512 | CODE | |
| LOW | scripts/ci/comment_hygiene_gate.py | 43 | CODE | |
| LOW | scripts/ci/comment_hygiene_gate.py | 173 | CODE | |
| LOW | scripts/ci/comment_hygiene_gate.py | 225 | CODE | |
| LOW | scripts/ci/comment_hygiene_gate.py | 287 | CODE | |
| LOW | scripts/ci/comment_hygiene_gate.py | 388 | CODE | |
| LOW | scripts/ci/comment_hygiene_gate.py | 603 | CODE | |
| LOW | scripts/ci/windows_test_scope.py | 135 | CODE | |
| LOW | scripts/ci/binary_size_report.py | 166 | CODE | |
| LOW | scripts/ci/binary_size_report.py | 733 | CODE | |
| LOW | scripts/release/publish_crates_test.py | 312 | CODE | |
| LOW | scripts/github/pr_review_queue.py | 58 | CODE | |
| LOW | scripts/github/pr_risk_label.py | 197 | CODE | |
| LOW | scripts/github/pr_risk_label.py | 260 | CODE | |
| LOW | scripts/github/pr_risk_label.py | 543 | CODE | |
| LOW | scripts/github/pr_risk_label.py | 618 | CODE | |
| LOW | scripts/github/pr_size_label_test.py | 388 | CODE | |
| LOW | scripts/github/pr_risk_label_test.py | 1006 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …claw-tools/tests/a2a_cross_harness/lifecycle_server.py | 9 | CODE | |
| LOW | .claude/skills/skill-creator/scripts/quick_validate.py | 7 | CODE | |
| LOW | scripts/migrate-skill-toml.py | 15 | CODE | |
| LOW | scripts/ci/check_internal_docs_links.py | 5 | CODE | |
| LOW | scripts/ci/check_internal_docs_links_test.py | 3 | CODE | |
| LOW | scripts/ci/collect_changed_links.py | 3 | CODE | |
| LOW | scripts/ci/dependency_footprint.py | 4 | CODE | |
| LOW | scripts/ci/comment_hygiene_gate.py | 5 | CODE | |
| LOW | scripts/ci/windows_test_scope.py | 4 | CODE | |
| LOW | scripts/ci/list_git_dep_keys.py | 7 | CODE | |
| LOW | scripts/ci/release_attestation_contract_test.py | 4 | CODE | |
| LOW | scripts/ci/binary_size_report.py | 4 | CODE | |
| LOW | scripts/github/project_dashboard_plan.py | 9 | CODE | |
| LOW | scripts/github/pr_size_label.py | 4 | CODE | |
| LOW | scripts/github/pr_review_queue.py | 4 | CODE | |
| LOW | scripts/github/pr_review_queue_test.py | 4 | CODE | |
| LOW | scripts/github/project_dashboard_plan_test.py | 4 | CODE | |
| LOW | scripts/github/pr_risk_label.py | 4 | CODE | |
| LOW | scripts/github/pr_size_label_test.py | 4 | CODE | |
| LOW | scripts/github/pr_risk_label_test.py | 4 | CODE | |
| LOW | scripts/dev/generate-vi-reference-vectors.py | 18 | CODE | |
| LOW | scripts/dev/generate-vi-reference-vectors.test.py | 18 | CODE | |
| LOW | scripts/dev/generate-vi-reference-vectors.test.py | 22 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | firmware/uno-q-bridge/python/main.py | 33 | except Exception as e: | CODE |
| LOW | firmware/uno-q-bridge/python/main.py | 36 | except Exception: | CODE |
| LOW | firmware/uno-q-bridge/python/main.py | 48 | except Exception: | CODE |
| MEDIUM | firmware/uno-q-bridge/python/main.py | 10 | def handle_client(conn): | CODE |
| MEDIUM | tests/manual/telegram/generate_test_messages.py | 94 | print(f"Error: Unknown type '{test_type}'") | CODE |
| MEDIUM | …de/skills/skill-creator/eval-viewer/generate_review.py | 408 | print(f"Error: {workspace} is not a directory", file=sys.stderr) | CODE |
| LOW | .claude/skills/skill-creator/scripts/run_eval.py | 223 | except Exception as e: | CODE |
| MEDIUM | .claude/skills/skill-creator/scripts/run_eval.py | 276 | print(f"Error: No SKILL.md found at {skill_path}", file=sys.stderr) | CODE |
| LOW | .claude/skills/skill-creator/scripts/package_skill.py | 106 | except Exception as e: | CODE |
| MEDIUM | …de/skills/skill-creator/scripts/improve_description.py | 205 | print(f"Error: No SKILL.md found at {skill_path}", file=sys.stderr) | CODE |
| MEDIUM | .claude/skills/skill-creator/scripts/run_loop.py | 265 | print(f"Error: No SKILL.md found at {skill_path}", file=sys.stderr) | CODE |
| LOW | scripts/ci/comment_hygiene_gate.py | 648 | except Exception as exc: | CODE |
| LOW | scripts/github/pr_risk_label.py | 759 | except Exception as exc: | CODE |
| LOW | scripts/github/pr_risk_label.py | 1114 | except Exception as exc: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/deploy-rpi.sh | 14 | # Usage: | COMMENT |
| LOW | scripts/desktop/prepare-kernel.sh | 14 | # Usage: | COMMENT |
| LOW | scripts/release/bump-version.sh | 6 | # Usage: | COMMENT |
| LOW | scripts/release/publish-crates.sh | 6 | # Usage: | COMMENT |
| LOW | scripts/release/refresh-translations.sh | 9 | # Usage: | COMMENT |
| LOW | scripts/dev/mtls-relay-testbed.sh | 27 | # Usage: | COMMENT |
| LOW | scripts/dev/act-local.sh | 33 | # Usage: | COMMENT |
| LOW | scripts/dev/refresh-nix-hashes.sh | 9 | # Usage: | COMMENT |
| LOW | dev/test-termux-release.sh | 5 | # Usage: | COMMENT |
| LOW | dev/test-quickstart.sh | 4 | # Usage: | COMMENT |
| LOW⚡ | dev/test-harness.sh | 12 | # Usage: | COMMENT |
| LOW | dev/docker-compose.yml | 8 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | crates/zeroclaw-tools/src/web_search_tool.rs | 1851 | // long markdown / AI-generated summaries per hit, so a single search can crowd | COMMENT |
| HIGH | docs/book/src/getting-started/quickstart.md | 63 | or a token generated by Claude Max: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.sh | 503 | # Check if another zeroclaw still lurks in PATH | COMMENT |
| LOW | tests/manual/test_dockerignore.sh | 136 | # Check if .git would be excluded | COMMENT |
| LOW | tests/manual/test_dockerignore.sh | 145 | # Check if any .db files exist and would be excluded | COMMENT |
| LOW | scripts/browser/start-browser.sh | 12 | # Check if display is running | COMMENT |
| LOW | .github/workflows/tweet-release.yml | 235 | # Check if we already have a cache hit for this exact tweet | COMMENT |
| LOW | dev/test-termux-release.sh | 167 | # Check if it's glibc or bionic | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | scripts/github/pr_risk_label_test.py | 989 | "TRUSTED_REF: ${{ github.event_name == 'pull_request_target' && github.sha || github.event.repository.defaul | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | firmware/pico/src/main.rs | 77 | // TODO: implement dynamic GPIO pin drivers | COMMENT |
| LOW | firmware/esp32/src/main.rs | 104 | // TODO: implement input pin read — requires storing InputPin drivers per pin | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | benches/agent_benchmarks.rs | 165 | Let me know if you need more."# | CODE |