Data quality

120 jobs · 88 in order · 32 blocked · 120 snapshots · clock 2026-09-18T00:00:00.000Z

Definition job-margin/2026-09-20.1

Blocked jobs

A blocked job's margin is not shown as a figure. The reason is the engine's own, and the evidence can be opened.

  • JOB-0009IncompleteImport is stale · Unattributed subcontract cost
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
    • unattributed_subcontract1 unattributed subcontract cost row(s) fall in this job's period: the export left them without a job, so this job cannot be certified
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      erperpSUB-UNATTRIBUTED-000001117.09.2026 at 11:00synthetic/v1In order
  • JOB-0010IncompleteMaterial cost is missing · Labour hours are missing
    • missing_material6 invoice line(s) totalling 24 893,49 € on a completed job, but material cost was never posted
      Evidence (6 rows · Context reference: 6)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      invoicinginvoicingIL-000054130.04.2025 at 15:18synthetic/v1In order
      invoicinginvoicingIL-000055130.06.2026 at 18:50synthetic/v1In order
      invoicinginvoicingIL-000056104.05.2025 at 21:15synthetic/v1In order
      invoicinginvoicingIL-000057107.03.2025 at 01:00synthetic/v1In order
      invoicinginvoicingIL-000058131.05.2026 at 19:42synthetic/v1In order
      invoicinginvoicingIL-000059129.11.2025 at 17:26synthetic/v1In order
    • missing_labour6 invoice line(s) totalling 24 893,49 € on a completed job, but hours were never posted
      Evidence (6 rows · Context reference: 6)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      invoicinginvoicingIL-000054130.04.2025 at 15:18synthetic/v1In order
      invoicinginvoicingIL-000055130.06.2026 at 18:50synthetic/v1In order
      invoicinginvoicingIL-000056104.05.2025 at 21:15synthetic/v1In order
      invoicinginvoicingIL-000057107.03.2025 at 01:00synthetic/v1In order
      invoicinginvoicingIL-000058131.05.2026 at 19:42synthetic/v1In order
      invoicinginvoicingIL-000059129.11.2025 at 17:26synthetic/v1In order
  • JOB-0013IncompleteMaterial cost is missing · Labour hours are missing
    • missing_material8 invoice line(s) totalling 22 451,29 € on a completed job, but material cost was never posted
      Evidence (8 rows · Context reference: 8)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      invoicinginvoicingIL-000070107.10.2025 at 23:25synthetic/v1In order
      invoicinginvoicingIL-000071128.03.2026 at 17:12synthetic/v1In order
      invoicinginvoicingIL-000072128.06.2026 at 23:45synthetic/v1In order
      invoicinginvoicingIL-000073127.07.2025 at 21:38synthetic/v1In order
      invoicinginvoicingIL-000074115.10.2025 at 12:44synthetic/v1In order
      invoicinginvoicingIL-000075123.02.2026 at 20:13synthetic/v1In order
      invoicinginvoicingIL-000076111.09.2026 at 03:26synthetic/v1In order
      invoicinginvoicingIL-000077128.08.2025 at 10:36synthetic/v1In order
    • missing_labour8 invoice line(s) totalling 22 451,29 € on a completed job, but hours were never posted
      Evidence (8 rows · Context reference: 8)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      invoicinginvoicingIL-000070107.10.2025 at 23:25synthetic/v1In order
      invoicinginvoicingIL-000071128.03.2026 at 17:12synthetic/v1In order
      invoicinginvoicingIL-000072128.06.2026 at 23:45synthetic/v1In order
      invoicinginvoicingIL-000073127.07.2025 at 21:38synthetic/v1In order
      invoicinginvoicingIL-000074115.10.2025 at 12:44synthetic/v1In order
      invoicinginvoicingIL-000075123.02.2026 at 20:13synthetic/v1In order
      invoicinginvoicingIL-000076111.09.2026 at 03:26synthetic/v1In order
      invoicinginvoicingIL-000077128.08.2025 at 10:36synthetic/v1In order
  • JOB-0014IncompleteMaterial cost is missing · Labour hours are missing
    • missing_material6 invoice line(s) totalling 12 496,40 € on a completed job, but material cost was never posted
      Evidence (6 rows · Context reference: 6)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      invoicinginvoicingIL-000078104.04.2026 at 13:47synthetic/v1In order
      invoicinginvoicingIL-000079128.03.2025 at 03:04synthetic/v1In order
      invoicinginvoicingIL-000080107.08.2026 at 11:20synthetic/v1In order
      invoicinginvoicingIL-000081112.01.2026 at 10:38synthetic/v1In order
      invoicinginvoicingIL-000082102.01.2026 at 21:21synthetic/v1In order
      invoicinginvoicingIL-000083125.10.2025 at 01:16synthetic/v1In order
    • missing_labour6 invoice line(s) totalling 12 496,40 € on a completed job, but hours were never posted
      Evidence (6 rows · Context reference: 6)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      invoicinginvoicingIL-000078104.04.2026 at 13:47synthetic/v1In order
      invoicinginvoicingIL-000079128.03.2025 at 03:04synthetic/v1In order
      invoicinginvoicingIL-000080107.08.2026 at 11:20synthetic/v1In order
      invoicinginvoicingIL-000081112.01.2026 at 10:38synthetic/v1In order
      invoicinginvoicingIL-000082102.01.2026 at 21:21synthetic/v1In order
      invoicinginvoicingIL-000083125.10.2025 at 01:16synthetic/v1In order
  • JOB-0016IncompleteMaterial cost is missing · Labour hours are missing
    • missing_material8 invoice line(s) totalling 17 314,21 € on a completed job, but material cost was never posted
      Evidence (8 rows · Context reference: 8)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      invoicinginvoicingIL-000091122.06.2026 at 21:15synthetic/v1In order
      invoicinginvoicingIL-000092129.07.2025 at 07:20synthetic/v1In order
      invoicinginvoicingIL-000093113.04.2026 at 18:08synthetic/v1In order
      invoicinginvoicingIL-000094103.05.2025 at 10:46synthetic/v1In order
      invoicinginvoicingIL-000095120.02.2025 at 14:27synthetic/v1In order
      invoicinginvoicingIL-000096112.07.2025 at 12:46synthetic/v1In order
      invoicinginvoicingIL-000097112.11.2025 at 05:24synthetic/v1In order
      invoicinginvoicingIL-000098104.04.2025 at 01:42synthetic/v1In order
    • missing_labour8 invoice line(s) totalling 17 314,21 € on a completed job, but hours were never posted
      Evidence (8 rows · Context reference: 8)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      invoicinginvoicingIL-000091122.06.2026 at 21:15synthetic/v1In order
      invoicinginvoicingIL-000092129.07.2025 at 07:20synthetic/v1In order
      invoicinginvoicingIL-000093113.04.2026 at 18:08synthetic/v1In order
      invoicinginvoicingIL-000094103.05.2025 at 10:46synthetic/v1In order
      invoicinginvoicingIL-000095120.02.2025 at 14:27synthetic/v1In order
      invoicinginvoicingIL-000096112.07.2025 at 12:46synthetic/v1In order
      invoicinginvoicingIL-000097112.11.2025 at 05:24synthetic/v1In order
      invoicinginvoicingIL-000098104.04.2025 at 01:42synthetic/v1In order
  • JOB-0017IncompleteMaterial cost is missing · Labour hours are missing
    • missing_material4 invoice line(s) totalling 34 450,68 € on a completed job, but material cost was never posted
      Evidence (4 rows · Context reference: 4)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      invoicinginvoicingIL-000099122.07.2025 at 15:52synthetic/v1In order
      invoicinginvoicingIL-000100115.05.2026 at 14:09synthetic/v1In order
      invoicinginvoicingIL-000101119.02.2025 at 00:56synthetic/v1In order
      invoicinginvoicingIL-000102111.08.2026 at 09:00synthetic/v1In order
    • missing_labour4 invoice line(s) totalling 34 450,68 € on a completed job, but hours were never posted
      Evidence (4 rows · Context reference: 4)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      invoicinginvoicingIL-000099122.07.2025 at 15:52synthetic/v1In order
      invoicinginvoicingIL-000100115.05.2026 at 14:09synthetic/v1In order
      invoicinginvoicingIL-000101119.02.2025 at 00:56synthetic/v1In order
      invoicinginvoicingIL-000102111.08.2026 at 09:00synthetic/v1In order
  • JOB-0037IncompleteImport is stale · Unattributed subcontract cost
    • stale_importimport run RUN-00024 is failed, so the job's postings are incomplete (the policy limit of 48 h)
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      erperpRUN-00024118.09.2026 at 00:00synthetic/v1In order
    • unattributed_subcontract1 unattributed subcontract cost row(s) fall in this job's period: the export left them without a job, so this job cannot be certified
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      erperpSUB-UNATTRIBUTED-000001117.09.2026 at 11:00synthetic/v1In order
  • JOB-0045IncompleteImport is stale
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
  • JOB-0048IncompleteImport is stale · Unattributed subcontract cost
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
    • unattributed_subcontract1 unattributed subcontract cost row(s) fall in this job's period: the export left them without a job, so this job cannot be certified
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      erperpSUB-UNATTRIBUTED-000001117.09.2026 at 11:00synthetic/v1In order
  • JOB-0064IncompleteImport is stale
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
  • JOB-0069IncompleteImport is stale
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
  • JOB-0071IncompleteImport is stale
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
  • JOB-0091IncompleteImport is stale
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
  • JOB-0096IncompleteImport is stale
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
  • JOB-0098IncompleteImport is stale
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
  • JOB-0099IncompleteImport is stale
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
  • JOB-0103IncompleteImport is stale
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
  • JOB-0105IncompleteImport is stale
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
  • JOB-0106IncompleteImport is stale
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
  • JOB-0107IncompleteImport is stale
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
  • JOB-0108IncompleteImport is stale
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
  • JOB-0109IncompleteImport is stale · Unattributed subcontract cost
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
    • unattributed_subcontract1 unattributed subcontract cost row(s) fall in this job's period: the export left them without a job, so this job cannot be certified
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      erperpSUB-UNATTRIBUTED-000001117.09.2026 at 11:00synthetic/v1In order
  • JOB-0110IncompleteImport is stale
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
  • JOB-0112IncompleteImport is stale · Unattributed subcontract cost
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
    • unattributed_subcontract1 unattributed subcontract cost row(s) fall in this job's period: the export left them without a job, so this job cannot be certified
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      erperpSUB-UNATTRIBUTED-000001117.09.2026 at 11:00synthetic/v1In order
  • JOB-0113IncompleteImport is stale · Unattributed subcontract cost
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
    • unattributed_subcontract1 unattributed subcontract cost row(s) fall in this job's period: the export left them without a job, so this job cannot be certified
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      erperpSUB-UNATTRIBUTED-000001117.09.2026 at 11:00synthetic/v1In order
  • JOB-0114IncompleteImport is stale
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
  • JOB-0115IncompleteImport is stale · Unattributed subcontract cost
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
    • unattributed_subcontract1 unattributed subcontract cost row(s) fall in this job's period: the export left them without a job, so this job cannot be certified
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      erperpSUB-UNATTRIBUTED-000001117.09.2026 at 11:00synthetic/v1In order
  • JOB-0116IncompleteImport is stale · Unattributed subcontract cost
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
    • unattributed_subcontract1 unattributed subcontract cost row(s) fall in this job's period: the export left them without a job, so this job cannot be certified
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      erperpSUB-UNATTRIBUTED-000001117.09.2026 at 11:00synthetic/v1In order
  • JOB-0117IncompleteImport is stale · Unattributed subcontract cost
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
    • unattributed_subcontract1 unattributed subcontract cost row(s) fall in this job's period: the export left them without a job, so this job cannot be certified
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      erperpSUB-UNATTRIBUTED-000001117.09.2026 at 11:00synthetic/v1In order
  • JOB-0118IncompleteImport is stale
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
  • JOB-0119IncompleteImport is stale · Unattributed subcontract cost
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order
    • unattributed_subcontract1 unattributed subcontract cost row(s) fall in this job's period: the export left them without a job, so this job cannot be certified
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      erperpSUB-UNATTRIBUTED-000001117.09.2026 at 11:00synthetic/v1In order
  • JOB-0120IncompleteImport is stale
    • stale_importimport run RUN-STALE-TIMECLOCK finished 96,00 h before the clock, over the policy limit of 48 h
      Evidence (1 rows · Context reference: 1)
      Context referenceContext rows — they show the job exists

      These rows show that the job exists and was billed. They did not produce the amount, so they do not explain it.

      TableSourceRowVersionTime (UTC)MappingQualityField
      timeclocktimeclockRUN-STALE-TIMECLOCK114.09.2026 at 00:00synthetic/v1In order

Import freshness

The age is not computed in this view: the engine decides it, comparing the import run's completion with the job's as-of clock and recording the result as a blocking finding. Threshold: 48 h.

RunStateStarted (UTC)Finished (UTC)Unmatched rowsSource
RUN-OPEN-INVOICINGSucceeded ok18.10.2026 at 00:000RUN-OPEN-INVOICING v1
RUN-00024Failed failed17.09.2026 at 23:5018.09.2026 at 00:000RUN-00024 v1
RUN-STALE-TIMECLOCKSucceeded ok13.09.2026 at 23:5014.09.2026 at 00:000RUN-STALE-TIMECLOCK v1
RUN-00023Succeeded ok17.08.2026 at 23:5018.08.2026 at 00:000RUN-00023 v1
RUN-00022Succeeded ok17.07.2026 at 23:5018.07.2026 at 00:000RUN-00022 v1
RUN-00021Succeeded ok17.06.2026 at 23:5018.06.2026 at 00:000RUN-00021 v1
RUN-00020Succeeded ok17.05.2026 at 23:5018.05.2026 at 00:000RUN-00020 v1
RUN-00019Succeeded ok17.04.2026 at 23:5018.04.2026 at 00:000RUN-00019 v1
RUN-00018Succeeded ok17.03.2026 at 23:5018.03.2026 at 00:000RUN-00018 v1
RUN-00017Succeeded ok17.02.2026 at 23:5018.02.2026 at 00:000RUN-00017 v1
RUN-00016Succeeded ok17.01.2026 at 23:5018.01.2026 at 00:000RUN-00016 v1
RUN-00015Succeeded ok17.12.2025 at 23:5018.12.2025 at 00:000RUN-00015 v1
RUN-00014Succeeded ok17.11.2025 at 23:5018.11.2025 at 00:000RUN-00014 v1
RUN-00013Succeeded ok17.10.2025 at 23:5018.10.2025 at 00:000RUN-00013 v1
RUN-00012Succeeded ok17.09.2025 at 23:5018.09.2025 at 00:000RUN-00012 v1
RUN-00011Succeeded ok17.08.2025 at 23:5018.08.2025 at 00:000RUN-00011 v1
RUN-00010Succeeded ok17.07.2025 at 23:5018.07.2025 at 00:000RUN-00010 v1
RUN-00009Succeeded ok17.06.2025 at 23:5018.06.2025 at 00:000RUN-00009 v1
RUN-00008Succeeded ok17.05.2025 at 23:5018.05.2025 at 00:000RUN-00008 v1
RUN-00007Succeeded ok17.04.2025 at 23:5018.04.2025 at 00:000RUN-00007 v1
RUN-00006Succeeded ok17.03.2025 at 23:5018.03.2025 at 00:000RUN-00006 v1
RUN-00005Succeeded ok17.02.2025 at 23:5018.02.2025 at 00:000RUN-00005 v1
RUN-00004Succeeded ok17.01.2025 at 23:5018.01.2025 at 00:000RUN-00004 v1
RUN-00003Succeeded ok17.12.2024 at 23:5018.12.2024 at 00:000RUN-00003 v1
RUN-00002Succeeded ok17.11.2024 at 23:5018.11.2024 at 00:000RUN-00002 v1
RUN-00001Succeeded ok17.10.2024 at 23:5018.10.2024 at 00:000RUN-00001 v1

Unmatched rows

TableReasonDetailsRowTime (UTC)
subcontract_costno_job_allocationsubcontract_cost row of 123456 minor units names no job, and carries no operation or quote line that would attribute itSUB-UNATTRIBUTED-000001 v117.09.2026 at 11:00

Reconciliation differences

Zero-row reconciliations are left out: they say the drivers account for the whole difference. The rows shown are the ones where a difference was left over — or where a cost row was left without an owner. The rows are read from each job's current snapshot; there are no superseded difference rows.

  • JOB-0042Reconciliation difference residual−229,79 €
    • Unattributed cost1 cost row(s) on JOB-0042 worth 229,79 € point at operations no operation of this job carries, so no driver can place them (rows OVC-900000)
    • Unexplained−229,79 € of the difference between the estimated and the actual margin of JOB-0042 is placed by no driver, above the 105,41 € tolerance: the job does not reconcile
  • JOB-0042Unattributed cost row unmatched_cost_row

    other_variable_cost OVC-900000 v1

  • JOB-0043Reconciliation difference residual−1 052,57 €
    • Unattributed cost1 cost row(s) on JOB-0043 worth 1 052,57 € point at operations no operation of this job carries, so no driver can place them (rows OVC-900001)
    • Unexplained−1 052,57 € of the difference between the estimated and the actual margin of JOB-0043 is placed by no driver, above the 419,35 € tolerance: the job does not reconcile
  • JOB-0043Unattributed cost row unmatched_cost_row

    other_variable_cost OVC-900001 v1

  • JOB-0044Reconciliation difference residual−203,92 €
    • Unattributed cost1 cost row(s) on JOB-0044 worth 203,92 € point at operations no operation of this job carries, so no driver can place them (rows OVC-900002)
    • Unexplained−203,92 € of the difference between the estimated and the actual margin of JOB-0044 is placed by no driver, above the 76,95 € tolerance: the job does not reconcile
  • JOB-0044Unattributed cost row unmatched_cost_row

    other_variable_cost OVC-900002 v1

  • JOB-0066Reconciliation difference residual0,01 €
    • Rounding difference0,01 € of the difference between the estimated and the actual margin of JOB-0066 is inside the 0,04 € the source data's own rounding accounts for: a rounding difference, not an amount no driver can place (tolerance 50,00 €)
  • JOB-0067Reconciliation difference residual0,01 €
    • Rounding difference0,01 € of the difference between the estimated and the actual margin of JOB-0067 is inside the 0,04 € the source data's own rounding accounts for: a rounding difference, not an amount no driver can place (tolerance 293,89 €)
  • JOB-0085Reconciliation difference residual0,04 €
    • Rounding difference0,04 € of the difference between the estimated and the actual margin of JOB-0085 is inside the 0,04 € the source data's own rounding accounts for: a rounding difference, not an amount no driver can place (tolerance 102,23 €)
  • JOB-0086Reconciliation difference residual0,04 €
    • Rounding difference0,04 € of the difference between the estimated and the actual margin of JOB-0086 is inside the 0,04 € the source data's own rounding accounts for: a rounding difference, not an amount no driver can place (tolerance 139,92 €)
  • JOB-0087Reconciliation difference residual0,04 €
    • Rounding difference0,04 € of the difference between the estimated and the actual margin of JOB-0087 is inside the 0,04 € the source data's own rounding accounts for: a rounding difference, not an amount no driver can place (tolerance 477,46 €)
  • JOB-0088Reconciliation difference residual0,04 €
    • Rounding difference0,04 € of the difference between the estimated and the actual margin of JOB-0088 is inside the 0,04 € the source data's own rounding accounts for: a rounding difference, not an amount no driver can place (tolerance 185,19 €)

Finding coverage

79 findings on the current inputs · every finding opens at least one source row.

The thresholds in force

Read from the file config/policy.json. The thresholds are the ones the rules read: no figure is a constant in the engine.

The stored figures were computed under policy 3973919ae0b9, the same as the file's. Last computed 21.09.2026 at 14:48.

SwitchValue
Allows valuation at purchase price material_valuation.allow_purchase_priceNo
Requires a fully loaded labour rate labour_rate.require_fully_loadedYes
RuleThresholds
Margin below threshold margin_below_threshold
  • Margin threshold 0 % margin_pct_threshold
Labour hours overrun labour_hours_overrun
  • Factor 1,15 × factor
  • Minimum impact 100,00 € min_impact_cents
Material price increase material_price_creep
  • Factor 1,05 × factor
  • Minimum impact 100,00 € min_impact_cents
Unallocated labour unallocated_labour
  • Minimum hours 1,00 h min_hours
The job cannot be reported job_data_quality
  • Enabled Yes enabled
  • Partial posting floor 0,5 partial_posting_floor
Rework rework_operations
  • Enabled Yes enabled
Unallocated credit unallocated_credit
  • Minimum amount 10,00 € min_amount_cents
Unreconciled difference reconciliation_residual
  • Share of revenue 0,005 × revenue pct_of_revenue
  • Minimum amount (absolute) 50,00 € min_absolute_cents
Stale or incomplete import stale_or_incomplete_import
  • Maximum import age 48 h max_age_hours

Findings: exception queue. The view is read-only and recomputes no figure.