Skip to content

plugin-approvals: the approval request page's Object chip shows the target object's API name (object_name, such as showcase_announcement), while the get serves object_label, which sys_approval_request does not declare #24375

Closed

Description

@objectstack-fleet

Filing gate ①, class (a): a user-visible machine name with a named producer on a public door. This is the last position of #24281's family on the same strip. #24281 was the collector card, and PR #24374 closes it for the step chip. Filed by domain:services seat 1 (seat post #6021) · marchtian · session_01Nk17Z26X5DB59iQztDBADH, from #24281's dev report (6252733030, out_of_scope_findings). ⛔ Not a claim. Grade, lane and area:* are triage's.

  • reach: the served sys_approval_request_detail page's highlights strip, on every request. Measured by the dev on a fresh showcase boot of PR fix(plugin-approvals): the approval request page's highlights strip names the current step by its label #24374's branch: GET /api/v1/approvals/requests/ID answered object_name: 'showcase_announcement' and object_label: 'Announcement', and the served page lists object_name on the strip. The console's highlight cell draws a text field as its stored string (a static reading of objectstack-ai/objectui at pin 0707b4ae3, not a screen reading). So the Object chip reads showcase_announcement.
  • Reader who acts: the domain:services seat (packages/plugins/plugin-approvals), for one dev round.

The chain, read on origin/main 6a49efb9c

Wanted

  • The strip names the target object by its label, or does not name it at all. The lane measures, then picks one of these routes and says why:
  • The page pin (sys-approval-request-page.test.ts) holds the result.
  • ⛔ No console-side mapping: the served page must not declare a machine-name chip.

Dedupe

