Takt Proof

What Takt has shown, and how to check it

Takt lines up independent work records, finds where they disagree, computes the supported difference in code, and exports a packet anyone can re-verify. Every number on this page is read from evidence files committed to the repository.

Evidence generated from commit
e8a7363
Deployed application commit
8e36ff2
Image reading on this deployment
synthetic samples only (gemini-3.8-flash)

The deployed commit is newer than the evidence commit. Changes after the evidence commit are documentation, proof-page, or deployment changes; rerun the scripts below to regenerate the evidence at any commit.

Canonical case · TAKT-DEMO-001

Synthetic fixture: an invented worker, employer, and records.

Tue, Sep 1, 2026

Schedule + manager's text + worker

7:40 AM

Employer time record

8:00 AM

20 min not on the employer record

20 min × $18.50 × 1.5 ÷ 60 = $9.25 (CA-OT-DAILY-8)

Facts extracted / reviewed
58 / 58 (0 rejected)
Difference claimed
$9.25 (earned $1,489.25, paid $1,480.00)
Rules applied
CA-OT-DAILY-8, CA-REG-HOURLY, TAKT-ROUND-CENTS
Verifier
VERIFIED_PACKET · takt-verify/1 · 20 checks passed
Packet SHA-256
5e226d9f42a92c3cff75cce75d180d81f7c326ae6cbfbd5fed0aff4fe79ec876
Image facts
worker_manual — image facts were entered from the fixture labels because no vision model was run for this receipt

Reproduce: npx tsx scripts/canonical-run.ts then npm run verify:packet -- evidence/canonical/takt-demo.zip. Or open the same case in the app from My cases → sample cases.

What can go wrong

CaseExpectedObservedAmount
TAKT-DEMO-001PACKET_VERIFIEDPACKET_VERIFIED ✓$9.25
TAKT-CONTROL-001PACKET_VERIFIEDPACKET_VERIFIED ✓$0.00
TAKT-AMBIG-001CALCULATION_BLOCKEDCALCULATION_BLOCKED ✓none (refused)
TAKT-UNSUPPORTED-001UNSUPPORTED_CASEUNSUPPORTED_CASE ✓none (refused)
  • TAKT-CONTROL-001: Schedule, time record, wage statement, and messages all agree. Takt should report no discrepancy.
  • TAKT-AMBIG-001: Two exports of the employer time record disagree about Sep 2 (8:00 vs 8:15 AM), and the Sep 1 early start has no independent support. Takt must not produce a confident amount for the affected pay period.
  • TAKT-UNSUPPORTED-001: The worker is paid partly by piece rate. Piece-rate overtime uses a different regular-rate method, so Takt must refuse an authoritative amount and point to the Labor Commissioner.

Results with denominators

Case outcomes correct
4 / 4
Day decisions correct
40 / 40
Discrepancy sets exact
4 / 4
Amounts exact
4 / 4
False discrepancies on the healthy control
0
Tampered packets rejected
10 / 10

These are four synthetic cases written alongside Takt's parser. They show Takt behaves as designed on these records, including refusing when it should. They are not an accuracy estimate for real-world documents, and they are not user results. PDF facts: deterministic native extraction. Image facts: entered from fixture labels (worker_manual); no vision model was run.

Try the verifier yourself

Download the canonical packet and TAKT-TAMPER-001 (the same packet with Form 1's grand total changed to $925.00 and its hash updated), then drop each on Takt Verify. The first passes. The second fails.

Tamper tests on the canonical packet

  • calculation.csv owed changed from 9.25 to 90.25VERIFICATION_FAILED · file:calculation.csv, csv.matches
  • Same CSV edit, with the manifest hash updated to matchVERIFICATION_FAILED · csv.matches
  • Manifest totals and period owed changed to 92.50VERIFICATION_FAILED · replay.calculations, replay.totals
  • Overtime line changed from 20 to 200 minutesVERIFICATION_FAILED · replay.calculations, arithmetic.independent
  • Form 1 grand total changed to 925.00, manifest hash updatedVERIFICATION_FAILED · form1.readback
  • One byte of an included source PDF changed after generationVERIFICATION_FAILED · file:sources/02-Timecard_Export_0913.pdf, sources.included
  • An unlisted file added to the ZIPVERIFICATION_FAILED · file:extra-proof.pdf
  • A fact's review status changed to unreviewedVERIFICATION_FAILED · facts.reviewed, replay.days
  • A discrepancy's rule changed to one not in the pinned rulesetVERIFICATION_FAILED · rules.pinned, replay.discrepancies
  • manifest.json deleted from the packetUNVERIFIABLE_PACKET · manifest.present

Comparison with a general-purpose AI model

Not completed (NOT_COMPLETED_PROVIDER_UNAVAILABLE, 2026-09-26). The model provider refused or failed a request before the benchmark finished. No partial results are published and no comparison is claimed. No comparison is claimed.

Not shown

  • worker_manual — image facts were entered from the fixture labels because no vision model was run for this receipt
  • Any result with real workers or real records. Every case here is synthetic.

Limitations · results.json · run.json