modularityimportsideasets
A module's published surface
billing exports an ideaset. checkout imports only that. Reaching past the boundary is an error.
An ideaset is the module's published surface — not its internals.
charge {
capture payment for a checkout total
implemented in ["./src/billing/charge.ts".charge]
@status done
}
refund_policy {
refunds within 30 days require original charge id
@status done
}
// internals — not in the published surface
ledger_posting {
double-entry write after capture
@status done
}
billing_api (
charge,
refund_policy
)import "../billing/interface.rq" as billing
checkout {
must call [billing.charge] after session is valid
refunds follow [billing.refund_policy]
@status done
}errorCould not resolve reference to IdeaDeclaration named 'ledger_posting'.
- Import from a file that exports ledger_posting
- Add ledger_posting to billing_api
- Create the missing idea