Skip to content

skills: objectstack-api still teaches that DELETE is unrecoverable and that there is no recycle bin (#30237, ADR-0148) #30847

Open

Description

@objectstack-fleet

domain:server#1 · os-elon-musk · session_016WV4cytLmJxfAmgPVjUbbW

Filing gate: the Skills-docs: follow-up owed line that every PR of #30237 carries (seat plan, PR 1 = #30780, merged as 25e1c1ad8b). ⛔ Not a claim.

Business reason. Since PR #30780, a by-id delete keeps the deleted rows in the recycle bin (sys_recycle_bin, ADR-0148). Later PRs of #30237 add purge and empty, restore, the allowRestoreOwnDeleted / manageRecycleBin permissions, and the REST doors. skills/objectstack-api/SKILL.md still teaches the opposite in two places:

  • About line 268: "restore / purge never derive — the trash surface is retired."
  • About line 417, the pitfall "Assuming DELETE is recoverable": "ObjectStack DELETE is a hard delete — there is no recycle bin". It points agents at trackHistory or a lifecycle archive instead.

An agent that follows the skill will build its own soft-delete, or tell a user that a deleted record is gone when an administrator can restore it.

Wanted. Rewrite both passages from main as it stands when this card is picked up:

  • what a delete keeps;
  • who may restore or purge, and with which permission;
  • which door to call;
  • what is forward-only (rows deleted before the bin existed are not in it).

Do not teach a door that has not landed. Keep each passage within its current length budget. It owes '@objectstack/skills': patch.

Serial: after #30237's restore and REST-door PRs (its PRs 3 and 5) land, so the skill can name a real door. Until then the card waits; pick it up early only to correct the "there is no recycle bin" sentence.

Reader: domain:skills (skills/**). Suggested-grade: p2 · a skill that contradicts shipped behaviour.

Activity

  1. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p2 · domain:skills · 2026-11-06T06:53Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. added
    documentationImprovements or additions to documentation
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    pm:queueReady for the PM dispatch loop
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 6, 2026
  3. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#3 · huangyiirene · session_01J8VVAj7CvjkGXvgXzd6RZ7

    Claim: PM loop round 1 · 2026-11-06T14:58Z · partial (the correction the triage audit asks for now)
    Session: session_01J8VVAj7CvjkGXvgXzd6RZ7
    Account: huangyiirene
    Branch: claude/project-thread-zyyxri (the card thread's designated branch; dev session session_01J8VVAnsTJVz6nCb7n8NUJs)
    Worktree: objectstack-issue-30847
    Domain: domain:skills
    Seat: domain:skills#3
    File surface: skills/objectstack-api/SKILL.md, only L47 ("hard delete"), the restore / purge sentence near L268 and the pitfall near L417 ("there is no recycle bin"); .changeset/*.md (stop on breach)
    Container & model: S, mode:thread, model Opus, effort: medium. dispatch-gates --tier reads MANDATORY contract-review tier (clause ①, skills/**); waived by the maintainer's standing order in this project (2026-11-03) and said so in the PR body; this seat runs the contract review.
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — teaching-text defect: the skill contradicts PR #30780 (a by-id delete keeps its rows in sys_recycle_bin, ADR-0148); objectstack carries the fix
    Thread-read: 6679098621
    Premise: holds on main 256a4b725: SKILL.md L47 says "hard delete", ≈L268 says the trash surface is retired, ≈L417 says "there is no recycle bin".
    Serial constraints cleared: PR #30844 (seat 2) edits the same SKILL.md (the ?names= filter) and is in the merge queue; seat 2's Notify: serial 6687759447 read. The thread merges main after #30844 lands, before opening its PR.

    Scope: the PR says Refs #30847, never Fixes. The restore / purge door teaching stays owed until #30237's restore and REST-door PRs land; at merge this seat releases the card with Blocked-by: #30237. Changeset owed: '@objectstack/skills': patch, never skip-changeset. Tier H.

  4. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#3 · huangyiirene · session_01J8VVAj7CvjkGXvgXzd6RZ7

    Claim widened (contract review FAIL on PR #30994, must-fix M1) · 2026-11-06T16:14Z

    File surface, added (stop on breach): skills/objectstack-api/evals/endpoints-auth-routes.json, case id 5 only (the "undelete invoices" prompt): its expected_output and its must_contain tokens trackHistory and lifecycle, which still grade the old "DELETE is a hard delete" teaching. 'restore' stays in must_not_contain. The eval ships in @objectstack/skills, so the corrected SKILL.md must not ship beside it. Same card, same patch changeset.

  5. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#3 · huangyiirene · session_01J8VVAj7CvjkGXvgXzd6RZ7

    ACCEPT → PR #30994 comment 6690169452

    Tier H: awaiting an approval from os-zhuang or hotlong (requested). This PR is the immediate-correction half (Refs); at merge this card returns to the queue with Blocked-by: #30237 for the restore-door teaching.

  6. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#3 · huangyiirene · session_01J8VVAj7CvjkGXvgXzd6RZ7

    Released · 2026-11-06T18:03Z · partial landed: PR #30994 (Refs #30847) merged. The skill now teaches that a by-id delete keeps business-object rows in the recycle bin (sys_recycle_bin) and that nothing lists or restores them over the API yet. Still owed here: the restore / purge door, permission and REST-route teaching, once #30237's restore and REST-door PRs land. Moved pm:dispatched → pm:blocked, assignee cleared.

    Blocked-by: #30237

  7. added
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    and removed
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    on Nov 6, 2026
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

    documentationImprovements or additions to documentationdomain:skillsDomain lane — seat card indexed by label:pm:seatpm:blockedBlocked by another issue/PR — body carries Blocked-by: #Npriority:p2Medium: important, M3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions