# file-compliance

Paid (standard Exact-EVM rail, variable by `(state, filing)` — `get-pricing` with `product: "compliance"`). Prepares and submits a state compliance filing (annual report and equivalents) for an active managed entity.

## Deadlines are tracked for you

Daski caches the entity's upcoming compliance events: they appear in `get-entity-status` under `upcomingComplianceEvents`, and due filings surface as `attentionItems` naming this skill (`"skillToPurchase": "file-compliance"`). Nudge emails go to the entity's `contactEmail` ahead of each deadline. The filing itself is never automatic — you buy it.

## Input

| Field | Required | Notes |
|---|---|---|
| `entity` | yes | Handle of an entity you own, e.g. `"US-WY:daski-labs-llc"`. |
| `formData` | yes | The state's compliance contract from `get-pricing`. Keys supplier-verbatim; person objects carry the `dob` adjunct. |
| `filingPlanId` | yes | Copy the current ID from detailed `get-pricing` for this product. |
| `filingAddresses` / `filingFiler` | per plan | Explicit public-address and filer choices from the plan requirements. |
| `filingProfileId` | per plan | Owner-scoped profile from `get-entity-status` when managed contact/official fields are required. |
| `assetId` | no | Immutable UUID — disambiguates re-formed names. |

## Example

Illustrative request. Copy the plan's actual targets and allowed sources, including any required profile and filer selection.

```jsonc
{
  "entity": "US-WY:daski-labs-llc",
  "filingPlanId": "copy-current-plan-uuid",
  "filingAddresses": [
    { "target": "/company_principal_address", "source": "northwest" },
    { "target": "/company_mailing_address", "source": "northwest" }
  ],
  "formData": {
    "do_you_have_assets_located_and_employed_in_this_state_": "No"
  }
}
```

## Behavior

- Re-screens the entity's stored parties before any supplier spend.
- Long-running like every filing: `working` through state processing (days to weeks, state-dependent); progress via push + email. Correctable problems — including state rejections — round-trip as `input-required`: read the `inputRequest` on the order status and resubmit the complete corrected request.
- On completion the filed document is stored under the entity's documents and the compliance calendar refreshes, clearing the satisfied event.

## Result artifacts — `compliance_filing_details`, `compliance_filing_document`

```jsonc
{
  "entity": "US-WY:daski-labs-llc",
  "assetId": "5f0c2f6a-…",
  "documents": ["a1b2c3d4-…"]        // documentIds for list/download
}
```

`compliance_filing_document` is the accepted filing PDF as a URL artifact (expiring link). A completion email goes to the entity's `contactEmail`.

## Failure modes & refunds

- Correctable input problems (`formData` violations, state rejections): `input-required` — fix via task input, no refund needed.
- Unavailable, stale or revoked filing plans and ambiguous supplier evidence: paused for operator review; no automatic refund is promised.
- After the filing is committed with the state: operator-resolved via support (`formation@sandbox-agent.bluetgroup.com`).

## Next step

- `get-entity-status` — the satisfied event drops out of `upcomingComplianceEvents`.
- Done. The asset stays `active`.

## Filing plan and addresses

Before buying, obtain the current `filingPlanId` from detailed `get-pricing`
and pass it with the request. Include explicit `filingAddresses` and
`filingFiler` choices when the plan requires them. Do not repeat managed
address, filer, officials or registered-agent fields in `formData`.
When `filerRequirements.profileRequired` is true, also pass the owner-scoped
`filingProfileId` and filer option returned by `get-entity-status`. The request
pins that profile's roster. Missing historical evidence requires support review.
The selected method is retained across retries; an unavailable or revoked plan
pauses work instead of silently switching methods.
