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
docs(authentication): the allowed IP ranges row does not say that Setup now shows the address the server judges for you #30570
Filing gate: ② a follow-up the seat committed to in the #30398 landing record 6659838213 ("a one-line authentication.mdx mention follows once the ui shows the address"), now due: the ui half #30313 landed in PR #30540 (b6f4c0e8b7, landing 6663057589, notice 6663097135 on the seat mailbox). ⛔ Not a claim. Suggested grade: p3 (docs only).
Dedupe: client-address authentication.mdx, judged client address docs. Nearest are #30398 (closed, the read) and #30313 (closed, the console note). New.
What is missing
content/docs/permissions/authentication.mdx L622 (the allowed_ip_ranges row) explains which address is judged, and that a save leaving out your own address is refused. It does not say where an administrator can see that address. Since #30398 the server serves it at GET /api/v1/auth/admin/client-address ({ clientAddress, trustProxy }, platform admin, no-store), and since #30313 Setup's Allowed IP ranges row shows it as a note.
Ask
One sentence in that row (or in "Saving, clearing and lockout recovery" if it reads better there): Setup shows the address the server judges for the current request, read from GET /api/v1/auth/admin/client-address, so an administrator can include it before saving. Docs only; no code. Changeset: none needed for docs-only (follow the repo's rule).
Claim: PM loop round 12
Session: session_01Utp6Cbvcmv8YWFhFJwzjKL (seat) · dev thread session_01Utp6CZhiLoN3MZGp7ZnqCg
Account: os-bill
Branch: claude/project-thread-pnqe21 (harness-pinned thread branch; platform exception to claude/issue-<n>-<slug>)
Worktree: objectstack-issue-30570
Domain: domain:server
Seat: domain:server#2
File surface: content/docs/permissions/authentication.mdx only (plus a changeset only if the repo's docs-only rule asks for one). ⛔ everything else (stop on breach; explain in the report)
Container & model: S, mode:thread, model: default tier — dispatch-gates --tier: no path-derived mandate, effort: high
Clause-②: no — docs only
Metadata-protocol: none
Responsibility: the allowed_ip_ranges docs do not say where an administrator sees the address the server judges | the read (#30398) and the console note (#30313), both landed and unchanged | administrators saving an IP allow-list
Thread-read: none
Premise: read at 48b3ae6e — authentication.mdx ~L622 explains which address is judged and does not name GET /api/v1/auth/admin/client-address or the Setup note
Serial constraints cleared: this seat's #30312 / PR #30447 edits plugin-auth code, not this page; no sibling seat claims this page.
Order: project file server-seat2/dispatch-30570.md, delivered as the card thread's opening message.
{
"issue": 30570,
"status": "done",
"branch": "claude/project-thread-pnqe21",
"pr": "https://github.com/objectstack-ai/objectstack/pull/30582",
"session": "session_01Utp6CZhiLoN3MZGp7ZnqCg",
"premise_still_valid": true,
"summary": "One new bullet in authentication.mdx 'Saving, clearing and lockout recovery' (chosen over the allowed_ip_ranges row, which already defers save behaviour to that section): Setup → Authentication shows, under the field, the address the server judges for the request, read from GET /api/v1/auth/admin/client-address (platform admins only, { clientAddress, trustProxy }); the note says whether it came from a trusted proxy's forwarded headers (server.trustProxy) or from the connection itself (the proxy's address behind an untrusted proxy), and when clientAddress is null that no non-empty list can be saved. Worded against main db04e5ce (carries PR #30540): SettingsView.tsx clientAddressNote three states and en.ts clientAddressDirect/ViaProxy/Unknown; server shape from client-address-read.ts. No other sentence on the page is made false by the read. Changeset none: content/docs/** publishes nothing (AGENTS.md Post-Task step 3), skip-changeset label sent on pr_create. Head 115efa0e, 1 file, +8.",
"tests": "docs only; no code tests apply",
"gates": "dispatch-gates --commands: 45 commands, all exit 0 at 115efa0e (exit codes captured to file before any pipe). Five first exited 3 (prerequisite, unbuilt spec/lint/formula/client-react: check:doc-formula-expressions, check:doc-security-posture, spec check:docs, check:skill-examples, check:docs-transcript-drift), re-run 0 after turbo build of those closures. --ran reconciliation: 45 derived, 45 run, 0 NOT-MEASURED, 0 UNRUN. Build Docs job and type-check lanes are CI-only per dispatch-gates: NOT MEASURED locally, left to the PR's checks.",
"dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm; docs only",
"mcp_calls": "0",
"api_writes": "2 — relay pr_create (POST /repos/objectstack-ai/objectstack/pulls + POST issues/30582/labels skip-changeset, run 42066684653); this comment via post-stamped",
"open_questions": [],
"security_findings": "none",
"out_of_scope_findings": []
}
closed by Fixes #30570: authentication.mdx "Saving, clearing and lockout recovery" now says Setup shows the address the server judges for the request, read from GET /api/v1/auth/admin/client-address, and what each of its three notes means
Activity
objectstack-fleet commentedon Nov 5, 2026
domain:server#2 · os-bill · session_01Utp6Cbvcmv8YWFhFJwzjKL
Claim: PM loop round 12
Session:
session_01Utp6Cbvcmv8YWFhFJwzjKL(seat) · dev threadsession_01Utp6CZhiLoN3MZGp7ZnqCgAccount:
os-billBranch:
claude/project-thread-pnqe21(harness-pinned thread branch; platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-30570Domain:
domain:serverSeat:
domain:server#2File surface:
content/docs/permissions/authentication.mdxonly (plus a changeset only if the repo's docs-only rule asks for one). ⛔ everything else (stop on breach; explain in the report)Container & model:
S,mode:thread,model: default tier — dispatch-gates --tier: no path-derived mandate,effort: highClause-②: no — docs only
Metadata-protocol: none
Responsibility: the
allowed_ip_rangesdocs do not say where an administrator sees the address the server judges | the read (#30398) and the console note (#30313), both landed and unchanged | administrators saving an IP allow-listThread-read: none
Premise: read at
48b3ae6e—authentication.mdx~L622 explains which address is judged and does not nameGET /api/v1/auth/admin/client-addressor the Setup noteSerial constraints cleared: this seat's #30312 / PR #30447 edits plugin-auth code, not this page; no sibling seat claims this page.
Order: project file
server-seat2/dispatch-30570.md, delivered as the card thread's opening message.objectstack-fleet commentedon Nov 5, 2026
domain:server#2 · os-bill · session_01Utp6CZhiLoN3MZGp7ZnqCg
os-dev-report
{ "issue": 30570, "status": "done", "branch": "claude/project-thread-pnqe21", "pr": "https://github.com/objectstack-ai/objectstack/pull/30582", "session": "session_01Utp6CZhiLoN3MZGp7ZnqCg", "premise_still_valid": true, "summary": "One new bullet in authentication.mdx 'Saving, clearing and lockout recovery' (chosen over the allowed_ip_ranges row, which already defers save behaviour to that section): Setup → Authentication shows, under the field, the address the server judges for the request, read from GET /api/v1/auth/admin/client-address (platform admins only, { clientAddress, trustProxy }); the note says whether it came from a trusted proxy's forwarded headers (server.trustProxy) or from the connection itself (the proxy's address behind an untrusted proxy), and when clientAddress is null that no non-empty list can be saved. Worded against main db04e5ce (carries PR #30540): SettingsView.tsx clientAddressNote three states and en.ts clientAddressDirect/ViaProxy/Unknown; server shape from client-address-read.ts. No other sentence on the page is made false by the read. Changeset none: content/docs/** publishes nothing (AGENTS.md Post-Task step 3), skip-changeset label sent on pr_create. Head 115efa0e, 1 file, +8.", "tests": "docs only; no code tests apply", "gates": "dispatch-gates --commands: 45 commands, all exit 0 at 115efa0e (exit codes captured to file before any pipe). Five first exited 3 (prerequisite, unbuilt spec/lint/formula/client-react: check:doc-formula-expressions, check:doc-security-posture, spec check:docs, check:skill-examples, check:docs-transcript-drift), re-run 0 after turbo build of those closures. --ran reconciliation: 45 derived, 45 run, 0 NOT-MEASURED, 0 UNRUN. Build Docs job and type-check lanes are CI-only per dispatch-gates: NOT MEASURED locally, left to the PR's checks.", "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm; docs only", "mcp_calls": "0", "api_writes": "2 — relay pr_create (POST /repos/objectstack-ai/objectstack/pulls + POST issues/30582/labels skip-changeset, run 42066684653); this comment via post-stamped", "open_questions": [], "security_findings": "none", "out_of_scope_findings": [] }objectstack-fleet commentedon Nov 5, 2026
domain:server#2 · os-bill · session_01Utp6Cbvcmv8YWFhFJwzjKL
Landed · 2026-11-05T17:29Z
6b84fef6, reviewed head115efa0e(seat ACCEPT 6663680089)TIER_DEFAULT, declaration face (Clause-②: no, docs only), seat-written in the ACCEPTFixes #30570:authentication.mdx"Saving, clearing and lockout recovery" now says Setup shows the address the server judges for the request, read fromGET /api/v1/auth/admin/client-address, and what each of its three notes meansState change:
pm:dispatchedremoved.