{
  "tool_id": "art-677-whistleblowing-channel-clock",
  "note": "Golden vectors. 'parity-canonical-preimage' recomputes the spec's pinned execution_hash 8589545f4c067fae4cbf01ee5e1481dd6476cb14c47f6dd4603ed83398b93579 byte-identically (WHISTLEBLOW-CLOCK-BUILD-SPEC.md). 'opposite-verdict-ack-late' is the required opposite-verdict vector; 'same-day-ack-boundary' pins the 7-day boundary clause; the remainder are fail-closed refusals. human_sign_off: PENDING.",
  "vectors": [
    {
      "name": "parity-canonical-preimage",
      "golden_hash": "8589545f4c067fae4cbf01ee5e1481dd6476cb14c47f6dd4603ed83398b93579",
      "policy_parameters": {
        "report_received": "2026-09-01",
        "ack_sent": "2026-09-05",
        "followup_basis_days": 90
      },
      "output_payload": {
        "ack_days": 4,
        "ack_within_7": true,
        "followup_due": "2026-11-30",
        "trace": "2026-09-05 minus 2026-09-01 = 4 days <= 7; follow-up = receipt + 90d",
        "overall": "CLOCKS_COMPLIANT"
      }
    },
    {
      "name": "opposite-verdict-ack-late",
      "policy_parameters": {
        "report_received": "2026-09-01",
        "ack_sent": "2026-09-15",
        "followup_basis_days": 90
      },
      "output_payload": {
        "ack_days": 14,
        "ack_within_7": false,
        "followup_due": "2026-11-30",
        "trace": "2026-09-15 minus 2026-09-01 = 14 days > 7; follow-up = receipt + 90d",
        "overall": "ACK_WINDOW_BREACHED"
      },
      "golden_hash": "e848548f8e4896cc8eb0262e8a69bb9ea2a3b865f5e89a3e3a8778deea45e322"
    },
    {
      "name": "same-day-ack-boundary",
      "policy_parameters": {
        "report_received": "2026-09-01",
        "ack_sent": "2026-09-08",
        "followup_basis_days": 90
      },
      "output_payload": {
        "ack_days": 7,
        "ack_within_7": true,
        "followup_due": "2026-11-30",
        "trace": "2026-09-08 minus 2026-09-01 = 7 days <= 7; follow-up = receipt + 90d",
        "overall": "CLOCKS_COMPLIANT"
      },
      "golden_hash": "c9731e8eaba13643b72f10bd1a30396e460da9e4a4632d51ef77b0b4273a6d8c"
    },
    {
      "name": "fail-closed-invalid-date",
      "policy_parameters": {
        "report_received": "2026-02-30",
        "ack_sent": "2026-09-05",
        "followup_basis_days": 90
      },
      "output_payload": {
        "ack_days": null,
        "ack_within_7": null,
        "followup_due": null,
        "trace": "fail-closed: report_received must be a valid calendar date in YYYY-MM-DD form; no deadline checked or due date computed -- correct the named inputs and resubmit. Clock checker over caller-declared synthetic dates only: not a case register, not an investigation, not legal advice.",
        "overall": "INPUT_REFUSED",
        "domain_errors": [
          "INVALID_REPORT_RECEIVED"
        ]
      },
      "golden_hash": "fffd0fdcd78d106253d69132f8517cecab7b3f51154eebc89c37613d74b31c3a"
    },
    {
      "name": "fail-closed-empty-inputs",
      "policy_parameters": {},
      "output_payload": {
        "ack_days": null,
        "ack_within_7": null,
        "followup_due": null,
        "trace": "fail-closed: report_received must be a valid calendar date in YYYY-MM-DD form; ack_sent must be a valid calendar date in YYYY-MM-DD form; followup_basis_days must be a positive whole number of days; no deadline checked or due date computed -- correct the named inputs and resubmit. Clock checker over caller-declared synthetic dates only: not a case register, not an investigation, not legal advice.",
        "overall": "INPUT_REFUSED",
        "domain_errors": [
          "INVALID_REPORT_RECEIVED",
          "INVALID_ACK_SENT",
          "INVALID_BASIS"
        ]
      },
      "golden_hash": "792b13aa4139a8a89b4b2e8654ada6a9a037534c901ddcdb9f1be99dccb887b0"
    },
    {
      "name": "fail-closed-bad-basis",
      "policy_parameters": {
        "report_received": "2026-09-01",
        "ack_sent": "2026-09-05",
        "followup_basis_days": 90.5
      },
      "output_payload": {
        "ack_days": null,
        "ack_within_7": null,
        "followup_due": null,
        "trace": "fail-closed: followup_basis_days must be a positive whole number of days; no deadline checked or due date computed -- correct the named inputs and resubmit. Clock checker over caller-declared synthetic dates only: not a case register, not an investigation, not legal advice.",
        "overall": "INPUT_REFUSED",
        "domain_errors": [
          "INVALID_BASIS"
        ]
      },
      "golden_hash": "ce9d7fbbd187e7d82d39e3da4a9ba4da8789fc35d70f56cdf0571a4b9b81bc10"
    }
  ]
}
