Discovered during
LLC ship work (#9861) — core-loop e2e test.
Gap
The LLC budget API (autobot-backend/llc/api/budget.py) only ingests (POST /budget/{agent_id}/ingest), reads (GET /budget, GET /budget/{agent_id}), and updates a limit (PUT /budget/{agent_id}/limit) an llc_agent_budgets row. There is no public endpoint to create the initial per-agent budget row.
Impact
- An agent has no budget until something out-of-band inserts the row;
ingest/read against a never-provisioned agent has no row to act on.
- The e2e test had to seed
LLCAgentBudget directly via the session because no endpoint provisions it.
Suggested resolution
Provision the budget row as part of the agent-hire flow (preferred — hire is where an agent gets created), or add an explicit create endpoint. Confirm the intended owner of budget provisioning.
Related: org-chart endpoint (#9861) reports budget_spent/budget_total = 0 for agents with no budget row.
Discovered during
LLC ship work (#9861) — core-loop e2e test.
Gap
The LLC budget API (
autobot-backend/llc/api/budget.py) only ingests (POST /budget/{agent_id}/ingest), reads (GET /budget,GET /budget/{agent_id}), and updates a limit (PUT /budget/{agent_id}/limit) anllc_agent_budgetsrow. There is no public endpoint to create the initial per-agent budget row.Impact
ingest/read against a never-provisioned agent has no row to act on.LLCAgentBudgetdirectly via the session because no endpoint provisions it.Suggested resolution
Provision the budget row as part of the agent-hire flow (preferred — hire is where an agent gets created), or add an explicit create endpoint. Confirm the intended owner of budget provisioning.
Related: org-chart endpoint (#9861) reports
budget_spent/budget_total = 0for agents with no budget row.