Files
AgentCompany/tests/unit
ZacharyZhang-NY cdf783c0b8 fix(dispatch): fail explicitly when no enabled model qualifies
`pickModelForAgent` used to fall back to the CEO's pair when the
auto-strategy scoring returned no winner, and then silently route
the run on that pair. Three distinct problems rendered invisible by
that fallback: a missing capability row for a deployed model, a
mis-inferred task profile, a misconfigured model pool. Cost
attribution became meaningless — the agent ran on the CEO's model,
not its own tier — and operators had no signal to fix the root
cause.

The picker now returns a `ModelPickResult` tagged union. Success
yields the dispatch-ready assignment; failure yields a
`NO_QUALIFYING_CANDIDATE` reason with a human-readable message
naming the agent, the required domain, and the required tier.

Heartbeat maps the failure to a new `model_pick_failed` skip
reason, logs an activity row so it shows up in the company audit
trail, and defers. Task-runner returns `fail("MODEL_PICK_FAILED",
...)` so the UI surfaces the message directly. `getCeoAssignment`
drops out of `PickModelDeps` entirely — no caller needs a silent
CEO path any more, so the dep surface shrinks and the tests do
too. The test suite gains a regression assertion for the explicit
failure case.
2026-04-19 01:06:50 -04:00
..
2026-04-05 20:14:48 -04:00
2026-04-04 12:03:50 -04:00
2026-04-16 14:48:51 -04:00
2026-04-17 14:03:56 -04:00
2026-04-04 17:01:26 -04:00
2026-04-05 20:14:48 -04:00
2026-04-17 14:03:56 -04:00
2026-04-05 20:14:48 -04:00
2026-04-04 12:03:50 -04:00
2026-04-04 17:01:26 -04:00
2026-04-04 12:03:50 -04:00
2026-04-05 20:14:48 -04:00
2026-04-17 14:03:56 -04:00
2026-04-05 20:14:48 -04:00
2026-04-17 14:03:56 -04:00