docs: add dogfood report for v2.2.3-dev#83
Conversation
…ports - Add the dogfood report that was left as an untracked file - Add Phase 10 to the dogfood skill ensuring future reports are committed with the first PR or in a dedicated PR
|
Claude finished @carlos-alm's task —— View job PR Review: docs: add dogfood report for v2.2.3-devTodo List:
Phase 1: Root Cause Analysis ✅Problem Being Solved: This PR addresses a process gap where the dogfood report from v2.2.3-dev testing was left as an untracked file after the dogfooding session completed. The dogfood skill was missing explicit instructions for committing the report to the repository. Why This Approach:
Risk Assessment: Very low risk - this is pure documentation with no code changes, configuration modifications, or functional impacts. Phase 2: Configuration Change Detection ✅No high-risk changes detected:
Phase 3: Test Integrity ✅No test-related red flags:
Phase 4: Code Quality ✅Documentation Content Quality:
Structure and Clarity:
Root Cause AnalysisProblem Being Solved: Process improvement — ensuring dogfood reports are committed rather than left untracked Critical ConcernsNone identified. This is straightforward documentation maintenance. Final Recommendation
|
Greptile SummaryThis PR adds the dogfood report for v2.2.3-dev.44e8146 that was previously left as an untracked file, and updates the dogfood skill with a new Phase 10 to ensure future reports are always committed. Key changes:
Confidence Score: 5/5
Important Files Changed
Last reviewed commit: 8247d5d |
…in backlog These two items deliver the highest immediate impact on agent experience and graph accuracy without requiring Rust porting or TypeScript migration. They should be implemented before any Phase 4+ roadmap work. - #83: hook-optimized `codegraph brief` enriches passively-injected context - #71: basic type inference closes the biggest resolution gap for TS/Java
* docs: move 3.16 items to new Phase 5 (Runtime & Extensibility) Expand the deferred Phase 3 items into a dedicated phase after TypeScript Migration with detailed descriptions for each sub-item: event-driven pipeline, unified engine strategy, subgraph export filtering, transitive confidence, query caching, config profiles, pagination standardization, and plugin system. Renumber subsequent phases 5-9 → 6-10 with all cross-references updated. * refactor: migrate integration tests to InMemoryRepository Add openRepo() utility that accepts an injected Repository instance or falls back to SQLite, enabling tests to bypass the filesystem entirely. - Add openRepo(dbPath, opts) to src/db/connection.js - Make findMatchingNodes and buildDependencyGraph polymorphic (accept db or Repository via instanceof check) - Refactor triageData, sequenceData, communitiesData to use openRepo - Convert triage, sequence, communities test fixtures to createTestRepo() fluent builder (sequence dataflow tests stay on SQLite) - Mark ROADMAP 3.13 InMemoryRepository migration item complete Impact: 10 functions changed, 11 affected * fix: use instanceof SqliteRepository guard and validate openRepo opts Impact: 2 functions changed, 18 affected * docs: add Phase 4 (Native Analysis Acceleration) to roadmap Add new Phase 4 covering the port of JS-only build phases to Rust: - 4.1-4.3: AST nodes, CFG, dataflow visitor ports (~587ms savings) - 4.4: Batch SQLite inserts (~143ms) - 4.5: Role classification & structure (~42ms) - 4.6: Complete complexity pre-computation - 4.7: Fix incremental rebuild data loss on native engine - 4.8: Incremental rebuild performance (target sub-100ms) Bump old Phases 4-10 to 5-11 with all cross-references updated. Benchmark evidence shows ~50% of native build time is spent in JS visitors that run identically on both engines.
* docs: promote #83 (brief command) and #71 (type inference) to Tier 0 in backlog These two items deliver the highest immediate impact on agent experience and graph accuracy without requiring Rust porting or TypeScript migration. They should be implemented before any Phase 4+ roadmap work. - #83: hook-optimized `codegraph brief` enriches passively-injected context - #71: basic type inference closes the biggest resolution gap for TS/Java * docs: add Phase 4 (Native Analysis Acceleration) to roadmap Add new Phase 4 covering the port of JS-only build phases to Rust: - 4.1-4.3: AST nodes, CFG, dataflow visitor ports (~587ms savings) - 4.4: Batch SQLite inserts (~143ms) - 4.5: Role classification & structure (~42ms) - 4.6: Complete complexity pre-computation - 4.7: Fix incremental rebuild data loss on native engine - 4.8: Incremental rebuild performance (target sub-100ms) Bump old Phases 4-10 to 5-11 with all cross-references updated. Benchmark evidence shows ~50% of native build time is spent in JS visitors that run identically on both engines. * docs: fix sub-section numbering to match parent phase headings
* docs: promote #83 (brief command) and #71 (type inference) to Tier 0 in backlog These two items deliver the highest immediate impact on agent experience and graph accuracy without requiring Rust porting or TypeScript migration. They should be implemented before any Phase 4+ roadmap work. - #83: hook-optimized `codegraph brief` enriches passively-injected context - #71: basic type inference closes the biggest resolution gap for TS/Java * fix: include constant nodes in edge building and downstream queries (#487) The edge-building stage excluded 'constant'-kind nodes from the node lookup maps, so no import/dependency edges were ever created for exported constants. This made them invisible to where, fn-impact, query, roles, and all other graph queries. Also adds missing 'record' kind to build-edges.js to match CORE_SYMBOL_KINDS. Impact: 6 functions changed, 33 affected * fix: include constant kind in whereSymbol and findMatchingNodes queries (#487) whereSymbolImpl used ALL_SYMBOL_KINDS (core 10, no constant) so codegraph where could not find constants. findMatchingNodes defaulted to FUNCTION_KINDS which also excluded constant. Switch whereSymbolImpl to EVERY_SYMBOL_KIND and add constant to FUNCTION_KINDS default. Impact: 1 functions changed, 6 affected
* docs: promote #83 (brief command) and #71 (type inference) to Tier 0 in backlog These two items deliver the highest immediate impact on agent experience and graph accuracy without requiring Rust porting or TypeScript migration. They should be implemented before any Phase 4+ roadmap work. - #83: hook-optimized `codegraph brief` enriches passively-injected context - #71: basic type inference closes the biggest resolution gap for TS/Java * docs: add Phase 4 (Native Analysis Acceleration) to roadmap Add new Phase 4 covering the port of JS-only build phases to Rust: - 4.1-4.3: AST nodes, CFG, dataflow visitor ports (~587ms savings) - 4.4: Batch SQLite inserts (~143ms) - 4.5: Role classification & structure (~42ms) - 4.6: Complete complexity pre-computation - 4.7: Fix incremental rebuild data loss on native engine - 4.8: Incremental rebuild performance (target sub-100ms) Bump old Phases 4-10 to 5-11 with all cross-references updated. Benchmark evidence shows ~50% of native build time is spent in JS visitors that run identically on both engines. * docs: fix sub-section numbering to match parent phase headings * fix: align version computation between publish.yml and bench-version.js - Add COMMITS=0 guard in publish.yml to return clean version when HEAD is exactly at a tag (mirrors bench-version.js early return) - Change bench-version.js to use PATCH+1-dev.COMMITS format instead of PATCH+COMMITS-dev.SHA (mirrors publish.yml's new scheme) - Fix fallback in bench-version.js to use dev.1 matching publish.yml's no-tags COMMITS=1 default Impact: 1 functions changed, 0 affected * feat: auto-detect semver bump in /release skill when no version provided The release skill now scans commit history using conventional commit rules to determine major/minor/patch automatically. Explicit version argument still works as before. * fix: restore SHA-based uniqueness in bench-version fallback and add -dev.0 suffix The no-tags fallback hardcoded dev.1, causing repeated benchmark runs to silently overwrite each other. Restore short SHA for uniqueness. Also add -dev.0 suffix when COMMITS=0 so dev builds at an exact tag are never confused with stable releases. Impact: 1 functions changed, 0 affected * fix: add -dev.0 suffix for COMMITS=0 dev builds in publish.yml When HEAD is exactly at a release tag, the dev build emitted a clean semver string identical to the stable release. Add -dev.0 suffix to prevent confusion between dev pre-releases and stable releases.
* docs: promote #83 (brief command) and #71 (type inference) to Tier 0 in backlog These two items deliver the highest immediate impact on agent experience and graph accuracy without requiring Rust porting or TypeScript migration. They should be implemented before any Phase 4+ roadmap work. - #83: hook-optimized `codegraph brief` enriches passively-injected context - #71: basic type inference closes the biggest resolution gap for TS/Java * fix: include constant nodes in edge building and downstream queries (#487) The edge-building stage excluded 'constant'-kind nodes from the node lookup maps, so no import/dependency edges were ever created for exported constants. This made them invisible to where, fn-impact, query, roles, and all other graph queries. Also adds missing 'record' kind to build-edges.js to match CORE_SYMBOL_KINDS. Impact: 6 functions changed, 33 affected * fix: include constant kind in whereSymbol and findMatchingNodes queries (#487) whereSymbolImpl used ALL_SYMBOL_KINDS (core 10, no constant) so codegraph where could not find constants. findMatchingNodes defaulted to FUNCTION_KINDS which also excluded constant. Switch whereSymbolImpl to EVERY_SYMBOL_KIND and add constant to FUNCTION_KINDS default. Impact: 1 functions changed, 6 affected
* docs: promote #83 (brief command) and #71 (type inference) to Tier 0 in backlog These two items deliver the highest immediate impact on agent experience and graph accuracy without requiring Rust porting or TypeScript migration. They should be implemented before any Phase 4+ roadmap work. - #83: hook-optimized `codegraph brief` enriches passively-injected context - #71: basic type inference closes the biggest resolution gap for TS/Java * docs: add Phase 4 (Native Analysis Acceleration) to roadmap Add new Phase 4 covering the port of JS-only build phases to Rust: - 4.1-4.3: AST nodes, CFG, dataflow visitor ports (~587ms savings) - 4.4: Batch SQLite inserts (~143ms) - 4.5: Role classification & structure (~42ms) - 4.6: Complete complexity pre-computation - 4.7: Fix incremental rebuild data loss on native engine - 4.8: Incremental rebuild performance (target sub-100ms) Bump old Phases 4-10 to 5-11 with all cross-references updated. Benchmark evidence shows ~50% of native build time is spent in JS visitors that run identically on both engines. * docs: fix sub-section numbering to match parent phase headings * fix: align version computation between publish.yml and bench-version.js - Add COMMITS=0 guard in publish.yml to return clean version when HEAD is exactly at a tag (mirrors bench-version.js early return) - Change bench-version.js to use PATCH+1-dev.COMMITS format instead of PATCH+COMMITS-dev.SHA (mirrors publish.yml's new scheme) - Fix fallback in bench-version.js to use dev.1 matching publish.yml's no-tags COMMITS=1 default Impact: 1 functions changed, 0 affected * feat: auto-detect semver bump in /release skill when no version provided The release skill now scans commit history using conventional commit rules to determine major/minor/patch automatically. Explicit version argument still works as before. * fix: restore SHA-based uniqueness in bench-version fallback and add -dev.0 suffix The no-tags fallback hardcoded dev.1, causing repeated benchmark runs to silently overwrite each other. Restore short SHA for uniqueness. Also add -dev.0 suffix when COMMITS=0 so dev builds at an exact tag are never confused with stable releases. Impact: 1 functions changed, 0 affected * fix: add -dev.0 suffix for COMMITS=0 dev builds in publish.yml When HEAD is exactly at a release tag, the dev build emitted a clean semver string identical to the stable release. Add -dev.0 suffix to prevent confusion between dev pre-releases and stable releases.
…arch snapshots (#557) * docs: promote #83 (brief command) and #71 (type inference) to Tier 0 in backlog These two items deliver the highest immediate impact on agent experience and graph accuracy without requiring Rust porting or TypeScript migration. They should be implemented before any Phase 4+ roadmap work. - #83: hook-optimized `codegraph brief` enriches passively-injected context - #71: basic type inference closes the biggest resolution gap for TS/Java * docs: add Phase 4 (Native Analysis Acceleration) to roadmap Add new Phase 4 covering the port of JS-only build phases to Rust: - 4.1-4.3: AST nodes, CFG, dataflow visitor ports (~587ms savings) - 4.4: Batch SQLite inserts (~143ms) - 4.5: Role classification & structure (~42ms) - 4.6: Complete complexity pre-computation - 4.7: Fix incremental rebuild data loss on native engine - 4.8: Incremental rebuild performance (target sub-100ms) Bump old Phases 4-10 to 5-11 with all cross-references updated. Benchmark evidence shows ~50% of native build time is spent in JS visitors that run identically on both engines. * docs: fix sub-section numbering to match parent phase headings * fix: align version computation between publish.yml and bench-version.js - Add COMMITS=0 guard in publish.yml to return clean version when HEAD is exactly at a tag (mirrors bench-version.js early return) - Change bench-version.js to use PATCH+1-dev.COMMITS format instead of PATCH+COMMITS-dev.SHA (mirrors publish.yml's new scheme) - Fix fallback in bench-version.js to use dev.1 matching publish.yml's no-tags COMMITS=1 default Impact: 1 functions changed, 0 affected * feat: auto-detect semver bump in /release skill when no version provided The release skill now scans commit history using conventional commit rules to determine major/minor/patch automatically. Explicit version argument still works as before. * feat: add /titan-run orchestrator with diff review, semantic assertions, and architectural snapshot Add /titan-run skill that dispatches the full Titan pipeline (recon → gauntlet → sync → forge) to sub-agents with fresh context windows, enabling end-to-end autonomous execution. Hardening layers added across the pipeline: - Pre-Agent Gate (G1-G4): git health, worktree validity, state integrity, backups - Post-phase validation (V1-V15): artifact structure, coverage, consistency checks - Stall detection with per-phase thresholds and no-progress abort - Mandatory human checkpoint before forge (unless --yes) New validation tools integrated into forge and gate: - Diff Review Agent (forge Step 9): verifies each diff matches the gauntlet recommendation and sync plan intent before gate runs - Semantic Assertions (gate Step 5): export signature stability, import resolution integrity, dependency direction, re-export chain validation - Architectural Snapshot Comparator (gate Step 5.5): community stability, cross-domain dependency direction, cohesion delta, drift detection vs pre-forge baseline * fix: correct undefined variable in titan-run gauntlet efficiency check * fix: address Greptile review feedback on titan-run skill - Fix undefined previousAuditedCountBeforeAgent variable in gauntlet efficiency check (save pre-update count before reassignment) - Add AU, UA, DU, UD to merge conflict detection markers - Add warning when --start-from forge runs without arch-snapshot.json * fix: address Greptile review feedback on titan-run skill - Fix undefined previousAuditedCountBeforeAgent variable in gauntlet efficiency check (save pre-update count before reassignment) - Add AU, UA, DU, UD to merge conflict detection markers - Add warning when --start-from forge runs without arch-snapshot.json * fix: restore FORGE to codegraph exports and fn-impact in tool table Both commands are called in titan-forge's new diff review step (Step 9): fn-impact for deletion audit (D4) and exports for re-export chain checks. * fix: unstage files before restoring working tree in forge Step 13 rollback * fix: add GATE to exports/fn-impact and FORGE to context in command table * fix: update --yes description to reflect actual orchestrator scope * chore: checkpoint stale working tree changes from prior sessions Impact: 43 functions changed, 46 affected * Revert "chore: checkpoint stale working tree changes from prior sessions" This reverts commit a296b58. * fix: correct command table and --yes flag documentation * fix: address titan-gate review feedback — Louvain drift, temp paths, rollback range, FAIL template - Use codegraph communities --drift for A1 comparison instead of raw IDs - Add unique /tmp paths per invocation (epoch+PID) with cleanup - Update auto-rollback exception from Steps 1-3,5-7 to Steps 1-3,6-8 - Split FAIL template: test/lint (rollback) vs structural/semantic (preserved) * fix: address titan-run review feedback — --yes scope and --start-from validation - Update --yes description to include forge per-phase confirmation - Add Step 0.5 artifact pre-validation for --start-from skipped phases * fix: titan-run review — Rules exceptions, skip-flag validation, test runner * fix: persist arch temp dir path to file instead of shell variable (#557) TITAN_TMP_ID was set in one Bash tool invocation but referenced in later invocations. Shell variables don't survive between separate Bash calls. Now uses mktemp -d and writes the path to .codegraph/titan/.arch-tmpdir for cross-invocation recovery. * fix: capture git SHA in shell before node -e to avoid unevaluated substitution (#557) * fix: extend no-rollback exception to include semantic failures (Steps 5-8) (#557) * fix: add explicit DIFF WARN verdicts to D5 leftover check (#557) * fix: remove duplicate diff-impact call in Step 5c, add before/after comparison for Step 5d (#557) * fix: correct stale step reference and use unique temp path in titan-gate (#557) * fix: remove stale --yes from argument-hint and add D5 explicit verdict in titan-forge (#557) * fix: address open review items in titan-gate and titan-forge (#557) - Disambiguate no-rollback step range: "Steps 1-3, 5-8" → "Steps 1-3, 5, 5.5, 6-8" so AI agents include Step 5.5 (architectural snapshot) in the exception - Guarantee Step 5.5 cleanup runs even on failure/early exit paths - Fix Step 13 heading: exclude diff-review (handled by Step 9's own rollback) - Replace hardcoded npm test in gate Step 4 with test runner detection - Applied to both .claude/skills/ and docs/examples/ copies * fix: address round 2 Greptile feedback on titan-gate and titan-forge (#557) - Fix BARREL_TMP cleanup: use sidecar file pattern (.barrel-tmp) to persist temp path across shell invocations, matching the existing .arch-tmpdir pattern - Remove redundant codegraph check in Step 5b: reuse results already collected in Step 2 instead of re-running the command - Spell out D4 deletion audit: add explicit guidance on identifying deleted symbols via pre-change file comparison and git diff - All changes applied to both .claude/skills/ and docs/examples/ copies * fix: correct Step 5b reference from Step 2 to Step 1 in titan-gate (#557) * fix: replace bash process substitution with temp file in D4 deletion audit (#557) * fix: clarify A2 boundary check uses diff-impact edges not snapshot (#557) * fix: restore FORGE to complexity --health command table row (#557) * fix: add V3 snapshot list to orchestrator Rules exception list (#557) * fix: replace A4 new-drift-warning check with resolved-drift positive signal (#557) A4 overlapped with A1 producing false positives for touched symbols and duplicate warnings for untouched ones. A1 already covers new drift detection with severity escalation. A4 now only reports resolved drift as a positive architectural improvement note. * fix: add RUN to communities/structure rows and snapshot list entry in command table (#557) titan-run Step 3.5a directly calls codegraph communities, structure, and snapshot list. The README command table was missing these entries. * fix(skill): distinguish semantic vs test/lint gate failures in forge rollback (#557) * fix(skill): add V3 to pre-validation, fix efficiency/stall overlap (#557) * fix(skill): add FAIL message template to Step 5d barrel export check (#557) * fix(titan-run): track per-target progress in forge stall detection (#557) Forge stall detection only compared completed phases, causing false aborts when a multi-target phase required several sub-agent iterations. Now also tracks completedTargets count — stallCount only increments when neither phases nor targets advance. * fix: remove duplicate previousCompletedPhases assignment in titan-run (#557) * fix: scope A2 domain check to new edges only in titan-gate (#557) * fix: guarantee Step 5d barrel cleanup runs on FAIL verdict (#557) * fix(titan-gate): use Step 1 --staged results for boundary check (#557) Step 5c referenced codegraph check --boundaries without --staged, causing false positives from pre-existing violations. Now references the already-collected Step 1 results instead. * fix(titan-forge): clarify rollback, document --yes, init diffWarnings (#557) - Step 11 semantic FAIL: clarify forge does its own rollback (not gate) - Re-add --yes to argument list as documented passthrough - Add diffWarnings: [] to execution state init block - Document pre-gate test as fast-fail optimization with tradeoff note * fix(titan-gate): replace codegraph deps with path-based layer inference in A2 codegraph deps is a file-level dependency map, not a symbol lookup. The diff-impact edge output already contains source/target file paths, so the domain/layer can be inferred directly from the path using the GLOBAL_ARCH.md domain map without an extra command. * fix(titan-forge): handle dead-code targets in D2 intent-match check Dead-code targets have no gauntlet.ndjson entry, causing D2 to fail silently. Now checks titan-state.json deadSymbols first and validates the diff shows only deletions without needing a gauntlet lookup. * fix(titan-run): add try/catch to arch-snapshot builder script The node -e script that assembles arch-snapshot.json had no error handling — if any input file was missing or malformed, it failed silently and no snapshot was written. Now catches errors, prints a warning, and continues without the snapshot. * fix(titan-run): document explicit G3 state recovery procedure G3 referenced backup recovery without documenting the steps. Now includes: check backup exists, validate it is valid JSON before restoring, cp .bak over the corrupt file, and stop if backup is also corrupt or missing. * fix(titan-run): guard NDJSON integrity check against missing file The node -e script crashed with ENOENT if gauntlet.ndjson did not exist yet. Now checks fs.existsSync first and outputs a result with missing:true so the caller can handle it gracefully. * fix(docs): remove stale GATE consumer from codegraph deps command table Gate A2 no longer calls codegraph deps — it uses path-based layer inference from diff-impact edge output instead. The command table was never updated to reflect this change. * fix(titan-run): make checkpoint snapshot status conditional on capture success * fix(titan-forge): add explicit DIFF FAIL rollback commands and diffWarnings schema * fix(skill): set autoConfirm=true after checkpoint so forge sub-agents get --yes (#557) * fix(skill): add --yes to titan-forge argument-hint frontmatter (#557) The --yes flag was documented in the Arguments section but missing from the frontmatter hint that Claude Code displays in autocomplete. * fix(skill): remove D1 from diffWarnings schema — D1 only produces FAIL (#557) * fix(skill): clarify unexpected-commits as context-gathering in titan-run (#557) * fix(skill): document A3/A4 committed-state limitation in titan-gate (#557) * fix: handle arch capture failures and skip V13 when no commits (#557) * fix(skill): preserve file extension in temp files for D4 and barrel validation (#557) mktemp without an extension creates files that codegraph cannot parse — LANGUAGE_REGISTRY matches by extension, so extension-less temp files silently return no symbols, making D4 deletion audit and Step 5d barrel validation no-ops. * fix(skill): surface diffWarnings count in titan-run final report (#557) * fix(skill): use diff-impact edges for titan-gate Step 5b import check (#557) * fix(skill): skip currentPhase check in Step 0.5 pre-validation (#557) * fix(skill): add RUN as reader for gauntlet, sync, and gate-log artifacts (#557) * fix(skill): add codegraph where to README command table (#557) * fix(skill): add step 3.5 skip condition, move A2 before snapshot gate (#557) - Step 3.5 now has explicit skip condition for --start-from forge when arch-snapshot.json exists - A2 dependency direction check moved before snapshot gate so it runs on standalone invocations - Checkpoint template now uses explicit file-existence check for snapshot status * fix(skill): init autoConfirm from --yes at parse time, fix snapshotStatus ordering (#557) * fix(skill): add GLOBAL_ARCH.md guard to A2 dependency direction check (#557) * fix(skill): clarify diffWarnings append, A3 sources, V13 test detection (#557) * fix(skill): add explicit test runner detection to forge Step 10 (#557) Forge Step 10 used a placeholder <detected-test-command> without actual detection logic. This caused false-positive rollbacks on projects with non-standard test scripts (e.g. test:ci but no test). Added the same node -e detection block and NO_TEST_SCRIPT guard that V13 in titan-run already uses. Applied to both .claude/skills/ and docs/examples/ copies. * fix: increase vitest hookTimeout to 30s for Windows CI (#557) The beforeAll hooks in batch.test.js and dataflow.test.js were timing out at the default 10s on Windows Node 20 CI. The TS migration loader hooks in NODE_OPTIONS add overhead that pushes SQLite initialization past the default hookTimeout on slower CI runners. Align hookTimeout with the existing testTimeout of 30s. * fix(skill): move V13 failure-stop inside test block, add divergence warning (#557) V13 test-failure condition was split outside the test-run block, causing undefined testCmd reference for agents that don't short-circuit. Moved the Stop path inside the same conditional as the test run. Added divergence check at forge checkpoint (Step 3.5b) to warn when main has advanced since the initial sync, preventing silent drift on long runs. * fix(skill): cycle FAIL triggers rollback, Step 13 uses git diff for file discovery (#557) Gate auto-rollback exception now correctly excludes Step 2 (cycle check) from the no-rollback list. A new-cycle FAIL triggers the same rollback path as lint/build/test failures, preventing graph DB inconsistency. Forge Step 13 now discovers dirty files at rollback time using git diff --cached/--name-only instead of relying on the agent carrying the file list forward from Step 8, which can fail under context pressure. * fix(skill): expand --start-from hint, add || true to divergence fetch (#557) * fix: align .claude/** glob prefix with existing exclude patterns (#557) * fix(skill): separate Step 5c and A2 boundary checks to avoid duplicate FAIL verdicts (#557) * fix(skill): add cycle to forge Step 11 routing and gate rollback labels (#557) * fix(skill): clarify FAIL labels, complexity routing, stale fetch (#557) - Gate Step 9: replace misleading "advisory" label with explicit "structural and semantic failures" wording - Forge Step 11: replace "semantic/structural" catch-all with explicit listing of all non-rollback failure types - Run Step 3.5b: divergence check now detects fetch failure and skips instead of computing against stale origin/main * fix(skill): move divergence check before checkpoint print block (#557) * fix(skill): disambiguate D3|D5 schema notation in diffWarnings (#557) * fix(skill): add new-file guard to Step 5a and explicit dedup tracking for Step 5c/A2 (#557) * fix(skill): include failedTargets in forge stall detection to avoid false stalls (#557) * fix(skill): detect yarn/pnpm/bun in test command detection via lock file (#557) * fix(skill): replace <test-runner> placeholder with lock-file detection (#557) * fix(skill): use dynamic file discovery in DIFF FAIL rollback instead of placeholder (#557) * fix(skill): resolve cycle-rollback ambiguity across gate/forge/run (#557) * fix(skill): detect yarn/pnpm/bun for lint and build commands in gate Step 4 (#557) * fix(skill): update forge Rules rollback description to include unstage step (#557)
Summary
generated/DOGFOOD_REPORT_v2.2.3-dev.44e8146.md) that was left behind as an untracked file after the dogfooding session.claude/skills/dogfood/SKILL.md) with a new Phase 10 — Commit the Report so future reports are always committed — either with the first bug-fix PR or in a dedicated PRTest plan
generated/