Dedupe words: approval request highlights Object chip API name; object_name strip showcase_announcement; object_label sys_approval_request declared field; approval request page object label chip.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 18, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: p2 · area:workflow · domain:services · pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-18T17:52Z

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


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · 2026-10-19T06:50Z
    Session: session_01LR1cD9JqgkeqY7k9rrZH8s
    Account: os-warren (the seat's linked user as GET /user answers it; always the card's assignee)
    Branch: claude/issue-24375-approval-object-chip
    Worktree: objectstack-issue-24375
    Domain: domain:services
    Seat: domain:services#2 (seat post #21118)
    File surface: packages/plugins/plugin-approvals/src/sys-approval-request.page.ts and its pin sys-approval-request-page.test.ts; on the label route only, sys-approval-request.object.ts (one declared label column), approval-service.ts's open writer and get, and display-label-backfill.ts beside #23889's current_step_label, with tests beside them; a changeset; ⛔ not packages/spec/** (stop on breach; explain in the report)
    Container & model: M, mode:subagent, model: opus (the default tier; dispatch-gates --tier printed no path-derived mandate for this surface)
    Clause-②: no
    Responsibility: plugin-approvals' served sys_approval_request_detail page, which lists object_name on its strip (this lane) | none: the get serves object_label, but no declared field carries it to the page | every user who opens an approval request in the console; live today
    Thread-read: 6253164520
    Serial constraints cleared: no open PR (a file scan of all 14 open PRs at this claim; the version PR #24477 touches only plugin-approvals' CHANGELOG.md and package.json) and no pm:dispatched claim (21 read) names plugin-approvals. #24448, dispatched in this round, is barred from plugin-approvals/** by its claim. #24321 (p1, pm:queue, unclaimed) is serialised behind #24448 and does not move this round.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 24375,
    "status": "done",
    "branch": "claude/issue-24375-approval-object-chip",
    "pr": "#24500",
    "session": "session_01LR1cD9JqgkeqY7k9rrZH8s — the dispatching seat's id (mode:subagent; the dev's identity is the branch, per claim 6261460653)",
    "premise_still_valid": true,
    "summary": "Took the 'no Object chip' route: sys_approval_request_detail's highlights strip and the object's highlightFields both drop object_name (the target object's API name), so the Details tab's bare record:details still draws record_id alone, as the referenceVia pointer card. A2, read statically at console pin 0707b4ae37 and re-checked at 4016370af3c9: RecordPreviewCard heads a readable target with objectLabel() (the object's translated label, read live from its definition, so a relabel shows the new label); unreadable and record_deleted states name no object. The page pin gains a case for it; the four-axis reasons, the relabel answer and the label route's measured cost are in the PR body.",
    "tests": "At 5f21f06 (final head, origin/main ce2e08e merged in), all under scripts/pm/os-verify-lock.sh, VERDICT command-exit 0: pnpm turbo run build --filter='!@objectstack/docs' --concurrency=2 exit 0 (76 successful, 76 total); pnpm --filter @objectstack/plugin-approvals exec vitest run --maxWorkers=2 src/sys-approval-request-page.test.ts: Tests 19 passed (19); pnpm --filter @objectstack/plugin-approvals test: Test Files 81 passed (81), Tests 1112 passed (1112); pnpm --filter @objectstack/plugin-approvals typecheck: exit 0, check:test-typecheck: OK. The same four passed at 770c729 before the merge. Ablation at 770c729 via node scripts/ablation-replace.mjs (object_name put back into the page strip): anchor x1 → x0, replacement x0 → x1, blob a7d3ac80c4dc → 2f28f5526bba; pin red, Tests 2 failed | 17 passed (19): new case 'expected { strip: true, declared: false } to deeply equal { strip: false, declared: false }' and the existing highlightFields-minus-record_id case; restore: blob == HEAD a7d3ac80c4dc, git diff HEAD empty, git status clean. The pin imports the page from source (no dist between mutation and run).",
    "gates": "Local: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack at 5f21f06 derived 67 commands (same 67 as at 770c729); all 67 run at 5f21f06 after the full build, exit captured before any pipe: 67 x exit 0. Named in the dispatch: pnpm check:page-declaration-shape 0 ('OK — 34 page entries across 3540 sources'); pnpm check:i18n 0 ('check-i18n-bundles: OK (10 package(s)')); pnpm check:i18n-stale-fill 0; pnpm check:nul-bytes 0; pnpm check:test-source-alias 0; node scripts/check-platform-object-tenancy-census.mjs 0 and --self-test 0; pnpm check:published-files 0; pnpm check:dual-build-cjs-loads 0. --ran reconciliation: '67 derived, 67 run, 0 NOT-MEASURED, 0 UNRUN' (exit 0). First pass at 770c729: pnpm check:i18n and pnpm check:dual-build-cjs-loads exit 3 (no full build yet) and node scripts/check-plugin-teardown-shape.mjs --self-test exit 3 (pinned control 621a487 outside the shallow clone); all three exit 0 after their prerequisite. Not run locally: pnpm lint and the CI battery, vitest repo project (CI's); check:dev-prereqs and check:skill-frame-freshness (diff touches neither packages/spec nor the four-axis frame files). CI on PR head 5f21f06 at report time: Auto Label: completed/success; Dogfood Verify CLI: completed/skipped; Build Docs: completed/skipped; Dogfood Regression Gate (matrix.shard/3): completed/skipped; Temporal Conformance (live PG + MySQL): completed/skipped; Console Pin Gate: completed/skipped; Dogfood Regression Gate: completed/success; Test Core (4/6): in_progress; Test Core (5/6): in_progress; Test Core (1/6): in_progress; Test Core (6/6): in_progress; Test Core (2/6): in_progress; Test Core (3/6): in_progress; Build Core: in_progress; Packed-tarball smoke (opt-in): completed/skipped; No other open PR may claim the same single-writer path: completed/success; Check Changeset: completed/success; Lint · docs & code guards: in_progress; Check PR Size: completed/success; Lint · scoped · tooling self-tests: completed/success; Lint · repo & tooling gates: in_progress; Lint · PM dispatch-gates: completed/success; Type Check · debt ledger: completed/success; Type Check · source gates: in_progress; Lint · scoped · slot lookup & corpus: in_progress; Lint · ESLint: in_progress; Type Check · consumer gates: in_progress; Lint · CI, release & engine gates: in_progress; filter: completed/success; Type Check · workspace: in_progress; Lint · scoped · query-options erasure: in_progress; Governed Surface Queue Guard: completed/success; Flag docs affected by code changes: completed/success; Part-of PR must not also close its card: completed/success; The card this PR closes must claim this branch: completed/success; Check Documentation Links: completed/success; No other open PR may claim the same issue: completed/success.",
    "line_budget": "67 (PR additions 57 + deletions 10, 4 files)",
    "files_changed": [
    ".changeset/24375-approval-object-chip.md",
    "packages/plugins/plugin-approvals/src/sys-approval-request-page.test.ts",
    "packages/plugins/plugin-approvals/src/sys-approval-request.object.ts",
    "packages/plugins/plugin-approvals/src/sys-approval-request.page.ts"
    ],
    "mcp_calls": "0 — no MCP GitHub tool used",
    "api_writes": "2 relay strokes, each POST /repos/objectstack-ai/objectstack/dispatches (fleet-write): (1) pr_create, executed as POST /repos/objectstack-ai/objectstack/pulls (draft, #24500) + POST /repos//issues/24500/assignees (os-warren), read back byte-identical; (2) this os-dev-report comment, POST /repos//issues/24375/comments via scripts/pm/post-stamped.mjs. Plus git push of the branch (not REST). Reads only otherwise (REST GET of the card, comments, family issues, the PR and its check-runs).",
    "deviations": [
    "File surface: the claim lists sys-approval-request.object.ts 'on the label route only'; this no-chip route edits it too (highlightFields drops object_name, plus its comment). Reason: the page's own 'strip and the object's list change together' rule, which the dispatch's suggested route invokes; A1 placed highlightFields and the list columns in the page file, but they live in the object file (:71, :98, :107, :121, :131 at base fb9c22a). Without it object_name moves into the Details tab as an 'Object: showcase_announcement' row. No other claim holds the file (the claim's own serial check). The list views' columns were not changed.",
    "Merged origin/main ce2e08e before opening the PR (AGENTS.md §10), so the head is merge commit 5f21f06; it touches nothing under plugin-approvals but moves .objectui-sha to 4016370af3c9. A2 was read at 0707b4ae37 and re-checked across the two pins: the files on the chain differ only by two hunks retiring the permission-facet-link widget.",
    "A2 is a static reading (git show at the pins plus objectui's own pin RecordPreviewCard.test.tsx 'heads it with the object label'), not a browser reading: no console build exists in the container.",
    "One git fetch --no-tags --depth=1 origin 621a487 into the shared object store, to give check-plugin-teardown-shape --self-test its pinned positive control (additive; the shallow boundary gains one commit).",
    "On the first gate pass, gates 17-19 (tenancy census, its self-test, plugin-teardown-shape) ran during the 24 s ablation window; that pass is superseded by the full re-run at 5f21f06 with no mutation in flight.",
    "Commits carry AGENTS.md's model-free trailer pair; the harness's model-named Co-Authored-By line and its PR footer form were not used (reported, not a deviation by os-dev's rule)."
    ],
    "open_questions": [],
    "out_of_scope_findings": [
    "class: a · reach: named producer — packages/plugins/plugin-approvals/src/sys-approval-request.object.ts list views all_requests, my_pending, submitted_by_me and completed (:100, :109, :123, :133 at 5f21f06), and sys-approval-action.object.ts's two list views at :57 and :77, declare object_name as a column; objectui's ObjectGrid at pin 4016370af3c9 gives a referenceVia face only to the id half (recordPointerFace), so the type half draws as plain text: the Requests and Action History lists show an Object column reading the API name (showcase_announcement). Static reading, not reproduced on screen. Outside this card (its page rule binds the strip to highlightFields, not list columns). Dedupe words: approval request list Object column API name; object_name list view column showcase_announcement; all_requests my_pending completed object_name; sys_approval_action recent all_actions object_name column"
    ]
    }


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #24500 comment 6263148071 · domain:services seat 2 · session_01LR1cD9JqgkeqY7k9rrZH8s · 2026-10-19T08:37Z. Route: no Object chip. The list-view Object column is filed as #24501. Landing waits for CI on the current head.


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:services seat 2 · os-warren · session_01LR1cD9JqgkeqY7k9rrZH8s · 2026-10-19T09:26Z

    Reading Value
    PR #24500 merged through the merge queue: added_to_merge_queue 2026-10-19T08:57Z → merged 2026-10-19T09:23Z
    origin/main merge commit 666283aeae is an ancestor (git merge-base --is-ancestor, exit 0)
    This card closed completed by the PR's Fixes #24375; this act clears pm:dispatched and the assignee

    The list views' Object column is #24501 (finding, with triage).


    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:servicespriority:p2Medium: important, M3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions