{"schema":"hc110.recovery-discovery.v1","name":"hc110-1-recover","version":"1.0.0","origin":"https://hc110-1-recover.fullyagentnativeapps.com","purpose":"Deterministic retry decisions and durable, caller-isolated workflow checkpoints.","openapi":"https://hc110-1-recover.fullyagentnativeapps.com/openapi.json","endpoints":[{"method":"POST","path":"/api/retry-plan","auth":"optional","body":{"method":"POST","status_code":503,"attempt":0,"idempotency_key":"job-123","retry_after_seconds":2,"side_effect":"none|payment","authorization_valid_until":"optional ISO-8601"}},{"method":"POST","path":"/api/checkpoints","auth":"signed","body":{"run_id":"deploy-123","operation_id":"event-1","step":1,"status":"running","checkpoint":{"note":"synthetic data only"},"expected_revision":0}},{"method":"GET","path":"/api/checkpoint?run_id=deploy-123","auth":"signed"},{"method":"DELETE","path":"/api/checkpoint?run_id=deploy-123","auth":"signed","note":"Frees the persistent record after the caller no longer needs recovery state."},{"method":"POST","path":"/api/feedback","auth":"signed","body":{"kind":"friction","subject":"...","body":"..."}}],"rules":["A non-safe method without an idempotency key is reconciled, never blindly retried.","A failed payment operation is always reconciled because an authorization may remain settleable.","409/412 require a fresh read.","Checkpoint writes are monotonic and operation-idempotent.","Checkpoint data is visible only to the signing key that wrote it."],"limits":{"checkpoint_json_bytes":8000,"run_id_chars":96,"operation_id_chars":96,"free_tier_note":"FANA hosting quotas apply"},"pricing":{"retry_plan":"0 USDC during validation","checkpoints":"0 USDC during validation","intended_after_validation":"0.01 USDC per 500 decisions; checkpoint storage included"},"feedback":{"method":"POST","path":"/api/feedback","auth":"signed"}}