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
Rollup of every defect found while working the v17 verification checklist on #3909. 17 issues, all open. Filed across four verification runs against main @ 1ee48bc60 (post-17.0.0-rc.1), driving a real showcase boot plus purpose-built probe stacks as two live principals.
This issue exists so the RC train has one place to see the damage and decide what blocks exit. Each item below is independently reproducible — the linked issue carries the exact requests and responses.
(Correction to the run-4 comment on #3909, which said "13 defects" — the count is 17. The grouped list there was right; the total was a miscount.)
1 — Security & data integrity (8)
These change who can read or write what, or leave the audit record untrue.
Should block:#4467 (aggregate disclosure past every access control), and the #4433 + #4434 pair (an over-granting sharing rule with no in-product way to revoke it). Both are security properties the v17 release page actively advertises as fixed.
Strong candidates:#4447 and #4477 — both let a caller do something the declared contract forbids, and both are one-line-of-defence gaps rather than degraded UX. #4462 lands data in the wrong database silently.
Can ship with, worth fixing soon: the envelope group (#4431, #4435, #4436, #4437) — wrong status codes and missing error.code, all mechanical. #4432 and #4455 are narrower but both let a surface report success it did not achieve.
Docs/UI:#4476 is cheap and should land before RC exit because it misinforms upgraders. #4475 and #4478 are visible but non-destructive.
Two things that are not defects, listed so they are not re-litigated
/graphql discovery slot. The route correctly 404s, but discovery still reports services.graphql as an unavailable slot whose message invites someone to implement it — for a surface v17 deliberately removed, and contradicting the docs sweep's own reduction to 16 services. Whether to drop the slot or reword the remedy is a design call, so no issue was filed. Raised here for a decision.
Two stale checklist claims on v17 verification tracker — browser-verify every user-facing change in the 17.0.0 train #3909. The seeds item promises a Seeds: X inserted · Y updated · Z skipped banner that does not exist (the code deliberately collapses those into one count and uses · to separate sources); the os migrate meta item's "rewrites all three" reads as an in-place codemod, but it rewrites the stack snapshot (--out), not TypeScript sources. Both are checklist-text errors, not code defects.
Tracker: #3909 — 48 of 59 items verified; the 11 remaining are annotated inline with the issue blocking each.
Rollup of every defect found while working the v17 verification checklist on #3909. 17 issues, all open. Filed across four verification runs against
main@1ee48bc60(post-17.0.0-rc.1), driving a real showcase boot plus purpose-built probe stacks as two live principals.This issue exists so the RC train has one place to see the damage and decide what blocks exit. Each item below is independently reproducible — the linked issue carries the exact requests and responses.
(Correction to the run-4 comment on #3909, which said "13 defects" — the count is 17. The grouped list there was right; the total was a miscount.)
1 — Security & data integrity (8)
These change who can read or write what, or leave the audit record untrue.
/analytics/queryignores record-level scoping. A member with shares on 2 of 5 private notes counts 5, anddimensions:["title"]returns the titles of the 3 they cannot read. Any authenticated caller who reaches/analyticscan enumerate field values of every row of any cube-exposed object, past OWD, sharing rules and RLS. The most serious finding of the verification.DELETE /sharing/rules/:idOrName500s for both address forms, so the rule cannot be deleted either. Compounds sharing: deactivating a rule never withdraws its materialized grants — not on touch, not at boot #4433: an over-granting rule is unrecoverable from the API surface.created_atis client-writable on an ordinary PATCH and persists.updated_atandcreated_byare correctly protected; the audit anchor is the one that is not.lookupaccepts an id that exists nowhere, includingsys_position_permission_set.permission_set_id— a grant row can point at nothing while the audience-anchor gate has to resolve that set to judge it./readystays 200, and the data lands in a different database than the one declared.resumeperforms no server-side validation. Missing required fields, and undeclared keys, all complete the run. A client posting straight toresumebypasses everyrequiredthe flow author declared.sys_approval_actionhas no override column, so bypassing designated approvers is byte-identical to being one.2 — Contract & envelope (6)
Declared contracts that do not hold, or refusals that break the ADR-0112 envelope.
SandboxError:debug prefix also reaches the client.record: null/success: true) where GET correctly 404s.deleteManyreports every typo'd id as deleted.error.codeand leaks the[sql-driver]prefix.SQLITE_ERRORinstead of a 400 naming the field.os migrate value-shapesmisses alookupholding an embedded record object — the exact case its own docstring names — because the reference shape isz.string().min(1). The gate then closes on evidence it never gathered.3 — UI & docs (3)
WHERE created_at = $1. First screen an operator sees.minApprovals, per-approvergroup, and a pre-rendered"Committee Sign-off (2 of 3)". Fix belongs in objectui docs(auth): 手机号登录、管理员用户管理与批量导入的文档更新 #2811; no framework change needed.QueryASTdeclares 12 members no executor runs — the liveness ledger governs metadata types, not the request surface #4286 query-surface removals to spec 18 — they ship in 17. A reader on 16 plans the break a major too late.Suggested triage for RC exit
Should block: #4467 (aggregate disclosure past every access control), and the #4433 + #4434 pair (an over-granting sharing rule with no in-product way to revoke it). Both are security properties the v17 release page actively advertises as fixed.
Strong candidates: #4447 and #4477 — both let a caller do something the declared contract forbids, and both are one-line-of-defence gaps rather than degraded UX. #4462 lands data in the wrong database silently.
Can ship with, worth fixing soon: the envelope group (#4431, #4435, #4436, #4437) — wrong status codes and missing
error.code, all mechanical. #4432 and #4455 are narrower but both let a surface report success it did not achieve.Docs/UI: #4476 is cheap and should land before RC exit because it misinforms upgraders. #4475 and #4478 are visible but non-destructive.
Two things that are not defects, listed so they are not re-litigated
/graphqldiscovery slot. The route correctly 404s, but discovery still reportsservices.graphqlas an unavailable slot whose message invites someone to implement it — for a surface v17 deliberately removed, and contradicting the docs sweep's own reduction to 16 services. Whether to drop the slot or reword the remedy is a design call, so no issue was filed. Raised here for a decision.Seeds: X inserted · Y updated · Z skippedbanner that does not exist (the code deliberately collapses those into one count and uses·to separate sources); theos migrate metaitem's "rewrites all three" reads as an in-place codemod, but it rewrites the stack snapshot (--out), not TypeScript sources. Both are checklist-text errors, not code defects.Tracker: #3909 — 48 of 59 items verified; the 11 remaining are annotated inline with the issue blocking each.