Skip to content

#27900 follow-up: copy_invitation_link and both enable_two_factor identity actions become human-only (H), and ADR-0011 notes sys_approval_request's 9 actions as unassessed #28368

Open

Description

@objectstack-fleet

domain:server#3 · os-elon-musk · session_016WV4czuTWNgKR22fKv7jia

Filing gate: ③ a maintainer ruling on the open questions left after PR #28270 (#27900). The ruling is recorded on #27900 (project chat, 2026-10-31, 「其他同意」). Filed by domain:server seat 3. ⛔ Not a claim. No grade: triage sets the lane and grade.

Ruled

  1. sys_invitation.copy_invitation_link gets an ai block, tier H (human-only). PR feat(platform-objects): the identity actions an agent may reach declare it — additive acts exposed, destructive lifecycle acts behind confirmation, credential and ownership acts human-only #28270 declared 58 of the 59 identity actions and left this one out.
  2. Both enable_two_factor actions move from E to H. Each takes the user's password and returns a sign-in factor.
  3. sys_approval_request's 9 actions get no card now. Add one note line to ADR-0011: unassessed, human-only until assessed.

Totals after the change: H23 / C17 / E19 = 36 ai blocks.

Notes

Refs #27900, #28270.

Activity

  1. added
    domain:serverDomain lane — seat card indexed by label:pm:seat
    area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guards
    priority:p1High: required for production / M2
    on Oct 31, 2026
  2. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: 真挡得住的权限 | none | P②

    Triage: p1 · security · domain:server · area:access · pm:queue · 2026-10-31T07:54Z

    ⛔ Not a claim.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#4 · os-zhuang · session_01QUs3BtyH9zgxKzYrJiH18J

    Claim: PM loop round 1
    Session: session_01QUs3BtyH9zgxKzYrJiH18J
    Account: os-zhuang
    Branch: claude/project-thread-nsguxo (the card thread's platform-assigned push branch, the measured platform exception to the protocol branch shape)
    Worktree: objectstack-issue-28368
    Domain: domain:server
    Seat: domain:server#4
    File surface: packages/platform-objects/src/identity/**, docs/adr/0011-actions-as-ai-tools.md (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: claude-fable-5-1 per dispatch-gates --tier (MANDATORY path line: docs/adr/** ⇢ 'docs/adr/**', oneLineExit false); the card thread runs on the project default because the coordinator cannot set the tier — recorded as a deviation, compensated by a CONTRACT_REVIEW_TIER review before ACCEPT, effort: xhigh (p1, security, ADR; thread runs at the project default high — same deviation)
    Clause-②: no
    Metadata-protocol: narrowed
    Responsibility: n/a — not a defect card
    Thread-read: 6540854685
    Premise: holds (the card's three items are a maintainer ruling recorded on #27900 today; #28270 merged as f3d284519, the last touch on both paths, and nothing after it on origin/main a878ff6c2)
    Serial constraints cleared: no in-flight claim names packages/platform-objects/src/identity/** or ADR-0011; none

    Taken at 2026-10-31T08:31Z: p1 security, the lane's first unclaimed dispatchable card by the full order. E→H and a new H block narrow what an agent can reach (Clause-②: no); the narrowing owes one contract-review-tier review before the queue. ADR-0011 makes this Tier H: the maintainer's approval is owed before landing.

  4. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#4 · os-zhuang · session_01QUs3BtyH9zgxKzYrJiH18J

    Claim amendment to 6541181717 · 2026-10-31T08:53Z · one line corrected

    Metadata-protocol: none

  5. objectstack-fleet commented on Oct 31, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:server#4 · os-zhuang · session_01QUs3BrhuPB4AGHyXk3rvfh
    os-dev-report

    {
      "issue": 28368,
      "status": "done",
      "branch": "claude/project-thread-nsguxo",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/28386",
      "head": "cbd23194",
      "session": "session_01QUs3BrhuPB4AGHyXk3rvfh",
      "premise_still_valid": true,
      "summary": "Both enable_two_factor actions drop their ai block (E to H); copy_invitation_link is assessed H and keeps no ai block (card item 1 read as H = no ai block, per ruling 6540309323, the ADR H row and the ruled total 36 = C17 + E19). ADR-0011 identity addendum: dated amendment note, H 23 / C 17 / E 19, 59 actions / 36 ai blocks, sys_approval_request's 9 actions noted unassessed and human-only, MCP-paragraph counts 38/37 to 36/35. PM assumption falsified: #28270 added no per-tier name-list pin (the maintainer struck the automatic check), so no pin moved; grep found no test or doc pinning either action as exposed.",
      "tests": "head cbd23194: pnpm --filter @objectstack/platform-objects test 104 files 1474/1474; typecheck exit 0; pnpm build 116/116 exit 0 (os-verify-lock VERDICT command-exit 0).",
      "gates": "dispatch-gates --commands --repo objectstack-ai/objectstack: 61 derived; all 61 run on head cbd23194, 60 exit 0, 1 exit 1: check-empty-changeset.mjs --base origin/main (deliberate correction of the unreleased .changeset/27900-identity-actions-ai-exposure.md, red by design, confirmation owed at landing). dispatch-gates --ran with exit codes: 61 run, 0 NOT-MEASURED (derived), exit 0. pnpm lint exit 0. CI check-runs: pending at report time.",
      "line_budget": "6 files, +40 / -28 = 68 changed lines, under the 3000 human-merge threshold",
      "files_changed": [
        ".changeset/27900-identity-actions-ai-exposure.md",
        ".changeset/28368-identity-two-factor-invite-link-human-only.md",
        "docs/adr/0011-actions-as-ai-tools.md",
        "packages/platform-objects/src/identity/sys-invitation.object.ts",
        "packages/platform-objects/src/identity/sys-two-factor.object.ts",
        "packages/platform-objects/src/identity/sys-user.object.ts"
      ],
      "deviations": [
        "model and effort: the card thread ran on the project default, not claude-fable-5-1 / xhigh (recorded in the claim's Container and model line)",
        "file surface: .changeset/27900-identity-actions-ai-exposure.md is outside the claimed surface; corrected so the release does not ship a now-false sentence; seat agreed in thread",
        "Metadata-protocol: claim read narrowed, seat amended to none in thread (author-writable surface unchanged), so patch and no ADR-0087 marker",
        "commit trailers: AGENTS.md model-free pair (Co-authored-by: Claude), not the harness's model-named trailer"
      ],
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "4 — mcp__github__issue_read (get #28368, get_comments #28368 x2, get_comments #27900); no write tool",
      "api_writes": "2 — fleet-write relay pr_create (POST /repos/objectstack-ai/objectstack/dispatches, run 41188603839, PR #28386, body read back identical); this comment via post-stamped",
      "open_questions": [],
      "out_of_scope_findings": []
    }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guardsdomain:serverDomain lane — seat card indexed by label:pm:seatpm:dispatchedpriority:p1High: required for production / M2security

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions