singularity-forge/src/resources/extensions
Mikael Hugo f3454de58a fix(triage): --run routes through runTriageApply{dryRun:true} via SF router
Closes sf-mp5khix3-9beona architecture-defect:triage-run-bypasses-sf-routing.

The legacy `runTriage` in self-feedback-drain.js hardcoded
DEFAULT_TRIAGE_MODEL="google-gemini-cli/gemini-3-pro-preview" and
dispatched via @singularity-forge/ai completeSimple (text-only, no
tools). The result: an autonomous triage path that produced a markdown
decision matrix operators had to manually apply via resolve_issue.

Now `--run` goes through runTriageApply with a new `dryRun: true`
option that:
- uses the same Phase 1/2 pipeline as --apply (triage-decider + review)
- pre-resolves the model via SF's router (rankTriageModelsViaRouter),
  no hardcoded model
- skips Phase 3 applyTriagePlan (read-only by design)
- uses permissionProfile="low" and relaxes the trusted-source +
  custom-runner guards for the inspection path
- prefixes flowId with "triage-run-" for clean trace separation

Legacy runTriage kept as @deprecated (still exercised by
self-feedback-drain.test.mjs unit tests that target completeSimple
dispatch directly).

Tests: 6 new in headless-triage-run-routing.test.ts covering dryRun
short-circuit, no ledger mutations, guard relaxation, router not
hardcoded, disagreement surfaces deciderOutput. Full triage suite:
35 tests pass, 0 regressions.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 09:20:43 +02:00
..
async-jobs refactor: rename pi-* packages to forge-native names (Phase 1) 2026-05-10 11:28:01 +02:00
aws-auth chore: commit current workspace state 2026-05-05 14:46:18 +02:00
bg-shell fix(lint): fix all pre-existing lint failures 2026-05-11 04:02:31 +02:00
browser-tools refactor: rename pi-* packages to forge-native names (Phase 1) 2026-05-10 11:28:01 +02:00
claude-code-cli fix(lint): fix all pre-existing lint failures 2026-05-11 04:02:31 +02:00
context7 refactor: rename pi-* packages to forge-native names (Phase 1) 2026-05-10 11:28:01 +02:00
github-sync chore: commit current workspace state 2026-05-05 14:46:18 +02:00
guardrails refactor(extensions): merge ttsr into guardrails 2026-05-15 02:28:40 +02:00
mac-tools refactor: rename pi-* packages to forge-native names (Phase 1) 2026-05-10 11:28:01 +02:00
mcp-client fix(lint): fix all pre-existing lint failures 2026-05-11 04:02:31 +02:00
ollama refactor: rename pi-* packages to forge-native names (Phase 1) 2026-05-10 11:28:01 +02:00
remote-questions refactor: rename pi-* packages to forge-native names (Phase 1) 2026-05-10 11:28:01 +02:00
search-the-web feat(swarm): forward parent permission profile to in-process worker sessions 2026-05-15 06:38:42 +02:00
sf fix(triage): --run routes through runTriageApply{dryRun:true} via SF router 2026-05-15 09:20:43 +02:00
shared fix(lint): fix all pre-existing lint failures 2026-05-11 04:02:31 +02:00
universal-config feat(sf): align node sqlite uok runtime 2026-05-08 03:01:20 +02:00
voice refactor: rename pi-* packages to forge-native names (Phase 1) 2026-05-10 11:28:01 +02:00
ask-user-questions.js refactor: rf-10/rf-03 ask-gate wiring and skills frontmatter consolidation 2026-05-11 09:09:24 +02:00
get-secrets-from-user.js refactor: rename pi-* packages to forge-native names (Phase 1) 2026-05-10 11:28:01 +02:00
package.json feat(sf): align node sqlite uok runtime 2026-05-08 03:01:20 +02:00