Demo helper GRI Catalog Admin · Admin wireframes (spec ii) Page 9 of 12 · Stakeholder groups and cycle snapshots Invented data · Bluefin Foods Group (fictional tenant)

Stakeholder groups

Bluefin Foods Group · the workspace registry, and what each reporting cycle recorded from it
AnnotationMenu placement is a proposal, not a spec statement. Spec ii 4.2 defines the two endpoints, not the navigation position. The three sidebar items marked "proposed" are the additions this wireframe set asks for; every other item is existing product navigation, unchanged
Demo helper · panel labelsPanel 1, left: the workspace registry. Panel 2, right: the snapshots one cycle took from it. Both are one screen; the numbering exists only so the annotations below can point at them.
Workspace registry
The current list of groups this workspace engages with
New group
GroupCategoryEngagement modeStatus
Employees and contractors
Group-wide, 2,140 people
workforcesurvey
Annual engagement survey
active
Contract growers
Renamed from Contract farmers on 02 Jun 2026
suppliersmeeting
Grower meetings, three regions
active
Retail customers
SG, TH, MY retail accounts
customerssurvey
Consumer panel and service line
active
Food safety regulators
Three jurisdictions
regulatorswritten-submission
Filings and inspection responses
active
Neighboring communities
Johor and Rayong plant catchments
communitiesgrievance-channel
Community liaison meetings
active
Regional wholesalers panel
2024 pilot, no longer convened
customersmeetinginactive
Deactivated 04 Jan 2026
Groups are deactivated, never deleted, so every snapshot and every later consultation record still resolves to the group it was written against. An empty registry is valid: nothing in the reporting flow waits on the stakeholder group registry.
Cycle snapshots · FY2025 GRI report
Jan 2025 to Dec 2025 · active · what this cycle recorded, version by version
Refresh snapshot
Refresh takes a new version. It never edits or replaces an existing one. This cycle is active and its methodology lock is provisional, so the latest version can still be refreshed: pressing Refresh snapshot records the registry as it stands today as version 3, and versions 1 and 2 stay exactly as they were taken.
When to use it: after adding, renaming, or deactivating a group that the report should reflect. If nothing in the registry has changed, a refresh only adds a version that reads the same, so there is no reason to press it.
Version 2 latest can be refreshed View recorded groups
Taken15 Jun 2026, 09:24 UTCrefreshed while the cycle was active
Taken byPriya NairSustainability Admin
Groups recorded5the inactive wholesalers panel was already out of the registry; this version reads "Contract growers", the name the group carried on 15 Jun 2026
StateLatest, not frozenthe cycle is active and its methodology lock is provisional, so a refresh would append version 3; freezing happens only at lock completion, which I1 cannot reach
Version 1 superseded by version 2 View recorded groups
Taken12 May 2026, 06:11 UTCtaken when the cycle was activated
Taken byMei TanSustainability Admin
Groups recorded5
Recorded labelsEmployees and contractors, Contract farmers, Retail customers, Food safety regulators, Neighboring communitiesThis version still reads "Contract farmers", which is the name the group carried on 12 May 2026. The registry now shows "Contract growers". Renaming a group later never changes what a snapshot recorded.
Annotation · not proposed UISpec ii 4.2 · the take is atomic with activation. The activation-time snapshot executes inside spec i's activation critical section: the snapshot write and the activation commit succeed or fail together. There is no active cycle without a snapshot and no snapshot without its cycle. Version 1 above therefore carries the same timestamp story as the cycle's activation, and it is not a separate user action.
Annotation · not proposed UISpec ii 4.2 · refresh appends, never overwrites. An explicit refresh while the cycle is active appends a NEW version with a monotonic version number per cycle (stakeholdergroupsnapshots: companyId, cycleId, snapshotVersion, takenAt/By, frozen copies of the groups, frozen). Earlier versions, and any confirmation that referenced them, are untouched. Nothing in this surface can edit or delete a version, which is why the version cards carry no Edit or Remove affordance.
Annotation · not proposed UISpec ii 4.2 · renames and deactivations cannot reach backwards. A snapshot stores frozen copies of the groups, not references to the live registry rows, so a rename, a category change, or a deactivation in panel 1 leaves every existing version byte-identical (acceptance case 9.5). Panel 1 shows the current name, panel 2 shows the recorded name, and the two are deliberately allowed to differ. Version 1 above reads "Contract farmers" and the registry reads "Contract growers" for exactly that reason.
Annotation · not proposed UISpec ii 4.2 and 6.6 · what freezing does, and what is drawn where. Freezing happens at lock completion, and lock state complete needs spec iii's factor-library vintage, so in I1 the latest version of a live cycle always stays refreshable. That is why the MAIN screen above draws the enabled control: it is the state this build will actually ship. The frozen state and its refusal are drawn in the gallery below as a forward state, because a reviewer has to understand freezing before signing anything off. The refusal constant is CYCLE_IMMUTABLE, 409, spec i's existing code reused unchanged and listed as such in the spec ii 6.6 error contract, so it is quoted rather than proposed.
Annotation · not proposed UISpec ii 4.2 · freezing is one way, and the spec now says so. No lock transition ever unfreezes a snapshot version. If a completed lock is ever reversed and later re-completed, the re-completion freezes the THEN-latest version, and every version that was already frozen stays frozen. That is why no screen in this wireframe set carries an unfreeze path: there is nothing to draw. A related rule from the same section, drawn nowhere because it has no control: when a cycle's lock is already complete at activation, the activation-time snapshot is born frozen, so there is no window in which a lock-complete cycle holds a refreshable snapshot.
Annotation · question for the PMOne open item, not invented into an answer here. The registry carries a category enum and an engagement mode (gate (c) bone 2B), but neither the spec nor the plan enumerates the permitted values. The values shown in panel 1 are invented placeholders in the shape of a closed server-side list, not a proposal about the category list itself.
Annotation · not proposed UIContract notes. Both endpoints are admin role: /v1/stakeholder-groups (list, create, deactivate) and /v1/reporting-cycles/:id/stakeholder-snapshots (list, refresh). Lookups are tenant-scoped {_id, companyId} with cross-tenant 404, which is what closes the snapshot IDOR surface the review named. The registry is never written by the boot-time seeder, and the qualitative stakeholder narrative in the report is never auto-generated from the stakeholder group registry.