{
  "tool_id": "art-677-whistleblowing-channel-clock",
  "tool_version": "1.0.0",
  "display_name": "Whistleblowing Channel Clock Checker",
  "mcp_name": "compute_whistleblowing_channel_clock",
  "mandate_type": "compliance_control",
  "wave": 114,
  "gpu": false,
  "url": "https://ainumbers.co/tools/677-whistleblowing-channel-clock.html",
  "description": "Pure calendar-clock arithmetic for a whistleblowing channel over caller-declared synthetic dates. Checks the declared acknowledgement date against the 7-calendar-day acknowledgement deadline of Directive (EU) 2019/1937 Art 9(1)(b), and computes the follow-up due date as the declared receipt date plus a caller-declared whole-day basis (the spec fixes the declared basis at 90 days, the Directive's Art 9(1)(f) three-month ceiling rendered as caller-declared days; the caller owns the day-count convention and the kernel never legalises the result). Dates are strict YYYY-MM-DD civil calendar dates parsed and differenced with pure integer civil-day arithmetic -- no Date object, no runtime clock: every date is an input, never today. No report register, no case feed, no investigation state, no network: every date and basis is a caller-declared input, never fetched or inferred. This is a clock checker of declared inputs under named rules, NOT a case manager, NOT an assessment of any report, NOT a retaliation or case-state tracker, and NOT legal advice -- the not_proven discipline applies. An absent or invalid receipt date, ack date, or basis -- or an acknowledgement dated before the report -- resolves to a fail-closed payload naming each rejected input, never a silently repaired date. All quantities are whole civil days; a fractional basis is refused, never rounded. Cites Directive (EU) 2019/1937 Art 9(1)(b)/(f) (snapshot research/clause-snapshots/DIR2019-1937-Art9-EUAIAct-Art87-2026-09-04.excerpt.md) and notes, informationally and dated, the AI Act scope extension of Regulation (EU) 2024/1689 Art 87, applicable 2026-08-02.",
  "input_schema_ref": "tools/677-whistleblowing-channel-clock.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [{"system":"sha256-source","image_id":"sha256:44d66e7fb0a9a0cf87611ad6f6eacd54080cf60d68fa2a39d37fdef885063af0","valid_from":"2026-09-04"},{"system":"risc0","image_id":"sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6","valid_from":"2026-09-06"}],
  "export_capability": ["json"],
  "standards_basis": "implements_standard",
  "cited_clause_digest": [
    {
      "digest": "sha256:4ae66eb1ecbca6029949d8ce9a5c0da5e6810d285e6f8dc2c49885a38adec9d6",
      "source_url": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32019L1937",
      "retrieved_at": "2026-09-04",
      "clause_path": "Dir (EU) 2019/1937 Art 9(1)(b),(f); Reg (EU) 2024/1689 Art 87",
      "scheme": "eu",
      "id": "Dir (EU) 2019/1937"
    }
  ],
  "compute_proof": {"type":"ZkVmReceipt","system":"risc0","receiptFormat":"groth16-bn254","imageId":"sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6","seal":"IwcpFcjYj+qfrUWnC/pCWzko3qMQ5iOUC/vyUvWRUPkTVYNI6h4+kpXxbkI/aSgnHRxyiCoRKT2HmXulho3BJhXx8O14O43dqADujyYuMRRfkWaDvDyVseHsJ33dvdYtIZJXNpViqttgSvo2tzU8MCcef/ZrV9GMSEGF0DHdlKIbd0soKYfnnPKnR1WokrEOH1EbTG6DCs8+fxqPTcOdrghXJyQKcsYlyNKofnhPhG1g51vwkjbPrYWvATiMEEzBDa7rbL3ASLoTBvhI3nVXANMqxuV67Ib6V+lm6oyr4HAQqeGH1VF+EupKLBP8szwZi1DbbV7n8zFl4yFo8TEnbA==","journal":{"chaingraph_version":"0.4.0","kernel_digest":"sha256:44d66e7fb0a9a0cf87611ad6f6eacd54080cf60d68fa2a39d37fdef885063af0","output":{"ack_days":4,"ack_within_7":true,"followup_due":"2026-11-30","overall":"CLOCKS_COMPLIANT","trace":"2026-09-05 minus 2026-09-01 = 4 days <= 7; follow-up = receipt + 90d"}}},
  "compute_proof_ready": "ready"
}
