Why this matters
An n8n run that says success only means every node finished. A wrong total, a missing row or a swapped name still looks green, and the client is the one who finds it. So many owners spot-check every result by hand, which takes back much of the time the workflow saved.
Truquence reads the exported run offline and compares each node's real output with an answer key you wrote first. It answers PASS, FAIL or UNKNOWN, and a FAIL names the node.
Practice
Do every step yourself in a practice copy of the real tool. It checks your work, and “Do it for me” finishes any step you get stuck on.
What you’ll build
You help Priya Nair, who runs Cedar Row Accounting, a made-up firm whose n8n invoice run said success while the Total node output 12.0 instead of 120.0.
You install Truquence, export the workflow and the full run, make a contract with truquence init, write what Total should output yourself, run truquence accept and read FAIL, then see what PASS and UNKNOWN mean. The terminal shows the exact commands from Truquence's own docs.
What you need
- Nothing to start the practiceThe lesson is a terminal with the commands from Truquence's docs. Cedar Row Accounting and every number are made up.
- Git, Python 3.10+ and a POSIX shell, to do it for realFrom Truquence's README. It is open source (Apache-2.0) and needs no account.
- A full n8n execution exportOne JSON object with the workflow snapshot and every node's output. The docs' local walkthrough shows one way to make it.
Concepts
Success means it ran
n8n marks a run success when every node finished without an error. It cannot know what the right answer was.
Truquence compares run counts, item counts, values and order for every enabled node with your contract, exactly.
Write the answer key yourself
truquence init makes one check per enabled node, each starting as null. You replace each null with what that node should output.
Work it out from the source, such as the timesheet. Truquence's docs say never to generate it from the run you are checking.
FAIL and UNKNOWN both stop it
PASS is exit 0, FAIL is exit 1 and UNKNOWN is exit 2. Only PASS should let the work go on.
If you change the workflow, its fingerprint changes, so review a new contract instead of reusing the old one.
Do it for real
Now repeat it in your own account. Tick each step as you go.
Quick check
3 questions to check you’ve got it.
1. An n8n run says success, but Total outputs 12.0 where your contract expects 120.0. What does Truquence answer?
- PASS, because n8n said success
- FAIL, and it names the Total node
- UNKNOWN
Show the answer
FAIL, and it names the Total node. Truquence checks the output, not the status. The exact items differ from the contract, so it returns FAIL with exit code 1.
2. Where should the expected output in your contract come from?
- Copied from the run you are checking
- Worked out yourself from the source, such as the timesheet
- Left as null
Show the answer
Worked out yourself from the source, such as the timesheet. Copying from the run under review would make a wrong run pass, and null stays UNKNOWN.
3. The check returns UNKNOWN. Should the invoice go out?
- Yes, it did not fail
- No, UNKNOWN blocks acceptance too
- Only on weekdays
Show the answer
No, UNKNOWN blocks acceptance too. FAIL and UNKNOWN both block acceptance. Find out what is missing, fix it and check again.
Buffer: Write One Post and Schedule It to Every Channel
You checked an n8n run against an answer key with Truquence. Review the apps you have met in this course and pick one to try on your own work.
Start module 45 →