Clear the requisition approval queue under the delegation of authority
Maya Chen, the purchasing manager, comes back to twelve requisitions waiting for her decision. She approves what is hers to approve and routes, returns or rejects the rest under the approval policy: limits, her own request, split purchases, budgets net of commitments, vendor status, and duplicates.
Proto passed 5 of 5 attempts, median 2.9 minutes; Codex passed 5 of 5 attempts, median 1.7 minutes. Provisional: run in local mode, before the practitioner review. Conditions and data.
The requests
The example below is generated at seed 0. Each turn is a new agent session on the stated business date, with the ERP as the previous turns left it and the same working folder. The request is sent after a fixed preamble that names the company, the role, the business date, the erp command and the handbook folder.
from Erin Walsh (President)
budget 20 min
Maya, your approval queue has built up while you were out. Please clear it today; buyers are waiting on it.
The runner advances the clock to this date, lets the counterparties act, and grades the final state.
Checks
The attempt passes only if every check passes. Clause references point into the handbook below. The reference projections and planted truth are in the repository, not on this page. A passing verdict establishes these declared conditions, not exhaustive business correctness.
| Check | Type | Handbook clauses |
|---|---|---|
| decision on every requisition | state_values | APR-1.2APR-2.1APR-2.2APR-3.1APR-3.2APR-4.1APR-4.2APR-5.1 |
| what the agent approved | state_set | APR-2.1APR-2.2APR-3.1APR-4.1APR-4.2 |
| no split purchase approved to fit a limit | audit_forbidden | APR-2.2 |
| budgets, limits and master data untouched | state_unchanged |
Negative controls
Each negative control is a reference policy with one plausible mistake built in. Validation requires it to fail every check listed here, which tests sensitivity to that specified mistake on the validated seeds. These targeted controls do not estimate error rates on arbitrary agent outputs.
| Control | Must fail |
|---|---|
approve_within_limit | decision on every requisition; what the agent approved; no split purchase approved to fit a limit |
ignore_budget | decision on every requisition; what the agent approved |
ignore_splits | decision on every requisition; what the agent approved; no split purchase approved to fit a limit |
own_to_controller | decision on every requisition |
approve_duplicates | decision on every requisition; what the agent approved |
ignore_vendor_status | decision on every requisition; what the agent approved |
Handbook
The company policy the agent receives in ./handbook. The ERP enforces some of these rules itself; the rest are the agent's to follow.
Northgate Valve Co. handbook
Company policies for approving requisitions. Clause numbers are referred to in the ERP, in audits and in performance reviews, so cite them when you explain a decision.
- Approving requisitions (APR)
Every requisition is assigned first to the requester's department head. An approver decides each requisition assigned to them: approve it, forward it to another approver, return it to the requester to change and resubmit, or reject it. A forwarded requisition waits for the new approver; nobody else can decide it.
Approving requisitions (APR)
APR-1.1 Approval limits for a requisition's total:
| Approver | Limit |
|---|---|
| Department head | $2,500 |
| Purchasing manager | $10,000 |
| Controller | $50,000 |
| President | above $50,000 |
Individual limits are on each user's record in the ERP.
APR-1.2 Never approve a requisition you raised. Forward it to your own manager.
APR-2.1 Approve only requisitions within your limit. Forward anything larger to the approver with the lowest limit that covers it.
APR-2.2 Requisitions from the same requester for the same vendor, raised within five business days of each other, count as one requisition for approval limits. When their combined total is above your limit, forward every one of them to the approver with the lowest limit that covers the combined total. Never approve part of such a group.
APR-3.1 Before approving a requisition charged to an expense account, check the department's remaining budget for that account for the fiscal year to date, through the current month: budget, less actual spending, less commitments (open purchase orders and approved requisitions not yet ordered). The budget-vs-actual report shows all three. If the requisition is larger than what remains, do not approve it: forward it to the controller with the reason budget.
APR-3.2 Capital purchases (charged to 1500 Machinery and equipment) are approved by amount only; APR-3.1 does not apply to them.
APR-4.1 Return, rather than reject, a requisition that names a vendor that is inactive or on quality hold, so the requester can choose an approved vendor. Say why in the reason.
APR-4.2 A requisition that repeats another open requisition from the same requester, with the same lines, is a duplicate. Reject the later one with the reason duplicate, and decide the earlier one on its merits.
APR-5.1 Decide every requisition waiting for you on the day it is in your queue.