Uh oh!
There was an error while loading. Please reload this page.
docs(spec): JobHandler docblock states degraded consumption is wired - #10434
Merged
Conversation
…10266) The `JobHandler` TSDoc's "not yet wired" paragraph was inverted twice over by #7072's landing: consuming a resolved `{ outcome: 'degraded' }` is no longer discarded, and "safe because unread" no longer holds. Re-measured against current main: - cron-job-adapter.ts and interval-job-adapter.ts map a resolved `degraded` outcome onto `execution.status = 'degraded'` / `execution.error`. - db-job-adapter.ts settles the run as `degraded`, writes the reason to `error` / `last_error`, and leaves `failure_count` flat. - sys_job_run.status and sys_job.last_status both carry `degraded` in their ObjectQL-enforced select vocabularies (#7072), pinned to stay in step with JobExecutionStatus. Rewrote the paragraph to state the wired behaviour, aligned in wording with JobExecutionStatus's already-correct TSDoc in system/job.zod.ts rather than inventing a third phrasing. The #5548/#6617 framing above stays untouched. Prose only — no signature or type change (Clause-②: no). No changeset: JSDoc/TSDoc block-comment change, not a Zod `.describe()` call that feeds generated reference docs — same precedent as #10168, not #10173. Claude-Session: https://claude.ai/code/session_016gcKVsiywU9CcS96S5t9qD Co-authored-by: Claude <noreply@anthropic.com>
Contributor
📓 Docs Drift CheckNothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 1 changed package(s)), so this run has no opinion about the docs. What this run could not see
Coarse fallback — 116 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
This was referenced Aug 20, 2026
qq9340100
marked this pull request as ready for review
August 21, 2026 00:56
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#10266
What was stale
JobHandler's docblock inpackages/spec/src/contracts/job-service.tsstill saidconsuming a
{ outcome: 'degraded' }resolution was "not yet wired" — that theshipped adapters discarded the value, and that this was precisely why doing so was
safe. #7072 landed the wiring and inverted both halves of that sentence: the value
is consumed, and the "safe because unread" argument no longer holds.
Re-measured against current
mainpackages/services/service-job/src/cron-job-adapter.ts—if (outcome && outcome.outcome === 'degraded') { execution.status = 'degraded'; execution.error = outcome.reason; }packages/services/service-job/src/interval-job-adapter.ts— same mappingpackages/services/service-job/src/db-job-adapter.ts— settles the run asdegraded(onAttemptSettled), writes the reason toerror/last_error(
bumpJob), and leavesfailure_countflatpackages/platform-objects/src/audit/sys-job-run.object.tsandsys-job.object.ts— both
status/last_statusselects carrydegradedin their ObjectQL-enforcedvocabularies, each with a
[#7072]comment pinning them toJobExecutionStatusThe fix
Rewrote the "not yet wired" paragraph to state the wired behaviour, aligned in
wording with
JobExecutionStatus's already-correct TSDoc insystem/job.zod.ts(same "NOT a failure, never retries" framing, same reason-in-error-column /
failure_count-flat facts) rather than inventing a third phrasing. The #5548/#6617
framing above the paragraph is untouched. No signature or type change (Clause-②: no).
Changeset
Skipped, following the #10168 precedent (JSDoc/TSDoc block-comment change, not a
Zod
.describe()call, no changeset) rather than #10173's (which changed.describe()text feeding generated reference docs and shipped one). This PRtouches only a
/** ... */block comment above a type alias — no.describe(),no generated reference page derives from it (verified: no match for
job-service,JobHandler, orJobRunOutcomeundercontent/docs).Tests
Prose-only change to a docblock; no behaviour, type, or test-visible surface
changed. Verified by re-reading the three adapters and the two enforced select
vocabularies on current
main(excerpts above) rather than by transcribing theissue card's measurements.
Gates run against
node scripts/pm/dispatch-gates.mjs's named list (all VERDICTcommand-exit 0, re-run at
176acc71c— identical tree to what was staged, nofurther edits after):
pnpm check:changeset-gate-self-tests,pnpm check:cross-package-test-inputs,pnpm check:merge-driver,pnpm check:slot-lookup,pnpm check:spec-parsed-alias,pnpm check:type-source-resolutionpnpm --filter @objectstack/lint run check:doc-formula-expressionspnpm --filter @objectstack/spec run check:empty-state / check:liveness / check:strictness-ledger / check:variant-docsnode scripts/check-adr-0087-registration.mjs,node scripts/check-dev-prereqs.mjs(after a full
pnpm build),node scripts/docs-audit/check-affected-docs.mjspnpm --filter @objectstack/spec typecheck(tsc --noEmit clean; test-typecheckdebt ledger unchanged, shrink-only)
Generated by Claude Code
Generated by Claude Code