FY2025 GRI report · Bluefin Processing TH
Bluefin Foods Group / Processing / Thailand · FY2025 (Jan 2025 - Dec 2025). One question of the cycle, opened for entry. The answer format is not supported by this app version.
cycle active
methodology lock provisional
GRI 302-3 (a)
Energy used per unit of production, and the basis of the ratio
Composed guidance (placeholder)
Give the energy figure per unit of production for the site and say what the denominator is, so the ratio can be read without guessing what it was divided by.
Enter an answer
Report an omission instead
This question cannot be shown here yet
This question uses an answer format this version of the app cannot display yet. Your data is safe. Contact your administrator.
What happened
The standard edition this cycle uses asks for this answer in a format added after this version of the app was built.
What it means for your data
Nothing is changed, hidden, or deleted. No answer and no omission has been removed. Every other question in this cycle works normally.
Why you see this instead of a box to type in
A guessed input would take a figure into the wrong kind of answer, and the question would read as answered when it is not. Refusing is the safe outcome; a wrong control is not.
What to do next
Send the details beside this panel to your workspace administrator. The app needs an update first; nothing you can do on this screen will make the format work.
Tell your administratorGRI 302-3 (a)the question code
Reporting cycleFY2025 GRI report
Organization unitBluefin Processing TH
Problem reportedVOCAB_TYPE_INVALIDdeclared format valueDenominatorMatrix, unknown here
Other questions here are unaffected
GRI 302-1 (a) · Energy used at this site, by sourceanswered
GRI 302-2 (a) · Energy used outside the site, by sourcenot answered yet
GRI 302-3 (a) · Energy used per unit of production, and the basis of the ratiocannot be shown
One or the other, never both, and neither one here.
A question holds either an answer or an omission, never both at once, and switching between them clears
the other. Neither can be recorded on this question while the format is unsupported, so both choices
above are switched off rather than left to fail on save.
Back to the question list
Save answer
Layout · the PM's part 1 ruling R2-6The four entry pages share one layout, and this refusal page keeps it. Before this pass the question reference card and the cycle context card filled the whole first screen and the refusal panel started below the fold, which on this page of all pages is the wrong order: the reason a person came here is the panel telling them what to do. The facts they need without opening anything sit in the question strip under the page header, including the two that matter here, that the answer format is not supported and that the omission route is refused too. Everything else moved into the collapsed "Question and cycle details" section under the refusal area, 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. The right-hand card was rejected because it takes width the table answer on page 6 of this wireframe set needs and because this page already uses its right column for the "tell your administrator" block. A plain card below was rejected because it keeps reference detail permanently in the scroll. One thing to note for the review: the strip carries the SHORT form of the refusal, and the panel carries the full explanation, so the same fact appears twice by design rather than by accident.
Annotation · not proposed UIFail-closed contract (spec ii
3.9). The input vocabulary is ONE exported constant shared by the import validator, the entry validator, and
the catalog reads that feed this screen. Native paths refuse an unknown answer format with 422
VOCAB_TYPE_INVALID on WRITE, READ, IMPORT, and RENDER. The renderer receives the declared format
from the catalog read and, when it does not recognize it, shows this explicit error state: never a numeric
fallback, never a blank control, never a text box that happens to accept anything. Test 9.2 names the UI
unsupported-type state and the never-a-numeric-fallback rule as an acceptance case, so this drawing is the
reviewable form of a tested requirement.Annotation · not proposed UIWhy guessing a format is
forbidden, stated as a mechanism rather than a preference. The answer payload is a CLOSED set with exactly one
legal slot per format (spec ii 3.9): the legacy formats and
date write value, while
table and written answers write structuredValue. A guessed control picks a slot. Two
outcomes follow, both bad: the write is refused anyway and the user has wasted the work with no explanation,
or the value lands in a slot that means something different from what the question asked, and the question
reads as answered. Since the same clause also drives later reporting, a wrong-slot value propagates into
anything built on it. Refusing at render is the only outcome that leaves the record honest.Annotation · not proposed UIHow this state is REACHED, in
plain terms for the review: the catalog is versioned and published independently of the app, so a published
edition can declare a format that a deployed app version predates. It is not a data fault and not a user
fault, which is why the copy blames neither. The declared format string drawn here
(
valueDenominatorMatrix) is FICTIONAL and deliberately not one of the spec ii vocabulary members,
so nothing on this page can be mistaken for a real vocabulary entry.Annotation · not proposed UIThe omission route is closed here
too, and that is now stated in the contract rather than inferred. Spec ii 3.10 as amended: on a clause whose
answer format is unknown to the running version, BOTH routes fail closed, and the answer write AND the omission
write refuse
VOCAB_TYPE_INVALID, because an omission is still a write against a contract this
version cannot validate. That is why both entry choices above are switched off rather than left to fail on save.
This page's earlier draft raised the question; the spec answered it, and the drawing matches the answer.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 UISECOND QUESTION FOR THE PM, about
the copy rather than the mechanism. The panel tells the site manager to contact "your administrator", which is
the wording the assignment fixed and the wording a site user understands. The actual remedy, though, is a
newer app version, and in this phase deployment sits with the platform operator (Evercomm), not with the
tenant's own administrator. So the tenant admin can only pass the message on. Two options: keep the current
wording, which is honest about who the user should talk to first and hides the plumbing, or name the
escalation explicitly ("your administrator, who will raise it with the platform operator"). Drawn with the
shorter wording. The question code block below the panel exists so that whichever route is taken, the person
on the receiving end gets what they need in one message.
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 · unsupported answer format · annotation · not proposed UI
Two renderings that must never ship, drawn in red so they can be rejected on sight, plus the matching state on the question list. 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 refusal 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. This page's reference card has no Omission row and no Last saved row, because neither exists on a question whose answer format is unknown to the running version; that absence is the same as it was before the layout changed.
Forbidden rendering 1 · a numeric fallback
Drawn in red to be rejected. This tile exists so the review can see what the error panel replaces, and so nobody reintroduces it as a convenience later.
Forbidden rendering 2 · an empty control, or nothing at all
The rule from the conventions applies literally here: every state a user can hit explains itself in the UI copy. An empty control explains nothing.
State 2 · the same refusal in the question list
| Question | Answer format | State |
|---|---|---|
| GRI 302-1 (a) Energy used at this site, by source | Table, one row per source | answered |
| GRI 302-2 (a) Energy used outside the site, by source | Table, one row per source | not answered yet |
| GRI 302-3 (a) Energy used per unit of production, and the basis of the ratio | Not supported by this app version | cannot be shown open it to see what to do |
The affected question row stays visible and stays unlinked as an entry target. Hiding it would be worse: a required question would silently vanish from the site's list of work.
Consistency check for the review: the question list surface must carry the same refusal rather than showing the row as ordinary work. The row is still countable, so nobody loses track of it while the app waits for an update.
Reference · the same screen when the format IS supported
UnchangedPage header, cycle and lock chipsthe cycle is fine; one question is not renderable
UnchangedThe question stripquestion code, question, reporting status; only its answer format chip differs, and it reads as unsupported instead of naming a format
UnchangedComposed guidancethe guidance is content, not a control, so it still renders
UnchangedThe "Question and cycle details" sectionall of it comes from the catalog read, which succeeded
ReplacedThe entry area and both entry tabserror panel instead of a control; tabs switched off
ReplacedThe save actiondisabled, because there is nothing legal to save
The catalog read gives the renderer the declared format (spec ii 6.2), which is how the screen can show the question's identity and guidance while still refusing to draw an input for it. That split is the reason this state can be informative at all instead of a bare failure page.