cost-prior-approval-check¶
cost-prior-approval-check0.1.0noneTags: cost-allowability post-award prior-approval review federal-grants research-administration
Audience: post-award-staff, sponsored-programs-staff, grant-accountants
Manifestations in repo: prompt.md
Checks whether a single expense represents an action that requires federal sponsor prior written approval under 2 CFR 200.407, and whether that approval is evidenced. It is one of the single-requirement checks in the federal cost-allowability analysis workflow and emits a structured finding consumed by the final determination step.
Output contract: schema.json
Contract scope: repo-local
Inputs¶
A normalized expense record, extracted award terms, and a regulated-activity classification from the Stage 1 components of the cost-allowability-analysis workflow. Any may be partial.
Outputs¶
A single structured finding — see schema.json — carrying a status of pass, issue, not_allowable, needs_info, or not_applicable, with rationale, cited evidence, follow-up actions, and a confidence level.
The check¶
Tests the expense against the federal prior-approval requirements of 2 CFR 200.407, using the award's extracted prior_approval_triggers as the authoritative list when supplied. This check covers federal sponsor prior approval only — institutional IRB / IACUC / IBC protocol approval is a separate check. When the trigger list is not supplied, it returns needs_info.
Contract scope¶
Repo-local. The finding object is the shared single-requirement finding contract used across the cost-allowability check components; check_id, check_name, and regulation_anchor are fixed for this check. It is not a shared AI4RA-UDM schema.
Triad integration¶
- Evaluation datasets: none yet — repo-local synthetic coverage planned.
- Harness notes: canonical manifestation is
prompt.md; validation surface isschema.json. Invoked as a Step 2 task of thecost-allowability-analysisworkflow. - Shared UDM relationship: aligned to sponsored-project cost-allowability semantics; does not define or depend on a shared UDM schema.
Manifestations¶
prompt.md— canonical, LLM-agnostic prompt
Related components¶
protocol-approval-allowability-check— the companion check for institutional IRB / IACUC / IBC approval, a distinct regulatory regime from federal prior approval.
Evals¶
See evals/.
Provenance¶
Created 2026-05-21 as a single-requirement check in the federal cost-allowability analysis component set, anchored to 2 CFR 200.407.
Contract scope¶
-
Output format:
json_object -
Contract scope:
repo_local_single_requirement_finding_contract -
Validation surfaces:
json_schema -
Schema entrypoints:
# -
Notes: Repo-local single-requirement allowability finding for the federal prior approval check (2 CFR 200.407). Emits the shared cost-allowability finding object.
-
Machine-readable catalog entry:
component_catalog.json
Triad integration¶
-
UDM alignment:
repo_local_single_requirement_finding_contract— Aligns to sponsored-project cost-allowability semantics; the finding object is a prompt-library contract shared across the cost-allowability check components, not a shared UDM schema. -
Evaluation datasets: no shared
evaluation-data-setscatalog entry recorded yet; current references are repo-local eval artifacts. -
Harness notes: Validate JSON output against schema.json. Canonical invocation surface is prompt.md. Invoked as a Step 2 task of the workflows/cost-allowability-analysis Vandalizer workflow.
-
Related component:
protocol-approval-allowability-check(sibling_distinct_regime) — Covers federal sponsor prior approval (2 CFR 200.407); protocol-approval-allowability-check covers institutional IRB / IACUC / IBC approval, a distinct regulatory regime.
Prompt body¶
Source: prompt.md.
Show prompt
Federal Prior Approval Check¶
Purpose: Decide whether a single expense requires federal sponsor prior written approval, and whether that approval is evidenced.
Expected input: A normalized expense record, extracted award terms, and a regulated-activity classification.
Expected output: One structured finding conforming to
schema.json.
This component is a single-requirement check in the federal cost-allowability analysis workflow. It evaluates federal sponsor prior approval only.
Prompt¶
You are a federal cost-allowability reviewer performing one specific check: Federal Prior Approval under 2 CFR 200.407. Review one expense and return a single structured finding for this check only — do not evaluate any other allowability requirement.
Return only a single JSON object conforming to the finding contract. No prose, Markdown, comments, or code fences.
Input¶
You receive a normalized expense record, extracted award terms, and a regulated-activity classification, produced by the upstream steps of the cost-allowability analysis workflow. Any of these may be partial or missing.
What this check evaluates¶
Whether the expense represents an action that requires prior written approval from the Federal awarding agency or pass-through entity under 2 CFR 200.407, and if so whether that approval is evidenced. Section 200.407 enumerates cost items and actions that require prior written approval — for example certain budget revisions and rebudgeting, capital expenditures and equipment, rebudgeting of participant support costs, foreign travel, pre-award costs, and other selected items of cost.
Use the award's prior_approval_triggers as the authoritative list of what this specific award requires approval for when it is supplied. When it is not supplied, reason from 2 CFR 200.407 and note the uncertainty.
This check covers federal sponsor prior approval only. Institutional protocol approval (IRB / IACUC / IBC) is handled by the separate protocol-approval-allowability check.
Decision rule¶
Set status to exactly one of:
-
pass— the expense does not trigger any federal prior-approval requirement, or it does and approval evidence is supplied. -
issue— the expense triggers a prior-approval requirement and approval status is unconfirmed. -
not_allowable— the expense triggers a prior-approval requirement and the evidence shows the required approval was not obtained. -
needs_info— there is not enough evidence to tell whether a prior-approval trigger applies, or whether approval exists. -
not_applicable— the award and 2 CFR 200.407 impose no prior-approval requirement reachable by this expense type.
Use the most conservative status the evidence supports. Never record pass when the evidence needed to satisfy the requirement is absent — that is needs_info.
Evidence and non-fabrication¶
-
Ground every finding in the supplied evidence. Populate
evidencewith shortsource_label/detailpairs (e.g.,award_terms:prior_approval_triggers,expense:description,user_note:approval). -
Do not invent approvals or prior-approval rules. A missing rule input is
needs_info, neverpass.
Output¶
Emit the finding object:
-
check_id— "cost-prior-approval" -
check_name— "Federal Prior Approval" -
regulation_anchor— "2 CFR 200.407" -
expense_id— the expense reference from the input, or null -
status— one of the values above -
summary— one sentence stating the outcome -
rationale— the evidence-grounded reasoning -
evidence— array of {source_label, detail} -
follow_up_actions— concrete actions needed before the cost is approved or charged; empty array when none -
confidence— "high", "medium", or "low", reflecting evidence completeness
Produce the finding now.
Output schema¶
Source: schema.json.
Show schema.json
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://github.com/AI4RA/prompt-library/components/cost-prior-approval-check/schema.json",
"title": "Federal Prior Approval Check \u2014 Finding",
"description": "Structured single-requirement allowability finding for the federal prior approval check (2 CFR 200.407). Part of the federal cost-allowability analysis workflow.",
"version": "0.1.0",
"type": "object",
"additionalProperties": false,
"required": [
"check_id",
"check_name",
"regulation_anchor",
"status",
"summary",
"rationale",
"evidence",
"follow_up_actions",
"confidence"
],
"properties": {
"check_id": {
"const": "cost-prior-approval",
"description": "Stable identifier for this check."
},
"check_name": {
"const": "Federal Prior Approval",
"description": "Human-readable check name."
},
"regulation_anchor": {
"const": "2 CFR 200.407",
"description": "Primary regulatory anchor for this check."
},
"expense_id": {
"type": [
"string",
"null"
],
"description": "Expense reference carried from the input."
},
"status": {
"type": "string",
"enum": [
"pass",
"issue",
"not_allowable",
"needs_info",
"not_applicable"
],
"description": "Outcome of this check."
},
"summary": {
"type": "string",
"minLength": 1,
"description": "One-sentence statement of the outcome."
},
"rationale": {
"type": "string",
"minLength": 1,
"description": "Evidence-grounded reasoning behind the status."
},
"evidence": {
"type": "array",
"description": "Evidence relied on. May be empty only when status is not_applicable.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"source_label",
"detail"
],
"properties": {
"source_label": {
"type": "string",
"minLength": 1,
"description": "Short source label, e.g. award_terms:prior_approval_triggers."
},
"detail": {
"type": "string",
"minLength": 1,
"description": "Concise summary of what the source shows."
}
}
}
},
"follow_up_actions": {
"type": "array",
"description": "Concrete actions needed before the cost is approved or charged. Empty array when none.",
"items": {
"type": "string",
"minLength": 1
}
},
"confidence": {
"type": "string",
"enum": [
"high",
"medium",
"low"
],
"description": "Reviewer confidence in this finding."
}
}
}
Changelog¶
Source: CHANGELOG.md.
All notable changes to this component. Versions follow semver: MAJOR for output-contract breaks, MINOR for backward-compatible additions, PATCH for wording or clarity.
[0.1.0] — 2026-05-21¶
- Initial experimental release.
- Single-requirement allowability check anchored to 2 CFR 200.407 (federal sponsor prior approval).
- Emits the shared cost-allowability finding object (
status,summary,rationale,evidence,follow_up_actions,confidence) withcheck_id"cost-prior-approval". - Scope is deliberately limited to federal prior approval; institutional IRB / IACUC / IBC approval is handled by protocol-approval-allowability-check.
- No eval cases yet — status
experimentaluntil at least one golden finding is added underevals/cases/.