This report summarizes scanner evidence for FailproofAI/failproofai. SynthScan examined 449,278 lines of code across 1313 source files, recording 3969 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 13.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.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 2627 finding(s).
Are imports declared and package/API names verified? 237 finding(s).
Are wrappers, guards, and repeated structures necessary? 2882 finding(s).
Which changes need focused human review? 3969 finding(s).
Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.
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 3969 distinct pattern matches across 18 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 | osv-scanner.toml | 32 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | osv-scanner.toml | 66 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | osv-scanner.toml | 88 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | osv-scanner.toml | 105 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | crates/fpai-collect/tests/devin_source.rs | 152 | // ── the chat_message shapes, verbatim from a live database ──────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/devin_source.rs | 185 | // ── assertion helpers ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/devin_source.rs | 201 | // ── content-shape transforms ────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/devin_source.rs | 372 | // ── the forest: replays collapse, distinct messages do not ──────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/devin_source.rs | 448 | // ── session identity and filtering ───────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/devin_source.rs | 505 | // ── session start ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/devin_source.rs | 544 | // ── timestamps ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/devin_source.rs | 581 | // ── watermark, limits, determinism ───────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/devin_source.rs | 662 | // ── engine ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/human_input.rs | 248 | // ── edge cases found by driving the real harnesses in a sandbox ───────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/claude_source.rs | 66 | // ── transform ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/claude_source.rs | 202 | // ── thinking blocks ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/claude_source.rs | 278 | // ── compact boundaries ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/claude_source.rs | 334 | // ── synthetic / failed assistant turns ─────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/claude_source.rs | 455 | // ── format table ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/claude_source.rs | 500 | // ── engine ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/factory_source.rs | 47 | // ── real record shapes ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/factory_source.rs | 102 | // ── transform-direct ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/factory_source.rs | 195 | // ── engine ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/pi_source.rs | 53 | // ── real record shapes ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/pi_source.rs | 164 | // ── transform ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/pi_source.rs | 665 | // ── format table ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/pi_source.rs | 779 | // ── engine ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/copilot_source.rs | 46 | // ── real record shapes ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/copilot_source.rs | 202 | // ── transform ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/copilot_source.rs | 547 | // ── resume ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/copilot_source.rs | 599 | // ── format table ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/copilot_source.rs | 764 | // ── engine ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/opencode_source.rs | 336 | // ── the mutation this whole source exists for ──────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/opencode_source.rs | 586 | // ── text parts ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/opencode_source.rs | 725 | // ── agent id: directory, never path ────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/opencode_source.rs | 838 | // ── session bracketing ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/opencode_source.rs | 974 | // ── ordering, watermark, limits ────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/opencode_source.rs | 1218 | // ── dedup discrimination and determinism ───────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/opencode_source.rs | 1375 | // ── timestamps, format table, discovery ────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/antigravity_source.rs | 55 | // ── real record shapes ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/antigravity_source.rs | 111 | // ── transform-direct ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/antigravity_source.rs | 290 | // ── engine ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/openclaw_source.rs | 46 | // ── record builders, mirroring the capture field for field ─────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/openclaw_source.rs | 114 | // ── transform ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/openclaw_source.rs | 461 | // ── format table ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/openclaw_source.rs | 563 | // ── engine ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/openclaw_source.rs | 987 | // ── OpenClaw 2026.9.2+ SQLite store ───────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/claude_subagents.rs | 77 | // ── file identity ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/claude_subagents.rs | 159 | // ── agent type ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/claude_subagents.rs | 220 | // ── the parent link ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/claude_subagents.rs | 263 | // ── engine ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/goose_source.rs | 174 | // ── the block shapes, verbatim from a live database ────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/goose_source.rs | 216 | // ── assertions helpers ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/goose_source.rs | 232 | // ── content-block shapes ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/goose_source.rs | 419 | // ── rows are not turn-aligned ──────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/goose_source.rs | 498 | // ── session filtering and identity ─────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/goose_source.rs | 573 | // ── session boundaries ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/goose_source.rs | 660 | // ── watermark, limits, determinism ─────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/goose_source.rs | 766 | // ── timestamps and usage ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/fpai-collect/tests/goose_source.rs | 862 | // ── engine ─────────────────────────────────────────────────────────────── | COMMENT |
| 886 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/policies/hooks-client.tsx | 63 | function projectFromTranscriptPath(transcriptPath: string): string | null { | CODE |
| LOW | app/components/project-list.tsx | 49 | function normalizeKeywordForSearch(keyword: string): string { | CODE |
| LOW | app/components/raw-log-viewer.tsx | 183 | function buildSubagentUuidToParentMap(allEntries: LogEntry[]): Map<string, string> { | CODE |
| LOW | app/actions/get-hooks-config.ts | 124 | async function discoverConventionPolicies( | CODE |
| LOW | app/actions/get-hooks-config.ts | 178 | async function parseCustomPoliciesFromFile(filePath: string): Promise<CustomPolicyInfo[]> { | CODE |
| LOW | __tests__/hooks/fp-reset.test.ts | 734 | function seedLayoutOnePolicyConfig() { | CODE |
| LOW | __tests__/hooks/fp-reset.test.ts | 882 | function seedLayoutTwoWithRegisteredPath(entry: string) { | CODE |
| LOW | __tests__/hooks/policy-reviewability.test.ts | 55 | function packEntriesWithoutAuthority(): ReturnType<typeof parsePackPolicy>[] { | CODE |
| LOW | __tests__/hooks/migrations.test.ts | 353 | function seedLayoutThreeWithSession() { | CODE |
| LOW | __tests__/hooks/semantic/intent-capture-r9.test.ts | 49 | function expectNotRecordedAnywhere(text: string): void { | CODE |
| LOW | __tests__/hooks/semantic/intent-capture-r8.test.ts | 71 | function expectNotRecordedAnywhere(text: string): void { | CODE |
| LOW | __tests__/e2e/helpers/hook-runner.ts | 104 | export function assertPermissionRequestDeny(result: HookRunResult): void { | CODE |
| LOW | __tests__/e2e/helpers/hook-runner.ts | 127 | export function assertPostToolUseBlockDecision(result: HookRunResult): void { | CODE |
| LOW⚡ | __tests__/e2e/helpers/hook-runner.ts | 266 | export function assertAntigravityStopContinue(result: HookRunResult): void { | CODE |
| LOW⚡ | __tests__/e2e/helpers/hook-runner.ts | 275 | export function assertAntigravityInjectSteps(result: HookRunResult): void { | CODE |
| LOW | sdk/python/skill/references/integration.md | 294 | def test_failure_is_recorded_as_failed(events): | CODE |
| LOW | sdk/python/skill/references/integration.md | 344 | def test_unserializable_payload_does_not_kill_the_writer(events): | CODE |
| LOW | sdk/python/failproofai_sdk/_resolver.py | 72 | def failproofai_custom_agents_dir() -> Path: | CODE |
| LOW | sdk/python/failproofai_sdk/_events.py | 67 | def _validate_promoted_numeric(name: str, value) -> None: | CODE |
| LOW | sdk/python/failproofai_sdk/_events.py | 94 | def _validate_promoted_string(name: str, value) -> None: | CODE |
| LOW | sdk/python/failproofai_sdk/evaluator/protocol.py | 84 | def validate_protocol_version(version: str) -> None: | CODE |
| LOW | sdk/python/failproofai_sdk/evaluator/runtime.py | 829 | def _condition_phase_deadline(self, assignment: Assignment) -> float: | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/crewai.py | 374 | def _root_for_current_context(self, roots): | CODE |
| LOW | sdk/python/tests/test_no_customer_identifiers.py | 126 | def test_no_real_customer_or_vendor_identifiers(): | CODE |
| LOW | sdk/python/tests/test_no_customer_identifiers.py | 147 | def test_no_internal_artefacts_from_the_private_monorepo(): | CODE |
| LOW | sdk/python/tests/test_no_customer_identifiers.py | 159 | def test_the_scan_actually_has_files_to_scan(): | CODE |
| LOW | sdk/python/tests/test_no_customer_identifiers.py | 169 | def test_the_hashed_scan_matches_substrings_and_only_them(): | CODE |
| LOW | sdk/python/tests/test_no_customer_identifiers.py | 183 | def test_no_internal_hostnames_leaked(): | CODE |
| LOW | sdk/python/tests/test_no_customer_identifiers.py | 195 | def test_this_file_does_not_name_the_customers_it_denies(): | CODE |
| LOW | sdk/python/tests/conftest.py | 110 | def _quiesce_the_process_wide_writer(): | CODE |
| LOW | sdk/python/tests/test_evaluator_example.py | 20 | def test_example_registers_deterministic_and_async_evals(monkeypatch): | CODE |
| LOW | sdk/python/tests/test_evaluator_example.py | 31 | def test_example_rejects_non_http_judge_urls(monkeypatch): | CODE |
| LOW⚡ | sdk/python/tests/test_evaluator_review_fixes.py | 24 | def test_bounded_keeps_tab_newline_cr(): | CODE |
| LOW⚡ | sdk/python/tests/test_evaluator_review_fixes.py | 30 | def test_reasoning_carried_on_metric_primary(): | CODE |
| LOW⚡ | sdk/python/tests/test_evaluator_review_fixes.py | 37 | def test_reasoning_not_smeared_onto_secondary_metrics(): | CODE |
| LOW | sdk/python/tests/test_evaluator_review_fixes.py | 48 | def test_object_repr_guard_allows_plain_hex_literals(): | CODE |
| LOW | sdk/python/tests/test_evaluator_review_fixes.py | 55 | def test_object_repr_guard_still_rejects_pointer_reprs(): | CODE |
| LOW | sdk/python/tests/test_evaluator_review_fixes.py | 126 | def test_transcript_too_large_skips_assignment_without_crashing(): | CODE |
| LOW | sdk/python/tests/test_evaluator_review_fixes.py | 144 | def test_idempotent_replay_runs_a_definition_this_attempt_skipped(): | CODE |
| LOW | sdk/python/tests/test_packaging.py | 49 | def test_the_distribution_is_installed(): | CODE |
| LOW | sdk/python/tests/test_packaging.py | 56 | def test_every_requirement_is_gated_behind_an_extra(): | CODE |
| LOW | sdk/python/tests/test_packaging.py | 71 | def test_no_requirement_names_the_retired_distribution(): | CODE |
| LOW⚡ | sdk/python/tests/test_packaging.py | 89 | def test_there_is_no_all_extra(): | CODE |
| LOW⚡ | sdk/python/tests/test_packaging.py | 93 | def test_every_extra_maps_to_a_registered_adapter(): | CODE |
| LOW⚡ | sdk/python/tests/test_packaging.py | 100 | def test_every_registered_adapter_has_an_extra(): | CODE |
| LOW⚡ | sdk/python/tests/test_packaging.py | 105 | def test_every_extra_requirement_pins_a_floor_and_a_ceiling(): | CODE |
| LOW | sdk/python/tests/test_packaging.py | 139 | def test_importing_the_package_stays_clean(tmp_path): | CODE |
| LOW | sdk/python/tests/test_packaging.py | 163 | def test_instrument_is_lazy_until_it_is_called(): | CODE |
| LOW | sdk/python/tests/test_packaging.py | 177 | def test_the_registry_points_at_a_module_inside_this_package(name): | CODE |
| LOW⚡ | sdk/python/tests/test_integrations.py | 106 | def test_the_four_adapters_are_pre_registered(): | CODE |
| LOW⚡ | sdk/python/tests/test_integrations.py | 127 | def test_unknown_name_raises_valueerror_listing_the_valid_ones(): | CODE |
| LOW⚡ | sdk/python/tests/test_integrations.py | 137 | def test_instrument_installs_and_reports_the_name(fake): | CODE |
| LOW⚡ | sdk/python/tests/test_integrations.py | 143 | def test_the_public_facade_reaches_the_registry(fake): | CODE |
| LOW⚡ | sdk/python/tests/test_integrations.py | 152 | def test_options_reach_the_adapter(fake): | CODE |
| LOW⚡ | sdk/python/tests/test_integrations.py | 157 | def test_instrumenting_twice_is_a_noop(fake): | CODE |
| LOW⚡ | sdk/python/tests/test_integrations.py | 163 | def test_uninstrument_calls_uninstall_once(fake): | CODE |
| LOW⚡ | sdk/python/tests/test_integrations.py | 170 | def test_uninstrument_of_something_never_instrumented_is_a_noop(fake): | CODE |
| LOW⚡ | sdk/python/tests/test_integrations.py | 175 | def test_uninstrument_of_an_unknown_name_does_not_raise(caplog): | CODE |
| LOW⚡ | sdk/python/tests/test_integrations.py | 182 | def test_bare_instrument_with_nothing_imported_warns_rather_than_going_quiet( | CODE |
| LOW⚡ | sdk/python/tests/test_integrations.py | 238 | def test_a_failing_install_raises_under_strict(monkeypatch): | CODE |
| 1690 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | osv-scanner.toml | 1 | # OSV-Scanner allow-list — auto-loaded by the Supply Chain CI gate | COMMENT |
| LOW | osv-scanner.toml | 21 | # justifies it and the conditions attached. Note the different date key there — | COMMENT |
| LOW | osv-scanner.toml | 41 | # crewai 1.15.27 requires `chromadb~=1.5.9`, which moved the lock from 1.1.1 | COMMENT |
| LOW | osv-scanner.toml | 81 | reason = "chromadb 1.5.9 (published 2026-06-12, surfaced 2026-08-24). No fixed version. Transitive via crewai, dev/test | COMMENT |
| LOW | hermes-plugin/__init__.py | 61 | _HANDOFF_LIMIT = 256 | COMMENT |
| LOW | hermes-plugin/__init__.py | 221 | return values[key] | COMMENT |
| LOW | crates/fpai-collect/Cargo.toml | 21 | # four targets and pulling OpenSSL onto each of them is the kind of build | COMMENT |
| LOW | crates/fpai-collect/Cargo.toml | 41 | # `bundled` vendors libsqlite3 rather than linking the host's, so the four | COMMENT |
| LOW | crates/fpai-collect/tests/hooks_jev.rs | 721 | } | COMMENT |
| LOW | crates/fpai-collect/tests/hooks_jev.rs | 941 | "rm", | COMMENT |
| LOW | crates/fpai-collect/tests/hooks_jev.rs | 1461 | agg["jev_latency_ms"], 50.0, | COMMENT |
| LOW | crates/fpai-collect/tests/claude_source.rs | 741 | } | COMMENT |
| LOW | crates/fpai-collect/tests/hooks_source.rs | 561 | let plain = events | COMMENT |
| LOW | crates/fpai-collect/tests/uploader_private_ca.rs | 1 | //! The daemon trusts a private CA that the machine trusts. | COMMENT |
| LOW | crates/fpai-collect/tests/opencode_source.rs | 1 | //! opencode source: transform correctness and poll behaviour, against REAL | COMMENT |
| LOW | crates/fpai-collect/tests/health_delivery.rs | 1 | //! The health file must be able to say whether anything is ARRIVING. | COMMENT |
| LOW | crates/fpai-collect/tests/antigravity_source.rs | 1 | //! Antigravity (agy) source: transform correctness and engine behaviour. | COMMENT |
| LOW | crates/fpai-collect/tests/codex_source.rs | 241 | #[test] | COMMENT |
| LOW | crates/fpai-collect/tests/hermes_source.rs | 1 | //! Hermes source: transform correctness and engine behaviour, against REAL | COMMENT |
| LOW | crates/fpai-collect/tests/extra_paths_engine.rs | 1 | //! Extra capture paths, end to end through the real engines. | COMMENT |
| LOW | crates/fpai-collect/src/test_env.rs | 1 | //! ONE lock for every test in this crate that reads or writes the | COMMENT |
| LOW | crates/fpai-collect/src/uploader.rs | 1 | //! Ships spooled batches to the ingest endpoint. | COMMENT |
| LOW | crates/fpai-collect/src/uploader.rs | 21 | //! | COMMENT |
| LOW | crates/fpai-collect/src/uploader.rs | 141 | impl std::error::Error for UploadError {} | COMMENT |
| LOW | crates/fpai-collect/src/uploader.rs | 381 | // identically until the URL is fixed. | COMMENT |
| LOW | crates/fpai-collect/src/uploader.rs | 481 | /// accepted ack — `{"accepted":3,"skipped":1}` — was treated as a plain | COMMENT |
| LOW | crates/fpai-collect/src/health.rs | 1 | //! Per-source liveness, written to `~/.failproofai/collector-health.json`. | COMMENT |
| LOW | crates/fpai-collect/src/health.rs | 41 | pub root_present: bool, | COMMENT |
| LOW | crates/fpai-collect/src/health.rs | 61 | /// a source's job ends when it writes a batch to the spool. Everything after | COMMENT |
| LOW | crates/fpai-collect/src/health.rs | 81 | /// ones. Before any of this the only trace was a line in the daemon's log. | COMMENT |
| LOW | crates/fpai-collect/src/health.rs | 101 | /// When this snapshot was written, so a reader can tell a stale file from a | COMMENT |
| LOW | crates/fpai-collect/src/health.rs | 221 | /// them vary. Unset until the daemon installs one, and every method on the | COMMENT |
| LOW | crates/fpai-collect/src/health.rs | 461 | /// every credential rotation, every `[collector]` config change and every | COMMENT |
| LOW | crates/fpai-collect/src/spool.rs | 1 | //! Durable hand-off between a source and the uploader. | COMMENT |
| LOW | crates/fpai-collect/src/spool.rs | 61 | /// `agent_id` — a per-project/per-harness identity — and the fleet views | COMMENT |
| LOW | crates/fpai-collect/src/spool.rs | 221 | COMMENT | |
| LOW | crates/fpai-collect/src/supervisor.rs | 1 | //! Fault-isolated host for every collector task. | COMMENT |
| LOW | crates/fpai-collect/src/supervisor.rs | 21 | //! unchanged — converting it would mean rewriting the connection handling | COMMENT |
| LOW | crates/fpai-collect/src/supervisor.rs | 61 | /// off. Shutdown latency is bounded by this, so it stays well under the flush | COMMENT |
| LOW | crates/fpai-collect/src/supervisor.rs | 181 | /// Counters a caller (or a test) can read without stopping the supervisor. | COMMENT |
| LOW | crates/fpai-collect/src/config.rs | 1 | //! Collector configuration: where to send events, and what to collect. | COMMENT |
| LOW | crates/fpai-collect/src/config.rs | 21 | //! machine that has not opted in pays nothing for this code existing. Session | COMMENT |
| LOW | crates/fpai-collect/src/config.rs | 41 | /// | COMMENT |
| LOW | crates/fpai-collect/src/config.rs | 81 | fn default_url() -> String { | COMMENT |
| LOW | crates/fpai-collect/src/config.rs | 101 | Decisions, | COMMENT |
| LOW | crates/fpai-collect/src/config.rs | 121 | /// | COMMENT |
| LOW | crates/fpai-collect/src/config.rs | 141 | pub config_generation: Option<String>, | COMMENT |
| LOW | crates/fpai-collect/src/config.rs | 161 | #[serde(default)] | COMMENT |
| LOW | crates/fpai-collect/src/config.rs | 301 | /// Which agents this machine traces: the `agents` object at the TOP LEVEL of | COMMENT |
| LOW | crates/fpai-collect/src/config.rs | 401 | pub ingest: Option<Ingest>, | COMMENT |
| LOW | crates/fpai-collect/src/config.rs | 441 | impl CollectorConfig { | COMMENT |
| LOW | crates/fpai-collect/src/config.rs | 781 | fn tighten_home(_home: &Path) {} | COMMENT |
| LOW | crates/fpai-collect/src/config.rs | 941 | unsafe { | COMMENT |
| LOW | crates/fpai-collect/src/lib.rs | 1 | //! Session-log and hook-activity collection for `failproofaid`. | COMMENT |
| LOW | crates/fpai-collect/src/filetail.rs | 1 | //! Generic tailer for agents that keep sessions in append-structured JSONL. | COMMENT |
| LOW | crates/fpai-collect/src/filetail.rs | 41 | /// Leading lines read once per file, and reused for every question that needs | COMMENT |
| LOW | crates/fpai-collect/src/filetail.rs | 61 | /// life and persisted in the cursor, so it is identical across polls and | COMMENT |
| LOW | crates/fpai-collect/src/filetail.rs | 81 | #[derive(Clone, Copy)] | COMMENT |
| LOW | crates/fpai-collect/src/filetail.rs | 101 | /// | COMMENT |
| LOW | crates/fpai-collect/src/filetail.rs | 141 | /// | COMMENT |
| 687 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hermes-plugin/client.py | 3 | CODE | |
| LOW | hermes-plugin/ledger.py | 3 | CODE | |
| LOW | hermes-plugin/__init__.py | 3 | CODE | |
| LOW | sdk/python/failproofai_sdk/__init__.py | 19 | CODE | |
| LOW | sdk/python/failproofai_sdk/__init__.py | 22 | CODE | |
| LOW | sdk/python/failproofai_sdk/__init__.py | 22 | CODE | |
| LOW | sdk/python/failproofai_sdk/__init__.py | 22 | CODE | |
| LOW | sdk/python/failproofai_sdk/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/__init__.py | 24 | CODE | |
| LOW | sdk/python/failproofai_sdk/__init__.py | 24 | CODE | |
| LOW | sdk/python/failproofai_sdk/__init__.py | 24 | CODE | |
| LOW | sdk/python/failproofai_sdk/_scopes.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/protocol.py | 3 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/client.py | 3 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 7 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 7 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 7 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 7 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 7 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 7 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 7 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 7 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 17 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 17 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 17 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 17 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 23 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 54 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 54 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 55 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 55 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 55 | CODE | |
| 143 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | hermes-plugin/__init__.py | 116 | except Exception: | CODE |
| HIGH | hermes-plugin/__init__.py | 618 | except Exception: | CODE |
| HIGH | sdk/python/failproofai_sdk/_writer.py | 750 | except OSError: # pragma: no cover - platform dependent | CODE |
| HIGH | sdk/python/failproofai_sdk/_events.py | 318 | except (StopIteration, RuntimeError): # emptied or resized under us | CODE |
| HIGH | sdk/python/failproofai_sdk/evaluator/runtime.py | 845 | except (ValueError, AttributeError): | CODE |
| HIGH | sdk/python/failproofai_sdk/evaluator/runtime.py | 938 | except asyncio.CancelledError: | CODE |
| HIGH | sdk/python/failproofai_sdk/evaluator/runtime.py | 965 | except asyncio.TimeoutError: | CODE |
| HIGH | sdk/python/failproofai_sdk/evaluator/authoring.py | 414 | except (NotImplementedError, RuntimeError): | CODE |
| HIGH | sdk/python/failproofai_sdk/evaluator/source.py | 260 | except OSError: | CODE |
| HIGH | sdk/python/failproofai_sdk/integrations/_core.py | 720 | except (ValueError, AttributeError, TypeError): | CODE |
| HIGH | sdk/python/failproofai_sdk/integrations/_core.py | 288 | except (AttributeError, TypeError): | CODE |
| HIGH | sdk/python/tests/test_scopes.py | 226 | except KeyboardInterrupt: | CODE |
| HIGH | sdk/python/tests/test_scopes.py | 237 | except SystemExit: | CODE |
| HIGH | sdk/python/tests/test_scopes.py | 253 | except asyncio.CancelledError: | CODE |
| HIGH | sdk/python/tests/test_scopes.py | 264 | except GeneratorExit: | CODE |
| HIGH | sdk/python/tests/test_evaluator_request_id.py | 79 | except Exception: # noqa: BLE001 - the response shape is not under test here | CODE |
| HIGH | fp-cloud-cli/fp_cli/auth.py | 184 | except httpx.RequestError: | CODE |
| HIGH | fp-cloud-cli/fp_cli/config.py | 266 | except FileNotFoundError: | CODE |
| HIGH | fp-cloud-cli/fp_cli/config.py | 204 | except OSError: | CODE |
| HIGH | fp-cloud-cli/fp_cli/config.py | 289 | except OSError: | CODE |
| HIGH | fp-cloud-cli/fp_cli/client.py | 1698 | except ValueError: | CODE |
| HIGH | fp-cloud-cli/fp_cli/app.py | 233 | except Exception: | CODE |
| HIGH | fp-cloud-cli/fp_cli/analytics.py | 128 | except Exception: | CODE |
| HIGH | fp-cloud-cli/fp_cli/analytics.py | 239 | except Exception: | CODE |
| HIGH | fp-cloud-cli/fp_cli/analytics.py | 285 | except Exception: | CODE |
| HIGH | fp-cloud-cli/fp_cli/analytics.py | 303 | except Exception: | CODE |
| HIGH | fp-cloud-cli/fp_cli/analytics.py | 374 | except Exception: | CODE |
| HIGH | fp-cloud-cli/fp_cli/analytics.py | 330 | except Exception: | CODE |
| HIGH | fp-cloud-cli/fp_cli/analytics.py | 334 | except Exception: | CODE |
| HIGH | fp-cloud-cli/fp_cli/output.py | 3125 | except ValueError: | CODE |
| HIGH | fp-cloud-cli/fp_cli/commands/queries_cmds.py | 50 | except ValueError: | CODE |
| HIGH | fp-cloud-cli/fp_cli/commands/queries_cmds.py | 54 | except ValueError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | hermes-plugin/__init__.py | 150 | def _hermes_home() -> Path: | CODE |
| MEDIUM | hermes-plugin/__init__.py | 560 | def _plugin_version() -> str: | CODE |
| MEDIUM | hermes-plugin/__init__.py | 569 | def _hermes_version() -> str: | CODE |
| LOW⚡ | hermes-plugin/__init__.py | 1026 | except Exception as exc: | CODE |
| LOW⚡ | hermes-plugin/__init__.py | 1034 | except Exception as exc: | CODE |
| LOW⚡ | hermes-plugin/__init__.py | 1037 | except Exception as exc: | CODE |
| LOW | hermes-plugin/__init__.py | 116 | except Exception: | CODE |
| LOW | hermes-plugin/__init__.py | 157 | except Exception: | CODE |
| LOW | hermes-plugin/__init__.py | 185 | except Exception as exc: | CODE |
| LOW | hermes-plugin/__init__.py | 191 | except Exception as exc: | CODE |
| LOW | hermes-plugin/__init__.py | 214 | except Exception as exc: | CODE |
| LOW | hermes-plugin/__init__.py | 338 | except Exception: | CODE |
| LOW | hermes-plugin/__init__.py | 378 | except Exception: | CODE |
| LOW | hermes-plugin/__init__.py | 444 | except Exception: | CODE |
| LOW | hermes-plugin/__init__.py | 480 | except Exception as exc: | CODE |
| LOW | hermes-plugin/__init__.py | 532 | except Exception as exc: | CODE |
| LOW | hermes-plugin/__init__.py | 565 | except Exception: | CODE |
| LOW | hermes-plugin/__init__.py | 574 | except Exception: | CODE |
| LOW | hermes-plugin/__init__.py | 590 | except Exception as exc: | CODE |
| LOW | hermes-plugin/__init__.py | 613 | except Exception as exc: | CODE |
| LOW | hermes-plugin/__init__.py | 618 | except Exception: | CODE |
| LOW | hermes-plugin/__init__.py | 632 | except Exception as exc: | CODE |
| LOW | hermes-plugin/__init__.py | 722 | except Exception as exc: | CODE |
| LOW | hermes-plugin/__init__.py | 789 | except Exception as exc: | CODE |
| LOW | hermes-plugin/__init__.py | 864 | except Exception as exc: | CODE |
| LOW | hermes-plugin/__init__.py | 877 | except Exception as exc: | CODE |
| LOW | hermes-plugin/__init__.py | 881 | except Exception as exc: | CODE |
| LOW | hermes-plugin/__init__.py | 919 | except Exception as exc: | CODE |
| LOW | hermes-plugin/__init__.py | 1007 | except Exception: | CODE |
| LOW | sdk/python/failproofai_sdk/_writer.py | 197 | except Exception: # pragma: no cover - a container whose iteration raises | CODE |
| LOW | sdk/python/failproofai_sdk/_writer.py | 220 | except Exception: # pragma: no cover - a container whose iteration raises | CODE |
| LOW | sdk/python/failproofai_sdk/_writer.py | 331 | except Exception: | CODE |
| LOW | sdk/python/failproofai_sdk/_writer.py | 347 | except Exception: | CODE |
| LOW | sdk/python/failproofai_sdk/_writer.py | 394 | except Exception: # pragma: no cover - `entry` already encoded once | CODE |
| LOW | sdk/python/failproofai_sdk/_writer.py | 433 | except Exception: | CODE |
| LOW | sdk/python/failproofai_sdk/_writer.py | 456 | except Exception: # pragma: no cover - defensive | CODE |
| LOW | sdk/python/failproofai_sdk/_writer.py | 594 | except Exception: | CODE |
| LOW | sdk/python/failproofai_sdk/_writer.py | 626 | except Exception: | CODE |
| LOW | sdk/python/failproofai_sdk/evaluator/runtime.py | 250 | except Exception: | CODE |
| LOW | sdk/python/failproofai_sdk/evaluator/runtime.py | 482 | except Exception as error: # noqa: BLE001 - isolates customer condition code | CODE |
| LOW | sdk/python/failproofai_sdk/evaluator/runtime.py | 719 | except Exception as error: # noqa: BLE001 - converts customer eval failures | CODE |
| LOW | sdk/python/failproofai_sdk/evaluator/runtime.py | 761 | except Exception as error: # noqa: BLE001 - cancellation hooks are customer code | CODE |
| LOW | sdk/python/failproofai_sdk/evaluator/runtime.py | 819 | except Exception as error: # noqa: BLE001 - keep lease renewal alive | CODE |
| LOW | sdk/python/failproofai_sdk/evaluator/runtime.py | 946 | except Exception: | CODE |
| MEDIUM | sdk/python/failproofai_sdk/evaluator/runtime.py | 238 | def register(self) -> None: | CODE |
| LOW⚡ | sdk/python/failproofai_sdk/integrations/llama_index.py | 1309 | except Exception: | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/llama_index.py | 217 | except Exception: | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/llama_index.py | 231 | except Exception: | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/llama_index.py | 244 | except Exception: | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/llama_index.py | 328 | except Exception: | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/llama_index.py | 1575 | except Exception: | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/crewai.py | 971 | except Exception: # pragma: no cover - exercised by a crewai that moved it | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/crewai.py | 1009 | except Exception: # pragma: no cover - teardown must never raise | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/crewai.py | 1535 | except Exception: # pragma: no cover - teardown must never raise | CODE |
| MEDIUM | sdk/python/failproofai_sdk/integrations/crewai.py | 968 | def _patch_task_human_input(self) -> None: | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/__init__.py | 189 | except Exception as exc: | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/__init__.py | 203 | except Exception: | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/__init__.py | 263 | except Exception: | CODE |
| LOW⚡ | sdk/python/failproofai_sdk/integrations/_core.py | 317 | except Exception: | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/_core.py | 157 | except Exception: | CODE |
| 41 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | sdk/python/failproofai_sdk/integrations/otel.py | 14 | _METADATA = b'{"path":"/v1/traces","content_type":"application/json","encoding":null}\n' | CODE |
| HIGH | fp-cloud-cli/fp_cli/models.py | 909 | #: only `label` showed the machine's own (usually null) name and silently | COMMENT |
| HIGH | fp-cloud-cli/fp_cli/models.py | 957 | Mirrors `machinePicker.ts`: `labelOverride || label || machineId`. The | STRING |
| HIGH | fp-cloud-cli/fp_cli/policy_check.py | 143 | export const customPolicies = { add: (p) => { registered.push(p); } }; | CODE |
| HIGH⚡ | fp-cloud-cli/fp_cli/policy_check.py | 167 | out.push({ name: p.name ?? "(unnamed)", description: p.description ?? null, | CODE |
| HIGH⚡ | fp-cloud-cli/fp_cli/policy_check.py | 167 | out.push({ name: p.name ?? "(unnamed)", description: p.description ?? null, | CODE |
| HIGH⚡ | fp-cloud-cli/fp_cli/policy_check.py | 172 | out.push({ name: p.name ?? "(unnamed)", description: p.description ?? null, | CODE |
| HIGH⚡ | fp-cloud-cli/fp_cli/policy_check.py | 172 | out.push({ name: p.name ?? "(unnamed)", description: p.description ?? null, | CODE |
| HIGH⚡ | fp-cloud-cli/fp_cli/policy_check.py | 178 | out.push({ name: p.name ?? "(unnamed)", description: p.description ?? null, | CODE |
| HIGH⚡ | fp-cloud-cli/fp_cli/policy_check.py | 178 | out.push({ name: p.name ?? "(unnamed)", description: p.description ?? null, | CODE |
| HIGH⚡ | fp-cloud-cli/fp_cli/policy_check.py | 179 | decision: r?.decision ?? "allow", reason: r?.reason ?? null }); | CODE |
| HIGH⚡ | fp-cloud-cli/fp_cli/policy_check.py | 181 | out.push({ name: p.name ?? "(unnamed)", error: String(e && e.message || e) }); | CODE |
| HIGH⚡ | fp-cloud-cli/fp_cli/policy_check.py | 181 | out.push({ name: p.name ?? "(unnamed)", error: String(e && e.message || e) }); | CODE |
| HIGH⚡ | fp-cloud-cli/fp_cli/policy_check.py | 181 | out.push({ name: p.name ?? "(unnamed)", error: String(e && e.message || e) }); | CODE |
| HIGH | fp-cloud-cli/fp_cli/client.py | 1774 | then emitting ``{"…": [...], "next_cursor": null}``, which positively asserts | STRING |
| HIGH | fp-cloud-cli/fp_cli/output.py | 4447 | comment (``deleted_at`` set, or ``body`` null) shows a dim italic ``(deleted)`` tombstone; the | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | crates/fpai-collect/tests/hooks_source.rs | 438 | // real row arrives unattributed and the guardrails view can only report that | COMMENT |
| MEDIUM | crates/fpai-collect/src/sources/claude/mod.rs | 225 | /// (`openclaw-local`, `agentic-test`, `sensor-app`). The `cwd` field is exact. | COMMENT |
| MEDIUM | __tests__/hooks/publish-authoring.test.ts | 154 | // The scaffold has to survive the loader's own rules, or the first thing a | COMMENT |
| MEDIUM | __tests__/lib/codex-projects.test.ts | 158 | // /home/u/agentic-test encodes to -home-u-agentic-test, which decodeFolderName would | COMMENT |
| MEDIUM | __tests__/lib/codex-projects.test.ts | 159 | // erroneously turn into /home/u/agentic/test. Re-encoding-from-cwd preserves the dash. | COMMENT |
| MEDIUM | sdk/python/failproofai_sdk/_events.py | 264 | # the ordinary multi-agent shape — collided on any shared step id. Starting | COMMENT |
| MEDIUM | sdk/python/failproofai_sdk/_events.py | 301 | # long-running multi-agent process this cap exists for in the first | COMMENT |
| MEDIUM | sdk/python/failproofai_sdk/integrations/llama_index.py | 172 | #: "a real RAG prompt is well over 2 KiB". This is the RAG-first framework. It | COMMENT |
| MEDIUM | sdk/python/failproofai_sdk/integrations/crewai.py | 764 | # -- flow methods and guardrails: hook pairs ---------------------------- | COMMENT |
| MEDIUM | sdk/python/failproofai_sdk/integrations/langchain.py | 154 | #: prompt and the completion. A real RAG prompt is well over 2 KiB, so the | COMMENT |
| MEDIUM⚡ | sdk/python/tests/integrations/test_langchain.py | 2222 | # read. A real RAG prompt clears 2 KiB comfortably, so the tightening fired on | COMMENT |
| MEDIUM | sdk/typescript/test/mastra.test.ts | 177 | // The agentic loop's workflows carry InternalSpans.WORKFLOW (1) or ALL (15). | COMMENT |
| MEDIUM | fp-cloud-cli/skill/references/commands.md | 20 | - [policies · fleet · guardrails](#policies--fleet--guardrails) | CODE |
| MEDIUM | fp-cloud-cli/skill/references/commands.md | 249 | ## policies · fleet · guardrails | COMMENT |
| MEDIUM | fp-cloud-cli/skill/references/commands.md | 297 | ### guardrails | COMMENT |
| MEDIUM⚡ | fp-cloud-cli/tests/test_output.py | 241 | # ── multi-agent roster (agents column) ───────────────────────────────────── | COMMENT |
| MEDIUM⚡ | fp-cloud-cli/tests/test_output.py | 267 | # a legacy row with no `agents` field is never multi-agent (back-compat) | COMMENT |
| MEDIUM | fp-cloud-cli/tests/test_commands.py | 558 | # ── multi-agent roster (agents column) ───────────────────────────────────── | COMMENT |
| MEDIUM | fp-cloud-cli/fp_cli/models.py | 211 | # cast. ``None`` on older servers that predate the multi-agent roster. | COMMENT |
| MEDIUM | fp-cloud-cli/fp_cli/output.py | 700 | # name: `policies`, `fleet` and `guardrails` — the entire ENFORCE surface — | COMMENT |
| MEDIUM | fp-cloud-cli/fp_cli/commands/guardrails_cmds.py | 135 | # A pure container, like every other group in this CLI: bare `fp guardrails` | COMMENT |
| MEDIUM | src/audit/features.ts | 78 | // ── cowboy ── destructive / forceful / bypasses guardrails (21) ─────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | __tests__/ci/release-pipeline.test.ts | 655 | const built = workflow("build-daemon.yml").jobs.build.strategy.matrix.include.map( | CODE |
| CRITICAL⚡ | fp-cloud-cli/tests/test_auth_mode.py | 78 | assert "ae_session=env-tok" in api_route.calls.last.request.headers.get("cookie", "") | CODE |
| CRITICAL⚡ | fp-cloud-cli/tests/test_orgs.py | 304 | assert route.calls.last.request.headers.get("X-AgentEye-Org") == "acme" | CODE |
| CRITICAL⚡ | fp-cloud-cli/tests/test_orgs.py | 317 | assert route.calls.last.request.headers.get("X-AgentEye-Org") == "globex" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hermes-plugin/ledger.py | 88 | CODE | |
| LOW | __tests__/e2e/layout/cli-login-driver.py | 35 | CODE | |
| LOW | sdk/python/failproofai_sdk/_writer.py | 602 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/client.py | 255 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/runtime.py | 271 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/runtime.py | 367 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/runtime.py | 767 | CODE | |
| LOW | sdk/python/failproofai_sdk/evaluator/source.py | 148 | CODE | |
| LOW | sdk/python/failproofai_sdk/integrations/llama_index.py | 1355 | CODE | |
| LOW | sdk/python/failproofai_sdk/integrations/llama_index.py | 542 | CODE | |
| LOW | sdk/python/failproofai_sdk/integrations/llama_index.py | 596 | CODE | |
| LOW | sdk/python/failproofai_sdk/integrations/llama_index.py | 1223 | CODE | |
| LOW | sdk/python/failproofai_sdk/integrations/llama_index.py | 1388 | CODE | |
| LOW | sdk/python/failproofai_sdk/integrations/__init__.py | 142 | CODE | |
| LOW | sdk/python/failproofai_sdk/integrations/_core.py | 398 | CODE | |
| LOW | sdk/python/failproofai_sdk/integrations/langchain.py | 976 | CODE | |
| LOW | sdk/python/failproofai_sdk/integrations/langchain.py | 1392 | CODE | |
| LOW | sdk/python/failproofai_sdk/integrations/pydantic_ai.py | 277 | CODE | |
| LOW | sdk/python/failproofai_sdk/integrations/pydantic_ai.py | 678 | CODE | |
| LOW | sdk/python/failproofai_sdk/integrations/otel.py | 84 | CODE | |
| LOW | sdk/python/tests/test_no_customer_identifiers.py | 77 | CODE | |
| LOW | sdk/python/tests/test_no_customer_identifiers.py | 126 | CODE | |
| LOW | sdk/python/tests/test_no_customer_identifiers.py | 147 | CODE | |
| LOW | sdk/python/tests/test_no_customer_identifiers.py | 183 | CODE | |
| LOW | sdk/python/tests/test_durability.py | 201 | CODE | |
| LOW | sdk/python/tests/test_durability.py | 214 | CODE | |
| LOW | sdk/python/tests/test_site_docs.py | 347 | CODE | |
| LOW | sdk/python/tests/test_scopes.py | 131 | CODE | |
| LOW | sdk/python/tests/test_zero_dependencies.py | 77 | CODE | |
| LOW | sdk/python/tests/test_zero_dependencies.py | 194 | CODE | |
| LOW | sdk/python/tests/integrations/test_llama_index.py | 490 | CODE | |
| LOW | sdk/python/docs/manual/examples/research_agent.py | 97 | CODE | |
| LOW | fp-cloud-cli/tests/test_no_customer_identifiers.py | 63 | CODE | |
| LOW | fp-cloud-cli/tests/test_no_customer_identifiers.py | 100 | CODE | |
| LOW | fp-cloud-cli/tests/test_no_customer_identifiers.py | 159 | CODE | |
| LOW | fp-cloud-cli/tests/test_help_table_coverage.py | 94 | CODE | |
| LOW | fp-cloud-cli/tests/test_click_compat.py | 39 | CODE | |
| LOW | fp-cloud-cli/tests/test_cloud_human_views.py | 41 | CODE | |
| LOW | fp-cloud-cli/tests/fake_cloud_smoke.py | 190 | CODE | |
| LOW | fp-cloud-cli/fp_cli/evaluator_spec.py | 84 | CODE | |
| LOW | fp-cloud-cli/fp_cli/policy_check.py | 312 | CODE | |
| LOW | fp-cloud-cli/fp_cli/policy_check.py | 331 | CODE | |
| LOW | fp-cloud-cli/fp_cli/policy_check.py | 393 | CODE | |
| LOW | fp-cloud-cli/fp_cli/client.py | 1673 | CODE | |
| LOW | fp-cloud-cli/fp_cli/client.py | 1704 | CODE | |
| LOW | fp-cloud-cli/fp_cli/client.py | 1792 | CODE | |
| LOW | fp-cloud-cli/fp_cli/cloud_output.py | 92 | CODE | |
| LOW | fp-cloud-cli/fp_cli/cloud_output.py | 141 | CODE | |
| LOW | fp-cloud-cli/fp_cli/cloud_output.py | 331 | CODE | |
| LOW | fp-cloud-cli/fp_cli/cloud_output.py | 438 | CODE | |
| LOW | fp-cloud-cli/fp_cli/_context.py | 287 | CODE | |
| LOW | fp-cloud-cli/fp_cli/permissions.py | 187 | CODE | |
| LOW | fp-cloud-cli/fp_cli/select.py | 115 | CODE | |
| LOW | fp-cloud-cli/fp_cli/select.py | 283 | CODE | |
| LOW | fp-cloud-cli/fp_cli/output.py | 890 | CODE | |
| LOW | fp-cloud-cli/fp_cli/output.py | 1359 | CODE | |
| LOW | fp-cloud-cli/fp_cli/output.py | 3669 | CODE | |
| LOW | fp-cloud-cli/fp_cli/output.py | 4962 | CODE | |
| LOW | fp-cloud-cli/fp_cli/output.py | 5577 | CODE | |
| LOW | fp-cloud-cli/fp_cli/output.py | 6284 | CODE | |
| 4 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | sdk/python/failproofai_sdk/_events.py | 259 | # harness's own step id — got a `hook_completed` that consumed the `tool_use` | COMMENT |
| MEDIUM | .github/workflows/integration-suite.yml | 26 | # integration-suite/ci-entrypoint.sh, so the harness is readable — and runnable — | COMMENT |
| MEDIUM | .github/workflows/integration-suite.yml | 106 | # after the first successful run on main). This harness was renamed from | COMMENT |
| MEDIUM⚡ | fp-cloud-cli/tests/test_orgs.py | 75 | # normally does), so stdout here is "<echo>\n<envelope>". That prefix is a harness artifact, | COMMENT |
| MEDIUM | fp-cloud-cli/fp_cli/commands/fleet_cmds.py | 263 | # retrying harness re-running the same deploy should succeed, not error. | COMMENT |
| MEDIUM | fp-cloud-cli/fp_cli/commands/policies_cmds.py | 254 | # the harness read success, and the syntax error surfaced at enforcement | COMMENT |
| MEDIUM | integration-suite/ci-entrypoint.sh | 8 | # step that actually *does* something lives here, so the harness can be read — | COMMENT |
| MEDIUM | integration-suite/ci-entrypoint.sh | 99 | # This harness was renamed from `cli-integration`, which took the Actions cache | COMMENT |
| MEDIUM | integration-suite/local/job-entrypoint.sh | 8 | # WHAT THIS TRADES AWAY, deliberately. The old split let a harness change reach | COMMENT |
| MEDIUM⚡ | integration-suite/local/jobs/canary.sh | 10 | # evolves with the harness, and the box picks changes up through the checkout — | COMMENT |
| MEDIUM⚡ | integration-suite/local/jobs/canary.sh | 11 | # nobody rebuilds the boss's image for a harness tweak. | COMMENT |
| MEDIUM | integration-suite/local/jobs/canary.sh | 29 | # the only harness default rooted elsewhere ($HOME), so pin it here. | COMMENT |
| MEDIUM | integration-suite/local/jobs/canary.sh | 118 | # already carries the story); non-zero WITHOUT one means the harness died | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/changelog-open.py | 0 | a message a maintainer can act on, printed without a traceback. | STRING |
| HIGH | scripts/changelog-section.py | 0 | a message a maintainer can act on, printed without a traceback. | STRING |
| HIGH | scripts/python-version.py | 0 | a message a maintainer can act on, printed without a traceback. | STRING |
| HIGH | fp-cloud-cli/fp_cli/commands/queries_cmds.py | 0 | resolve an audit by **name** (primary), falling back to an exact id match, raising a typed error the central chokepoint | STRING |
| HIGH | fp-cloud-cli/fp_cli/commands/alerts_cmds.py | 0 | resolve an audit by **name** (primary), falling back to an exact id match, raising a typed error the central chokepoint | STRING |
| HIGH | fp-cloud-cli/fp_cli/commands/audits_cmds.py | 0 | resolve an audit by **name** (primary), falling back to an exact id match, raising a typed error the central chokepoint | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | sdk/python/failproofai_sdk/_events.py | 443 | CODE | |
| LOW | fp-cloud-cli/fp_cli/evaluator_spec.py | 197 | CODE | |
| LOW | fp-cloud-cli/fp_cli/enforcement.py | 203 | CODE | |
| LOW | fp-cloud-cli/fp_cli/client.py | 873 | CODE | |
| LOW | fp-cloud-cli/fp_cli/client.py | 908 | CODE | |
| LOW | fp-cloud-cli/fp_cli/client.py | 983 | CODE | |
| LOW | fp-cloud-cli/fp_cli/client.py | 1017 | CODE | |
| LOW | fp-cloud-cli/fp_cli/client.py | 1051 | CODE | |
| LOW | fp-cloud-cli/fp_cli/client.py | 1087 | CODE | |
| LOW | fp-cloud-cli/fp_cli/app.py | 276 | CODE | |
| LOW | fp-cloud-cli/fp_cli/output.py | 413 | CODE | |
| LOW | fp-cloud-cli/fp_cli/commands/fleet_cmds.py | 152 | CODE | |
| LOW | fp-cloud-cli/fp_cli/commands/evals_cmds.py | 24 | CODE | |
| LOW | fp-cloud-cli/fp_cli/commands/events_cmds.py | 23 | CODE | |
| LOW | fp-cloud-cli/fp_cli/commands/policies_cmds.py | 604 | CODE | |
| LOW | fp-cloud-cli/fp_cli/commands/incidents_cmds.py | 91 | CODE | |
| LOW | fp-cloud-cli/fp_cli/commands/incidents_cmds.py | 135 | CODE | |
| LOW | fp-cloud-cli/fp_cli/commands/incidents_cmds.py | 713 | CODE | |
| LOW | fp-cloud-cli/fp_cli/commands/errors_cmds.py | 30 | CODE | |
| LOW | fp-cloud-cli/fp_cli/commands/evaluators_cmds.py | 72 | CODE | |
| LOW | fp-cloud-cli/fp_cli/commands/evaluators_cmds.py | 124 | CODE | |
| LOW | fp-cloud-cli/fp_cli/commands/evaluators_cmds.py | 237 | CODE | |
| LOW | fp-cloud-cli/fp_cli/commands/alerts_cmds.py | 214 | CODE | |
| LOW | fp-cloud-cli/fp_cli/commands/alerts_cmds.py | 261 | CODE | |
| LOW | fp-cloud-cli/fp_cli/commands/sessions_cmds.py | 26 | CODE | |
| LOW | fp-cloud-cli/fp_cli/commands/audits_cmds.py | 382 | CODE | |
| LOW | fp-cloud-cli/fp_cli/commands/audits_cmds.py | 466 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hermes-plugin/__init__.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | sdk/python/failproofai_sdk/_writer.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | sdk/python/failproofai_sdk/_writer.py | 576 | def set_flush_interval(self, interval: float) -> None: | CODE |
| LOW | sdk/python/failproofai_sdk/__init__.py | 29 | __all__ = [ | CODE |
| LOW | sdk/python/failproofai_sdk/_context.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | sdk/python/failproofai_sdk/_resolver.py | 118 | def set_base_dir(path: "str | Path | None") -> None: | CODE |
| LOW | sdk/python/failproofai_sdk/_environment.py | 72 | def set_environment(env: str | None) -> None: | CODE |
| LOW | sdk/python/failproofai_sdk/_events.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | sdk/python/failproofai_sdk/evaluator/__init__.py | 62 | __all__ = [ | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/crewai.py | 91 | __all__ = ["adapter", "FailproofAICrewListener"] | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/__init__.py | 53 | __all__ = ["instrument", "uninstrument", "active", "available"] | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/_core.py | 40 | __all__ = [ | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/_core.py | 110 | def set_strict(value: bool | None) -> None: | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/_compat.py | 53 | __all__ = [ | CODE |
| LOW | sdk/python/failproofai_sdk/integrations/_compat.py | 94 | def set_strict_integrations(value: bool | None) -> None: | CODE |
| LOW | fp-cloud-cli/fp_cli/_click_compat.py | 68 | __all__ = [ | CODE |
| LOW | fp-cloud-cli/fp_cli/client.py | 1425 | def set_incident_archived(ctx: ClientContext, incident_id: str, archived: bool) -> None: | CODE |
| LOW | fp-cloud-cli/fp_cli/__init__.py | 10 | __all__ = ["__version__"] | CODE |
| LOW | fp-cloud-cli/fp_cli/commands/incidents_cmds.py | 387 | def _set_archived(ctx: typer.Context, incident_id: str, archived: bool) -> None: | CODE |
| LOW | fp-cloud-cli/fp_cli/commands/keys_cmds.py | 45 | __all__ = ["PermissionTokenError", "_parse_permissions", "register"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | __tests__/hooks/cloud-connect-jev.test.ts | 59 | const ORG = { orgId: "org_123", orgSlug: "acme", orgName: "Acme Inc" }; | CODE |
| LOW | __tests__/hooks/cloud-introspect.test.ts | 40 | org_name: "Acme Inc", | CODE |
| LOW | __tests__/hooks/cloud-introspect.test.ts | 190 | expect(describeOrg({ permissions: [], orgName: "Acme Inc", orgSlug: "acme" })).toBe( | CODE |
| LOW | __tests__/hooks/cloud-connect-permissions.test.ts | 35 | const ORG = { orgId: "org_123", orgSlug: "acme", orgName: "Acme Inc" }; | CODE |
| LOW | __tests__/hooks/cloud-connect-permissions.test.ts | 88 | expect(readCredentials().org).toEqual({ id: "org_123", slug: "acme", name: "Acme Inc" }); | CODE |
| LOW | __tests__/hooks/cloud-connect-permissions.test.ts | 104 | expect(outcome.ingest.reason).toContain("Acme Inc"); | CODE |
| LOW | __tests__/actions/jev-mode-action.test.ts | 59 | org: { id: "org_1", slug: "acme", name: "Acme Inc" }, | CODE |
| LOW | fp-cloud-cli/tests/test_whoami.py | 57 | {"org_id": "o2", "org_slug": "acme", "org_name": "Acme Corp", "permission_set": "admin", | CODE |
| LOW | fp-cloud-cli/tests/test_output.py | 447 | {"is_active": False, "slug": "acme", "name": "Acme Corp", "role": "admin", "perms": 27}, | CODE |
| LOW | fp-cloud-cli/tests/fake_cloud_smoke.py | 93 | assert self.headers.get("Authorization") == "Bearer fake-key" | CODE |
| LOW | fp-cloud-cli/tests/fake_cloud_smoke.py | 209 | cmd = fp + (["--api-key", "fake-key"] if key else []) + (["--json"] if json_mode else []) + argv | CODE |
| LOW | src/hooks/semantic/redact.ts | 2079 | "example", "sample", "dummy", "fake", "mock", "placeholder", | CODE |
| LOW | src/hooks/semantic/redact.ts | 2086 | "required", "min", "max", "header", "field", "param", "params", "prompt", "label", "placeholder", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | sdk/python/failproofai_sdk/integrations/langchain.py | 180 | # This module is only ever imported by `instrument("langchain")`, so importing | COMMENT |
| MEDIUM | sdk/python/failproofai_sdk/integrations/pydantic_ai.py | 117 | # This module is only ever imported by `instrument("pydantic_ai")`, so a | COMMENT |
| MEDIUM | .github/workflows/integration-suite.yml | 24 | # This file is a THIN TRIGGER on purpose. Everything beyond the GitHub-specific | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | __tests__/ci/python-version-pipeline.test.ts | 394 | print("REFUSED")`], | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/repro-npm-install.sh | 17 | # Usage: | COMMENT |