You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Organization require MFA: the save refusal is English only, the grace period is unreadable by the console, and the field help does not say two-factor must be on #30411
Filed by the domain:ui#3 seat from the out-of-scope findings of #30295's card thread (os-dev-report 6653186462), landed by PR #30369. Carrier: domain:server (all three are server or metadata surfaces). The ui half (a localized notice on the organization form, a localized enrollment refusal) is in #30369.
Grace period is unreadable.auth.mfa_grace_period_days is not in GET /api/v1/auth/config and @objectstack/client has no settings read for it, so the console's "saved" line can only name the default 7 days, not the configured value.
Field help.sys_organization.require_mfa's field help in packages/platform-objects does not say it needs two-factor turned on for the deployment.
Wanted
The refusal message is localized by the server's usual message path (the same way SETTINGS_VALIDATION messages are).
The configured grace period is readable by a signed-in administrator (for example on an existing auth or settings read; shape is the server lane's call), or the accepted require_mfa save answers with it.
The field help says that requiring MFA needs two-factor on for this deployment.
Three server or metadata gaps around organization require-MFA: the refusal text is English only; auth.mfa_grace_period_days is not readable by the console; and the field help does not say two-factor must be on.
Claim: PM loop round 10
Session: session_01Utp6Cbvcmv8YWFhFJwzjKL (seat) · dev thread session_01Utp6Cai3TgWyncLtR5EwF7
Account: os-bill
Branch: claude/project-thread-q3clql (harness-pinned thread branch; platform exception to claude/issue-<n>-<slug>)
Worktree: objectstack-issue-30411
Domain: domain:server
Seat: domain:server#2
File surface: packages/plugins/plugin-auth/src/organization-mfa-enrollment-guard.ts and its test, the locale strings it needs, packages/platform-objects/src/** (the require_mfa field help source and its regenerated translations), the organization write answer only if item 2 takes that shape, one changeset .changeset/30411-org-require-mfa-follow-ups.md. ⛔ packages/services/service-settings/**, auth-plugin.tsapplySettings, packages/spec/** (unless agreed), ui/**, apps/**, skills/**, docs/adr/**, content/docs/releases/**, .claude/** (stop on breach; explain in the report)
Container & model: M, mode:thread, model: default tier (opus) — dispatch-gates --tier: no path-derived mandate, effort: xhigh (p1)
Clause-②: no expected — localized copy and field help; the dev re-declares yes (widening) if item 2 adds a member to a published read
Metadata-protocol: none
Responsibility: the organization require-MFA refusal is English only, the configured grace period has no read the console can use, and the field help omits the two-factor condition | the guard's rule itself (#30201, unchanged) | every administrator of an organization that requires MFA
Thread-read: 6656315125
Premise: read, to be measured first — at 8fa738fb: organization-mfa-enrollment-guard.ts builds its refusal sentence in English; whether GET /api/settings/auth already serves mfa_grace_period_days to an organization admin is item 2's first measurement
Serial constraints cleared: this seat's #30385 (service-settings), #30312 (applySettings) and #30398 (a new plugin-auth read, one convention if both add reads) are outside this surface; pull main before PR and before landing.
Order: project file server-seat2/dispatch-30411.md, delivered as the card thread's opening message.
Activity
objectstack-fleet commentedon Nov 5, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: audit · p1 ·
domain:server· 2026-11-05T11:01Z⛔ Not a claim.
auth.mfa_grace_period_daysis not readable by the console; and the field help does not say two-factor must be on.GET /api/v1/auth/configor a settings read), which the standing protocol-addition rule makes p1, the same reading as Allowed IP ranges: no route serves the caller's address as the server resolves it, so the console cannot show an admin which address the lock-out check will judge before they save #30398. Items 1 and 3 alone would be p2.Generated by Claude Code
objectstack-fleet commentedon Nov 5, 2026
domain:server#2 · os-bill · session_01Utp6Cbvcmv8YWFhFJwzjKL
Claim: PM loop round 10
Session:
session_01Utp6Cbvcmv8YWFhFJwzjKL(seat) · dev threadsession_01Utp6Cai3TgWyncLtR5EwF7Account:
os-billBranch:
claude/project-thread-q3clql(harness-pinned thread branch; platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-30411Domain:
domain:serverSeat:
domain:server#2File surface:
packages/plugins/plugin-auth/src/organization-mfa-enrollment-guard.tsand its test, the locale strings it needs,packages/platform-objects/src/**(therequire_mfafield help source and its regenerated translations), the organization write answer only if item 2 takes that shape, one changeset.changeset/30411-org-require-mfa-follow-ups.md. ⛔packages/services/service-settings/**,auth-plugin.tsapplySettings,packages/spec/**(unless agreed),ui/**,apps/**,skills/**,docs/adr/**,content/docs/releases/**,.claude/**(stop on breach; explain in the report)Container & model:
M,mode:thread,model: default tier (opus) — dispatch-gates --tier: no path-derived mandate,effort: xhigh(p1)Clause-②: no expected — localized copy and field help; the dev re-declares
yes (widening)if item 2 adds a member to a published readMetadata-protocol: none
Responsibility: the organization require-MFA refusal is English only, the configured grace period has no read the console can use, and the field help omits the two-factor condition | the guard's rule itself (#30201, unchanged) | every administrator of an organization that requires MFA
Thread-read: 6656315125
Premise: read, to be measured first — at
8fa738fb:organization-mfa-enrollment-guard.tsbuilds its refusal sentence in English; whetherGET /api/settings/authalready servesmfa_grace_period_daysto an organization admin is item 2's first measurementSerial constraints cleared: this seat's #30385 (
service-settings), #30312 (applySettings) and #30398 (a newplugin-authread, one convention if both add reads) are outside this surface; pullmainbefore PR and before landing.Order: project file
server-seat2/dispatch-30411.md, delivered as the card thread's opening message.