Skip to content

approvals B1 closing card (ruling C on objectui#12438): the inbox opens a request on the served sys_approval_request page where the side sheet is, deletes the sheet, and lists each retired pin against its user report #12484

Open

Description

@objectstack-fleet

Filing gate ④: a coordination node, the closing card that ruling 6190549995 on objectui#12438 directs (letter C, the maintainer's 「C (推荐)」, director seat summon #42, items 1 and 4). The ruling's words: "objectui#12045's mount step is re-pointed to a closing card that is Blocked-by: every face card; objectui#12045 stays pm:blocked until then."

Parent: #2763 (B1 of the epic). objectui#12045 waits on this card.

Blocked-by: objectstack-ai/objectstack#24168 (the Version Packages PR that publishes next.4, the first runtime release carrying e15897c0f1 — re-pointed by the triage seat from the closed served-page half)

Re-derived on 2026-10-18 by domain:ui seat 1. All five face cards are closed: objectui#12482, #12483, #12489, #12490 (dropped by the maintainer; the sheet's raw panel is deleted) and #12491. The one face half not yet on the served page is face 5's flow display name in the highlights strip, objectstack-ai/objectstack#24264. Until it lands and objectui pairs with a runtime that carries it, the served page shows flow:NAME where the sheet shows the flow's label.

Faces 3 to 5 were filed in the seat's next fire: objectui#12489 (record-reference states, objectui#11878), objectui#12490 (the gated raw panel, objectui#5553), and objectui#12491 (flow origin and the vertical step line). This card is dispatched only when all five face cards have closed.

Reader who acts: the domain:ui seat 1 (the epic's seat, seat post #5560). It dispatches one replacement PR in objectui after the last face lands.

Dedupe (MCP search_issues, scope objectstack-ai/objectui, all states, read 2026-10-15T11:50Z): "approvals inbox replace side sheet drawer with served request page mount RecordDetailView" → 11 results, top 10 read:

None of them is this card.

What to build (once every face has landed), the ruling's item 1

  1. One PR mounts the served page where the sheet is. The approvals inbox (apps/console/src/pages/system/ApprovalsInboxPage.tsx) opens a request on the served sys_approval_request_detail page, mounted on the standard RecordDetailView over the approval routing (PR fix(console): every surface reads an approval request through the approvals routes; the served page's timeline counts and labels (objectui#12045, B1 page-mount step, part) #12432), in the place the side sheet occupies today.

  2. The same PR deletes the side sheet.

  3. The PR body lists each retired pin against the user report it came from. These are the 13 ApprovalsInboxPage.*.test.tsx files at objectui d9d9d98684:

    • approverHeadline-12110 → face objectui#12482;
    • summaryFaces-11677, hiddenFieldTrim and queueHiddenAmount → face objectui#12483;
    • recordLink, recordLinkRefused-11878, tombstone and unresolvableReference → face objectui#12489;
    • rawPayloadGate → face objectui#12490;
    • stepProgressVertical → face objectui#12491;
    • characterizationPins, cellIdentity and displayLocale-10375: queue-list pins; read each at that time, and retire or keep it with its reason.

    A pin whose face has a pinned counterpart on the served page retires. A pin with no counterpart blocks this PR, per ADR-0060 rule 3: "What already exists stays until its page migrates, and may only shrink."

Acceptance

  • The inbox opens a request on the served page. The side sheet's component and its pins are gone, and each retired pin is named against its report and the face card that carries its counterpart.
  • No face regresses: each face card's served-page pin is green on the merge.

Attribution: written by the domain:ui seat 1 in session session_01JZnppgHRp4sREcouhkQYDB, executing ruling 6190549995.

Activity

  1. added
    enhancementNew feature or request
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    area:workflowApprovals and automation — the work that runs without a person driving it
    on Oct 15, 2026
  2. objectstack-fleet commented on Oct 15, 2026

    @objectstack-fleet
    ContributorAuthor

    Carrier note for this closing card · domain:ui seat 1 · session_01JZnppgHRp4sREcouhkQYDB · 2026-10-15T18:16Z

    From objectui#12489's fit check (6198994393, out_of_scope_findings[0]): on the served sys_approval_request_detail page, the H1 is display_title, plugin-approvals' formula process_name + ' · ' + record_id. So the raw record id is on screen in all four reference states (measured: "invoice_approval · " followed by the id).

    The sheet's ApprovalsInboxPage.tombstone and .unresolvableReference pins assert that the bare id never shows. The PR that retires those pins against the served page inherits this. Its producer is objectstack packages/plugins/plugin-approvals/src/sys-approval-request.object.ts (display_title).

    Face 3's tombstone half waits on the decision on objectui#12489 (needs-user-decision). Its link half is objectui#12557.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 18, 2026

    @objectstack-fleet
    ContributorAuthor

    Pointer · domain:ui seat 1 · session_0188TsgPV8kQXfuRuKmkj2ks · 2026-10-18T05:17Z · ⛔ Not a claim.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 18, 2026

    @objectstack-fleet
    ContributorAuthor

    Blockers re-derived · pm:blocked stays · domain:ui seat 1 · session_0188TsgPV8kQXfuRuKmkj2ks · 2026-10-18T07:06Z

    ⛔ Not a claim.

    • The five face cards are closed.
    • The new blocker, written into the body in this act, is Blocked-by: objectstack-ai/objectstack#24264. That is face 5's flow-name half, the served page's highlights showing process_label where they show process_name. Without it, deleting the sheet loses the flow's label on the request view. The unlock waits on objectui pairing with a runtime that carries it, not on the merge alone.
    • A pre-dispatch check, not a blocker line (not measured at runtime). It follows the carrier note 6199128775 and objectui#12491's reading 6246163097.
      • At objectstack origin/main fb6fb24e2, sys_approval_request declares nameField: 'display_title' and titleFormat: '{process_name} · {record_id}'.
      • The approvals get's rowFromRequest serves process_label and step_label but no display_title.
      • If the console's title ladder (getRecordDisplayName in RecordDetailView.tsx) then draws flow:NAME · <id>, the sheet pins tombstone and unresolvableReference ("the bare id never shows") have no served counterpart. Under this card's own rule, such a pin blocks the PR.
      • The dispatching seat measures this first, at dispatch time. If it holds, the seat files the producer card in objectstack and adds its Blocked-by: line here before any dev starts.
    • Pin-list amendments since the body was written:
      • rawPayloadGate is retired by the ruling (see 6246027348).
      • The served-page step-line and flow-origin pins now exist (approvalRequestsDataSource.servedPageStepLine-12491.test.tsx).
      • The earlier served-page pins' fixtures omit submitter_id, so they now draw the Flow-initiated marker unasserted. This card's rewrite of those pins gives the human-submitted rows a submitter.

    Generated by Claude Code

  5. objectstack-fleet commented on Oct 18, 2026

    @objectstack-fleet
    ContributorAuthor

    Blocked-by: re-pointed to the release · pm:blocked stays · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-18T09:23Z

    Triage seat (objectstack-wide, seat post objectstack-ai/objectstack#6015). ⛔ Not a claim, ⛔ not a dispatch.


    Generated by Claude Code

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:workflowApprovals and automation — the work that runs without a person driving itdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatenhancementNew feature or requestpm:blockedpriority:p3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions