FY2025 GRI report · Bluefin Processing TH
Bluefin Foods Group / Processing / Thailand · FY2025 (Jan 2025 - Dec 2025). One question of the cycle, opened for entry. Table answer.
cycle active
methodology lock provisional
GRI 302-1 (a)
Energy used at this site, by source
Composed guidance (placeholder)
List every energy source the site drew on during the reporting period, one row each. Enter the quantity as your meters or invoices recorded it and choose the matching unit; do not convert between units here.
Enter an answer
Report an omission instead
| Energy source*from the source list set by this edition | Quantity*number only | Unit*GJ, MWh, kWh, litres | How it was measuredoptional, short text | |
|---|---|---|---|---|
| Diesel, stationary generators | 4,820 | GJ | Meter readings, reconciled monthly | |
| Grid electricity, purchased | 12,640 | MWh | Utility invoices |
Add row
The table columns are set by the standard edition this cycle uses. You add and remove rows; columns cannot be added, renamed, reordered, or removed.
One or the other, never both.
A question holds either an answer or an omission. If you switch to "Report an omission instead",
the answer on this question is cleared when you save the omission. If you switch back, the omission
is cleared. The screen tells you before it clears anything, and nothing is cleared until you save.
CancelSave answer
Layout · the PM's part 1 ruling R2-6Data entry is the main function of this page, so it is now the main visual area. Before this pass the question reference card and the cycle context card filled the whole first screen and the answer table started below the fold. Nothing was deleted. The facts a person needs WHILE typing sit in the question strip under the page header: question code, composed question title, answer format, reporting status, whether an omission is allowed, the answered status, and the row count. Everything else moved into the collapsed "Question and cycle details" section under the entry area, one press away, and the state gallery below draws that section OPEN so the review can confirm every row of both former cards survived. The alternatives the PM offered were a card on the right and a card below. This page is the reason the right-hand card was rejected for all four entry pages: a four-column answer table with a free-text column needs the full page width, and a side card would squeeze it into a scroller. A plain card below was rejected because it keeps the full reference block permanently in the scroll for detail an entry person rarely needs mid-keystroke. Wireframes are static, so the expander is drawn closed here and open in the gallery rather than toggled.
Annotation · not proposed UIWhere the columns come from, and
why they are not editable here (spec ii 3.9 and 3.5). The column set, which columns are required, the allowed
units, and the numeric rules are CATALOG CONTENT authored on the clause (
inputType,
unitOptions, defaultUnit, validations in 3.5), published as immutable
content and frozen into this cycle's edition set at activation. A table answer is stored in
structuredValue and the server validates it against the clause's DECLARED structure on every
write; a payload with an extra column, a missing required column, or a unit outside the declared options is
refused server-side, not just in the browser. Letting a user reshape the columns would break that contract and
would make two sites' answers to the same question non-comparable, so no screen offers it.Annotation · not proposed UIWhat identifies this answer (spec
ii 6.4 and 3.8). A native answer is keyed by cycle, clause logical id, topic instance (null throughout I1),
organization scope, and period. Native rows carry
clauseLogicalId and do NOT populate
disclosureId; they never pass through the legacy assignment and entry resolvers. The clause is
resolved through the cycle's frozen edition set, so a question outside that edition set refuses with
CLAUSE_NOT_IN_ASSEMBLY rather than rendering.Annotation · not proposed UIExclusivity is structural, not a
screen convention (spec ii 3.9 and 3.10). The answer payload is a closed set with exactly one legal slot per
answer format: this question uses
structuredValue. Every native write is one atomic update that
sets the legal slot and unsets the others plus omission, or sets omission and unsets
every payload slot. A table answer converted to an omission therefore retains no stale payload; test 9.2 walks
the whole transition matrix. The screen copy states the rule in plain words because the user has to know the
switch clears, not because the storage needs the warning.Annotation · not proposed UIOmission contract (spec ii 3.10).
Stored shape is
{reason, explanation, expectedAvailability} with four reasons. I1 validates SHAPE
ONLY and refuses a bad reason with OMISSION_REASON_INVALID; whether an omission is PERMITTED for
a given question is enforced in I3, so this screen never claims an omission here is acceptable to a reviewer.
SETTLED, and drawn as settled: the I1 shape is the single free-text
explanation plus expectedAvailability. The 2026-08-21 plan-review adjudication (GF8.2)
recorded per-reason required subfields for the "information not available" case (what is missing, why, steps taken,
timeframe); spec ii 3.10 as amended states that the subfield split lands WITH the I3 enforcement work, not in I1,
so neither record contradicts the other. One item is still open for the PM and it is only wording: the four reason
labels drawn here are composed in our own words, because the spec fixes the enum values and not their display text.Annotation · not proposed UIOpen items for the PM on this
surface. (1) The source list in column one is drawn as a fixed picker; spec ii 3.5 gives the clause
unitOptions but does not say whether a table column can carry its own closed option list, so
whether "Energy source" is a picker or free text is an authoring question, not a drawn decision. (2) Row count
is unbounded in this drawing; the spec sets no row limit, and a limit would be a product decision. (3) Column
headings and the four-column shape here are FICTIONAL, composed for review; the authored set is content work
under spec ii 7.1 and 7.3.Annotation · not proposed UIRole. Daniel Ong holds ENTRY
access. Spec ii 6.2 gives the entry role read access to the two cycle catalog reads (
GET
/v1/reporting-cycles/:id/catalog and .../catalog/clauses/:logicalId) and 403 on every
cycle mutation route; the full matrix is test 9.3. That is why no cycle action appears on this page. The
application shell around the page stands in for existing NxStart chrome and is drawn identically on all twelve
pages of this wireframe set so the surfaces can be compared; which menu items an entry-role user actually sees is existing
product behavior this wireframe set does not restate, and it is not the mechanism that stops the write. The server is.State gallery · table answer · annotation · not proposed UI
The same question in its per-cell refusal, omission, and empty states. White cards are the proposed rendering; the amber frames are review scaffolding.
The "Question and cycle details" section, opened · nothing was lost in the move
This is the same section drawn closed under the entry area on the page above, here opened so the review can check the move row by row. Every row of the two former cards is present and unedited, including the Last saved row this page carries and the date answer page does not. The question code, the answer format, the reporting status, and the omission rule are deliberately DUPLICATED between this section and the question strip: they are the facts an entry person needs without opening anything.
State 2 · two problems in one row, nothing saved
Add row
2 problems in row 3. Nothing was saved.
Rows 1 and 2 are fine and are still here. Fix the two cells marked below and press Save answer again.
Server refusal 422 ANSWER_FORMAT_INVALID, with the failing row and column named in the response.
| Energy source* | Quantity* | Unit* | How it was measured | |
|---|---|---|---|---|
| Diesel, stationary generators | 4,820 | GJ | Meter readings, reconciled monthly | |
| Grid electricity, purchased | 12,640 | MWh | Utility invoices | |
| Biomass, husk boiler | 1 200 kg Enter a number only. Put the unit in the Unit column. |
Choose Required. Choose a unit. |
Weighbridge tickets |
Errors are reported per cell, addressed by row number and column name, and the save is refused whole. A partial save would leave the table half in and half out of the declared structure, which the server-side structure check (spec ii 3.9) would then reject on the next read of the answer as a unit.
State 3 · the omission tab, selected
Enter an answer
Report an omission instead
Held back under a confidentiality restriction
Not applicable to this organization
Reporting it is prohibited by law
Held back under a confidentiality restriction
The information is not available or is incomplete
The site's fuel purchase quantities are covered by the supply agreement signed in 2024 and cannot be published at source level. Group is renegotiating the clause at renewal.
Say what is missing and why, in your own words. This text is read by whoever reviews the report.
2026-09-30
Format YYYY-MM-DD. Leave empty if you cannot give a date.
Saving this omission clears the answer on this question. A question holds an answer or an omission, never both. Nothing is cleared until you press Save omission.
CancelSave omission
Saving an omission here clears the whole table in the same atomic write; no structuredValue survives (spec ii 3.9, transition matrix in test 9.2). Switching away from a table that already holds rows raises the SAME confirmation drawn on page 5 of this wireframe set, naming the saved rows, who saved them, and Keep against Continue. That confirmation is one pattern for every answer type; it is drawn once rather than four times.
State 4 · no rows yet
Enter an answer
Report an omission instead
| Energy source* | Quantity* | Unit* | How it was measured |
|---|---|---|---|
| No rows yet. Add one row for each energy source the site used. | |||
Add row
Columns are set by the standard edition; only rows are yours.
The empty table still shows the declared columns, so the shape of the expected answer is visible before anything is typed.
State 5 · the server refuses the shape, not just a cell
This answer does not match the structure this question declares
The answer was sent with a column this edition does not declare for this question. Nothing was saved. Reload the question to get the current columns and enter the answer again.
Extra column sent: "Cost". Declared columns: Energy source, Quantity, Unit, How it was measured.
Two different checks, drawn apart on purpose. Per-cell validation (state 2) is about the values a user typed. This one is the server checking the PAYLOAD SHAPE against the clause's declared structure (spec ii 3.9), which is the check that survives a stale tab or a direct write. The review should read them as separate mechanisms, not two renderings of the same message.