Precise navigation with SCIP
Precise navigation is an optional accelerator. Frigg’s source-backed heuristic navigation remains valid when no precise artifacts or generator tools are available.
Artifacts
Section titled “Artifacts”Place SCIP protobuf or Frigg JSON precise-graph artifacts under:
.frigg/scip/Frigg rejects artifacts that resolve outside the repository through symlinks or escaping paths.
Full SCIP document ingest is enabled by default. The explicit equivalent is:
frigg index --full-scip-ingestSet FRIGG_FULL_SCIP_INGEST=false only when reduced ingest is intentional.
Automatic generator families
Section titled “Automatic generator families”Frigg can discover and run precise generators for:
- Rust
- Go
- TypeScript and JavaScript
- PHP
- Python
- Kotlin in matching Gradle/KTS workspaces
Generators are host-owned tools. Frigg discovers repository-local and PATH candidates but does not install language servers, compilers, package managers, or SCIP generators.
Generation can use a filtered workspace under .frigg/tmp/precise-generation/ and writes artifacts under .frigg/scip/. PHP generation can also report repository-local patch risk for compatible vendor tooling. Inspect the generator status before enabling precise generation in automation.
Repository configuration
Section titled “Repository configuration”Configure generator and ingest behavior in .frigg/precise.json:
{ "disabled_generators": ["php"], "generation_excludes": ["vendor/**", "node_modules/**", "dist/**"], "ingest_excludes": ["generated/**"], "generator_extra_args": { "rust": ["--features", "docs"] }}| Field | Effect |
|---|---|
disabled_generators |
Disable selected automatic generator families. |
generation_excludes |
Remove paths from filtered generator input. |
ingest_excludes |
Ignore matching paths while ingesting artifacts. |
generator_extra_args |
Append arguments for a selected generator. |
Read the lifecycle
Section titled “Read the lifecycle”workspace exposes compact precise status and detailed task state. The aggregate state is:
| State | Meaning |
|---|---|
ok |
Usable precise coverage is available. |
partial |
Some precise data is usable, but coverage is incomplete. |
failed |
Generation or ingest reached a terminal failure. |
unavailable |
No usable precise source is available. Heuristic navigation remains the fallback. |
Generation lifecycle phases distinguish running, timeout, and terminal failed outcomes. Failure details can include the tool, failure class, summary, and recommended action. Generator scorecards also report expected artifact paths, artifact counts, duration, and repository-local writes, executions, or patch risk.
Do not block the default search loop on precise generation. Use heuristic results while a generator runs, and verify incomplete or provisional navigation with exact search and source reads.
Failure classes and recovery
Section titled “Failure classes and recovery”Common failure classes include missing tool, timeout, environment failure, invalid output, upstream tool failure, and tool panic. Follow the returned recommendation:
- install the missing host tool
- check its environment or runtime
- rerun
frigg index - use heuristic mode while the external tool is unavailable
Related
Section titled “Related”Source Anchors
Section titled “Source Anchors”../frigg/README.md../frigg/docs/operator-runbook.md../frigg/crates/cli/src/cli_args.rs../frigg/crates/cli/src/mcp/types/workspace.rs../frigg/crates/cli/src/mcp/server/precise_graph/config.rs../frigg/crates/cli/src/mcp/server/precise_graph/generation.rs../frigg/crates/cli/src/mcp/server/precise_graph/ingest.rs../frigg/crates/cli/tests/security.rs