Skip to content

feat: fall back to alternate auditor model on provider limit - #81

Merged
chriswritescode-dev merged 2 commits into
mainfrom
feat/auditor-model-fallback
Aug 2, 2026
Merged

feat: fall back to alternate auditor model on provider limit#81
chriswritescode-dev merged 2 commits into
mainfrom
feat/auditor-model-fallback

Conversation

@chriswritescode-dev

@chriswritescode-devchriswritescode-dev commented Aug 1, 2026

Copy link
Copy Markdown
Owner

Summary

Adds an auditor model fallback chain. When an auditor session hits a provider limit, the loop advances through auditorFallbackModels instead of terminating, re-dispatches the audit on the next configured model, and resets the chain index to 0 on a successful audit (both auditor phases) and on loop restart, so a transient limit never permanently drops the auditor variant.

Key changes

  • src/utils/loop-helpers.ts — new isAuditorPhase, usageRoleForPhase helpers; usage attribution label routes through the chain choice.
  • src/loop/runtime.tshandleAuditorProviderLimit walks the fallback chain, re-dispatches the audit prompt on the next model, coalesces duplicate limit signals per failed prompt, and resets the index on successful audits. Removes the local isAuditorPhase duplicate in favor of the shared helper.
  • src/hooks/watchdog.ts — the watchdog's retry status poll routes auditor provider limits through handleAuditorProviderLimit via the per-loop state lock.
  • src/loop/service.ts + src/storage/repos/loops-repo.ts — new resetAuditorFallbackIndex (compare-and-set reset to 0).
  • src/services/execution.ts — restart normalizes auditorModel and resets the fallback index.
  • src/tools/loop.tsauditor model status line shows the effective chain position.
  • src/dashboard/app/components.ts — dashboard shows auditor fallback position marker (regenerated app-bundle.ts).
  • Docs and API docs regenerated; 18 test files updated.

Validation

pnpm typecheck && pnpm lint && pnpm test — all green (166 test files, 2874 tests).

Deferred follow-ups (pr-review ledger)

  • DR-69298c71-002 (open): blind AUDITOR_FALLBACK_SETTLE_MS = 250 settle sleep in src/loop/runtime.ts; replacing it with the tracked abort terminal is a design change affecting the fallback timing suite.
  • DR-69298c71-003 (open, partial): dashboard surfaces that a fallback is active and its position, but cannot name the effective model without the plugin config; persisting the effective model is an architecture choice.
  • DR-69298c71-004 (open): advanceAuditorFallbackIndex conflates three outcomes into an ambiguous null; benign for the current two callers.
  • DR-69298c71-005 (open): documentation/ADR updates for the new auditor-only config layer and the five distinct "fallback" meanings.
  • DR-69298c71-001 (rejected-but-open): the config.auditorModel tier lives in two ad-hoc patches outside buildAuditorModelChain; adding it to the chain is a compatibility change deferred deliberately.

Summary by CodeRabbit

  • New Features

    • Auditor model fallback handling now supports provider-limit recovery during audits.
    • Successful audits reset fallback selection to the primary auditor model.
    • Dashboard and loop status now show the active fallback model and its fallback number.
  • Bug Fixes

    • Improved recovery behavior for auditor failures while preserving existing coding-loop termination behavior.
    • Prevented fallback handling from being applied outside auditor phases.
  • Documentation

    • Updated fallback reset behavior and refreshed API source references.

@coderabbitai

coderabbitaiBot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: e36679f8-ebf7-4c3d-8d68-508841870cfa

📥 Commits

Reviewing files that changed from the base of the PR and between 7f6b96e and b57a915.

📒 Files selected for processing (5)
  • src/loop/runtime.ts
  • src/services/execution.ts
  • src/tools/loop.ts
  • test/loop-status-tool.test.ts
  • test/services/execution-restart.test.ts
🚧 Files skipped from review as they are similar to previous changes (4)
  • test/services/execution-restart.test.ts
  • src/services/execution.ts
  • src/tools/loop.ts
  • src/loop/runtime.ts

📝 Walkthrough

Walkthrough

The change adds auditor fallback-chain handling, persisted index resets, provider-limit recovery under loop locks, fallback status display, updated documentation, and expanded tests.

Changes

Auditor fallback recovery

Layer / File(s)Summary
Fallback contracts and persistence
src/utils/loop-helpers.ts, src/storage/repos/loops-repo.ts, src/loop/service.ts, src/services/execution.ts, test/loop-helpers.test.ts, test/loops-repo.test.ts
Auditor model selection uses an ordered, deduplicated fallback chain. The fallback index is persisted, advanced, clamped, and reset after successful audits.
Auditor prompt fallback flow
src/loop/runtime.ts, test/loop/runtime.test.ts
Auditor redispatch uses the committed fallback index. Successful audits restore the primary auditor model and clear fallback state.
Restart and watchdog recovery
src/hooks/watchdog.ts, src/services/execution.ts, test/watchdog.test.ts, test/services/execution-restart.test.ts
Provider-limit failures during auditor phases can be absorbed under the loop lock. Coding-phase failures retain termination behavior.
Status and documentation output
src/tools/loop.ts, src/dashboard/app/components.ts, src/dashboard/app-bundle.ts, docs/configuration.md, docs/api/_media/configuration.md, AGENTS.md
Loop and dashboard status show the active fallback index. Configuration and guidance describe reset and locking behavior.
Generated API links and test fixtures
docs/api/functions/*, docs/api/interfaces/*, docs/api/variables/*, test/services/*, test/tools/*, test/hooks/loop-section-advancement.test.ts
Generated source links reference newer revisions. Tests use shared database setup and provide the new handler dependency.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
participant Watchdog
participant LoopRuntime
participant LoopService
participant LoopsRepo
participant AuditorSession
Watchdog->>LoopRuntime: provider-limit during auditor phase
LoopRuntime->>LoopService: handle provider limit under state lock
LoopService->>LoopsRepo: advance fallback index
LoopRuntime->>AuditorSession: redispatch fallback audit
AuditorSession-->>LoopRuntime: successful audit
LoopRuntime->>LoopService: reset fallback index
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 20.45% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title clearly summarizes the main change: using an alternate auditor model after a provider-limit failure.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/auditor-model-fallback

Comment @coderabbitai help to get the list of available commands.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (3)
test/loop/runtime-service-seam.test.ts (1)

14-69: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Keep makeFakeLoopService aligned with LoopService.

The fixture omits eight required members, including advanceAuditorFallbackIndex. Add no-op stubs for all missing members or type the fixture as a narrower service contract.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@test/loop/runtime-service-seam.test.ts` around lines 14 - 69, Update
makeFakeLoopService to match the current LoopService contract by adding no-op
vi.fn stubs for all eight missing required members, including
advanceAuditorFallbackIndex. Preserve the existing fixture behavior and return
defaults, or explicitly type it against a narrower contract if that is the
established testing pattern.
test/loops-repo.test.ts (1)

56-56: 📐 Maintainability & Code Quality | 🔵 Trivial | 🏗️ Heavy lift

Consider building this schema from the shared migration helper.

This file maintains the loops DDL by hand, so every storage column addition requires a manual edit here, as this change shows. setupLoopsTestDb in test/helpers/loops-test-db.ts applies the registered migrations and keeps the test schema aligned with production. Migrating this suite to that helper removes the drift risk. Treat this as optional cleanup for a follow-up, because the column set and partial indexes in this file need care during the switch.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@test/loops-repo.test.ts` at line 56, As optional follow-up cleanup, migrate
the loops test database setup from hand-maintained DDL to the shared
setupLoopsTestDb helper so registered migrations define the schema and remain
aligned with production. Preserve the existing column set and partial indexes
when switching the setup path.
src/services/execution.ts (1)

2299-2313: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Reuse the success response path for the absorbed fallback.

The absorbed branch builds its own ok({ operation: 'loop.restart', ... }) payload that duplicates Lines 2334-2345. The two copies have already diverged: the success path publishes publishWorkspaceDetachedToast when bindFailed is true (Lines 2324-2332), and the absorbed branch does not. A restart that binds no workspace and then absorbs a provider limit therefore drops the detach warning. Extract one helper that emits the toast and the response, and call it from both sites.

♻️ Sketch of the shared response helper
+ const restartSucceeded = (sessionId: string): ForgeExecutionResponse<LoopRestartedResult> => {+ if (bindFailed) {+ publishWorkspaceDetachedToast({+ client: deps.client,+ directory: stoppedState.projectDir ?? stoppedState.worktreeDir,+ loopName: stoppedState.loopName,+ logger: deps.logger,+ context: 'on restart',+ })+ }+ return ok({+ operation: 'loop.restart',+ loopName: stoppedState.loopName,+ sessionId,+ previousSessionId,+ worktreeDir: stoppedState.worktreeDir,+ worktreeBranch: stoppedState.worktreeBranch,+ worktree: !!stoppedState.worktree,+ sandbox: restartSandbox,+ bindFailed,+ iteration: stoppedState.iteration,+ })+ }

Then the absorbed branch becomes:

 if (absorbed) {
deps.loopHandler!.startWatchdog(stoppedState.loopName)
- return ok({- operation: 'loop.restart',- loopName: stoppedState.loopName,- sessionId: restartedSessionId!,- previousSessionId,- worktreeDir: stoppedState.worktreeDir,- worktreeBranch: stoppedState.worktreeBranch,- worktree: !!stoppedState.worktree,- sandbox: restartSandbox,- bindFailed,- iteration: stoppedState.iteration,- })+ return restartSucceeded(restartedSessionId!)
}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/services/execution.ts` around lines 2299 - 2313, Extract a shared helper
around the loop restart success response that publishes
publishWorkspaceDetachedToast when bindFailed is true and returns the complete
ok({ operation: 'loop.restart', ... }) payload. Replace both the absorbed
fallback branch and the normal success path with calls to this helper,
preserving their existing restart values and ensuring absorbed restarts also
emit the detach warning.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/dashboard/app/components.ts`:
- Around line 771-775: Update the auditor model display in LoopDetailStat to
resolve and show the selected fallback model when auditorFallbackIndex is set,
rather than appending only the fallback number to the base auditorModel.
Preserve the base model display when no fallback is active, using the existing
dashboard payload/model lookup symbols.
In `@src/loop/runtime.ts`:
- Around line 1582-1589: Guard retryChoice.variant in both recovery calls to
promptAuditSession so it is forwarded only when retryChoice.model is present,
matching the primary auditor dispatch behavior. Update the retry send around
promptAuditSession and the corresponding workspace-recovery resend; leave
auditorModel unchanged.
- Around line 2434-2457: Update the busy cleanup logic around isAwaitingBusy and
coalescedLimitSessions so clearPromptInFlightBySession executes synchronously
before acquiring withStateLock, including in the coalesced branch. Keep
withStateLock scoped only to clearing the coalescedLimitSessions marker,
preserving the documented immediate-clear behavior.
In `@src/tools/loop.ts`:
- Around line 6-7: Update auditorModelStatusLabel to use the shared
buildAuditorModelChain and resolveLoopAuditorChoice resolution path, preserving
the fallback order from resolveUsageFallbackModelLabel when choice.model is
undefined. Keep auditorModelStatusLabel limited to formatting, and remove its
independent auditor-choice resolution logic.
- Around line 19-24: Update auditorModelStatusLabel to compute and reuse the
normalized fallback index returned or established by auditorModelChoiceAt when
selecting the model, then use that same clamped index for the fallback label and
comparison. Ensure persisted indices beyond the current chain produce a valid
label consistent with the selected choice.
---
Nitpick comments:
In `@src/services/execution.ts`:
- Around line 2299-2313: Extract a shared helper around the loop restart success
response that publishes publishWorkspaceDetachedToast when bindFailed is true
and returns the complete ok({ operation: 'loop.restart', ... }) payload. Replace
both the absorbed fallback branch and the normal success path with calls to this
helper, preserving their existing restart values and ensuring absorbed restarts
also emit the detach warning.
In `@test/loop/runtime-service-seam.test.ts`:
- Around line 14-69: Update makeFakeLoopService to match the current LoopService
contract by adding no-op vi.fn stubs for all eight missing required members,
including advanceAuditorFallbackIndex. Preserve the existing fixture behavior
and return defaults, or explicitly type it against a narrower contract if that
is the established testing pattern.
In `@test/loops-repo.test.ts`:
- Line 56: As optional follow-up cleanup, migrate the loops test database setup
from hand-maintained DDL to the shared setupLoopsTestDb helper so registered
migrations define the schema and remain aligned with production. Preserve the
existing column set and partial indexes when switching the setup path.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 2b734cd3-d6bf-4e86-8335-8001d254d5bf

📥 Commits

Reviewing files that changed from the base of the PR and between 8ae20f3 and 086bea8.

📒 Files selected for processing (45)
  • AGENTS.md
  • docs/api/_media/configuration.md
  • docs/api/_media/loop-system.md
  • docs/api/functions/createForgePlugin.md
  • docs/api/functions/createParentSessionLookup.md
  • docs/api/functions/createSessionDirectoryLookup.md
  • docs/api/interfaces/CompactionConfig.md
  • docs/api/interfaces/CreateParentSessionLookupOptions.md
  • docs/api/interfaces/CreateSessionDirectoryLookupOptions.md
  • docs/api/interfaces/DashboardConfig.md
  • docs/api/interfaces/PluginConfig.md
  • docs/api/variables/VERSION.md
  • docs/api/variables/default.md
  • docs/configuration.md
  • docs/loop-system.md
  • forge-config.jsonc
  • src/dashboard/app-bundle.ts
  • src/dashboard/app/components.ts
  • src/hooks/watchdog.ts
  • src/loop/runtime-usage.ts
  • src/loop/runtime.ts
  • src/loop/service.ts
  • src/loop/state.ts
  • src/services/execution.ts
  • src/storage/migrations/index.ts
  • src/storage/repos/loops-repo.ts
  • src/tools/loop.ts
  • src/types.ts
  • src/utils/loop-helpers.ts
  • test/hooks/loop-section-advancement.test.ts
  • test/loop-helpers.test.ts
  • test/loop/runtime-service-seam.test.ts
  • test/loop/runtime.test.ts
  • test/loop/state-mapper.test.ts
  • test/loops-repo.test.ts
  • test/services/attach-loop.test.ts
  • test/services/execution-attach-cleanup.test.ts
  • test/services/execution-in-flight-guard.test.ts
  • test/services/execution-restart.test.ts
  • test/services/execution.start-loop.test.ts
  • test/storage-migrations.test.ts
  • test/tools/plan-adjust.test.ts
  • test/tools/review-section-scope.test.ts
  • test/tools/section-read.test.ts
  • test/watchdog.test.ts

Comment threadsrc/dashboard/app/components.ts
Comment threadsrc/loop/runtime.ts
Comment threadsrc/loop/runtime.ts
Comment threadsrc/tools/loop.ts
Comment threadsrc/tools/loop.ts
Adds an auditor model fallback chain: when an auditor session hits a
provider limit, the loop advances through auditorFallbackModels instead
of terminating, re-dispatches the audit on the next configured model,
and resets the chain index to 0 on a successful audit (both auditor
phases) and on loop restart. Every detection path routes through
handleAuditorProviderLimit, including the watchdog's retry status poll,
which calls it via the per-loop state lock. Adds resetAuditorFallbackIndex
to loops-repo/service, usage role/phase helpers to loop-helpers, and
dashboard auditor-fallback position display.
@chriswritescode-dev
chriswritescode-devforce-pushed the feat/auditor-model-fallback branch from 086bea8 to 7f6b96eCompareAugust 1, 2026 23:27

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
src/loop/runtime.ts (2)

2853-2884: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Persist the fallback-index reset during restart.

restartAuditorState.auditorFallbackIndex = 0 only affects model selection. The deps.loopsRepo.restart payload omits this field, so the persisted index is not reset.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/loop/runtime.ts` around lines 2853 - 2884, Update the restart flow around
restartAuditorState and deps.loopsRepo.restart so the restart payload includes
auditorFallbackIndex set to 0, ensuring the persisted fallback index is reset
along with model-selection state.

Source: Coding guidelines


1004-1068: 🎯 Functional Correctness | 🔴 Critical | ⚡ Quick win

Fix stale-session handling so it does not terminate the active loop.

At Line 1011, handleAuditorProviderLimit returns false when opts.eventSessionId does not match the loop's current session. Both callers that pass eventSessionId (the session.error handler at Line 2360 and the session.status: retry handler at Line 2472) treat false as "not absorbed" and terminate the loop.

The session.error handler already has a parallel staleness check for non-limit errors (Lines 2366-2370) that ignores the event and returns without terminating. A limit-classified error from a session the loop already rotated away from should get the same treatment: ignore it, do not terminate the still-active loop.

As written, a delayed provider-limit event from an old, already-rotated auditor session can wrongly terminate a currently healthy loop.

🐛 Proposed fix to ignore stale-session limit signals
 let state = loopService.getActiveState(loopName)
if (!state?.active || !isAuditorPhase(state.phase)) return false
- if (opts?.eventSessionId && opts.eventSessionId !== state.sessionId) return false+ if (opts?.eventSessionId && opts.eventSessionId !== state.sessionId) {+ // Stale/delayed event from a session the loop has already rotated+ // away from. Ignore it — do not terminate the still-active loop.+ logger.log(`Loop: ignoring stale provider-limit event for session ${opts.eventSessionId} (current=${state.sessionId})`)+ return true+ }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/loop/runtime.ts` around lines 1004 - 1068, Update
handleAuditorProviderLimit so an eventSessionId that differs from the active
state.sessionId is treated as an absorbed stale signal rather than returning
false; return true while leaving the active loop unchanged. Preserve the
existing behavior for inactive/non-auditor loops and matching-session limit
handling so callers such as the session.error and session.status retry handlers
do not terminate a healthy loop.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/loop/runtime.ts`:
- Around line 980-984: Replace the duplicated chain construction, fallback-index
lookup, and choice logging in the shown audit flow with a call to
resolveLoopAuditorChoice(getConfig(), loopService, loopName, logger). Remove the
local buildAuditorModelChain, index, and auditorModelChoiceAt usage, while
preserving the resulting choice for subsequent processing and keeping
handleAuditorProviderLimit as the fallback-or-terminate decision point.
---
Outside diff comments:
In `@src/loop/runtime.ts`:
- Around line 2853-2884: Update the restart flow around restartAuditorState and
deps.loopsRepo.restart so the restart payload includes auditorFallbackIndex set
to 0, ensuring the persisted fallback index is reset along with model-selection
state.
- Around line 1004-1068: Update handleAuditorProviderLimit so an eventSessionId
that differs from the active state.sessionId is treated as an absorbed stale
signal rather than returning false; return true while leaving the active loop
unchanged. Preserve the existing behavior for inactive/non-auditor loops and
matching-session limit handling so callers such as the session.error and
session.status retry handlers do not terminate a healthy loop.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: f48534d8-eb4b-443e-9c52-3f2c67b3757d

📥 Commits

Reviewing files that changed from the base of the PR and between 086bea8 and 7f6b96e.

📒 Files selected for processing (36)
  • AGENTS.md
  • docs/api/_media/configuration.md
  • docs/api/functions/createForgePlugin.md
  • docs/api/functions/createParentSessionLookup.md
  • docs/api/functions/createSessionDirectoryLookup.md
  • docs/api/interfaces/CompactionConfig.md
  • docs/api/interfaces/CreateParentSessionLookupOptions.md
  • docs/api/interfaces/CreateSessionDirectoryLookupOptions.md
  • docs/api/interfaces/DashboardConfig.md
  • docs/api/interfaces/PluginConfig.md
  • docs/api/variables/VERSION.md
  • docs/api/variables/default.md
  • docs/configuration.md
  • src/dashboard/app-bundle.ts
  • src/dashboard/app/components.ts
  • src/hooks/watchdog.ts
  • src/loop/runtime.ts
  • src/loop/service.ts
  • src/services/execution.ts
  • src/storage/repos/loops-repo.ts
  • src/tools/loop.ts
  • src/utils/loop-helpers.ts
  • test/hooks/loop-section-advancement.test.ts
  • test/loop-helpers.test.ts
  • test/loop/runtime-service-seam.test.ts
  • test/loop/runtime.test.ts
  • test/loops-repo.test.ts
  • test/services/attach-loop.test.ts
  • test/services/execution-attach-cleanup.test.ts
  • test/services/execution-in-flight-guard.test.ts
  • test/services/execution-restart.test.ts
  • test/services/execution.start-loop.test.ts
  • test/tools/plan-adjust.test.ts
  • test/tools/review-section-scope.test.ts
  • test/tools/section-read.test.ts
  • test/watchdog.test.ts
🚧 Files skipped from review as they are similar to previous changes (32)
  • docs/api/functions/createParentSessionLookup.md
  • test/tools/review-section-scope.test.ts
  • test/loop/runtime-service-seam.test.ts
  • docs/api/variables/VERSION.md
  • docs/api/_media/configuration.md
  • test/services/execution-attach-cleanup.test.ts
  • AGENTS.md
  • docs/api/functions/createSessionDirectoryLookup.md
  • test/hooks/loop-section-advancement.test.ts
  • test/services/execution-in-flight-guard.test.ts
  • docs/api/interfaces/DashboardConfig.md
  • test/tools/section-read.test.ts
  • docs/api/functions/createForgePlugin.md
  • docs/api/interfaces/CreateSessionDirectoryLookupOptions.md
  • docs/api/interfaces/CompactionConfig.md
  • test/watchdog.test.ts
  • test/services/attach-loop.test.ts
  • docs/configuration.md
  • test/tools/plan-adjust.test.ts
  • docs/api/variables/default.md
  • test/loop/runtime.test.ts
  • src/dashboard/app-bundle.ts
  • src/dashboard/app/components.ts
  • src/hooks/watchdog.ts
  • test/services/execution.start-loop.test.ts
  • src/services/execution.ts
  • src/loop/service.ts
  • test/loop-helpers.test.ts
  • src/storage/repos/loops-repo.ts
  • src/tools/loop.ts
  • src/utils/loop-helpers.ts
  • test/services/execution-restart.test.ts

Comment threadsrc/loop/runtime.ts Outdated
@chriswritescode-dev
chriswritescode-dev merged commit 1b3b35e into mainAug 2, 2026
2 checks passed
@chriswritescode-dev
chriswritescode-dev deleted the feat/auditor-model-fallback branch August 2, 2026 00:13
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@chriswritescode-dev