Repository navigation
feat(spec): declare the per-row write-drop signal on the import and validate answers, and the served import warnings - #20930
Conversation
…alidate answers ImportRowResultSchema and each ValidateDataResponseSchema row gain an optional droppedFields: an array of DroppedFieldsEventSchema, the engine's own strip event, so the reason vocabulary (computed included) is the engine's and no second enum exists. ImportRowResultSchema also declares the dry-run warnings the REST import runner already serves, in the ValidateDataIssue shape; undeclared, parse stripped them and typed readers could not see them. ImportJobResultsSchema.results now says an ok row's report reaches the async reader only inside the capped, failures-first sample. The cap is unchanged. Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
…clared import warnings Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
… projection Generated only: gen:docs for the two describe-bearing schemas, and the authorable-surface/api.json rows the build's schema step writes for the two new ImportRowResult keys. Claude-Session: https://claude.ai/code/session_01Sfe5YjBLwB9J3y8fvm2xq1 Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift Check6 anchor(s) derived from 1 changed package(s); no hand-written page names any of them. What this run could not see
Coarse fallback — 137 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 4a58b0b9efe64580bb1aa3bff279a485f952b06b && git checkout 4a58b0b9efe64580bb1aa3bff279a485f952b06b
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin aaad682dbcb36bd00635a40530aca826062b9903 3e9b7ece066ca4b8ad04ad5e73ae7ed186c6ea93 && git checkout -B drift-repro aaad682dbcb36bd00635a40530aca826062b9903 && git merge --no-ff 3e9b7ece066ca4b8ad04ad5e73ae7ed186c6ea93
node scripts/docs-audit/affected-docs.mjs --json aaad682dbcb36bd00635a40530aca826062b9903 |
Contract reviewServed-tier: Reviewed: PR #20930 (8 files, +247 / -4, three commits ① Derived judgmentsAccept-set and public-surface changes the diff implies
Author-shown and AI-facing text, sentence by sentence
② Semver level
Clause-②: yes (widening) — the PR body's line, corrected from the claim's ③ Boundary flags
Implemented-by: VERDICT: PASS Adopted and posted by
Generated by Claude Code |
Closes #20921
Clause-②: yes (widening)
ImportRowResultSchemaand eachValidateDataResponseSchema.results[]row gain an optionaldroppedFields:z.array(DroppedFieldsEventSchema), the referenceBatchOperationResultSchema.droppedFieldsalready uses. No second reason enum: the set is the engine's,computedincluded.ImportRowResult.warningsis declared as served:z.array(ValidateDataIssueSchema), set on ok dry-run rows only. Producerpackages/rest/src/import-runner.ts:852; it reaches the sync route and the async job results; zero readers in objectui at741864f7b9. Undeclared,parsestripped it.ImportJobResultsSchema.resultsdescribe: a capped sample, failures first; an ok row's report reaches the async reader only inside it. The cap is unchanged.export.test.tsandvalidate-data.test.ts. Ablation at3e9b7ece06(each key renamed out of its schema, restore proven by blob hash): 4 / 3 / 1 tests red; control 53/53 green.3e9b7ece06: spec test 583 files, 17177 passed; spec typecheck exit 0;check:generated15 of 15 current; 104 of 108 derived gates exit 0, 4 NOT MEASURED (they need whole-workspace builds; CI runs them).@objectstack/specminor. It names objectui'sSTRIPPED_LINEtoast table as the exhaustivereasonconsumer.Acceptance notes
droppedFields, and both describes say an absent key does not prove nothing was dropped.Generated by Claude Code