Skip to content

platform-objects: the four identity objects declare no enable.feeds, so Setup's organization, team, business-unit and user records draw a Discussion feed; declare enable.feeds: false (item 1 of objectui#12614) #23838

Closed

Description

@objectstack-fleet

Filing gate ③: the objectstack half of objectstack-ai/objectui#12614 (filed by the epic PM from the 2026-10-16 Setup review, under the maintainer's 「全部立卡」). It was split by triage at that card's pm:retriage (domain:ui seat 3, 6210522260). The card's own constraint reads: "If the posture must come from objectstack-ai/objectstack's object definitions (enable.feeds), the card reports it and files the flag change there." ⛔ Not a claim.

Reader who acts: the domain:engine seat (packages/platform-objects).

Measured (seat 3's reading, re-read by triage on origin/main)

  • packages/platform-objects/src/identity/sys-organization.object.ts, sys-team.object.ts, sys-business-unit.object.ts and sys-user.object.ts each carry an enable: block with no feeds key. So they take the default, and the record page draws "Discussion (0)" with a comment composer.
    • Control: the same git grep "feeds\s*:" matches feeds: false in packages/plugins/plugin-audit/src/objects/sys-comment-reaction.object.ts.
  • The console already obeys the flag: objectui RecordDetailView.tsx reads objectDef?.enable?.feeds !== false ([spec/cli] 对象 enable.files/trackHistory/activities/feeds 为 dead property:schema 接受、liveness 仅告警不拦 #2707).
  • The server obeys it too: packages/plugins/plugin-audit/src/audit-writers.ts:2226 refuses a comment create on an object whose enable.feeds is false. Its docblock at :2214 keeps an existing row readable after the flag flips off.

The change

  • Declare enable.feeds: false on the four objects.
  • Pins:
    • a comment create on each of the four is refused with the existing refusal;
    • a pre-existing comment row on one stays readable (the :2214 rule);
    • CONTROL: a business object without the flag still accepts comments.

Grade

p1 + target:v18. Because the server enforces the flag, this narrows the comment door for four platform objects, and 「REST/数据门收窄亦算」 puts it in the protocol-first class.

Dedupe

The parent is objectstack-ai/objectui#12614. The four files were read in this act; no open card names enable.feeds on the identity objects.

Activity

  1. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · 2026-10-16T08:48Z
    Session: session_01TQLy3Yq6vF4SDpTXdr3Uwi
    Account: os-tesla (the seat's linked user as GET /user answers it; always the card's assignee)
    Branch: claude/issue-23838-identity-feeds-off
    Worktree: objectstack-issue-23838
    Domain: domain:engine
    Seat: domain:engine#2 (seat post #20966)
    File surface: the enable: blocks of packages/platform-objects/src/identity/sys-organization.object.ts, sys-team.object.ts, sys-business-unit.object.ts and sys-user.object.ts; the pins in a test file under packages/platform-objects or, if the refusal can only be exercised there, under packages/plugins/plugin-audit (that file would be declared to domain:services before the PR leaves draft); one .changeset/23838-identity-feeds-off.md. Stop on a breach and explain it in the report.
    Container & model: M, mode:subagent, model: default (dispatch-gates --tier: no path-derived mandate); the narrowing owes one review at CONTRACT_REVIEW_TIER before the queue (dispatch-gates --tier: "A card that only NARROWS one is Clause-②: no … and owes one contract-review-tier review before the queue")
    Clause-②: no (narrowing: the comment create door refuses on four platform objects that accept it today)
    Responsibility: n/a — not a defect card
    Thread-read: none
    Serial constraints cleared: PR #23845 (#23802, in the merge queue since this seat's ACCEPT 6211690151) edits description strings in sys-user, sys-organization and sys-business-unit. This card edits only their enable: blocks, a different region, and the dev merges origin/main before opening the PR. No other open PR or in-flight claim holds these files (read 2026-10-16T08:48Z). Lane-mates: #23816 holds driver-turso and the cli ceremony.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 23838,
    "status": "done",
    "branch": "claude/issue-23838-identity-feeds-off",
    "pr": "#23869",
    "session": "session_01TQLy3Yq6vF4SDpTXdr3Uwi — subagent run, the parent PM's harness-stamped id (Claude-Session trailer on commits 94af6a3 and 11d48ee)",
    "premise_still_valid": true,
    "summary": "The four Setup identity objects (sys_organization, sys_team, sys_business_unit, sys_user) now declare enable.feeds: false in their enable: blocks (+3 lines each: feeds: false and a two-line reason comment), so the console's existing feedsEnabled read drops the Discussion feed and plugin-audit's existing enforceFeedsCapability refuses a comment create on their records with 403 FEEDS_DISABLED; no new error code, no consumer change. Pins live in ONE file under plugin-audit (packages/plugins/plugin-audit/src/identity-objects-feeds-off.test.ts, domain:services, to be declared by the PM) because platform-objects has no runtime dependency on objectql or plugin-audit (plugin-audit depends on platform-objects; the reverse is a cycle): real ObjectQL + the REAL four definitions (aliased to src) + real installAuditWriters; one refusal case per object (code+status+object, no row lands), the grandfathered-row case on sys_user (gate shown live on the same thread first, then the pre-existing row reads and a body edit saves), and a business-object CONTROL. All four dispatch assumptions held: (1) one enable: block per file, zero feeds keys at base 66d456d; (2) no platform producer writes a sys_comment into these threads (search in producer_search); (3) grandfather rule holds, pinned on sys_user; (4) objectui RecordDetailView.tsx:1754 reads enable?.feeds !== false at objectui 63d00da. Also measured through the public door on a CRM --fresh boot of this branch: POST /api/v1/data/sys_comment with thread sys_user:ID and sys_organization:ID answered 403 FEEDS_DISABLED, crm_account:ID answered 201, and GET /api/v1/meta/object serves enable.feeds false on all four. Merged origin/main a31ff2e once before the PR (it carries #23845, no conflict; delta vs main is exactly the six files). Changeset .changeset/23838-identity-feeds-off.md: @objectstack/platform-objects minor, carries the claim's Clause-② line verbatim and an ADR-0087 not-required (no-migration-prescription) disposition (gate accepted it as BREAKING+bang+clause-②-narrowing). The narrowing still owes the seat's CONTRACT_REVIEW_TIER review before the queue.",
    "tests": "All at final head 4e5399c, through scripts/pm/os-verify-lock.sh (VERDICT command-exit 0 each): pnpm --filter '@objectstack/plugin-audit^...' build (closure, rebuilt after the merge); pnpm --filter @objectstack/platform-objects test -> Test Files 71 passed (71), Tests 1103 passed (1103); pnpm --filter @objectstack/plugin-audit test -> Test Files 52 passed (52), Tests 839 passed (839); pnpm --filter @objectstack/platform-objects --filter @objectstack/plugin-audit typecheck -> exit 0 (plugin-audit check:test-typecheck OK, 0 errors; the new file is in tsconfig.test.json's program, --listFiles count 1). New file alone: 6 passed (6). Ablation (one-time, not kept; fix committed first; every leg via node scripts/ablation-replace.mjs WRAP mode, anchor 1 -> 0, blob changed, restore proven blob == HEAD and git diff HEAD empty; no build/dist leg owed because @objectstack/platform-objects/identity is aliased to src in plugin-audit's vitest.config.ts and the gate mutation is in the package under test): delete 'feeds: false,' in sys-user (df41d5b3c3f3 -> 84847d0be0b7) -> 2 failed / 4 passed (sys_user case + grandfathered-row case); sys-organization (cfcbe12495aa -> 33e67fccd9dd) -> 1 failed / 5 passed (sys_organization case); sys-team (3a0954909643 -> df521d289587) -> 1 failed / 5 passed (sys_team case); sys-business-unit (0db7f124c9d4 -> e5f6d7a3d360) -> 1 failed / 5 passed (sys_business_unit case); CONTROL leg, gate inverted in audit-writers.ts 'feeds === false' -> 'feeds !== true' (f556c52ac945 -> 4a3379a3fc5f) -> 1 failed / 5 passed (CONTROL). Expected direction (turn red) observed on every leg; tree clean after each.",
    "gates": "Local subset at final head 4e5399c: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack -> 65 commands (list identical to the derivation at 11d48ee), each run with exit captured before any pipe: all 65 exit 0 (incl. check:adr-0087-registration --base origin/main, check:changeset-no-major --base origin/main, check:i18n, check:dual-build-cjs-loads, check:engine-double-contract, check:objectql-double-limit, check:where-matcher, check:test-source-alias, check:cross-package-test-inputs, check:nul-bytes, check:type-check-coverage, check:type-check-debt); --ran reconciliation: 'Run reconciliation — 65 derived, 65 run, 0 NOT-MEASURED, 0 UNRUN', exit 0. (The first union run at 11d48ee had check:dual-build-cjs-loads and check:i18n at exit 3 PREREQUISITE NOT MET; the rerun on the final head measured both green.) Artifact-roster gates whose roster sits under a touched directory, run too: node scripts/check-changeset-fixed.mjs, pnpm check:authz-resolver, pnpm check:error-code-casing, pnpm check:filter-alias-parity -> all exit 0. Not local, CI's: 11 declared wide-population families, 5 path-scheduled jobs, the workspace type-check lanes. check:dev-prereqs exit 0 (run before the boot); check:skill-frame-freshness not owed (no spec or frame file touched). PR #23869 check-runs at report time (head 4e5399c, one read, no polling): success — Check Documentation Links, Check PR Size, No other open PR may claim the same issue, Part-of PR must not also close its card, The card this PR closes must claim this branch, filter; skipped — Build Docs, Console Pin Gate, Dogfood Regression Gate (matrix placeholder row), Dogfood Verify CLI, Packed-tarball smoke (opt-in), Temporal Conformance (live PG + MySQL); in_progress — Check Changeset, Flag docs affected by code changes, Governed Surface Queue Guard, Lint · CI, release & engine gates, Lint · ESLint, Lint · PM dispatch-gates, Lint · docs & code guards, Lint · repo & tooling gates, Lint · scoped · query-options erasure, Lint · scoped · slot lookup & corpus, Lint · scoped · tooling self-tests, No other open PR may claim the same single-writer path, Type Check · consumer gates, Type Check · debt ledger, Type Check · source gates, Type Check · workspace; queued — Auto Label, Build Core, Dogfood Regression Gate, Test Core (1/6)..(6/6).",
    "mcp_calls": "0 — no MCP GitHub tool was called",
    "api_writes": "2 fleet-relay strokes (each one POST /repos/objectstack-ai/objectstack/dispatches, executed as objectstack-fleet[bot]): (1) pr_create, run 38886015551 -> POST /repos/objectstack-ai/objectstack/pulls (draft) + POST /repos//issues/23869/assignees (os-tesla); read-back 8486 bytes sent, 8486 stored, identical; (2) this os-dev-report comment -> POST /repos//issues/23838/comments. No label writes (dispatch: none needed). git push x4 to claude/issue-23838-identity-feeds-off (empty-branch probe, 94af6a3, 11d48ee, merge 4e5399c), not REST.",
    "open_questions": [],
    "out_of_scope_findings": [
    "class: a · reach: GET /api/v1/meta/object/sys_comment serves thread_id's description 'Thread identifier — conventionally {object}:{record_id} (e.g. sys_user:abc123)'; a create following it, POST /api/v1/data/sys_comment with thread_id sys_user:USER_ID, answers 403 FEEDS_DISABLED (measured on this branch, CRM --fresh boot, head 4e5399c) · evidence: packages/plugins/plugin-audit/src/objects/sys-comment.object.ts:129 (and the docblock example at :10) plus the four plugin-audit translations/.objects.generated.ts :205; the example became misleading through THIS PR's narrowing (the format it illustrates still holds, so read as not made false); outside the claimed file surface (a plugin-audit object plus i18n bundles, a new verification surface), so not fixed in place and handed to the seat: swap the example for a business object such as account:9001 (already the docblock's second example) and regenerate the bundles · dedupe words: sys_comment thread_id example, sys_user:abc123, thread identifier description, FEEDS_DISABLED help example"
    ],
    "files_changed": [
    ".changeset/23838-identity-feeds-off.md (+23)",
    "packages/platform-objects/src/identity/sys-organization.object.ts (+3, enable: block only)",
    "packages/platform-objects/src/identity/sys-team.object.ts (+3, enable: block only)",
    "packages/platform-objects/src/identity/sys-business-unit.object.ts (+3, enable: block only)",
    "packages/platform-objects/src/identity/sys-user.object.ts (+3, enable: block only)",
    "packages/plugins/plugin-audit/src/identity-objects-feeds-off.test.ts (+244, new; domain:services path for the PM to declare)"
    ],
    "line_budget": "n/a — no skills/** or governed path touched; diff vs main 279 changed lines (+279 / -0), under the 3000 human-merge threshold",
    "producer_search": "At base 66d456d: (a) every quoted sys_comment in non-test code — writers are only plugin-audit's own hooks (feeds gate, comment-access-hooks, the mention hook which writes notifications) and packages/cli/src/utils/comment-reactions-conversion.ts, which inserts sys_comment_reaction rows only; (b) every quoted or templated thread literal naming sys_user:/sys_organization:/sys_team:/sys_business_unit: — hits only in the sys_comment.thread_id description example and its four bundles, one parseCommentThreadId unit test and one driver-test code comment, none a writer; (c) every thread_id assignment and every OBJECT:ID template near comment/feed code in non-test sources — reads and keys only (visibility filter, mention dedup key, cache key); (d) examples/** and seed/fixture paths — no sys_comment rows (dogfood comment fixtures use their own cmt_
    objects); (e) objectui at 63d00da — RecordDetailView creates sys_comment only from the composer behind the same feedsEnabled read. Not searched: the cloud repository (not in this container). No producer found, so no needs_decision.",
    "deviations": [
    "Booted a temporary backend (pnpm --filter @objectstack/example-crm dev -- --fresh -p 38427) for the HTTP-level reading the dispatch did not ask for; stopped by its recorded listener PID 4394, port freed, tempdir gone, tree clean.",
    "Two gate batches outlived the harness's 600 s foreground cap and were moved to the background by the harness; each was waited on in the foreground with tail --pid and its exits read from the recorded list, never from a wake-up.",
    "Commit trailers use the model-free pair AGENTS.md requires (Claude-Session + Co-authored-by: Claude) and the PR body ends with AGENTS.md's session-URL footer, instead of the harness reminder's model-named Co-Authored-By and emoji footer; AGENTS.md wins where they disagree.",
    "Definition conflict, named rather than resolved silently: the definition's must-fix clause for a shipped text this change makes false versus the claim's binding file surface. Read the sys_comment example as made misleading, not false, so it is reported as a finding (out_of_scope_findings) and the surface was not breached.",
    "The four enable: comments cite objectui#12614 item 1 as the PM's route suggested."
    ]
    }


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    File-surface amendment to claim 6211755973 · domain:engine seat 2 · session_01TQLy3Yq6vF4SDpTXdr3Uwi · 2026-10-16T10:20Z. ⛔ Not a new claim; same session, same branch claude/issue-23838-identity-feeds-off.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 23838,
    "status": "done",
    "branch": "claude/issue-23838-identity-feeds-off",
    "pr": "#23869",
    "session": "session_01TQLy3Yq6vF4SDpTXdr3Uwi — subagent run, the parent PM's harness-stamped id (Claude-Session trailer on 94af6a3, 11d48ee, 941eb8a, 01f606f)",
    "premise_still_valid": true,
    "summary": "Patch round per the seat's ruling and the file-surface amendment 6213345119: the sys_comment thread_id example now names a business-object thread, account:9001, everywhere it shipped. packages/plugins/plugin-audit/src/objects/sys-comment.object.ts: the thread_id description '(e.g. sys_user:abc123)' became '(e.g. account:9001)', and the docblock at :10 dropped sys_user:abc123 and kept account:9001. The en bundle was regenerated by node scripts/check-i18n-bundles.mjs --write (only sys_comment.fields.thread_id.help moved, 1 line; every other package's bundles rewrote byte-identical); the zh-CN, ja-JP and es-ES leaves at :205 were hand-edited to swap only the example. That key has no entry in any locale's source-hashes file (legacy-trusted), so no provenance file moves. git grep sys_user:abc123 over the repo now answers 0. Nothing else changed: no change to the feeds gate, the four identity objects, the pins or the changeset (Check Changeset, check:adr-0087-registration and check:changeset-no-major all pass without a new sentence). The plugin-audit text change releases with the existing platform-objects minor: both packages sit in the one 72-package fixed group in .changeset/config.json. Not merged with origin/main this round (no conflict, CI green; dispatch-gates notes the tree is at least 7 commits behind origin/main, with 3 gate-family files changed there: package.json, scripts/pm/check-skill-line-ratchet.mjs, scripts/release-pending-publish.mjs). PR body NOT patched; the sentence for the seat to write is in deviations[0], and the body's first Acceptance-notes bullet (which describes this example as left as it is) is now out of date and should be replaced by it.",
    "tests": "All on head 01f606f. Through scripts/pm/os-verify-lock.sh: pnpm exec turbo run build --concurrency=2 with the check:i18n prerequisite closure (cli + the ten extracted packages): 61 tasks successful, 55 cached, VERDICT command-exit 0; node scripts/check-i18n-bundles.mjs --write: exit 0, only plugin-audit en.objects.generated.ts changed (1 line); pnpm --filter @objectstack/plugin-audit test: Test Files 52 passed (52), Tests 839 passed (839), VERDICT command-exit 0; pnpm --filter @objectstack/plugin-audit typecheck: VERDICT command-exit 0, check:test-typecheck OK 0 errors (the first try got VERDICT queue-timeout exit 99, never acquired, behind holder pid 9387; it was retried in the same slot and measured). pnpm check:i18n (captured before any pipe): exit 0, 'check-i18n-bundles: OK (10 package(s) — all bundles in sync, no undeclared authoring keys)', plugins/plugin-audit in sync (7 bundles). Full workspace build for the dist-reading gates: turbo build --filter=!@objectstack/docs, 75 tasks successful, 64 cached, exit 0. No ablation this round: wording only, no tested behaviour changed.",
    "gates": "Head 01f606f. node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (no paths): 65 commands for 11 changed paths (+285 / -6, 291 changed lines vs merge base a31ff2e), list identical to the previous rounds. Each was run with its exit code captured before any pipe, and all 65 exited 0, including check:i18n, check:i18n-stale-fill, check:dual-build-cjs-loads, check:adr-0087-registration --base origin/main, check:changeset-no-major --base origin/main, check:empty-changeset --base origin/main, check:doc-authoring, check:nul-bytes and check:type-check-debt. --ran reconciliation: 'Run reconciliation — 65 derived, 65 run, 0 NOT-MEASURED, 0 UNRUN', exit 0. The roster gates under touched directories also exited 0: node scripts/check-changeset-fixed.mjs, pnpm check:authz-resolver, pnpm check:error-code-casing and pnpm check:filter-alias-parity. PR #23869 check-runs on 01f606f, read once with no polling: 40 total. Success (34): Auto Label, Build Core, Check Changeset, Check Documentation Links, Check PR Size, Dogfood Regression Gate, Flag docs affected by code changes, Governed Surface Queue Guard, Lint & Repo Gates, Lint · CI, release & engine gates, Lint · ESLint, Lint · PM dispatch-gates, Lint · docs & code guards, Lint · repo & tooling gates, Lint · scoped · query-options erasure, Lint · scoped · slot lookup & corpus, Lint · scoped · tooling self-tests, No other open PR may claim the same issue, No other open PR may claim the same single-writer path, Part-of PR must not also close its card, Test Core, Test Core (1/6) through (6/6), The card this PR closes must claim this branch, Type Check · consumer gates, Type Check · debt ledger, Type Check · source gates, Type Check · workspace, TypeScript Type Check, filter. Skipped (6): Build Docs, Console Pin Gate, the Dogfood Regression Gate matrix placeholder row, Dogfood Verify CLI, Packed-tarball smoke (opt-in), Temporal Conformance (live PG + MySQL). All five required contexts are success. The PR is still a draft, assigned to os-tesla.",
    "mcp_calls": "0 — no MCP GitHub tool was called this round or the last",
    "api_writes": "This round: 1 fleet-relay stroke, one POST /repos/objectstack-ai/objectstack/dispatches executed as objectstack-fleet[bot] -> POST /repos//issues/23838/comments (this os-dev-report). There were no PR body PATCHes and no label writes. git push x2 to claude/issue-23838-identity-feeds-off (941eb8a, 01f606f); a push is not a REST write. Previous round, for the record: 2 strokes (pr_create with its assignee POST, and the first os-dev-report comment 6213309502).",
    "open_questions": [],
    "out_of_scope_findings": [],
    "files_changed": [
    "this round: packages/plugins/plugin-audit/src/objects/sys-comment.object.ts (+2/-2: thread_id description and docblock example)",
    "this round: packages/plugins/plugin-audit/src/translations/en.objects.generated.ts (+1/-1, regenerated by check-i18n-bundles --write)",
    "this round: packages/plugins/plugin-audit/src/translations/zh-CN.objects.generated.ts (+1/-1, hand-written leaf, example only)",
    "this round: packages/plugins/plugin-audit/src/translations/ja-JP.objects.generated.ts (+1/-1, hand-written leaf, example only)",
    "this round: packages/plugins/plugin-audit/src/translations/es-ES.objects.generated.ts (+1/-1, hand-written leaf, example only)",
    "unchanged from round 1: .changeset/23838-identity-feeds-off.md (+23); packages/platform-objects/src/identity/{sys-organization,sys-team,sys-business-unit,sys-user}.object.ts (+3 each, enable: blocks only); packages/plugins/plugin-audit/src/identity-objects-feeds-off.test.ts (+244)"
    ],
    "line_budget": "n/a — no skills/** or governed path touched; whole diff vs merge base a31ff2e is 291 changed lines (+285 / -6), under the 3000 human-merge threshold; this round adds 6/-6",
    "deviations": [
    "PR body sentence for the seat to write, replacing the first Acceptance-notes bullet: "This PR also changes the sys_comment.thread_id example from sys_user:abc123 to account:9001: the description and docblock in packages/plugins/plugin-audit/src/objects/sys-comment.object.ts, the en bundle regenerated by node scripts/check-i18n-bundles.mjs --write, and the zh-CN, ja-JP and es-ES leaves swapped by hand. After this change, a comment created by following the old example answers 403 FEEDS_DISABLED."",
    "The patch-round worktree was recreated from the pushed branch tip 4e5399c, the same commit the removed one held, and removed again after the push. Its tree was clean and matched the remote tip 01f606f. One worktree-remove command chain stopped on a malformed rev-parse before it ran anything; the removal was then redone, verified and completed.",
    "One locked typecheck attempt returned queue-timeout (exit 99, NOT MEASURED) behind another agent's long hold (pid 9387). A retry in the same slot measured it green; nothing was read from the 99.",
    "Commits carry the model-free trailer pair AGENTS.md requires, not the harness reminder's model-named Co-Authored-By. AGENTS.md wins."
    ]
    }


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #23869 comment 6214595180 · contract review 6214578176 PASS · domain:engine seat 2 · session_01TQLy3Yq6vF4SDpTXdr3Uwi · 2026-10-16T11:34Z. Landing next: ready, then auto-merge through the queue.


    Generated by Claude Code

  6. objectstack-fleet commented on Oct 16, 2026

    @objectstack-fleet
    ContributorAuthor

    Landing record: PR #23869 → 77efc66223 · domain:engine seat 2 · session_01TQLy3Yq6vF4SDpTXdr3Uwi · 2026-10-16T12:06Z

    Reading Result
    PR #23869 object merged: true, merge commit 77efc66223, through the merge queue
    origin/main 77efc6622 is an ancestor of origin/main (570f01d27); each of the four identity objects carries feeds: false there; sys_user:abc123 has 0 hits in plugin-audit/src; .changeset/23838-identity-feeds-off.md is present
    queue branch no gh-readonly-queue/main/*pr-23869* head remains

    State change: this card closed completed by Fixes #23838; pm:dispatched removed in this act. domain:engine, area:identity, p1 and target:v18 stay. The other card closed in the same second, #23483, was closed by hand by os-zhuang (no commit on its timeline), not by this PR.

    Carried: nothing open. The contract review record is 6214578176 (PASS, CONTRACT_REVIEW_TIER), the ACCEPT 6214595180.


    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

Labels

area:identityLogin and identity — sign-up, sessions, organization membership, SSOdomain:engineenhancementNew feature or requestpriority:p1High: required for production / M2target:v18

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions