/**
 * Current-code invariants asserted (2026-04-21, ses_006 Phase 6 follow-up):
 *
 *   This file pins the live mutation boundary that `src/advisory/*` tests
 *   intentionally do NOT cover: the advisory phase IS where advisories
 *   inject user messages into the run via `ctx.runMgr.pushMessage(...)`
 *   (Codex #6). A regression that drops the `pushMessage` call — silently
 *   dropping all advisor output — would pass `src/advisory` tests,
 *   typecheck, and lint. This file is the only thing that catches it.
 *
 *   - **Early-return paths** (no side effects):
 *     - No `advisoryCtx` on the iteration ctx → returns immediately.
 *     - `advisoryCtx.checkBudget()` denies → returns; NO pushMessage.
 *     - Evaluator fires no triggers → returns; NO pushMessage.
 *     - Trigger fires but advisor not found in registry → warn log +
 *       return; NO pushMessage.
 *     - Executor throws → warn log + return; NO pushMessage (partial
 *       work NOT persisted).
 *   - **Happy path** — trigger fires + advisor resolves + executor
 *     succeeds:
 *     - Calls `executor.consult(advisor, request, callCtx)` exactly once.
 *     - Calls `evaluator.recordFiring(trigger.id, iteration)`.
 *     - Calls `advisoryCtx.recordCall(...)` with the full call record.
 *     - Calls `runMgr.pushMessage(createUserMessage(wrapped))` exactly
 *       once.
 *     - The wrapped message includes `<advisory-result advisor="..."
 *       trigger="...">` + the advice text + closing tag.
 *     - When the result carries `warnings`, they appear under a
 *       "Warnings:" section.
 *     - When the result carries `decisions`, they appear under a
 *       "Decisions:" section AND each decision is pushed to
 *       `workingStateManager.addDecision` (if a workingStateManager is
 *       present on ctx).
 *   - **Trigger selection**: only the first trigger from
 *     `evaluator.evaluate(state)[0]` is used per iteration; other fired
 *     triggers are discarded this round.
 *   - **Question resolution**: `trigger.questionTemplate` is used when
 *     set; otherwise the phase uses a default
 *     "Iteration N: Review the current progress..." string.
 */
export {};
//# sourceMappingURL=advisory.test.d.ts.map