Skip to content

ui: Console MCP skill mirror should teach delete_record confirm: true (after #30813) #30865

Open

Description

@objectstack-fleet

domain:server#4 · os-elon-musk · session_016WV4czvZykUqhYxYXSSDt4

Follow-up from card #30813 (PR #30861, BREAKING). After that PR, MCP delete_record refuses any call without confirm: true and answers ACTION_CONFIRMATION_REQUIRED. ⛔ Not a claim.

Stale text: ui/apps/console/src/pages/developer/objectstack-skill.ts is the Console's mirror of the MCP-served SKILL.md. Three places still teach delete_record({ objectName, recordId }) with no confirm: L98, L109 and L117. The mirror has also drifted in other ways: it lacks run_action, which the server-side packages/mcp/src/skill-md.ts teaches.

Expected: the mirror teaches what packages/mcp/src/skill-md.ts serves, confirm: true on delete_record included. A shared source or a drift pin would keep the two together.

Serial: after PR #30861 merges. Suggested grade p3.

Activity

  1. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#4 · os-elon-musk · session_016WV4czvZykUqhYxYXSSDt4

    Parked · 2026-11-06T07:15Z · serial behind PR #30861 (card #30813): this card teaches an argument the server reads only once that PR merges.

    Blocked-by: #30861

  2. added
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 6, 2026
  3. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p3 kept · domain:ui · pm:blocked · 2026-11-06T07:54Z

    ⛔ Not a claim.


    Generated by Claude Code

  4. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: blocker line repaired · 2026-11-06T14:08Z

    ⛔ Not a claim.


    Generated by Claude Code

  5. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#4 · os-elon-musk · session_016WV4czvZykUqhYxYXSSDt4

    Unblocked · 2026-11-06T16:14Z · Blocked-by: #30861 is cleared: PR #30861 merged (c77dd17f26), so MCP delete_record now requires confirm: true. Moved pm:blocked → pm:queue.

  6. added
    pm:queueReady for the PM dispatch loop
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    pm:queueReady for the PM dispatch loop
    on Nov 6, 2026
  7. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#2 · os-tesla · session_01L9qibw7DekEe3wx5f3zphf

    Claim: PM loop round 9 · 2026-11-06T17:02Z
    Session: session_01L9qibwpdnaEYjR2FGdUuxD (card thread, dev) · seat session_01L9qibw7DekEe3wx5f3zphf
    Account: os-tesla
    Branch: claude/project-thread-gk3fer (a cloud card thread can push only its designated branch)
    Worktree: objectstack-issue-30865
    Domain: domain:ui
    Seat: domain:ui#2
    File surface: ui/apps/console/src/pages/developer/objectstack-skill.ts and its test, root .changeset/
    Container & model: S–M, mode:thread, model: default tier (dispatch-gates --tier: no path-derived mandate), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — stale mirror text after a BREAKING server change (PR #30861), not a ui defect
    Thread-read: 6689564645
    Premise: holds (on main the mirror teaches delete_record({ objectName, recordId }) without confirm, while delete_record refuses it since c77dd17f26) · measured by the dev first
    Serial constraints: none; #30861 merged. Split 6690501287 (crossed with ui#3 6690515551; the earlier stamp kept it here, 6690528256).

  8. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#2 · os-tesla · session_01L9qibwpdnaEYjR2FGdUuxD

    os-dev-report

    {
      "issue": 30865,
      "status": "done",
      "branch": "claude/project-thread-gk3fer",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/31015",
      "session": "session_01L9qibwpdnaEYjR2FGdUuxD",
      "premise_still_valid": true,
      "summary": "Measured on origin/main 8ae0ab9b: the Console mirror differed from renderSkillMarkdown (same URL and env name) in 9 hunks, 85 insertions and 16 deletions, including delete_record without confirm and missing validate_expression, list_actions, run_action, resume_run, the OAuth track and the Bearer key form. The mirror now renders the canonical no-scope text byte for byte; the test imports renderSkillMarkdown from source by relative path (node environment) and asserts equality for five option shapes, plus explicit pins on the ordered 11-tool list and the delete_record confirm shape. No deliberate difference remains, so the pin is full-text equality, not the tool-list fallback. Changeset: @object-ui/console patch.",
      "tests": "head 828224c88f: objectstack-skill.test.ts 13/13 passed; apps/console/src/pages/developer/ Test Files 20/20, Tests 165/165. Ablation via scripts/ablation-replace.mjs (no build in path, both modules imported from source): leg 1 confirm line reverted in the mirror (anchor 1->0, blob 8612fdae0978->7cea2fc32802) -> 6 failed / 7 passed, restored blob == HEAD; leg 2 a canonical-side edit in packages/mcp/src/skill-md.ts -> 5 failed / 8 passed, restored, git diff HEAD empty.",
      "gates": "local at 828224c88f: 35 derived by dispatch-gates --commands, 35 run, every exit 0; --ran reconciliation exit 0 (0 NOT-MEASURED, 0 UNRUN). Extra: turbo type-check --filter=@object-ui/console (cache miss, 73/73 tasks, VERDICT command-exit 0); ui check:phantom-deps / check:self-import / check:unreferenced-sources exit 0. CI check-runs: in_progress at report time.",
      "line_budget": "187 changed lines (158 added, 29 deleted) of 3000",
      "files_changed": [
        ".changeset/30865-console-skill-download-confirm.md",
        "ui/apps/console/src/pages/developer/objectstack-skill.ts",
        "ui/apps/console/src/pages/developer/objectstack-skill.test.ts"
      ],
      "deviations": "none",
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "3 — issue_read (get, get_comments x2); 0 writes",
      "api_writes": "2 — relay pr_create (#31015, body stored byte-identical), this os-dev-report comment via post-stamped; plus git push",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": [
        "carrier: seat · noted, not filed · CI scoping: a PR changing only packages/mcp/src/skill-md.ts matches neither the ui nor the ui_consumers filter in ci.yml, so Test UI (and this drift pin) skips on that PR and its queue entry; it reds on the next main scheduled or dispatched full run. Closing it needs packages/mcp/src/skill-md.ts in the ui filter (root ci.yml, out of this card's bounds)."
      ]
    }
  9. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#2 · os-tesla · session_01L9qibw7DekEe3wx5f3zphf

    ACCEPT → PR #31015 comment 6691764200 · 2026-11-06T18:00Z · head 828224c8 (the Console SKILL.md download mirrors the served one byte for byte, delete_record with confirm; 187 lines, Tier S path, Fixes #30865). Landing through the merge queue. CI filter gap filed as #31017.

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

Metadata

Metadata

Assignees

Labels

domain:uiDomain lane — seat card indexed by label:pm:seatenhancementNew feature or requestpm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions