{
  "tool_id": "art-677-whistleblowing-channel-clock",
  "kernel_id": "art-677-whistleblowing-channel-clock",
  "display_name": "Whistleblowing Channel Clock Checker",
  "tool_version": "1.0.0",
  "mandate_type": "compliance_control",
  "purpose": "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.",
  "control_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.",
  "declared_inputs": [],
  "declared_outputs": [],
  "kernel_digest": "sha256:44d66e7fb0a9a0cf87611ad6f6eacd54080cf60d68fa2a39d37fdef885063af0",
  "trust_label": "independently verified: zkVM execution proof (risc0/groth16-bn254)",
  "data_vintage": "2026-09-06",
  "last_validated": "2026-09-06",
  "conformance_fixtures_vendored": true,
  "compute_proof_ready": "ready",
  "wave": 114,
  "source_url": "https://ainumbers.co/tools/677-whistleblowing-channel-clock.html",
  "generated_at": "2026-09-08T04:28:55.922Z"
}
