Skip to content

Add federal cost-allowability analysis component set and workflow#40

Open
ProfessorPolymorphic wants to merge 1 commit into
mainfrom
add-cost-allowability-components
Open

Add federal cost-allowability analysis component set and workflow#40
ProfessorPolymorphic wants to merge 1 commit into
mainfrom
add-cost-allowability-components

Conversation

@ProfessorPolymorphic
Copy link
Copy Markdown
Contributor

Summary

  • Adds a 13-component set for analyzing the allowability of federal-grant expenses under the Uniform Guidance (2 CFR 200), decomposed so each component maps to a discrete regulatory requirement, plus the 3-step cost-allowability-analysis Vandalizer workflow that combines them.
  • Catches expenses tied to IRB / IACUC / IBC-regulated activities via a regulated-activity-classifier detection layer and a protocol-approval-allowability-check — a regulatory regime distinct from 2 CFR 200.407 federal prior approval.
  • Federal-generic (2 CFR 200), not sponsor-specific; the existing NSF-specific nsf-expense-allowability-check is untouched and coexists as the fast single-shot reviewer.

Components (all v0.1.0, status experimental)

Stage Components
Normalize & detect expense-transaction-extraction, award-allowability-terms-extraction, regulated-activity-classifier
Allowability checks cost-period-check, cost-reasonableness-check, cost-allocability-check, cost-consistent-treatment-check, cost-award-terms-conformance-check, cost-prior-approval-check, cost-documentation-check, protocol-approval-allowability-check
Selected items cost-selected-item-check
Synthesis cost-allowability-determination

The 9 checks emit a shared structured finding contract; the determination emits Markdown. All 13 are registered in component_catalog_overrides.yaml; component_catalog.json, the Vandalizer export, and the docs nav are regenerated.

Validation

  • python3 scripts/build_component_catalog.py --check — up to date
  • python3 scripts/build_vandalizer_workflows.py --check — all exports up to date
  • python3 .github/scripts/lint_components.py — 0 errors (2 pre-existing warnings unrelated to this change)
  • python3 -m mkdocs build --strict — clean

Test plan

  • Upload workflows/cost-allowability-analysis/cost-allowability-analysis.vandalizer.json into Vandalizer and run an end-to-end expense review
  • Confirm Step 3 (synthesis) receives the Step 2 findings as expected under the linear step model
  • Add golden eval cases per component (evals/cases/) to graduate components from experimental

🤖 Generated with Claude Code

Add 13 components for analyzing the allowability of federal-grant
expenses under the Uniform Guidance (2 CFR 200), decomposed so each
component maps to a discrete regulatory requirement:

- Stage 1 (normalize & detect): expense-transaction-extraction,
  award-allowability-terms-extraction, regulated-activity-classifier
- Stage 2 (checks): cost-period-check, cost-reasonableness-check,
  cost-allocability-check, cost-consistent-treatment-check,
  cost-award-terms-conformance-check, cost-prior-approval-check,
  cost-documentation-check, protocol-approval-allowability-check
- Stage 3 (selected items): cost-selected-item-check
- Stage 4 (synthesis): cost-allowability-determination

The regulated-activity-classifier and protocol-approval-allowability-check
catch expenses tied to activities requiring IRB, IACUC, or IBC oversight
-- a regime separate from 2 CFR 200.407 federal prior approval.

Add the cost-allowability-analysis Vandalizer workflow (3-step:
normalize/classify, parallel checks, synthesis) that manifests all 13
components, register them in component_catalog_overrides.yaml, and
regenerate component_catalog.json and the docs nav. All components and
the workflow are v0.1.0, status experimental.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant