# US/Canada Receivership External Setup Packet

Use this packet for the account, terms, paid-search, cost-control, and authorized import steps that must be completed before the US/Canada receivership database can be called production-complete.

GitHub setup commands in this packet are placeholder-guarded: each command assigns a local `*_VALUE` placeholder and fails closed until the operator replaces it with an approved value. Running unchanged examples will not write GitHub Actions Secrets or Variables.

Generated at: 2026-07-20T08:29:54.271Z
Packet version: 1
Status: external_setup_required
Production ready: no
Source policy: first_party_only
Target countries: US, CA

## Summary

- Total sources: 5
- Ready sources: 0
- Billable sources: 3
- Terms-review sources: 2
- Legal-review sources: 2
- Import-handoff sources: 4
- Required GitHub commands: 19

## Missing Repository Inputs

### Required Secrets

- PACER_PASSWORD
- PACER_USERNAME

### Required Variables

- RECEIVERSHIP_CA_BC_CSO_IMPORT_PATH
- RECEIVERSHIP_CA_BC_CSO_POLLING_ENABLED
- RECEIVERSHIP_CA_BC_CSO_TERMS_APPROVED
- RECEIVERSHIP_CA_ON_COURTS_IMPORT_PATH
- RECEIVERSHIP_CA_ON_COURTS_POLLING_ENABLED
- RECEIVERSHIP_CA_ON_COURTS_TERMS_APPROVED
- RECEIVERSHIP_OSB_BIA_ACCOUNT_CONFIRMED
- RECEIVERSHIP_OSB_BIA_DAILY_SEARCH_LIMIT
- RECEIVERSHIP_OSB_BIA_IMPORT_PATH
- RECEIVERSHIP_OSB_BIA_PAID_SEARCH_APPROVED
- RECEIVERSHIP_OSB_BIA_SEARCH_BUDGET_CAD
- RECEIVERSHIP_PACER_COURT_ALLOWLIST
- RECEIVERSHIP_PACER_COURT_DAILY_COST_CAP_USD
- RECEIVERSHIP_PACER_COURT_IMPORT_PATH
- RECEIVERSHIP_PACER_COURT_MAX_DOCKET_PAGES
- RECEIVERSHIP_PACER_COURT_POLLING_ENABLED
- RECEIVERSHIP_PACER_DAILY_COST_CAP_USD

## Guardrails

- Do not set account-confirmation, paid-search, terms-approved, polling-enabled, cost-cap, allowlist, or import-path variables until the matching account, legal, cost-control, and authorized-export decision is complete.
- Do not commit authorized court, PACER, or OSB export files unless the source terms explicitly allow redistribution.
- Keep PACER and OSB daily caps low until the source-health and production-ready gates are clean.

## Activation Queue

Work these rows in order. The first rows avoid credential/payment changes and clear terms/legal-review gates before paid account-backed sources.

| Order | Source                          | Workstream                      | Owner                                      | Ready | Why now                                                                                                                                                            |
| ----- | ------------------------------- | ------------------------------- | ------------------------------------------ | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 1     | ca-bc-cso-new-cases             | terms_and_legal_review          | operator_plus_legal_review                 | no    | Non-billable terms/legal review can unblock an implemented collector or authorized import path before credentialed paid sources are configured.                    |
| 2     | ca-ontario-courts-public-portal | terms_and_legal_review          | operator_plus_legal_review                 | no    | Non-billable terms/legal review can unblock an implemented collector or authorized import path before credentialed paid sources are configured.                    |
| 3     | ca-osb-bia-insolvency-records   | canada_paid_account_and_import  | operator_with_account_and_budget_authority | no    | National Canadian BIA coverage depends on paid OSB account setup plus an authorized saved-search import.                                                           |
| 4     | us-pacer-case-locator           | pacer_account_and_cost_controls | operator_with_account_and_budget_authority | no    | National US bankruptcy backstop depends on PACER credentials and explicit daily cost controls.                                                                     |
| 5     | us-pacer-court-polling          | pacer_court_polling_and_import  | operator_with_account_and_budget_authority | no    | Court-specific PACER polling is the narrowest and most expensive remaining path, so it should run after account, allowlist, import, and cap decisions are settled. |

## 1. BC Court Services Online new cases

- Source ID: ca-bc-cso-new-cases
- Setup ID: setup:ca-bc-court-source
- Status: terms_review
- Ready: no
- Billable: no
- Legal review required: yes
- Terms review required: yes
- Account or source URL: https://justice.gov.bc.ca/cso/newCaseReport.do
- Action required: Complete BC Court Services Online public-reuse terms review, then enable the approved polling/import workflow and provide the authorized new-case report import file path.

### Official References

- BC CSO new case report: https://justice.gov.bc.ca/cso/newCaseReport.do
- BC CSO e-search usage agreement: https://justice.gov.bc.ca/cso/usageAgreement/index.do
- BC CSO FAQ and fee schedule: https://justice.gov.bc.ca/cso/help/faq.do

### Activation Steps

1. Review the BC CSO e-search usage agreement and confirm public-reuse terms for automated new-case monitoring.
2. Confirm payment/account requirements for any paid file-detail or document retrieval workflow.
3. Save authorized BC CSO new-case report rows as JSON, NDJSON, or CSV and point RECEIVERSHIP_CA_BC_CSO_IMPORT_PATH at that file.
4. Set RECEIVERSHIP_CA_BC_CSO_TERMS_APPROVED=true and RECEIVERSHIP_CA_BC_CSO_POLLING_ENABLED=true only after the review is complete.

### Missing Required Inputs

- RECEIVERSHIP_CA_BC_CSO_IMPORT_PATH
- RECEIVERSHIP_CA_BC_CSO_POLLING_ENABLED
- RECEIVERSHIP_CA_BC_CSO_TERMS_APPROVED

### Required Inputs

| Name                                   | Kind     | Required | Configured |
| -------------------------------------- | -------- | -------- | ---------- |
| RECEIVERSHIP_CA_BC_CSO_TERMS_APPROVED  | variable | yes      | no         |
| RECEIVERSHIP_CA_BC_CSO_POLLING_ENABLED | variable | yes      | no         |
| RECEIVERSHIP_CA_BC_CSO_IMPORT_PATH     | variable | yes      | no         |

### Cost Controls

| Name | Kind | Required | Configured |
| ---- | ---- | -------- | ---------- |
| n/a  | n/a  | n/a      | n/a        |

### Import Handoff

- Title: BC CSO authorized new-case report export
- Import path variable: RECEIVERSHIP_CA_BC_CSO_IMPORT_PATH
- Accepted formats: csv, json, ndjson
- Parser check: npm run check:receivership:us-ca:import-templates
- CSV example: public/data/receivership/us-ca-import-template-bc-cso.csv

### Required GitHub Setup Commands

```bash
RECEIVERSHIP_CA_BC_CSO_IMPORT_PATH_VALUE='<path to authorized BC CSO new-case report export>'; if [ "$RECEIVERSHIP_CA_BC_CSO_IMPORT_PATH_VALUE" = '<path to authorized BC CSO new-case report export>' ]; then echo 'Replace RECEIVERSHIP_CA_BC_CSO_IMPORT_PATH_VALUE before setting RECEIVERSHIP_CA_BC_CSO_IMPORT_PATH' >&2; false; else gh variable set RECEIVERSHIP_CA_BC_CSO_IMPORT_PATH --repo 'charliecf/charts.fyi' --body "$RECEIVERSHIP_CA_BC_CSO_IMPORT_PATH_VALUE"; fi
RECEIVERSHIP_CA_BC_CSO_POLLING_ENABLED_VALUE='<true after approvals and controls are in place>'; if [ "$RECEIVERSHIP_CA_BC_CSO_POLLING_ENABLED_VALUE" = '<true after approvals and controls are in place>' ]; then echo 'Replace RECEIVERSHIP_CA_BC_CSO_POLLING_ENABLED_VALUE before setting RECEIVERSHIP_CA_BC_CSO_POLLING_ENABLED' >&2; false; else gh variable set RECEIVERSHIP_CA_BC_CSO_POLLING_ENABLED --repo 'charliecf/charts.fyi' --body "$RECEIVERSHIP_CA_BC_CSO_POLLING_ENABLED_VALUE"; fi
RECEIVERSHIP_CA_BC_CSO_TERMS_APPROVED_VALUE='<true after terms/legal review>'; if [ "$RECEIVERSHIP_CA_BC_CSO_TERMS_APPROVED_VALUE" = '<true after terms/legal review>' ]; then echo 'Replace RECEIVERSHIP_CA_BC_CSO_TERMS_APPROVED_VALUE before setting RECEIVERSHIP_CA_BC_CSO_TERMS_APPROVED' >&2; false; else gh variable set RECEIVERSHIP_CA_BC_CSO_TERMS_APPROVED --repo 'charliecf/charts.fyi' --body "$RECEIVERSHIP_CA_BC_CSO_TERMS_APPROVED_VALUE"; fi
```

### Optional GitHub Setup Commands

```bash
# No commands listed.
```

### Source Verification

```bash
npm run check:receivership:us-ca:bc-cso
npm run check:receivership:us-ca:blockers
npm run check:receivership:us-ca:config
npm run check:receivership:us-ca:github-env
npm run check:receivership:us-ca:import-templates
npm run check:receivership:us-ca:production-blocker-issue
npm run check:receivership:us-ca:production-env
npm run check:receivership:us-ca:runbook
npm run check:receivership:us-ca:setup-packet
npm run check:receivership:us-ca:source-activation
npm run check:receivership:us-ca:source-decision-ledger
npm run check:receivership:us-ca:source-decision-ledger-template
npm run check:receivership:us-ca:source-decision-packet
npm run check:receivership:us-ca:source-health
npm run fetch:receivership:us-ca
npm run verify:receivership:us-ca
npm run verify:receivership:us-ca:production
```

### Ready When

- All required GitHub Actions Secrets and Variables for this source are configured.
- Any required account, paid-search, cost-control, or terms-review step is approved.
- The filled source decision ledger marks this source approved and ready, validates with npm run check:receivership:us-ca:source-decision-ledger, and is supplied to the production-ready workflow as RECEIVERSHIP_US_CA_SOURCE_DECISION_LEDGER_GZIP_BASE64.
- Required first-party import files validate against public/data/receivership/us-ca-import-templates.json.
- The source health row is ok/fresh after the next US/Canada refresh.
- The row-producing source collector is implemented, not preflight-only.
- The strict production verifier exits successfully.

## 2. Ontario Courts Public Portal

- Source ID: ca-ontario-courts-public-portal
- Setup ID: setup:ca-on-court-source
- Status: terms_review
- Ready: no
- Billable: no
- Legal review required: yes
- Terms review required: yes
- Account or source URL: https://www.ontario.ca/page/search-court-cases-online
- Action required: Complete Ontario Courts Public Portal automation/reuse review and authorized import handoff before enabling this source. Missing: RECEIVERSHIP_CA_ON_COURTS_TERMS_APPROVED=true after automation and reuse terms review, RECEIVERSHIP_CA_ON_COURTS_POLLING_ENABLED=true after polling/import workflow approval, RECEIVERSHIP_CA_ON_COURTS_IMPORT_PATH pointing to an authorized JSON, NDJSON, or CSV court case/order export.

### Official References

- Ontario Courts Public Portal: https://www.ontario.ca/page/ontario-courts-public-portal
- Ontario court file and document access guidance: https://www.ontario.ca/document/access-court-files-documents-and-exhibits

### Activation Steps

1. Review Ontario portal access, public court-file access guidance, and redistribution constraints for automated monitoring.
2. Confirm the approved workflow needed for Commercial List and other receivership candidate discovery; Ontario court search-tool output cannot be saved, reproduced, or distributed unless the review authorizes the workflow.
3. Save authorized Ontario court case/order records as JSON, NDJSON, or CSV and point RECEIVERSHIP_CA_ON_COURTS_IMPORT_PATH at that file.
4. Set RECEIVERSHIP_CA_ON_COURTS_TERMS_APPROVED=true and RECEIVERSHIP_CA_ON_COURTS_POLLING_ENABLED=true only after the review is complete.

### Missing Required Inputs

- RECEIVERSHIP_CA_ON_COURTS_IMPORT_PATH
- RECEIVERSHIP_CA_ON_COURTS_POLLING_ENABLED
- RECEIVERSHIP_CA_ON_COURTS_TERMS_APPROVED

### Required Inputs

| Name                                      | Kind     | Required | Configured |
| ----------------------------------------- | -------- | -------- | ---------- |
| RECEIVERSHIP_CA_ON_COURTS_TERMS_APPROVED  | variable | yes      | no         |
| RECEIVERSHIP_CA_ON_COURTS_POLLING_ENABLED | variable | yes      | no         |
| RECEIVERSHIP_CA_ON_COURTS_IMPORT_PATH     | variable | yes      | no         |

### Cost Controls

| Name | Kind | Required | Configured |
| ---- | ---- | -------- | ---------- |
| n/a  | n/a  | n/a      | n/a        |

### Import Handoff

- Title: Ontario authorized court case/order export
- Import path variable: RECEIVERSHIP_CA_ON_COURTS_IMPORT_PATH
- Accepted formats: csv, json, ndjson
- Parser check: npm run check:receivership:us-ca:import-templates
- CSV example: public/data/receivership/us-ca-import-template-ontario-courts.csv

### Required GitHub Setup Commands

```bash
RECEIVERSHIP_CA_ON_COURTS_IMPORT_PATH_VALUE='<path to authorized Ontario court case/order export>'; if [ "$RECEIVERSHIP_CA_ON_COURTS_IMPORT_PATH_VALUE" = '<path to authorized Ontario court case/order export>' ]; then echo 'Replace RECEIVERSHIP_CA_ON_COURTS_IMPORT_PATH_VALUE before setting RECEIVERSHIP_CA_ON_COURTS_IMPORT_PATH' >&2; false; else gh variable set RECEIVERSHIP_CA_ON_COURTS_IMPORT_PATH --repo 'charliecf/charts.fyi' --body "$RECEIVERSHIP_CA_ON_COURTS_IMPORT_PATH_VALUE"; fi
RECEIVERSHIP_CA_ON_COURTS_POLLING_ENABLED_VALUE='<true after approvals and controls are in place>'; if [ "$RECEIVERSHIP_CA_ON_COURTS_POLLING_ENABLED_VALUE" = '<true after approvals and controls are in place>' ]; then echo 'Replace RECEIVERSHIP_CA_ON_COURTS_POLLING_ENABLED_VALUE before setting RECEIVERSHIP_CA_ON_COURTS_POLLING_ENABLED' >&2; false; else gh variable set RECEIVERSHIP_CA_ON_COURTS_POLLING_ENABLED --repo 'charliecf/charts.fyi' --body "$RECEIVERSHIP_CA_ON_COURTS_POLLING_ENABLED_VALUE"; fi
RECEIVERSHIP_CA_ON_COURTS_TERMS_APPROVED_VALUE='<true after terms/legal review>'; if [ "$RECEIVERSHIP_CA_ON_COURTS_TERMS_APPROVED_VALUE" = '<true after terms/legal review>' ]; then echo 'Replace RECEIVERSHIP_CA_ON_COURTS_TERMS_APPROVED_VALUE before setting RECEIVERSHIP_CA_ON_COURTS_TERMS_APPROVED' >&2; false; else gh variable set RECEIVERSHIP_CA_ON_COURTS_TERMS_APPROVED --repo 'charliecf/charts.fyi' --body "$RECEIVERSHIP_CA_ON_COURTS_TERMS_APPROVED_VALUE"; fi
```

### Optional GitHub Setup Commands

```bash
# No commands listed.
```

### Source Verification

```bash
npm run check:receivership:us-ca:blockers
npm run check:receivership:us-ca:config
npm run check:receivership:us-ca:github-env
npm run check:receivership:us-ca:import-templates
npm run check:receivership:us-ca:production-blocker-issue
npm run check:receivership:us-ca:production-env
npm run check:receivership:us-ca:runbook
npm run check:receivership:us-ca:setup-packet
npm run check:receivership:us-ca:source-activation
npm run check:receivership:us-ca:source-decision-ledger
npm run check:receivership:us-ca:source-decision-ledger-template
npm run check:receivership:us-ca:source-decision-packet
npm run check:receivership:us-ca:source-health
npm run fetch:receivership:us-ca
npm run verify:receivership:us-ca
npm run verify:receivership:us-ca:production
```

### Ready When

- All required GitHub Actions Secrets and Variables for this source are configured.
- Any required account, paid-search, cost-control, or terms-review step is approved.
- The filled source decision ledger marks this source approved and ready, validates with npm run check:receivership:us-ca:source-decision-ledger, and is supplied to the production-ready workflow as RECEIVERSHIP_US_CA_SOURCE_DECISION_LEDGER_GZIP_BASE64.
- Required first-party import files validate against public/data/receivership/us-ca-import-templates.json.
- The source health row is ok/fresh after the next US/Canada refresh.
- The row-producing source collector is implemented, not preflight-only.
- The strict production verifier exits successfully.

## 3. Canada OSB Bankruptcy and Insolvency Records Search

- Source ID: ca-osb-bia-insolvency-records
- Setup ID: setup:ca-osb-bia-insolvency-records
- Status: skipped_credentials
- Ready: no
- Billable: yes
- Legal review required: no
- Terms review required: no
- Account or source URL: https://www.ic.gc.ca/app/scr/bsf-osb/ins/login.html?lang=eng
- Action required: Complete OSB Bankruptcy and Insolvency Records Search account, paid-search, cost-control, and authorized import setup before enabling this source. Missing: RECEIVERSHIP_OSB_BIA_ACCOUNT_CONFIRMED=true after registering for OSB Bankruptcy and Insolvency Records Search, RECEIVERSHIP_OSB_BIA_PAID_SEARCH_APPROVED=true after approving paid OSB searches, RECEIVERSHIP_OSB_BIA_DAILY_SEARCH_LIMIT, RECEIVERSHIP_OSB_BIA_SEARCH_BUDGET_CAD, RECEIVERSHIP_OSB_BIA_IMPORT_PATH pointing to an authorized JSON, NDJSON, or CSV OSB search result/details export.

### Official References

- OSB Bankruptcy and Insolvency Records Search: https://ised-isde.canada.ca/site/office-superintendent-bankruptcy/en/bankruptcy-and-insolvency-records-search/bankruptcy-and-insolvency-records-search
- OSB search instructions and costs: https://ised-isde.canada.ca/site/office-superintendent-bankruptcy/en/bankruptcy-and-insolvency-records-search/instructions

### Activation Steps

1. Register for OSB Bankruptcy and Insolvency Records Search access through the current GCKey or Sign-In Partner flow.
2. Approve paid searches and configure a daily search limit plus CAD budget before enabling automation.
3. Save authorized OSB search result/details exports as JSON, NDJSON, or CSV and point RECEIVERSHIP_OSB_BIA_IMPORT_PATH at that file.
4. Set RECEIVERSHIP_OSB_BIA_ACCOUNT_CONFIRMED=true, RECEIVERSHIP_OSB_BIA_PAID_SEARCH_APPROVED=true, RECEIVERSHIP_OSB_BIA_DAILY_SEARCH_LIMIT, RECEIVERSHIP_OSB_BIA_SEARCH_BUDGET_CAD, and RECEIVERSHIP_OSB_BIA_IMPORT_PATH.

### Missing Required Inputs

- RECEIVERSHIP_OSB_BIA_ACCOUNT_CONFIRMED
- RECEIVERSHIP_OSB_BIA_DAILY_SEARCH_LIMIT
- RECEIVERSHIP_OSB_BIA_IMPORT_PATH
- RECEIVERSHIP_OSB_BIA_PAID_SEARCH_APPROVED
- RECEIVERSHIP_OSB_BIA_SEARCH_BUDGET_CAD

### Required Inputs

| Name                                      | Kind     | Required | Configured |
| ----------------------------------------- | -------- | -------- | ---------- |
| RECEIVERSHIP_OSB_BIA_ACCOUNT_CONFIRMED    | variable | yes      | no         |
| RECEIVERSHIP_OSB_BIA_PAID_SEARCH_APPROVED | variable | yes      | no         |
| RECEIVERSHIP_OSB_BIA_DAILY_SEARCH_LIMIT   | variable | yes      | no         |
| RECEIVERSHIP_OSB_BIA_IMPORT_PATH          | variable | yes      | no         |
| RECEIVERSHIP_OSB_BIA_SEARCH_BUDGET_CAD    | variable | yes      | no         |

### Cost Controls

| Name                                    | Kind     | Required | Configured |
| --------------------------------------- | -------- | -------- | ---------- |
| RECEIVERSHIP_OSB_BIA_DAILY_SEARCH_LIMIT | variable | yes      | no         |
| RECEIVERSHIP_OSB_BIA_SEARCH_BUDGET_CAD  | variable | yes      | no         |

### Import Handoff

- Title: OSB BIA authorized saved-search/details export
- Import path variable: RECEIVERSHIP_OSB_BIA_IMPORT_PATH
- Accepted formats: csv, json, ndjson
- Parser check: npm run check:receivership:us-ca:import-templates
- CSV example: public/data/receivership/us-ca-import-template-osb-bia.csv

### Required GitHub Setup Commands

```bash
RECEIVERSHIP_OSB_BIA_ACCOUNT_CONFIRMED_VALUE='<true after account access is confirmed>'; if [ "$RECEIVERSHIP_OSB_BIA_ACCOUNT_CONFIRMED_VALUE" = '<true after account access is confirmed>' ]; then echo 'Replace RECEIVERSHIP_OSB_BIA_ACCOUNT_CONFIRMED_VALUE before setting RECEIVERSHIP_OSB_BIA_ACCOUNT_CONFIRMED' >&2; false; else gh variable set RECEIVERSHIP_OSB_BIA_ACCOUNT_CONFIRMED --repo 'charliecf/charts.fyi' --body "$RECEIVERSHIP_OSB_BIA_ACCOUNT_CONFIRMED_VALUE"; fi
RECEIVERSHIP_OSB_BIA_DAILY_SEARCH_LIMIT_VALUE='<approved daily search count limit>'; if [ "$RECEIVERSHIP_OSB_BIA_DAILY_SEARCH_LIMIT_VALUE" = '<approved daily search count limit>' ]; then echo 'Replace RECEIVERSHIP_OSB_BIA_DAILY_SEARCH_LIMIT_VALUE before setting RECEIVERSHIP_OSB_BIA_DAILY_SEARCH_LIMIT' >&2; false; else gh variable set RECEIVERSHIP_OSB_BIA_DAILY_SEARCH_LIMIT --repo 'charliecf/charts.fyi' --body "$RECEIVERSHIP_OSB_BIA_DAILY_SEARCH_LIMIT_VALUE"; fi
RECEIVERSHIP_OSB_BIA_IMPORT_PATH_VALUE='<path to authorized OSB BIA saved-search export>'; if [ "$RECEIVERSHIP_OSB_BIA_IMPORT_PATH_VALUE" = '<path to authorized OSB BIA saved-search export>' ]; then echo 'Replace RECEIVERSHIP_OSB_BIA_IMPORT_PATH_VALUE before setting RECEIVERSHIP_OSB_BIA_IMPORT_PATH' >&2; false; else gh variable set RECEIVERSHIP_OSB_BIA_IMPORT_PATH --repo 'charliecf/charts.fyi' --body "$RECEIVERSHIP_OSB_BIA_IMPORT_PATH_VALUE"; fi
RECEIVERSHIP_OSB_BIA_PAID_SEARCH_APPROVED_VALUE='<true after paid search approval>'; if [ "$RECEIVERSHIP_OSB_BIA_PAID_SEARCH_APPROVED_VALUE" = '<true after paid search approval>' ]; then echo 'Replace RECEIVERSHIP_OSB_BIA_PAID_SEARCH_APPROVED_VALUE before setting RECEIVERSHIP_OSB_BIA_PAID_SEARCH_APPROVED' >&2; false; else gh variable set RECEIVERSHIP_OSB_BIA_PAID_SEARCH_APPROVED --repo 'charliecf/charts.fyi' --body "$RECEIVERSHIP_OSB_BIA_PAID_SEARCH_APPROVED_VALUE"; fi
RECEIVERSHIP_OSB_BIA_SEARCH_BUDGET_CAD_VALUE='<approved CAD daily search budget>'; if [ "$RECEIVERSHIP_OSB_BIA_SEARCH_BUDGET_CAD_VALUE" = '<approved CAD daily search budget>' ]; then echo 'Replace RECEIVERSHIP_OSB_BIA_SEARCH_BUDGET_CAD_VALUE before setting RECEIVERSHIP_OSB_BIA_SEARCH_BUDGET_CAD' >&2; false; else gh variable set RECEIVERSHIP_OSB_BIA_SEARCH_BUDGET_CAD --repo 'charliecf/charts.fyi' --body "$RECEIVERSHIP_OSB_BIA_SEARCH_BUDGET_CAD_VALUE"; fi
```

### Optional GitHub Setup Commands

```bash
# No commands listed.
```

### Source Verification

```bash
npm run check:receivership:us-ca:blockers
npm run check:receivership:us-ca:config
npm run check:receivership:us-ca:github-env
npm run check:receivership:us-ca:import-templates
npm run check:receivership:us-ca:production-blocker-issue
npm run check:receivership:us-ca:production-env
npm run check:receivership:us-ca:runbook
npm run check:receivership:us-ca:setup-packet
npm run check:receivership:us-ca:source-activation
npm run check:receivership:us-ca:source-decision-ledger
npm run check:receivership:us-ca:source-decision-ledger-template
npm run check:receivership:us-ca:source-decision-packet
npm run check:receivership:us-ca:source-health
npm run fetch:receivership:us-ca
npm run verify:receivership:us-ca
npm run verify:receivership:us-ca:production
```

### Ready When

- All required GitHub Actions Secrets and Variables for this source are configured.
- Any required account, paid-search, cost-control, or terms-review step is approved.
- The filled source decision ledger marks this source approved and ready, validates with npm run check:receivership:us-ca:source-decision-ledger, and is supplied to the production-ready workflow as RECEIVERSHIP_US_CA_SOURCE_DECISION_LEDGER_GZIP_BASE64.
- Required first-party import files validate against public/data/receivership/us-ca-import-templates.json.
- The source health row is ok/fresh after the next US/Canada refresh.
- The row-producing source collector is implemented, not preflight-only.
- The strict production verifier exits successfully.

## 4. PACER Case Locator

- Source ID: us-pacer-case-locator
- Setup ID: credentials:pacer-case-locator
- Status: skipped_credentials
- Ready: no
- Billable: yes
- Legal review required: no
- Terms review required: no
- Account or source URL: https://pacer.uscourts.gov/find-case/search-national-index
- Action required: Complete PACER Case Locator credentials and daily cost-cap setup before enabling bounded PCL ingestion. Missing: PACER_USERNAME and PACER_PASSWORD, RECEIVERSHIP_PACER_DAILY_COST_CAP_USD. PACER_OTP and PACER_CLIENT_CODE are optional depending on account settings.

### Official References

- PACER Case Locator: https://pacer.uscourts.gov/find-case/search-national-index
- PACER registration FAQ: https://pacer.uscourts.gov/help/faqs/registration
- PACER policy and fee information: https://pacer.uscourts.gov/policy-procedures

### Activation Steps

1. Register or confirm a PACER account and billing responsibility.
2. Set PACER_USERNAME and PACER_PASSWORD; add PACER_TOTP_SECRET, PACER_OTP, and PACER_CLIENT_CODE if the account requires them.
3. Run npm run check:pacer before enabling billable Case Locator searches.

### Missing Required Inputs

- PACER_PASSWORD
- PACER_USERNAME
- RECEIVERSHIP_PACER_DAILY_COST_CAP_USD

### Required Inputs

| Name                                  | Kind     | Required | Configured |
| ------------------------------------- | -------- | -------- | ---------- |
| PACER_USERNAME                        | secret   | yes      | no         |
| PACER_PASSWORD                        | secret   | yes      | no         |
| RECEIVERSHIP_PACER_DAILY_COST_CAP_USD | variable | yes      | no         |

### Cost Controls

| Name                                  | Kind     | Required | Configured |
| ------------------------------------- | -------- | -------- | ---------- |
| RECEIVERSHIP_PACER_DAILY_COST_CAP_USD | variable | yes      | no         |

### Import Handoff

- No import file is required for this source.

### Required GitHub Setup Commands

```bash
PACER_PASSWORD_VALUE='<PACER password>'; if [ "$PACER_PASSWORD_VALUE" = '<PACER password>' ]; then echo 'Replace PACER_PASSWORD_VALUE before setting PACER_PASSWORD' >&2; false; else gh secret set PACER_PASSWORD --app actions --repo 'charliecf/charts.fyi' --body "$PACER_PASSWORD_VALUE"; fi
PACER_USERNAME_VALUE='<PACER username>'; if [ "$PACER_USERNAME_VALUE" = '<PACER username>' ]; then echo 'Replace PACER_USERNAME_VALUE before setting PACER_USERNAME' >&2; false; else gh secret set PACER_USERNAME --app actions --repo 'charliecf/charts.fyi' --body "$PACER_USERNAME_VALUE"; fi
RECEIVERSHIP_PACER_DAILY_COST_CAP_USD_VALUE='<approved USD daily cap>'; if [ "$RECEIVERSHIP_PACER_DAILY_COST_CAP_USD_VALUE" = '<approved USD daily cap>' ]; then echo 'Replace RECEIVERSHIP_PACER_DAILY_COST_CAP_USD_VALUE before setting RECEIVERSHIP_PACER_DAILY_COST_CAP_USD' >&2; false; else gh variable set RECEIVERSHIP_PACER_DAILY_COST_CAP_USD --repo 'charliecf/charts.fyi' --body "$RECEIVERSHIP_PACER_DAILY_COST_CAP_USD_VALUE"; fi
```

### Optional GitHub Setup Commands

```bash
PACER_CLIENT_CODE_VALUE='<optional PACER client code>'; if [ "$PACER_CLIENT_CODE_VALUE" = '<optional PACER client code>' ]; then echo 'Replace PACER_CLIENT_CODE_VALUE before setting PACER_CLIENT_CODE' >&2; false; else gh secret set PACER_CLIENT_CODE --app actions --repo 'charliecf/charts.fyi' --body "$PACER_CLIENT_CODE_VALUE"; fi
PACER_OTP_VALUE='<one-time PACER MFA code>'; if [ "$PACER_OTP_VALUE" = '<one-time PACER MFA code>' ]; then echo 'Replace PACER_OTP_VALUE before setting PACER_OTP' >&2; false; else gh secret set PACER_OTP --app actions --repo 'charliecf/charts.fyi' --body "$PACER_OTP_VALUE"; fi
PACER_TOTP_SECRET_VALUE='<optional PACER TOTP seed>'; if [ "$PACER_TOTP_SECRET_VALUE" = '<optional PACER TOTP seed>' ]; then echo 'Replace PACER_TOTP_SECRET_VALUE before setting PACER_TOTP_SECRET' >&2; false; else gh secret set PACER_TOTP_SECRET --app actions --repo 'charliecf/charts.fyi' --body "$PACER_TOTP_SECRET_VALUE"; fi
```

### Source Verification

```bash
npm run check:pacer
npm run check:receivership:us-ca:blockers
npm run check:receivership:us-ca:config
npm run check:receivership:us-ca:github-env
npm run check:receivership:us-ca:import-templates
npm run check:receivership:us-ca:production-blocker-issue
npm run check:receivership:us-ca:production-env
npm run check:receivership:us-ca:runbook
npm run check:receivership:us-ca:setup-packet
npm run check:receivership:us-ca:source-activation
npm run check:receivership:us-ca:source-decision-ledger
npm run check:receivership:us-ca:source-decision-ledger-template
npm run check:receivership:us-ca:source-decision-packet
npm run check:receivership:us-ca:source-health
npm run fetch:receivership:us-ca
npm run verify:receivership:us-ca
npm run verify:receivership:us-ca:production
```

### Ready When

- All required GitHub Actions Secrets and Variables for this source are configured.
- Any required account, paid-search, cost-control, or terms-review step is approved.
- The filled source decision ledger marks this source approved and ready, validates with npm run check:receivership:us-ca:source-decision-ledger, and is supplied to the production-ready workflow as RECEIVERSHIP_US_CA_SOURCE_DECISION_LEDGER_GZIP_BASE64.
- Required first-party import files validate against public/data/receivership/us-ca-import-templates.json.
- The source health row is ok/fresh after the next US/Canada refresh.
- The row-producing source collector is implemented, not preflight-only.
- The strict production verifier exits successfully.

## 5. PACER specific-court docket polling

