This card carries the objectui half (stage 2) of objectstack-ai/objectstack#20318: the flow runner reads translation.flows.FLOW.label. objectstack-ai/objectstack#20318 keeps the served label (stage 1, objectstack-ai/objectstack#20633) and the ledger flip that follows this card's landing.
Filing gate: ④ a coordination node, the per-layer child of an in-flight card. Filed by the domain:spec execution seat 2 (session_014EJ1ED8X4MMrT18BhVx4tx, seat post objectstack-ai/objectstack#18549) from the stage-1 ACCEPT on objectstack-ai/objectstack#20318. ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.
Why this is owed
objectstack triage graded objectstack-ai/objectstack#20318 ENFORCE by the maintainer's criterion: translating a flow's label is mainstream (the Salesforce Translation Workbench translates Flow labels). Today nothing in objectui reads translation.flows.FLOW.label, and no surface displays the flow's own label. The domain:spec seat 4 measured that on objectui 797a30f4 (objectstack-ai/objectstack#20318, comment 5880531686):
FlowRunner.tsx reads only flows.FLOW.screens (localizeScreen, about :219–:233).
- The runner
DialogTitle (about :462) is the screen title or flowRunner.title.
- The completion toast (about :385) interpolates
flowName, the API name.
- The launcher's notices use the action's label or
Flow "NAME".
data.flowLabel (optional string) is on every 200 from POST /api/v1/automation/NAME/trigger and POST /api/v1/automation/NAME/runs/RUN_ID/resume: paused, finished, refused or skipped.
- It is not on a 400
FLOW_FAILED, nor on the 404 / 409 / 422 refusals.
- It is the flow definition's authored label, verbatim. For a subflow chain it is the addressed parent's label, never the child's.
AutomationResult.flowLabel in @objectstack/spec (contracts/automation-service.ts) declares it, and TriggerFlowResponseSchema.data mirrors it.
What the reader does (the direction triage set; ⛔ not a ruling on UI design)
FlowRunner keeps flowLabel from the trigger and resume responses (ScreenFlowState gains it). Two hosts mount FlowRunner (useConsoleActionRuntime.tsx and RecordDetailView.tsx), so the read belongs in FlowRunner.
- The displayed label resolves as: the active locale's
translation.flows.FLOW.label, then flowLabel, then flowName.
- It gets a display slot: the runner header, and the completion toast in place of the API name.
- Pins: a zh bundle and an en fallback, and a flow with no translation showing its authored label.
Sequencing
Dedupe words: flows label translation FlowRunner · flowLabel runner header · translation.flows label reader
Generated by Claude Code
This card carries the objectui half (stage 2) of objectstack-ai/objectstack#20318: the flow runner reads
translation.flows.FLOW.label. objectstack-ai/objectstack#20318 keeps the served label (stage 1, objectstack-ai/objectstack#20633) and the ledger flip that follows this card's landing.Filing gate: ④ a coordination node, the per-layer child of an in-flight card. Filed by the
domain:specexecution seat 2 (session_014EJ1ED8X4MMrT18BhVx4tx, seat post objectstack-ai/objectstack#18549) from the stage-1 ACCEPT on objectstack-ai/objectstack#20318. ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim.Why this is owed
objectstack triage graded objectstack-ai/objectstack#20318 ENFORCE by the maintainer's criterion: translating a flow's label is mainstream (the Salesforce Translation Workbench translates Flow labels). Today nothing in objectui reads
translation.flows.FLOW.label, and no surface displays the flow's own label. Thedomain:specseat 4 measured that on objectui797a30f4(objectstack-ai/objectstack#20318, comment5880531686):FlowRunner.tsxreads onlyflows.FLOW.screens(localizeScreen, about :219–:233).DialogTitle(about :462) is the screen title orflowRunner.title.flowName, the API name.Flow "NAME".The served shape this reader consumes (objectstack-ai/objectstack#20633, at-tier PASS)
data.flowLabel(optional string) is on every 200 fromPOST /api/v1/automation/NAME/triggerandPOST /api/v1/automation/NAME/runs/RUN_ID/resume: paused, finished, refused or skipped.FLOW_FAILED, nor on the 404 / 409 / 422 refusals.AutomationResult.flowLabelin@objectstack/spec(contracts/automation-service.ts) declares it, andTriggerFlowResponseSchema.datamirrors it.What the reader does (the direction triage set; ⛔ not a ruling on UI design)
FlowRunnerkeepsflowLabelfrom the trigger and resume responses (ScreenFlowStategains it). Two hosts mountFlowRunner(useConsoleActionRuntime.tsxandRecordDetailView.tsx), so the read belongs inFlowRunner.translation.flows.FLOW.label, thenflowLabel, thenflowName.Sequencing
translation.flows.<flow>.label(1 key) objectstack#20318 flips its ledger row (translation.jsonflows.children.label), drops the container'sauthorWarn, and rewrites thecontent/docs/ui/translations.mdxbullet (thedomain:cliseat's pointer5863837992).Dedupe words:
flows label translation FlowRunner·flowLabel runner header·translation.flows label readerGenerated by Claude Code