# Illustrative App document (excerpt). Pyrana Capital is a synthetic portfolio.
app_key: finance-close
version: v14 # compiled, content-digested: sha256:3f9a71c2…e08b
surfaces:
monthly-analysis: { path: /close/monthly, reads: [close.summary, variance.report] }
targets:
monthly_analysis: { publishes: [close.summary, variance.report], doors: [page, copilot, api, mcp, schedule] }
ledger.journal.post: { doors: [page, copilot, mcp], approval: approval.journal.amount }
agents:
close-reviewer: { model: provider/model, tools: [ledger.accruals.list, ledger.journal.post] }
workflows:
monthly-close: { schedule: "0 2 * * 1-5", fan_out: { agent: close-reviewer, per: entity } }
tool_sources:
ledger: { kind: odbc, binding: erp-finance }
resources:
close.summary: { versioned: true, stale_publish: refuse }
access:
profiles: { controller: [read, run, approve] }
entitlements: { controller: [entity:US-01] }
approval:
approval.journal.amount: { when: "amount >= 25000 USD", lane: controller-approval }
knowledge:
standing_sets: [close-policy, entity-calendars] # cortIQ, preloaded before the first turn
activation: v14 # one pointer; rollback moves it back