- Source ID: us-pacer-court-polling
- Setup ID: setup:us-pacer-court-polling
- Status: skipped_credentials
- Ready: no
- Billable: yes
- Legal review required: no
- Terms review required: no
- Account or source URL: https://pacer.uscourts.gov/find-case
- Action required: Complete PACER court-specific credentials, court allowlist, cost controls, polling approval, and authorized docket import setup before enabling this source. Missing: PACER_USERNAME and PACER_PASSWORD, RECEIVERSHIP_PACER_COURT_ALLOWLIST, RECEIVERSHIP_PACER_COURT_DAILY_COST_CAP_USD, RECEIVERSHIP_PACER_COURT_MAX_DOCKET_PAGES, RECEIVERSHIP_PACER_COURT_POLLING_ENABLED=true after credentials, allowlist, and cost controls are approved, RECEIVERSHIP_PACER_COURT_IMPORT_PATH pointing to an approved JSON, NDJSON, or CSV CM/ECF docket export.

### Official References

- PACER find a case: https://pacer.uscourts.gov/find-case
- PACER registration FAQ: https://pacer.uscourts.gov/help/faqs/registration
- PACER policy and fee information: https://pacer.uscourts.gov/policy-procedures

### Activation Steps

1. Register or confirm a PACER account and billing responsibility for court-specific CM/ECF access.
2. Choose the bankruptcy court allowlist and set a daily cost cap plus docket-page cap.
3. Save approved court-specific CM/ECF docket exports as JSON, NDJSON, or CSV and point RECEIVERSHIP_PACER_COURT_IMPORT_PATH at that file.
4. Set RECEIVERSHIP_PACER_COURT_ALLOWLIST, RECEIVERSHIP_PACER_COURT_DAILY_COST_CAP_USD, RECEIVERSHIP_PACER_COURT_MAX_DOCKET_PAGES, and RECEIVERSHIP_PACER_COURT_POLLING_ENABLED=true only after cost controls are reviewed.

### Missing Required Inputs

- PACER_PASSWORD
- PACER_USERNAME
- RECEIVERSHIP_PACER_COURT_ALLOWLIST
- RECEIVERSHIP_PACER_COURT_DAILY_COST_CAP_USD
- RECEIVERSHIP_PACER_COURT_IMPORT_PATH
- RECEIVERSHIP_PACER_COURT_MAX_DOCKET_PAGES
- RECEIVERSHIP_PACER_COURT_POLLING_ENABLED

### Required Inputs

| Name                                        | Kind     | Required | Configured |
| ------------------------------------------- | -------- | -------- | ---------- |
| PACER_USERNAME                              | secret   | yes      | no         |
| PACER_PASSWORD                              | secret   | yes      | no         |
| RECEIVERSHIP_PACER_COURT_ALLOWLIST          | variable | yes      | no         |
| RECEIVERSHIP_PACER_COURT_DAILY_COST_CAP_USD | variable | yes      | no         |
| RECEIVERSHIP_PACER_COURT_IMPORT_PATH        | variable | yes      | no         |
| RECEIVERSHIP_PACER_COURT_MAX_DOCKET_PAGES   | variable | yes      | no         |
| RECEIVERSHIP_PACER_COURT_POLLING_ENABLED    | variable | yes      | no         |

### Cost Controls

| Name                                        | Kind     | Required | Configured |
| ------------------------------------------- | -------- | -------- | ---------- |
| RECEIVERSHIP_PACER_COURT_DAILY_COST_CAP_USD | variable | yes      | no         |
| RECEIVERSHIP_PACER_COURT_MAX_DOCKET_PAGES   | variable | yes      | no         |

### Import Handoff

- Title: PACER court-specific CM/ECF docket export
- Import path variable: RECEIVERSHIP_PACER_COURT_IMPORT_PATH
- Accepted formats: csv, json, ndjson
- Parser check: npm run check:receivership:us-ca:import-templates
- CSV example: public/data/receivership/us-ca-import-template-pacer-court.csv

### Required GitHub Setup Commands

