All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
The current source package version is 3.2.0. The public v3.2.0 GitHub
release/tag has not yet been published, so npm/GitHub release availability may
lag the source tree. Do not infer publication from package.json alone.
- Measurable hidden-label benchmark scoring for precision, recall, F1, severity-weighted recall, false positives per KLOC, calibration, repeat stability, token/cost efficiency, latency, and time to first true positive.
- Permanent benchmark quality gate and
pnpm quality:world-classrepository validation across generated assets, tests, benchmark thresholds, preflight, and package inventory. - Adaptive
fast,balanced, andassuranceexecution profiles withautoselection from deterministic risk and available benchmark evidence. - Hypothesis-driven retrieval planning with mandatory evidence plus bounded symbol, dependency, dependent, cross-reference, and trust-boundary context.
- Exact content-addressed evidence caching keyed to protocol, role, relevant configuration, hypothesis identity, and current source hashes.
- Bounded hybrid verification for tests, type checks, static checks, builds, reproduction commands, fuzzing, and security-static checks.
- Canonical
adaptive-plan.json,retrieval-plan.json,verification-report.json, andbenchmark-report.jsonschemas/artifacts. - Precision and measurable protocol documentation under
docs/precision-protocol.mdanddocs/world-class-protocol.md. - Factory Droid CLI support through the
droidinstall/doctor target, including personal, project-scoped, and legacy shared skill locations. - Protocol-aligned evaluation coverage for adaptive routing, retrieval budgets, exact-cache invalidation, required verification, source mutation, worker scope, truthful coverage, Fixer scope, and benchmark degradation.
- Freshness regression tests that reject stale task prompts, historical artifact names, old loop-default claims, and missing measurable-protocol guidance.
SKILL.mdis now a compact control-plane entrypoint: scan-only and single-pass remain explicit defaults, loop coverage is opt-in, calibration examples load progressively, and detailed protocol/mode guidance is loaded on demand instead of duplicated into every context.- Triage/indexing use the same maintained source classifier and preserve risk-prioritized order through state, delta selection, and expansion.
- Chunk sizing uses the combined estimated tokens of actual assigned files; oversized single files are isolated rather than hidden in oversized mixed chunks.
- Hunter/Skeptic calibration examples are conditional rather than mandatory context for every assignment.
- Agent metadata,
llms.txt,llms-full.txt, dispatch wrapper, onboarding, installation, usage, CLI, architecture, troubleshooting, contributor, skill, and security guidance now describe the same v3.2 protocol and canonical artifacts. - Published-package and current-GitHub-source installation paths are explicitly separated so a stale global CLI cannot be mistaken for current source.
- Package metadata now describes measurable precision-first review, adaptive retrieval, hybrid verification, and explicit mutation authorization.
- Risk order no longer collapses back to alphabetical ordering in indexed/delta execution.
- Mixed-size chunks no longer exceed the configured source-token budget because of average/percentile file-size assumptions.
- Workers cannot report findings for valid repository files outside their exact assigned chunk.
- Source mutation, deletion, unreadability, and repository-escape conditions fail the affected chunk before findings or completion state are committed.
- Resume keeps the original source baseline and rejects drift before another worker launches.
- Coverage cannot derive a file's completion solely from a parent chunk marked done.
- Duplicate observations retain strongest evidence while preserving useful cross-references and security metadata.
- Large-file hashing uses content digests rather than size/mtime identity.
- Fixer scope is limited to executable canary/rollout entries and rejects realpath/symlink escapes.
- Skeptic guidance no longer auto-dismisses concrete credential stuffing, OTP/reset abuse, lockout bypass, measurable amplification, or attacker-driven expensive operations merely because they involve rate limiting.
- Legacy task-specific frontmatter prompts and historical
findings.json/ loop-default expectations have been removed from current agent-facing docs and evals.
- Required hybrid-verification failure or unavailability blocks Fixer authorization instead of being downgraded to a clean result.
- Hybrid commands execute as inert argv with repository containment,
shell:false, secret stripping, sensitive-environment rejection, output redaction, and bounded time/output budgets. - Exact evidence-cache reuse rejects changed source/protocol/options and symlink-escaped cache shards.
- Source hashes are verified before dispatch and before findings/completion are committed, preserving fail-closed scan integrity.
- Immutable Fixer authorization binds repository root, base commit, approved bug IDs, and approved files; report-only/manual-review work remains non-writable.
- Focused getting-started, agent-installation, usage, CLI, architecture, and troubleshooting guides that ship with the npm runtime.
bug-hunter doctor --agent <name>anddoctor --path <dir>checks for the installed manifest, package version, managed inventory, and runtime files.- Onboarding contract tests for local links, interface boundaries, capability claims, packaged guides, installed-copy verification, and upgrade failures.
- Agent-neutral natural-language requests lead the README and installer output; slash commands are documented as an optional agent interface.
- README restores detailed adversarial review, security classification, threat modeling, dependency scanning, fix safety, CI/CD, language, framework, and architecture coverage while keeping fast onboarding above the fold.
- Current-source installation examples use the GitHub source archive until npm
latestreaches3.1.1. - Approval, preview, scope, canary, commit, and rollback documentation states the limits of the current runtime instead of promising unenforced behavior.
- Package installation has no lifecycle script; setup starts only when the user runs the explicit install command.
- Explicit agent selection is the recommended installation path.
- LLM-facing references separate terminal installer commands from in-agent scan arguments and link to focused guides.
- Contributor setup follows the generated-file, test, preflight, and package checks used in CI.
- CI and publish actions run on their maintained Node 24 action runtimes.
- Referee, Git-safety, and worktree-preparation failures disable fixing instead of accepting unreviewed findings or falling back to unsafe direct edits.
- Loop examples provide required worker context, use valid shell syntax, and state that experiment commits are opt-in.
- Dependency documentation matches the implemented JavaScript and TypeScript
parser and reports other ecosystems as
scanner-unsupported. - Source-only fixture guidance no longer implies that the npm package contains development fixtures.
- Hunter output instructions no longer request trailing prose after the canonical JSON array.
3.1.0 - 2026-08-03
- Scan-only, single-pass defaults; fixing, unattended edits, and commits each require explicit authority.
- Fail-closed worktree identity, fresh harvest proof, scoped staging, atomic installation, owner-token locks, and exact tag/upstream publication proof.
- Shell-free dependency, documentation, PR-scope, and worker process execution with bounded output and timeouts.
- Canonical dispatch, scan-report, and immutable Fixer-scope contracts.
- Ajv-compiled bundled validators with deterministic regeneration checks.
- Explicit run/resume identity, truthful retries, per-file coverage outcomes, and Referee-only fix authorization.
- Hidden fixture benchmark scoring, package inventory limits, Node 22/24 CI, and generated compatibility prompts from canonical role skills.
- Copilot, Windsurf, and OpenCode installer discovery plus a guarded generic loop driver for runtimes without ralph-loop tools.
- Complete audit remediation across artifact joining, schema keywords, process cleanup, state writes, stale locks, triage ordering, dependency reachability, delta scope, code indexing, installer upgrades, and release provenance.
- Bounded hashing and line-count sampling for unusually large source files.
- Harness-neutral skill instructions and README badges, compatibility details, and product imagery for GitHub and npm readers.
3.0.10 - 2026-03-14
experiment-loop.cjs:ensureParent()andappendJsonl()now have try-catch protection with descriptive error messages — previously, disk-full or permission errors threw cryptic Node.js exceptionsexperiment-loop.cjs:clearStopFile()handles ENOENT race condition — if stop file is removed betweenexistsSyncandunlinkSync, the error is ignored instead of crashingexperiment-loop.cjs:gitAutoCommit()returns{ ok, error }and logs warnings to stderr on failure — previously swallowed all errors silentlyexperiment-loop.cjs:gitCommitHash()logs a warning to stderr on failure — still returns'unknown'for backward compatibilityexperiment-loop.cjs:cmdRun()validates--timeout-msbounds (1s–1h) — previously accepted negative, zero, or absurdly large valuesexperiment-loop.cjs:runChecks()detects SIGTERM/SIGKILL/ETIMEDOUT timeouts — previously, a timed-out checks script was reported aspassed: falsewith no timeout indicatorexperiment-loop.cjs:cmdLog()validates that all--secondarymetric values are finite numbers — previously accepted strings, nulls, and other non-numeric typesfix-strategy.schema.json:maxSeverityenum standardized to["Critical","High","Medium","Low"]— removed redundant uppercase variants inconsistent with all other schemas
experiment-loop.cjs:commitOkfield inlogcommand output — surfaces whether the auto-commit succeededexperiment-loop.cjs:checksTimedOutfield inruncommand output — indicates whether the checks script hit the 5-minute timeoutexperiment-loop.cjs:validateExperimentEntry()function — validates JSONL entries before writing, enforcing per-type required fieldsexperiment.schema.json:allOfwithif/thenblocks documenting per-type required fields (for IDE/CI validation)- 12 new tests covering file I/O errors, git commit failures, timeout bounds, secondary metric type validation, checks timeout detection, and entry validation
- Test suite: 113 tests, 0 failures
3.0.9 - 2026-03-13
scripts/experiment-loop.cjs— autonomous experiment loop engine inspired by pi-autoresearch. Provides metric-driven iteration with baseline + delta tracking, append-only JSONL persistence, segmented sessions, and full state reconstruction from log alone.schemas/experiment.schema.json— JSON schema for experiment JSONL entries (config, result, resume types)check-continuecommand — single gateway that checks all loop conditions (stop file, iteration cap, consecutive crash breaker, resume cooldown) before each iteration- Hard iteration cap (default: 10, configurable via
--max-iterations) prevents runaway loops - Consecutive crash breaker (3 in a row) auto-stops to prevent token waste
- Stop-file cancellation (
experiment-loop.cjs stoportouch .bug-hunter/experiment.stop) for easy user interruption - Auto-resume with 5-minute cooldown for graceful recovery after agent context limits
- Secondary metric consistency enforcement — locks metric names after first result in a segment
- Backpressure checks — optional
experiment.checks.shscript gates keep/discard decisions - 40 new tests covering all experiment-loop commands, guardrails, and edge cases (including negative metrics, zero/negative max-iterations, --duration-ms)
- Experiment tracking is now active by default when
LOOP_MODE=true— no--experimentflag needed SKILL.mdnow auto-initializesexperiment-loop.cjsduring loop setup (init + check-continue wiring)modes/loop.mdupdated with full experiment tracking integration, per-iteration workflow, and documentation of all stop mechanisms (user-initiated vs automatic)scripts/schema-runtime.cjsregisters the newexperimentschemaschemas/experiment.schema.jsoncleaned: removed unusedcommandandpassedfields, addedmaxIterationsfieldscripts/experiment-loop.cjslogcommand now accepts--duration-msflag to persist actual iteration duration (was hardcoded to 0)llms.txtandllms-full.txtupdated with experiment loop capabilities- Test suite expanded from 61 to 101 tests (0 failures)
3.0.8 - 2026-03-13
- All 61 tests pass. Systematic reliability audit fixed 11 bugs across schemas, scripts, and the orchestrator — 10 previously-failing tests now pass, plus one new test added.
Highseverity now works end-to-end. All JSON schemas, severity ranking functions, and payload-guard templates recognizeHighas a valid severity level.- Confidence threshold is fully configurable. The
--confidence-thresholdflag now propagates through the entire pipeline — from the orchestrator throughprocessPendingChunkstorecord-findings. - Shell injection fixed in doc-lookup. Library names and IDs passed to
chubCLI are now properly shell-quoted. - Modern Bun support.
dep-scan.cjsdetectsbun.lock(Bun 1.2+ text format) alongside the legacybun.lockbbinary format.
schemas/findings.schema.json,schemas/skeptic.schema.json,schemas/referee.schema.json,schemas/fix-report.schema.json: added missingHighto severity enums — previously onlyCritical,Medium, andLowwere accepted, causing valid findings to fail schema validationscripts/bug-hunter-state.cjs:severityRank()now returns rank 2 forHighseverity — previously returned -1 (unknown), breaking severity ordering and dedup logicscripts/run-bug-hunter.cjs:classifyStrategy()added explicit parentheses around compound conditions to prevent operator-precedence misclassificationscripts/run-bug-hunter.cjs:runCommandOnce()now clears the SIGKILL failsafe timer on normal exit — previously leaked a timer handle that could fire after the process had already exitedscripts/run-bug-hunter.cjs:processPendingChunks()now receives and forwardsconfidenceThresholdtorecord-findings— previously the configurable threshold was silently ignored, always defaulting to 75scripts/worktree-harvest.cjs: commit log parsing no longer truncates the hash or drops the message when agit logline contains no space separatorscripts/dep-scan.cjs: lockfile detection now checks forbun.lock(text format, Bun ≥1.2) in addition tobun.lockbscripts/payload-guard.cjs: hunter and fixer severity template strings now includeHighalongsideCritical,Medium, andLowscripts/doc-lookup.cjs:chubSearch()andchubGet()now shell-quote all interpolated arguments via single-quote wrapping — previously, library names containing shell metacharacters could cause command injection
scripts/bug-hunter-state.cjs:record-findingscommand now accepts an optional 4th positional argument for confidence threshold (defaults to 75 for backwards compatibility)- Test suite expanded from 50 passing / 10 failing to 61 passing / 0 failing
scripts/tests/bug-hunter-state.test.cjs: new test verifying thatHighseverity findings are ranked aboveMediumandLow, and that re-recording with higher severity upgrades the existing ledger entry
3.0.7 - 2026-03-12
- All agents are now first-class skills. Hunter, Skeptic, Referee, Fixer, Recon, and Doc-Lookup are bundled under
skills/with proper frontmatter - no more loose prompt files. - Prepublish guard prevents publishing to npm without committing and pushing to GitHub first.
- CI fully green on both Node 18 and 20 with portable shell detection and explicit branch naming.
skills/hunter/SKILL.md- deep behavioral code analysis skill (migrated fromprompts/hunter.md)skills/skeptic/SKILL.md- adversarial code reviewer skill (migrated fromprompts/skeptic.md)skills/referee/SKILL.md- independent final arbiter skill (migrated fromprompts/referee.md)skills/fixer/SKILL.md- surgical code repair skill (migrated fromprompts/fixer.md)skills/recon/SKILL.md- codebase reconnaissance skill (migrated fromprompts/recon.md)skills/doc-lookup/SKILL.md- unified documentation access skill (Context Hub + Context7)scripts/prepublish-guard.cjs- blocksnpm publishwhen git working tree is dirty or commits are unpushedprepublishOnlylifecycle hook inpackage.jsonenforcing the guard
SKILL.mdorchestrator routing table now points toskills/instead ofprompts/run-bug-hunter.cjspreflight now validates all 10 bundled skillSKILL.mdfiles existrun-bug-hunter.cjsusesprocess.env.SHELL || '/bin/bash'instead of hardcoded/bin/zshfor CI portabilityworktree-harvest.test.cjsusesgit init --bare -b mainfor CI environments where default branch is notmaintemplates/subagent-wrapper.mdreferencesskills/paths instead ofprompts/skills/README.mdnow documents all 10 bundled skills (6 core agents + 4 security skills)
- All v3.0.5 code changes that were published to npm but never committed to GitHub (21 new files, 19 updated files recovered)
package.jsonversion synced to match npm-published 3.0.5→3.0.6→3.0.7
scripts/prepublish-guard.cjs- first version of the publish safety net- CI fixes for worktree tests and shell portability
- Synced all v3.0.5 changes from npm to GitHub (security skills, PR review flow, schemas, images)
3.0.5 - 2026-03-11
agents/openai.yamlUI metadata for skill lists and quick-invoke prompts
SKILL.mdfrontmatter now validates cleanly against theskill-creatorvalidatorevals/evals.jsonnow matches the current.bug-hunter/*JSON-first pipeline, default loop/fix behavior, and modern flags like--deps,--threat-model,--dry-run, and--autonomous- npm package files now include the
agents/directory soopenai.yamlships with the published skill
3.0.4 - 2026-03-11
schemas/*.schema.jsonversioned contracts for recon, findings, skeptic, referee, coverage, fix-report, plus shared definitions and example findings fixturesscripts/schema-runtime.cjslightweight schema runtime andscripts/schema-validate.cjsCLI for local artifact checksscripts/render-report.cjsMarkdown renderer for report, coverage, skeptic, referee, and fix-report views from canonical JSON artifacts- canonical
coverage.jsonoutput with derivedcoverage.md run-bug-hunter.cjs phasecommand for schema-validated Skeptic, Referee, and Fixer phase execution with retry support- runner tests for invalid Skeptic, Referee, and Fixer artifacts plus Markdown companion rendering
- Hunter, Skeptic, Referee, and Fixer prompts now describe JSON-first canonical artifacts
payload-guard.cjsnow emits real schema refs instead of placeholder format/version objectsbug-hunter-state.cjsnow rejects malformed findings and stores canonicalconfidenceScore,category,evidence,runtimeTrigger, andcrossReferencesrun-bug-hunter.cjsnow treats missing or invalidfindings.jsonas a retriable chunk failure, validates phase artifacts, and checks all shipped schema assets during preflight- loop, fix-loop, local-sequential, and major mode docs now point at
*.jsonphase artifacts andcoverage.json - README, SKILL docs, evals, and the subagent wrapper now describe rendered Markdown as a companion to canonical JSON
- preflight now checks all shipped structured-output schemas, not just findings
- structured-output migration now enforces orchestrated outbound validation beyond the local/manual path
3.0.1 - 2026-03-11
- Loop and fix-loop completion now require full queued source-file coverage, not just CRITICAL/HIGH coverage
- Autonomous runs now continue through remaining MEDIUM and LOW files after prioritized chunks finish unless the user interrupts
- Loop iteration guidance now scales
maxIterationsfrom queue size so large audits do not stop early - Large-codebase mode now treats LOW domains as part of the default autonomous queue instead of optional skipped work
3.0.0 - 2026-03-10
package.jsonwith@codexstar/bug-hunterpackage namebin/bug-hunterCLI entry point withinstall,doctor, andinfocommandsbug-hunter installauto-detects Claude Code, Codex, Cursor, Kiro, and generic agents directoriesbug-hunter doctorchecks environment readiness (Node.js, Context Hub, Context7, git)- Install via:
npm install -g @codexstar/bug-hunter && bug-hunter install - Compatible with
npx skills add codexstar69/bug-hunterfor Cursor, Windsurf, Copilot, Kiro, and Claude Code scripts/worktree-harvest.cjs- manages git worktrees for safe, isolated Fixer execution (6 subcommands:prepare,harvest,checkout-fix,cleanup,cleanup-all,status)- 13 new tests in
scripts/tests/worktree-harvest.test.cjs(full suite: 25/25 passing) - 5 new error rows in SKILL.md for worktree failures: prepare, harvest dirty, harvest no-manifest, cleanup, and checkout-fix errors
modes/fix-pipeline.mdupdated with dual-path dispatch: worktree path (prepare → dispatch → harvest → cleanup) and direct pathmodes/_dispatch.mdupdated with Fixer worktree lifecycle diagram and CRITICAL warning about Agent tool's built-inisolation: "worktree"templates/subagent-wrapper.mdupdated with{WORKTREE_RULES}variable for Fixer isolation rules- SKILL.md Step 5b now shows a visible
⚠️warning whenchubis not installed (previously a silent suggestion)
2.4.1 - 2026-03-10
scripts/triage.cjs: LOW-only repositories promoted intoscanOrderso script-heavy codebases do not collapse to zero scannable filesscripts/run-bug-hunter.cjs:teamsbackend name aligned with the documented dispatch modescripts/run-bug-hunter.cjs:code-index.cjstreated as optional during preflight and gated only when index-backed flows are requestedscripts/run-bug-hunter.cjs: low-confidence delta expansion now reuses the caller's configured--delta-hopsvalue
scripts/tests/run-bug-hunter.test.cjs: regressions for LOW-only triage, optionalcode-index,teamsbackend selection, and delta-hop expansion
2.4.0 - 2026-03-10
scripts/doc-lookup.cjs: hybrid documentation lookup that tries Context Hub (chub) first for curated, versioned, annotatable docs, then falls back to Context7 API when chub doesn't have the library- Requires
@aisuite/chubinstalled globally (npm install -g @aisuite/chub) - optional but recommended; pipeline works without it via Context7 fallback
- All agent prompts (hunter, skeptic, fixer, doc-lookup) updated to use
doc-lookup.cjsas primary withcontext7-api.cjsas explicit fallback - Preflight smoke test now checks
doc-lookup.cjsfirst, falls back tocontext7-api.cjs run-bug-hunter.cjsvalidates both scripts exist at startup
2.3.0 - 2026-03-10
LOOP_MODE=trueis the new default - every/bug-hunterinvocation iterates until full CRITICAL/HIGH coverage--loopflag still accepted for backwards compatibility (no-op)- Updated triage warnings, coverage enforcement, and all documentation to reflect the new default
--no-loopflag to opt out and get single-pass behavior
2.2.1 - 2026-03-10
modes/loop.md: added explicitralph_startcall instructions with correcttaskContentandmaxIterationsparametersmodes/fix-loop.md: same fix for--loop --fixcombined mode, plus removed manual state file creation (handled byralph_start)SKILL.md: added CRITICAL integration note requiringralph_startcall whenLOOP_MODE=true- Changed completion signal from
<promise>DONE</promise>to<promise>COMPLETE</promise>(correct ralph-loop API) - Each iteration now calls
ralph_doneto proceed instead of relying on a non-existent hook
2.2.0 - 2026-03-10
- Rollback timeout guard:
git revertcalls now timeout after 60 seconds; conflicts abort cleanly instead of hanging - Dynamic lock TTL: single-writer lock TTL scales with queue size (
max(1800, bugs * 600)) - Lock heartbeat renewal: new
renewcommand infix-lock.cjs - Fixer context budget:
MAX_BUGS_PER_FIXER = 5- large fix queues split into sequential batches - Cross-file dependency ordering: when
code-index.cjsis available, fixes are ordered by import graph - Flaky test detection: baseline tests run twice; non-deterministic failures excluded from revert decisions
- Dynamic canary sizing:
max(1, min(3, ceil(eligible * 0.2)))- canary group scales with queue size - Dry-run mode (
--dry-run): preview planned fixes without editing files - Machine-readable fix report:
.bug-hunter/fix-report.jsonfor CI/CD gating, dashboards, and ticket automation - Circuit breaker: if >50% of fix attempts fail/revert (min 3 attempts), remaining fixes are halted
- Global Phase 2 timeout: 30-minute deadline for the entire fix execution phase
- Per-bug revert granularity: clarified one-commit-per-bug as mandatory; reverts target individual bugs, not clusters
- Post-fix re-scan severity floor: fixer-introduced bugs below MEDIUM severity are logged but don't trigger
FIXER_BUGstatus
2.1.0 - 2026-03-10
- STRIDE/CWE fields in Hunter findings format, with CWE quick-reference mapping for security categories
- Skeptic hard-exclusion fast path (15 false-positive classes) before deep review
- Referee security enrichment: reachability, exploitability, CVSS 3.1, and PoC blocks for critical/high security bugs
- Threat model support:
--threat-modelflag,prompts/threat-model.md, Recon/Hunter threat-context wiring - Dependency scan support:
--depsflag andscripts/dep-scan.cjsoutput to.bug-hunter/dep-findings.json - JSON report contract:
.bug-hunter/findings.jsonplus canonical.bug-hunter/report.md - Few-shot calibration examples for Hunter and Skeptic in
prompts/examples/
dep-scan.cjslockfile-aware audits (npm,pnpm,yarn,bun) and non-zero audit exit handling so vulnerability exits are not misreported as scanner failures
2.0.0 - 2026-03-10
- Triage moved to Step 1 (after arg parse) - was running before target resolved
- All mode files consume triage JSON - riskMap, scanOrder, fileBudget flow downstream
- Recon demoted to enrichment - no longer does file classification when triage exists
- Mode files compressed: small 7.3→2.9KB, parallel 7.9→4.2KB, extended 7.1→3.3KB, scaled 7.3→2.7KB
- Skip-file patterns consolidated - single authoritative list in SKILL.md
- Error handling table updated with correct step references
- hunter.md: scope rules and security checklist compressed
- recon.md: output format template and "What to map" sections compressed
- referee.md: tiering rules, re-check section, output format compressed
- skeptic.md: false-positive patterns compressed to inline format
- Branch-diff/staged optimization note in Step 3
- single-file.md: local-sequential backend support added
modes/_dispatch.md- shared dispatch patterns (18 references across modes)
- Step 7.0 re-audit gate removed - duplicated Referee's work
- FIX-PLAN.md deleted (26KB dead planning doc)
- README.md compressed from 8.5KB to 3.7KB
- code-index.cjs marked optional
1.0.0 - 2026-03-10
scripts/triage.cjs- zero-token pre-recon triage, runs before any LLM agent (<2s for 2,000+ files)- FILE_BUDGET, strategy, and domain map decided by triage, not Recon
- Writes
.bug-hunter/triage.jsonwith strategy, fileBudget, domains, riskMap, scanOrder local-sequential.mdwith full phase-by-phase instructions- Subagent wrapper template in
templates/subagent-wrapper.md - Coverage enforcement - partial audits produce explicit warnings
- Large codebase strategy with domain-first tiered scanning