Skip to content

fix(server): write-field-ignored ignores create ids - #757

Merged
divshekhar merged 4 commits into
reticlehq:mainfrom
kushals256:fix/write-field-ignored-sentinels
Sep 5, 2026
Merged

divshekhar merged 4 commits into
reticlehq:mainfrom
kushals256:fix/write-field-ignored-sentinels

Conversation

@kushals256

Copy link
Copy Markdown
Contributor

Fixes #670

write-field-ignored fired on ordinary, correct APIs: a create that sent sub_category_id: 0 and got back the new row's id, or a public workspace id echoed as an internal row id. The copy then claimed the write half-applied and the UI had no way to know — a strong factual claim about a bug that did not exist — and one such request poisoned every later assert in the window.

0 / "" / null are sentinels ("server, you decide"). id / *_id are identities the server assigns. A locale that comes back as a different locale still fires. The copy names a different echo rather than a write the UI cannot know about.

A read-shaped POST is unchanged: method alone cannot tell it from a write, and silencing it would also silence a genuinely dropped field.

Test plan

  • create-at-root 0 is silent; empty string is silent
  • two id spaces on workspace_id are silent; url_workspace_id does not pair with workspace_id
  • a non-identity field (locale) that came back different still fires
  • copy no longer says half-applied / no way to know
  • existing echo-mismatch and contradiction suites stay green

Made with Cursor

kushals256 and others added 2 commits September 4, 2026 16:08
A POST that sent 0 for a new row, or a public id echoed as an internal
one, was reported as a half-applied write. Those are identities the
server assigns, not fields the caller asked to persist.

Signed-off-by: Kushal S <skushal.mys@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
CI recorded hidden-api-500 and broken-form-validation as NOT MEASURED after Playwright MCP initialize/click timeouts, which shrank coverage and tripped the gate while catch-rate stayed 1.0. Replay-detect already retries that rig noise; Layer A now does too.

Signed-off-by: Kushal S <skushal.mys@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@kushals256

Copy link
Copy Markdown
Contributor Author

Same coverage-floor flake as #750 / #753 / #755, not this change. This run shrank 48 → 46: hidden-api-500 timed out on MCP initialize for Playwright and DevTools, and broken-form-validation/playwright hung on browser_click. Catch-rate stayed 1.0.

Cherry-picked the one-retry from #750 (the same rule replay-detect already uses for a flaky baseline). A missing tool is still a miss.

@divshekhar
divshekhar merged commit 0b6b08d into reticlehq:main Sep 5, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

write-field-ignored fires on reads, on sentinel values and on create-returns-new-id, and one ambient request poisons every later verdict

2 participants