```bash
PACER_PASSWORD_VALUE='<PACER password>'; if [ "$PACER_PASSWORD_VALUE" = '<PACER password>' ]; then echo 'Replace PACER_PASSWORD_VALUE before setting PACER_PASSWORD' >&2; false; else gh secret set PACER_PASSWORD --app actions --repo 'charliecf/charts.fyi' --body "$PACER_PASSWORD_VALUE"; fi
PACER_USERNAME_VALUE='<PACER username>'; if [ "$PACER_USERNAME_VALUE" = '<PACER username>' ]; then echo 'Replace PACER_USERNAME_VALUE before setting PACER_USERNAME' >&2; false; else gh secret set PACER_USERNAME --app actions --repo 'charliecf/charts.fyi' --body "$PACER_USERNAME_VALUE"; fi
RECEIVERSHIP_PACER_COURT_ALLOWLIST_VALUE='<comma-separated approved PACER court IDs>'; if [ "$RECEIVERSHIP_PACER_COURT_ALLOWLIST_VALUE" = '<comma-separated approved PACER court IDs>' ]; then echo 'Replace RECEIVERSHIP_PACER_COURT_ALLOWLIST_VALUE before setting RECEIVERSHIP_PACER_COURT_ALLOWLIST' >&2; false; else gh variable set RECEIVERSHIP_PACER_COURT_ALLOWLIST --repo 'charliecf/charts.fyi' --body "$RECEIVERSHIP_PACER_COURT_ALLOWLIST_VALUE"; fi
RECEIVERSHIP_PACER_COURT_DAILY_COST_CAP_USD_VALUE='<approved USD daily cap>'; if [ "$RECEIVERSHIP_PACER_COURT_DAILY_COST_CAP_USD_VALUE" = '<approved USD daily cap>' ]; then echo 'Replace RECEIVERSHIP_PACER_COURT_DAILY_COST_CAP_USD_VALUE before setting RECEIVERSHIP_PACER_COURT_DAILY_COST_CAP_USD' >&2; false; else gh variable set RECEIVERSHIP_PACER_COURT_DAILY_COST_CAP_USD --repo 'charliecf/charts.fyi' --body "$RECEIVERSHIP_PACER_COURT_DAILY_COST_CAP_USD_VALUE"; fi
RECEIVERSHIP_PACER_COURT_IMPORT_PATH_VALUE='<path to approved PACER court docket export>'; if [ "$RECEIVERSHIP_PACER_COURT_IMPORT_PATH_VALUE" = '<path to approved PACER court docket export>' ]; then echo 'Replace RECEIVERSHIP_PACER_COURT_IMPORT_PATH_VALUE before setting RECEIVERSHIP_PACER_COURT_IMPORT_PATH' >&2; false; else gh variable set RECEIVERSHIP_PACER_COURT_IMPORT_PATH --repo 'charliecf/charts.fyi' --body "$RECEIVERSHIP_PACER_COURT_IMPORT_PATH_VALUE"; fi
RECEIVERSHIP_PACER_COURT_MAX_DOCKET_PAGES_VALUE='<approved maximum docket pages per run>'; if [ "$RECEIVERSHIP_PACER_COURT_MAX_DOCKET_PAGES_VALUE" = '<approved maximum docket pages per run>' ]; then echo 'Replace RECEIVERSHIP_PACER_COURT_MAX_DOCKET_PAGES_VALUE before setting RECEIVERSHIP_PACER_COURT_MAX_DOCKET_PAGES' >&2; false; else gh variable set RECEIVERSHIP_PACER_COURT_MAX_DOCKET_PAGES --repo 'charliecf/charts.fyi' --body "$RECEIVERSHIP_PACER_COURT_MAX_DOCKET_PAGES_VALUE"; fi
RECEIVERSHIP_PACER_COURT_POLLING_ENABLED_VALUE='<true after approvals and controls are in place>'; if [ "$RECEIVERSHIP_PACER_COURT_POLLING_ENABLED_VALUE" = '<true after approvals and controls are in place>' ]; then echo 'Replace RECEIVERSHIP_PACER_COURT_POLLING_ENABLED_VALUE before setting RECEIVERSHIP_PACER_COURT_POLLING_ENABLED' >&2; false; else gh variable set RECEIVERSHIP_PACER_COURT_POLLING_ENABLED --repo 'charliecf/charts.fyi' --body "$RECEIVERSHIP_PACER_COURT_POLLING_ENABLED_VALUE"; fi
```

### Optional GitHub Setup Commands

```bash
PACER_CLIENT_CODE_VALUE='<optional PACER client code>'; if [ "$PACER_CLIENT_CODE_VALUE" = '<optional PACER client code>' ]; then echo 'Replace PACER_CLIENT_CODE_VALUE before setting PACER_CLIENT_CODE' >&2; false; else gh secret set PACER_CLIENT_CODE --app actions --repo 'charliecf/charts.fyi' --body "$PACER_CLIENT_CODE_VALUE"; fi
```

### Source Verification

```bash
npm run check:receivership:us-ca:blockers
npm run check:receivership:us-ca:config
npm run check:receivership:us-ca:github-env
npm run check:receivership:us-ca:import-templates
npm run check:receivership:us-ca:production-blocker-issue
npm run check:receivership:us-ca:production-env
npm run check:receivership:us-ca:runbook
npm run check:receivership:us-ca:setup-packet
npm run check:receivership:us-ca:source-activation
npm run check:receivership:us-ca:source-decision-ledger
npm run check:receivership:us-ca:source-decision-ledger-template
npm run check:receivership:us-ca:source-decision-packet
npm run check:receivership:us-ca:source-health
npm run fetch:receivership:us-ca
npm run verify:receivership:us-ca
npm run verify:receivership:us-ca:production
```

### Ready When

- All required GitHub Actions Secrets and Variables for this source are configured.
- Any required account, paid-search, cost-control, or terms-review step is approved.
- The filled source decision ledger marks this source approved and ready, validates with npm run check:receivership:us-ca:source-decision-ledger, and is supplied to the production-ready workflow as RECEIVERSHIP_US_CA_SOURCE_DECISION_LEDGER_GZIP_BASE64.
- Required first-party import files validate against public/data/receivership/us-ca-import-templates.json.
- The source health row is ok/fresh after the next US/Canada refresh.
- The row-producing source collector is implemented, not preflight-only.
- The strict production verifier exits successfully.

## Final Verification

Run these commands after every account, legal-review, paid-search, cost-control, polling flag, and import-path step is complete:

```bash
npm run fetch:receivership:us-ca
npm run check:receivership:us-ca:production-env
npm run check:receivership:us-ca:github-env
npm run check:receivership:us-ca:import-templates
npm run check:receivership:us-ca:blockers
npm run check:receivership:us-ca:production-blocker-issue
npm run check:receivership:us-ca:setup-packet
npm run check:receivership:us-ca:source-decision-ledger
npm run check:receivership:us-ca:source-decision-ledger-template
npm run check:receivership:us-ca:source-decision-packet
npm run check:receivership:us-ca:source-activation
npm run check:receivership:us-ca:source-health
npm run check:receivership:us-ca:runbook
npm run verify:receivership:us-ca:production
```

Production-ready workflow: .github/workflows/receivership-us-ca-production-ready.yml
Refresh workflow: .github/workflows/receivership-us-ca.yml
