Reporting cycles
One durable period identity per framework and period. Cycles stamp assignments and entries and carry the methodology lock.
Reporting Boundaries adminNew cycle
Annotation · not proposed UIPlacement adjudication, flagged to the PM: drawn as an AREA-level tab per the kickoff session note. Spec 9.1 also mentioned a detail-screen tab, but quarantine records carry no cycle id (spec 4.8:
runId, companyId, collection, rowId, classCode, candidateIds[], at), so a cycle-scoped quarantine list is not derivable. The drawn resolution is this area tab plus a run-filtered link from cycle detail. Stands as drawn per the PM's review completion, 2026-08-23.Run summary · run-2026-08-24-a1
Initial company backfill · mapping rule v1 · per-class quarantine counts
Q13
No matching cycle for the row
Q2148
Several candidates, or the row falls in an overlap component of source boundaries
Q30
Row framework unresolvable on a multi-framework boundary
Q461
Year-only row against a non-January cycle
Q54
Period-less row with no same-framework start-year cycle
Q622
Row year disagrees with period.startYear (clone-produced)
Q79
Governing assignment stamped, but the entry reporting date falls outside that cycle
Q82
Existing stamp differs from the new resolution (ingestion move); never re-stamped
Q90
NxMap webhook year resolves to zero or several cycles
Q105
Missing or deleted disclosure
Q117
Disclosure framework differs from the copied framework on the row
Q1214
Row organization falls outside the cycle org scope
Q140
Zero-boundary company: no cycles exist, rows untouched, one record per affected population
QI37
Governing assignment itself unstamped or quarantined, so the entry inherits nothing
QARCH1
Stamp references an archived cycle; the entry resolver refuses to follow it
Exclusions (not defects):X1 512 censusedX2 240 legacy GRI generation rowsX3 18 legacy saved reportsX4 2 hidden-class cycles created archived
Annotation · not proposed UIWhether exclusion classes X1 to X4 appear as drill-down rows is an open data-contract question (spec 8.1 says every quarantine and exclusion writes a record; spec 8.4's inherited tables still describe X classes as run-report lines). Drawn: X counts in this summary only, and the class filter offers Q classes only. PM review completion 2026-08-23: moved to the build backlog as a data-contract question, not a UX open item.
| runId | collection | rowId | classCode | candidateIds | at |
|---|---|---|---|---|---|
| run-2026-08-24-a1 | esgmasterdatas | 68a9d1e4b7c2f5083a1b2201 | Q2 | 68a4c3aa1b2c3d4e5f607701, 68a4c3aa1b2c3d4e5f607703 | 2026-08-24 02:11 UTC |
|
runIdrun-2026-08-24-a1 companyId68a4c1f7b39d2e5a10c47d81diagnostic · implicit in this tenant-scoped view collectionesgmasterdatas rowId68a9d1e4b7c2f5083a1b2201 classCodeQ2 · several candidates / boundary overlap component candidateIds68a4c3aa1b2c3d4e5f607701 68a4c3aa1b2c3d4e5f607703source boundary ids · Q2 candidates come from the boundary graph at2026-08-24 02:11 UTC
What fixes Q2: resolve the overlapping or duplicate start-year boundaries behind these candidate ids, then run the company backfill again. The re-run re-resolves this row and either stamps it or quarantines it again. The row stays null-stamped until then; nothing is guessed.
| |||||
| run-2026-08-24-a1 | esgmasterdatas | 68a9d1e4b7c2f5083a1b2202 | Q4 | none | 2026-08-24 02:11 UTC |
| run-2026-08-24-a1 | esgmasterdatas | 68a9d1e4b7c2f5083a1b2203 | Q6 | 68b1a4c2e91d7f0a3c4b0107 | 2026-08-24 02:12 UTC |
| run-2026-08-24-a1 | esgmasterdatas | 68a9d1e4b7c2f5083a1b2204 | Q12 | 68b1a4c2e91d7f0a3c4b0106 | 2026-08-24 02:13 UTC |
| run-2026-08-24-a1 | dataentries | 68a9d2f5c8d3e6194b2c3301 | Q7 | 68b1a4c2e91d7f0a3c4b0106 | 2026-08-24 02:19 UTC |
| run-2026-08-24-a1 | dataentries | 68a9d2f5c8d3e6194b2c3302 | QI | none | 2026-08-24 02:19 UTC |
Items per page
10
Demo helperpagination and items-per-page are presentation-only · the quarantine endpoint specifies filtering by class and run, nothing more
Page 1 of 32PreviousNext
Annotation · not proposed UIDeliberately absent: there is no resolve, assign-cycle, force, dismiss, or edit control anywhere on this tab. Spec i has no manual resolution capability. The remediation loop is: read the class, fix the underlying data or boundary shape, then run the company backfill again; the re-run waives the same-version skip for rows whose stamp points at a stale, re-run-archived, or now-sourceless cycle, re-resolves them, and either agrees, re-stamps, or quarantines again (spec 7.4, spec 8.1). Backfill sign-off, including the quarantine report, is the PM's (spec 8.5). Any button that looks like it resolves a row would violate the spec.
Annotation · not proposed UIRecord semantics: one record per row, latest wins per row plus source; records are written both by the backfill and by runtime stamping outcomes (spec 4.8). The selected row above shows the drill-down: the full persisted record, with
companyId marked diagnostic and candidate ids labelled for what they are. The JSON-lines run artifact stays as file evidence; no download UI is specified.Per-class guidance
Plain-language meaning and the fix that clears each class · shown to the operator as reference copy
Q1 no matching cycle · create or backfill the missing cycle, re-run
Q2 several candidates / boundary overlap · resolve overlapping or duplicate start-year boundaries, re-run
Q3 framework unresolvable on a multi-framework boundary · correct the row or boundary framework, re-run
Q4 year-only row against a non-January cycle · confirm the intended period on the row, re-run
Q5 period-less row, no same-framework start-year cycle · create the cycle or fix the row, re-run
Q6 row year disagrees with period.startYear · correct the clone-damaged row, re-run
Q7 entry reporting date outside the governing assignment's cycle months · fix the date or scope, re-run
Q8 existing stamp differs from new resolution · review the ingestion move; rows are never re-stamped silently
Q9 webhook year resolves to zero or several cycles · fix the cycle set for that year, re-run
Q10 missing or deleted disclosure · restore or correct disclosure data, re-run
Q11 disclosure framework differs from the copied framework · fix disclosure or framework data, re-run
Q12 row organization outside the cycle org scope · correct org scope or the row's organization, re-run
Q14 zero-boundary company · create boundaries or cycles first; rows were untouched
QI governing assignment unstamped or quarantined · clear the assignment's class first, re-run
QARCH stamp references an archived cycle · the re-run re-resolves these rows
State gallery · quarantine tab · annotation · not proposed UI
Re-run rows · run filter switched to run-2026-09-02-b2
| runId | collection | rowId | classCode | candidateIds | at |
|---|---|---|---|---|---|
| run-2026-09-02-b2 | dataentries | 68a9d2f5c8d3e6194b2c3303 | QARCH | 68b1a4c2e91d7f0a3c4b0109 | 2026-09-02 03:44 UTC |
| run-2026-09-02-b2 | dataentries | 68a9d2f5c8d3e6194b2c3304 | Q8 | 68b1a4c2e91d7f0a3c4b0106, 68b1a4c2e91d7f0a3c4b0107 | 2026-09-02 03:47 UTC |
The QARCH candidate is the archived cycle referenced by the stamp; the entry resolver refuses to follow it. Q8 candidates are the differing cycles: existing stamp versus new resolution; the row is never re-stamped silently.
Empty state · no quarantine records for the selected run
No quarantine records
The selected run wrote no quarantine records. Every row either stamped cleanly or was excluded by class; exclusion counts stay visible in the run summary.