II.
Page JSON
Structured · livepage:library-procurement
Procurement — business domain specialization (Library) json
Inspect the normalized record payload exactly as the atlas UI reads it.
{
"id": "page:library-procurement",
"_kind": "Page",
"_file": "wiki/library/procurement.md",
"_cluster": "wiki",
"attributes": {
"nodeKind": "Page",
"title": "Procurement — business domain specialization (Library)",
"displayName": "Procurement — business domain specialization (Library)",
"slug": "library/procurement",
"articlePath": "wiki/library/procurement.md",
"article": "\n# Procurement — business domain specialization\n\nBabysitter processes for the end-to-end buying lifecycle: sourcing intake, RFx, vendor\nevaluation, negotiation, and purchase-order issuance — with policy gates on every\nbinding action.\n\n## What lives here\n\n- **`procurement-lifecycle.js`** (`procurement/procurement-lifecycle`) — the full\n lifecycle: intake -> RFx authoring -> parallel per-vendor evaluation -> adversarial\n evaluation-integrity gate -> bounded negotiation rounds -> selection -> policy-gated\n vendor commitment, spend approval, and PO issuance.\n\n## Relationship to supply-chain\n\nThis directory owns the end-to-end buying lifecycle with policy gates, not the\nindividual supply-chain analytics. It composes supply-chain processes **by name**:\n\n- `supply-chain/rfx-management.js` — the RFx authoring task reuses its RFI/RFP/RFQ\n package structure (evaluation criteria, timeline) inline; run that process for a full\n standalone RFx cycle.\n- Supplier-evaluation concepts inform the per-vendor scoring slice; deep supplier\n analytics stay in the supply-chain domain.\n\n## Policy-gated actions\n\nThree actions are policy-gated and **never auto-approved** (no `autoApproveAfterN`,\nno `presentAlwaysApprove`); each is a `routedBreakpoint` whose `breakpointId` equals\nthe action id, tagged `['policy-gated', 'procurement']`:\n\n| Action | When | Meaning |\n| --- | --- | --- |\n| `vendor-commitment` | after selection | communicate a binding award decision to a vendor |\n| `spend-approval` | after commitment | approve the negotiated final price at the routed authority tier |\n| `po-issuance` | after PO drafting | issue the purchase order — a binding commercial commitment |\n\n## Spend-threshold expert routing\n\nApprovals route on spend through the frozen `SPEND_APPROVAL_ROUTING` table and the\nthrowing `resolveSpendExpert` lookup — invalid spend (missing, non-numeric, `NaN`,\nnegative) fails the run before any task runs:\n\n| Spend (USD) | Expert |\n| --- | --- |\n| <= $25,000 | `procurement-manager` |\n| <= $250,000 | `finance-director` |\n| > $250,000 | `cfo` (Infinity cap tier — an explicit cap, not a fallback) |\n\nPer-round negotiation approvals and `vendor-commitment` route on the current spend\nposition (latest negotiated price, initially `estimatedSpend`); `spend-approval` and\n`po-issuance` route on the negotiated `finalPrice`.\n\n## Quality gates\n\n- **`prc.rfx-critique`** — requirements-completeness critic (executed mustHave-vs-RFx\n trace-matrix diff) + evaluability critic (executed weight-sum recomputation; every\n criterion needs a scoring anchor and must be vendor-evidenceable).\n- **`prc.evaluation-integrity`** — runs against the process-computed evaluation matrix\n over **deterministically sampled** vendor claims (highest-weighted criteria first,\n then claimId order — no RNG, replay-safe). The evidence-verification critic opens\n every sampled claim's cited evidence file and pastes an executed re-score table; the\n scoring-consistency critic recomputes every vendor's weighted total.\n\nBoth gates run through the shared `adversarialGate` combinator: evidence-empty passes\nare coerced to protocol failures, and fix-budget exhaustion escalates to the owner via\na routed `<gateId>.gate-escalation` breakpoint. A gate that fails even after\nescalation ends the run through `buildResult(false, reason)` with the full record.\n\n## Memory\n\nkip kind `procurement`:\n\n- **Recall (P1)** — vendor history, negotiated pricing baselines, and award outcomes\n for the category across the candidate vendors.\n- **Assert (P10)** — facts built deterministically in process code (never by agents):\n `negotiated-term` per approved term, `awarded` for the selected vendor,\n `evaluated-not-awarded` per non-selected vendor, and a `lifecycle-outcome` record\n with gate attempts, escalations, and PO status.\n\n## Inputs / outputs\n\nRequired inputs: `requirementsBrief` (path), `category`, `vendors` (non-empty array),\n`estimatedSpend` (finite USD number). Optional: `rfxType` ('RFI'|'RFP'|'RFQ', default\n'RFP'), `evidenceSampleSize` (default 3), `maxNegotiationRounds` (default 3),\n`maxFixAttempts` (default 2), `kipEnabled`/`kipDir`/`kipModel`.\n\nOutputs: `success`, `intake`, `recall`, `rfx` (with gate record), `evaluations`\n(process-recomputed totals), `integrityGate` (with `sampledClaims`), `negotiation`\n(per-round records with approvals), `selection`, `approvals` (the three policy-gated\nrecords), `po` (`poPath`, `poNumber`, `finalPrice`), `kipFactsAsserted`, `artifacts`,\n`metadata`. See the JSDoc header of `procurement-lifecycle.js` for the full shapes.\n\n## Design rules\n\n- **No fallbacks**: required inputs throw; breakpoint rejections without a directive\n throw; the Infinity routing tier is an explicit cap, not a default approver.\n- **Bounded loops only**: negotiation is capped by `maxNegotiationRounds` with an\n explicit exhaustion escalation — never an unbounded retry.\n- **Per-round breakpoint ids**: `prc.approve-terms.round-<n>` is unique per round so\n replay never collapses two rounds.\n- **Arithmetic in process code**: weighted totals, ranking, spend deltas, and the\n evaluation matrix artifact are computed/written by process code — approval payloads\n never trust agent-reported numbers.\n- **Style-A agent-only tasks**: every `defineTask` is `kind: 'agent'` with\n `tasks/<effectId>/input.json|result.json` io and labels.\n",
"documents": [
"specialization:procurement"
]
},
"outgoingEdges": [
{
"from": "page:library-procurement",
"to": "specialization:procurement",
"kind": "documents"
}
],
"incomingEdges": [
{
"from": "page:index",
"to": "page:library-procurement",
"kind": "contains_page"
}
]
}