Repository navigation
docs(spec): import job failed also covers a job whose every row failed - #28087
Conversation
The REST import worker now ends a job that had rows and created, updated or skipped none of them `failed` (maintainer ruling B, record 6509036166). `ImportJobStatus` and `ImportJobProgressSchema.error` described `failed` as a fatal abort only; reword them to the ruled meaning. No enum value, key or type changes. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L9qibz3A9wkHngU9obhv1g
…` describe Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L9qibz3A9wkHngU9obhv1g
📓 Docs Drift CheckThis PR changes 1 package(s): 1 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:
What this run could not see
Coarse fallback — 168 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 92314971af2662831beed6a339cd9d6bf393bb05 && git checkout 92314971af2662831beed6a339cd9d6bf393bb05
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin b6c2ed9c4dd83ce986cb3d198fb82a8f3f7df5fe 154d26cb727ffed16cc80d1522d604c2a68e7695 && git checkout -B drift-repro b6c2ed9c4dd83ce986cb3d198fb82a8f3f7df5fe && git merge --no-ff 154d26cb727ffed16cc80d1522d604c2a68e7695
node scripts/docs-audit/affected-docs.mjs --json b6c2ed9c4dd83ce986cb3d198fb82a8f3f7df5fe
|
|
triage#1 · os-sales · session_01L6bhgV4fMGJHSdSdx3u9mK Contract-review-claim: Generated by Claude Code |
|
triage#1 · os-sales · session_01L6bhgV4fMGJHSdSdx3u9mK Contract reviewServed-tier: Read against ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
No must-fix. One should-fix (the "wins over both" clause). Implemented-by: VERDICT: PASS Generated by Claude Code |
…fatal abort The worker's catch writes `failed` unconditionally, so an error thrown after the cancel route stamped the job `cancelled` still ends it `failed`. Narrow the docblock and the changeset to say so. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L9qibz3A9wkHngU9obhv1g
|
triage#1 · os-sales · session_01L6bhgV4fMGJHSdSdx3u9mK Contract-review-claim: Generated by Claude Code |
|
triage#1 · os-sales · session_01L6bhgV4fMGJHSdSdx3u9mK Contract reviewServed-tier: Delta review on record 6523565061 (head ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
No must-fix. No should-fix outstanding: the previous record's one should-fix is answered, and the move adds nothing outside it. Implemented-by: VERDICT: PASS Generated by Claude Code |
|
domain:spec#1 · os-tesla · session_01L9qibwb6hBqszPTYJobitm 维护者速读
席位核对 · ACCEPT ·
|
Requested by Tesla · project thread
Fixes #27734
Clause-②: no
Metadata-protocol: none
维护者速读
failed不再只写「致命错误中止」,也写明「至少有一行、但没有任何一行被创建、更新或跳过」的任务同样以failed结束;error字段的说明同步补上这一情形,并重新生成参考文档。failed;spec 仍说failed只是致命中止,客户端和 AI 作者读到的含义比实际行为窄。packages/spec/src/api/export.zod.ts(ImportJobStatus文档块与两行注释、error的 describe);content/docs/references/api/export.mdx(生成结果);.changeset/27734-import-job-failed-wording.md。pnpm --filter @objectstack/spec build && pnpm --filter @objectstack/spec check:generated,预期 14 个产物全部最新。What changes
ImportJobStatus(packages/spec/src/api/export.zod.ts). The docblock now states the terminal rule the REST worker applies since fix(rest)!: an async import job whose every row failed ends failed, not succeeded #27795: a job that had at least one row and created, updated or skipped none of them endsfailed, as does a job aborted on a fatal error; a job with no rows, an all-skipped job and a partly-failed job endsucceeded; a dry run follows the same rule; a cancel wins over both. Thesucceeded/failedvalue comments are reworded to match.ImportJobProgressSchema.error. The describe was "Fatal error message (when status = failed)". It now says it carries either the fatal error or, when every row failed, one sentence pointing at the job'sresults.content/docs/references/api/export.mdx. Regenerated bygen:docs(two table rows: progress and results both show theerrordescribe).27734-import-job-failed-wording.md,@objectstack/spec: patch(describe text ships in the package).No enum value, key, type or export changes; the wire is unchanged. The sentence was written from PR #27795's diff (
packages/rest/src/data-action-routes.ts:everyRowFailed = finalStatus === 'succeeded' && total > 0 && created + updated + skipped === 0, decided after every cancel re-check).Tests
No behaviour changed, so no test was added and no ablation applies (prose only).
Acceptance notes
packages/platform-objects/src/audit/sys-import-job.object.ts:70still labels theerrorcolumnFatal Error. After ruling B that column also carries the "every row failed" sentence, so the label is stale the same way (note 6512498465). It isdomain:server, so this PR leaves it alone.ImportJobStatusenum-value comments are TS comments, not.describe(), so they do not reach the generated reference; the docblock and theerrordescribe are what readers of the spec see.Verification
All readings on head
4765d36c(worktree offorigin/main2e955dde).Spec build, generated artifacts, tests, typecheck
pnpm --filter @objectstack/spec build:: exit 0pnpm --filter @objectstack/spec check:generated:: exit 1 before regeneration, naming exactly one stale artifact (content/docs/references/**);gen:docs:: exit 0, thencheck:generatedis part of the sweep below :: exit 0pnpm --filter @objectstack/spec typecheck:: exit 0pnpm --filter @objectstack/spec test:: exit 0 — Test Files 756 passed (756), Tests 22510 passed, 1 todoDerived gates (`dispatch-gates --commands`, 97 families)
dispatch-gates --ran:: exit 0.@objectstack/lint/@objectstack/client-react; afterturbo run build --filter='@objectstack/lint...' --filter='@objectstack/client-react...'(38/38 tasks) they re-ran :: exit 0 (check:doc-formula-expressions,check:doc-security-posture,check:skill-examples,check:docs-transcript-drift).check:dual-build-cjs-loadsandcheck:lean-entry-closure(both need a whole-workspacepnpm build),check-plugin-teardown-shape.mjs --self-test(needs an unshallow clone; it grades the checker, not this diff).Generated by Claude Code