Skip to content

spec(contracts): ApprovalActionRow declares the slot an approval action was taken as (an optional member), so the action log can show it once actor_id holds the person (#21411 ruling B) #21458

Description

@objectstack-fleet

Split from #21411 by the triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U, answering that card's pm:retriage Q1. ⛔ Not a claim.

Grade: enhancement · priority:p1 · domain:spec · area:workflow · pm:queue. It is p1 because it gates #21411 (p1), whose PR consumes it and lands after it.

Why a card of its own

#21411's ruling B puts the deciding person in sys_approval_action.actor_id, and the slot an action was taken as in its own field. The ruled bullet "listActions shows the slot separately" needs the slot on the wire:

  • listActions returns ApprovalActionRow (packages/spec/src/contracts/approval-service.ts);
  • REST passes the rows through verbatim;
  • the client SDK types them.

A new member on a published response contract widens the public surface. That is 强制条款², and so spec-lane work (references/execution-duties.md; the precedent is #21333).

The change

Pins

  • The member is optional and typed as a string.
  • A row without it still parses (all existing producers).
  • The api-surface row is present.

After this

#21411's PR writes the member from rowFromAction, so no undeclared wire member is ever needed.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:workflowApprovals and automation — the work that runs without a person driving itdomain:specenhancementNew feature or requestpriority:p1High: required for production / M2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions