{
  "schema": "cdf.scoped-service.v2",
  "id": "api-data-workflow-repair",
  "provider": "CivicDataForge",
  "url": "https://civicdataforge.pages.dev/workflow-repair",
  "status": "accepting_scope_inquiries",
  "description": "One failing API/data workflow: reproduce, repair, verify the downstream result, and deliver tests and rollback instructions.",
  "limits": {
    "workflows": 1,
    "connected_systems": 2,
    "acceptance_targets": 1
  },
  "communication": "written_first_no_call_required",
  "contact": {
    "email": "civicdataforgehq@gmail.com",
    "channel": "customer_authorized_email"
  },
  "required_brief": [
    "email",
    "systems",
    "expected",
    "actual",
    "safe=true",
    "consent=true"
  ],
  "optional_brief": ["acceptance", "caller: human or agent (self-reported)"],
  "forbidden_intake": [
    "credentials",
    "private_customer_records",
    "production_database_dumps"
  ],
  "commercial": {
    "mode": "quote_after_feasibility",
    "price": null,
    "currency": null,
    "automatic_charge": false,
    "subscription": false,
    "payment": "Quote-specific payment request only after written scope acceptance; no checkout exists for an unspecified engagement."
  },
  "delivery": [
    "reproduction",
    "scoped_patch_or_configuration",
    "acceptance_tests",
    "downstream_receipt",
    "rollback",
    "written_handoff"
  ],
  "agent_interaction": {
    "mode": "sanitized_brief_and_private_status",
    "endpoint": "https://civicdataforge.pages.dev/api/workflow-repair",
    "submit": "POST application/json with required_brief fields. Generate 32 cryptographically random bytes as 64 lowercase hex characters and send Authorization: Bearer <token>. Keep the same token and identical normalized brief when retrying an uncertain response. Never use an existing account API key as this token.",
    "status": "GET the same endpoint with the same Bearer token. Returns reference, state and timestamps, not the brief or email. Missing/expired receipt returns 404. Keep token private; do not put it in a URL.",
    "success": "201 stored; 200 identical replay or status. Receipt is not acceptance of a job, proof of email delivery, payment or production authority.",
    "errors": {"401":"token missing or invalid","409":"same token with changed brief; do not silently replace","410":"expired request; start new only intentionally","413":"body over 8192 bytes","422":"validation failed","429":"daily limit; do not retry in a loop","503":"storage not confirmed; retry same token and brief"},
    "limits": "5 new briefs per network address per UTC day; 100 total new briefs per UTC day. Server validates sanitized fields. These are intake limits, not a paid plan.",
    "privacy": "https://civicdataforge.pages.dev/workflow-repair-privacy",
    "a2a_endpoint": null,
    "automatic_job_acceptance": false,
    "production_changes_require_explicit_authority": true
  },
  "proof": "https://civicdataforge.pages.dev/workflow-repair-proof.json",
  "demonstration": "https://civicdataforge.pages.dev/workflow-repair-lab",
  "claims_excluded": [
    "guaranteed_revenue",
    "universal_provider_repair",
    "security_or_compliance_certification",
    "customer_success_from_fixture_tests"
  ]
}
