GRI Reporting Cycles · Admin wireframes (Option A)
Static wireframes of the Reporting Cycles admin area from GRI spec i, drawn in the NxStart product design language. Option A itself is decided and is not reopened here. The PM's review is COMPLETE (both rounds 2026-08-23) and every ruling is applied in place across the set; the item list below records each disposition.
Invented dataAll data on every page is invented. The tenant is Bluefin Foods Group, a fictional company with fictional organizations, users, ids, run ids, counts, and dates. The framework code GRI-NG-2026 is a placeholder; the real GRI new-generation registry code arrives with spec ii, and until then native cycles exist only in non-production environments against a test-registry entry (spec 6.3). No real client appears anywhere in this set.
Purpose
These pages let the PM make a build ruling on the Reporting Cycles admin area (spec i, iteration I1) by reviewing every screen, state, chip, error code, and refusal the spec defines, rendered as the product would render them. Anything the spec leaves open is drawn as a labelled variant or listed under the items below, never silently resolved.
PM review · COMPLETE (2026-08-23)
- Round 1, 2026-08-23: cycle list, quarantine tab, wizard steps 1 and 2. Rulings applied in place: engine internal and never user-facing, lock-state column stays (V2), scope step redrawn deep.
- Round 2, 2026-08-23: wizard steps 3 and 4, the detail pages, the lock dialog. Four rulings, all applied in place across the set:
A density and label-value proximity (values sit next to their labels; a step fits a desktop viewport; density raised on every label-value surface);
B the Usage tab is folded into Overview (tabs are Overview and Events; page 08 repurposed as the folded-card close-up);
C the lock-change dialog explains itself (what a lock is, the three states, reversibility, audit trail, and what this change does);
D the Events page stands as drawn for I1.
Wizard step 3 was reviewed with no changes ordered.
- Annotated alternatives the PM did not object to stand as drawn; each is marked in the item list below.
How to read these pages · demo-helper legend
Everything drawn in plain product styling is proposed UI. Everything amber-tinted with a dashed border is review scaffolding, in one consistent style across the whole set:
Annotation · not proposed UIBlocks like this one carry spec citations, server-enforcement notes, and open questions. They are notes to the reviewer, not screen copy.
Demo helperBlocks tagged this way are navigation aids and stand-ins: the dark chrome bar at the top of every page, cross-page links, and sample-data callouts.
Inline markers use the same style: Annotationlike this, attached to a single chip, row, or field. State galleries below each main frame repeat the page's screen in its error, empty, and forward states; the amber dashed frame around each gallery tile is scaffolding, the white card inside it is the proposed rendering. The surrounding application shell (sidebar, top bar, user menu) stands in for the existing NxStart chrome and is not a proposal about it.
Pages
- 01Cycle list
Cycles tab: full sample table, every status, lock, marker, and suffix state, row-action menus, archive confirmation, empty state.
- 02Quarantine tab
Per-class run summary with exclusion counts, filters, read-only row table with drill-down, per-class meanings and remediation guidance.
- 03Create wizard · Basics
Framework, period at month precision, 1980 floor, label preview; error and historical states in the gallery. No engine control, per the 2026-08-23 ruling.
- 04Create wizard · Scope
Three-mode organization scope over the full boundary structure: a deep searchable tree with per-branch counts, redrawn 2026-08-23; all-organizations forcing behavior and ORG_SCOPE_INVALID in the gallery.
- 05Create wizard · Methodology lock
GWP family, boundary approach with equity-share visible-disabled, NCV/GCV, fixed rule set, pending factor library; forward, refusal, and optional states in the gallery.
- 06Create wizard · Review and activate
Grouped summary in side-by-side left-clustered definition columns (density ruling 2026-08-23), provisional lock banner, activation refusals: 422 codes[] list form and 409 concurrency states.
- 07Cycle detail · Overview
Active GRI cycle: identity card, methodology lock card with computeInvalidatedAt, folded Usage card (ruling 2026-08-23), actions with refusal notes. Tabs: Overview and Events.
- 08Cycle detail · Usage card in Overview
The Usage card folded into Overview, drawn up close; the Usage tab is removed per the PM ruling 2026-08-23. Counts only; row-level listing deliberately absent.
- 09Cycle detail · Events
Append-only event list with paging; company-scoped samples covering all 13 event types. No structural change per the PM's round 2; expected to grow after I1.
- 10Cycle detail · Backfilled
Server-enforced read-only banner, stale-source notice, provenance block, compact Usage card, quarantine-run link.
- 11Lock-change dialog
Four dialog states on a dimmed backdrop, I1-reachable first: replacing a provisional lock (the invalidation contract), the first lock write, then the forward completion and complete-lock replacement states; drawn refusal gallery. Every state carries the plain-language lock explainer and a "What happens if you continue" block (ruling 2026-08-23).
Engine control · RESOLVED by PM ruling 2026-08-23
PM ruling 2026-08-23: the engine is an internal attribute fixed by framework, never user-facing. GRI cycles run on the native engine only; existing frameworks stay on their current path; there is no user choice. Applied across the set: the engine selector variant pair is removed from the Basics step, the Engine column and engine chips are removed from the list, detail headers, and dialogs, and the create control stays a single "New cycle" action. The historical meaning is still carried by the read-only and [backfilled] chips. One caveat for the spec follow-up: the spec i text still describes engineChoice as a required client field that is PATCHable in draft (spec 4.1, spec 4.3 rule 6); under this ruling the server derives and owns the value, so those clauses need a spec amendment.
Supplements
- S1Why NxStart needs Reporting Cycles for GRI
Explainer document, not product UI: why versioned GRI standards force one durable, lockable record per reporting period.
- S2Quarantine: the user flow
Explainer document, not product UI: the run-to-resolution loop as a System and Admin swimlane diagram, with what a run is and where the tab sits.
Both supplements sit at the end of the page walk: the lock-change dialog's Next link leads into them. They carry no page number.
Annotations and dispositions · updated at the PM's review completion, 2026-08-23
- Set density and label-value proximity · RESOLVED by PM ruling 2026-08-23 (ruling A). Values sit next to their labels in left-clustered definition rows; no value is flushed to the far edge of a wide container; a wizard step fits a typical desktop viewport without scrolling. Applied set-wide: the step 4 review, the detail identity and lock cards, the dialog summary rows, and the quarantine drill-down. Data tables unchanged.
- Usage tab · RESOLVED by PM ruling 2026-08-23 (ruling B). Folded into Overview: two counts do not earn a tab. Tabs are Overview and Events on every cycle detail; page 08 is repurposed as the folded-card close-up. A dedicated tab returns when later specs add usage classes worth listing (computed figures in spec iii, report provenance in spec vi). The counts-only constraint stands: no endpoint lists individual stamped rows.
- Lock-change dialog self-explanation · RESOLVED by PM ruling 2026-08-23 (ruling C). Every drawn state now says what a lock is, the three states in plain language, that changes are reversible and audited on the Events tab, and what this specific change does under a "What happens if you continue" heading.
- Events page · reviewed 2026-08-23 (ruling D). Appropriate for I1 as drawn, no structural change; expected to grow after I1 because auditors and clients trace and check. Cycle-scoped changes only, not data entries.
- Quarantine tab placement. Drawn as an AREA-level tab per the kickoff session note. Spec 9.1 also mentions a detail-screen tab, but quarantine records carry no cycle id (spec 4.8), so a cycle-scoped list is not derivable. The drawn resolution: area tab, plus a run-filtered link from the backfilled cycle detail. Stands as drawn per the PM's review completion, 2026-08-23.
- X-class drill-down rows. Whether exclusion classes X1 to X4 appear as filterable rows (spec 8.1 vs spec 8.4 tables). Drawn: X counts in the run summary only, Q classes only in the class filter. Moved to the build backlog as a data-contract question, not a UX open item (PM review completion, 2026-08-23).
- Forward states, depicted but not reachable in I1. Lock state
complete and the 422 VINTAGE_REQUIRED refusal need spec iii's vintage registry; status superseded needs I3 restatements. Both are drawn for chip review and annotated wherever they appear.
- Lock state as a list column · RESOLVED. PM ruling 2026-08-23: variant V2 adopted, the lock-state column stays in the list. The V1 tile (no column, detail only) is removed from the list page's gallery.
- Scope step depth · condition applied. The Scope step was redrawn deep on 2026-08-23 under the PM's no-cookie-cutter condition: the tenant's boundary structure at realistic depth (group, business units, country legal entities, sites), with search, expand/collapse, per-branch counts, and an overall in-scope summary. Selection semantics unchanged.
- Wizard step order. Drawn per spec: Basics, Scope, Methodology lock, Review and activate. The shipped Reporting Boundary wizard orders Year first (Year, Framework, Organizations, Review). Stands as drawn per the PM's review completion, 2026-08-23.
- Publication-date placement.
intendedPublicationDate is optional at create and required at lock completion for native cycles. Drawn in the Methodology step; the Basics alternative was flagged there. Stands as drawn per the PM's review completion, 2026-08-23.
- Null-cycle stamping events.
stamping-* events with null cycleId structurally cannot appear in a per-cycle Events tab. Drawn as an annotated company-scoped sample on the Events page; that home stands as drawn per the PM's review completion, 2026-08-23.
- First-write lock button label. The lock dialog's confirm action reads Replace lock even on a first write (state B on the dialog page). Stands as drawn per the PM's review completion, 2026-08-23.
- MIN-14 sidebar stripe. The sidebar active-item stripe rendering. Stands as drawn per the PM's review completion, 2026-08-23.
- Rollout flag. The whole area sits behind per-tenant
reportingCyclesEnabled, OFF for every legacy tenant until the PM enables it. Shown as an annotation, never as a control. This fictional tenant: reportingCyclesEnabled true, factorLibraryAvailable false (the I1 default).
- List search box. The API defines exactly three list filters (
status[], frameworkCode, startYear) and pins the ordering (period.startYear desc, then createdAt desc). The free-text search box follows the product's list-toolbar convention and is presentation-only.
- Boundary admin. Unchanged and linked from the list page. Boundaries stay the system of record in I1; this page becomes the single administration area at the boundary contract step.
- Spec 9.1 lineage. The v2.1 spec text was never committed separately; detail behind "as v2.1" traces to the v2 text in commit a88c959 plus the v2.1 change log. Nothing material appears lost; anything seemingly missing from 9.1 was traced to the v2 text, not assumed.