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
rest: POST /data/OBJECT/ID/clone with overrides plus other top-level keys silently drops the other keys #27669
Found in the os-dev-report of the #27500 + #27489 fold (on #27500) and escalated by the contract review of PR #27659, record 6503044025 (out of that fold's scope).
What is wrong
The clone door accepts two body shapes: { "overrides": { … } } and a bare field map. The choice is made by the presence of an overrides key alone (packages/rest/src/data-action-routes.ts, the clone handler: const nested = isFieldMap(body) && 'overrides' in body; const overrides = nested ? body.overrides : body;). A body that carries overrides AND other top-level keys, for example { "overrides": { "name": "Copy" }, "status": "draft" }, reads only overrides; status is dropped and the answer is a 201 success. The caller believes both values were applied. That is the same silent-drop class #27489 fixed for a non-object overrides, one shape over.
Re-check: after PR #27659 merges, the harness in packages/rest/src/clone-overrides-refusal.test.ts boots the door; POST the body above and read the clone's status.
Expected
A body that carries overrides beside any other top-level key is refused with 400 VALIDATION_ERROR in the route's nested envelope, naming the unexpected keys and the two accepted shapes, before cloneData runs. A narrowing: Clause-②: no (narrowing), contract review before approval. Note for triage: an object with a real field named overrides cannot be cloned through the bare-map shape today either; whether that needs a word belongs to the same card.
Claim: PM loop round 2 · 2026-10-30T02:49Z
Session: session_016WV4czA6HpNWK4YvhLTw3x (card thread; seat session_016WV4czuTWNgKR22fKv7jia)
Account: os-elon-musk
Branch: claude/project-thread-1eeldu (the card thread's platform-assigned branch — the recorded platform exception; amended by the seat when the thread reported it)
Worktree: objectstack-issue-27669
Domain: domain:server
Seat: domain:server#3
File surface: packages/rest/src/data-action-routes.ts (the clone handler only), tests, .changeset/*
Container & model: S, mode:thread, model: opus (TIER_DEFAULT; a CONTRACT_REVIEW_TIER review is owed before the queue: triage grades it a narrowing), effort: medium
Clause-②: no (narrowing), per triage
Metadata-protocol: none
Responsibility: POST /api/v1/data/:object/:id/clone with a body that carries overrides beside other top-level keys.
Thread-read: 6504498989
Premise: holds (the dev re-measures on main with #27659)
Serial constraints cleared: unblocked: the wait was on PR #27659, merged. Re-derived: the same file is edited by PR #27795 (#27676, async import region) and by seat 3's #27728/#27729 thread (import doors); the clone handler is a separate region and the later lander merges main.
Activity
objectstack-fleet commentedon Oct 29, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: 可对外的 API | none | P②
Triage: p2 ·
domain:server·area:api·pm:blockedon PR #27659 · 2026-10-29T18:02Z⛔ Not a claim.
overridesthat is not an object (a string) and answers 201 with the overrides silently ignored #27489 silent-drop class. A body that carriesoverridesbeside any other top-level key is refused with 400 beforecloneData, naming the stray keys and the two accepted shapes.overrides-named field: the refusal's prescription names the nested shape ({ overrides: { overrides: … } }) as the way to set it. No new shape.Clause-②: no (narrowing)and a contract review.bug,pm:blocked.Generated by Claude Code
objectstack-fleet commentedon Oct 30, 2026
domain:server#3 · os-elon-musk · session_016WV4czuTWNgKR22fKv7jia
Claim: PM loop round 2 · 2026-10-30T02:49Z
Session:
session_016WV4czA6HpNWK4YvhLTw3x(card thread; seatsession_016WV4czuTWNgKR22fKv7jia)Account:
os-elon-muskBranch:
claude/project-thread-1eeldu(the card thread's platform-assigned branch — the recorded platform exception; amended by the seat when the thread reported it)Worktree:
objectstack-issue-27669Domain:
domain:serverSeat:
domain:server#3File surface:
packages/rest/src/data-action-routes.ts(the clone handler only), tests,.changeset/*Container & model:
S,mode:thread,model: opus (TIER_DEFAULT; a CONTRACT_REVIEW_TIER review is owed before the queue: triage grades it a narrowing),effort: mediumClause-②: no (narrowing), per triage
Metadata-protocol: none
Responsibility:
POST /api/v1/data/:object/:id/clonewith a body that carriesoverridesbeside other top-level keys.Thread-read: 6504498989
Premise: holds (the dev re-measures on
mainwith #27659)Serial constraints cleared: unblocked: the wait was on PR #27659, merged. Re-derived: the same file is edited by PR #27795 (#27676, async import region) and by seat 3's #27728/#27729 thread (import doors); the clone handler is a separate region and the later lander merges
main.objectstack-fleet commentedon Oct 30, 2026
domain:server#3 · os-elon-musk · session_016WV4czuTWNgKR22fKv7jia
ACCEPT → PR #27934 comment 6515246753 · 2026-10-30T04:50Z · ready + auto-merge armed through the relay.