spec: 013's tasks, approved — 43 tasks, five phases, and a backstop family of six - #151
Merged
Conversation
…amily of six Adds `spec/013-howto_guides/tasks.md` and the `.tasks-approved` marker that `/spec:design`, `/spec:review` and `/spec:status` actually read. The marker is checked with `ls -a`, not asserted here: `492b1ea` is titled "012 requirements APPROVED", says in its body that it adds the marker, and adds no marker. 43 tasks across design §10's five phases (13 / 11 / 7 / 8 / 4), derived two ways that agree. The phases are the design's, unchanged — one PR each, P0-2 and P0-4 first because nothing new should be written on top of an API surface the corpus spells wrongly. Reviewed by re-derivation rather than by reading. Every count the list asserts reproduces at 7062bf9 with its control: P0-2 at 10 sites / 6 pages, the seven extra sites at 5 / 1 / 1 for seventeen, the real API at 0 / 0 / 0 in contents/, P0-4 at 10 / 6 against a live-twin control of 13, both P0-3 anchors resolving through linkcheck.py's own slug() against a control that does not, and all seven gates at 160 · 779 · 158 · 157 · 77 · 0 of 18 · 0 across 59 tables and 519 rows. Two findings, both applied: §2.3 — the backstop family is SIX, not three. Enumerated rather than extrapolated, `git grep -lE 'class [A-Za-z]*OnError[A-Za-z]*Attribute'` returns three sync attributes and three async twins, every one live at both refs. Task 3.3 said "the three", which is standing obligation 2's exact failure mode committed inside the document that states obligation 2 — the same shape as design §11 Q6's MsSqlEntityFrameworkTransactionProvider. It matters rather than merely being wrong: DeferMessageOnErrorAsyncAttribute is on 0 of 158 pages, the same zero-tell as AddBrighterDefault and UseExternalLuggageStore, and Subscription<T> defaults to MessagePumpType.Proactor (Subscription.cs:291 @ 10.7.0) — so the reader P0-3 is written for, on MSSQL, Redis or MQTT where a nack discards and DeferMessageAction is the only safe choice, is on the async pump by default and needs the one member of the family this corpus has never named. §1 — a source line number is a figure and needs a ref. Every <file>:<line> into ../Brighter in this document means @ 10.7.0, and two had already drifted: OutboxProducerMediator.cs:502 is the InvalidOperationException throw at 10.7.0 and `if (HasAsyncOutbox())` on origin/master, and the DI factory's ??= is ServiceCollectionExtensions.cs:705 at 10.7.0 and :724 on master. The name is checked at both refs; the line number is only ever true at one. Counts re-derived after both edits — still 43 and 43. Gates unmoved, the edit being spec-only. Renumbering the old §2.3 broke no cross-reference; nothing pointed at it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0146UueHL6H3zGBGTYwz7GtL
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 free
to 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.
Adds
spec/013-howto_guides/tasks.mdand the.tasks-approvedmarker that/spec:design,/spec:reviewand/spec:statusread. The marker is verified withls -a, not asserted —492b1eais titled "012 requirements APPROVED", says in its body that it adds the marker, and adds no marker.43 tasks across design §10's five phases (13 / 11 / 7 / 8 / 4), derived two ways that agree. The phases are the approved design's, unchanged — one PR each, and P0-2 + P0-4 go first because nothing new should be written on top of an API surface the corpus spells wrongly.
Reviewed by re-derivation, not by reading
Every count the list asserts reproduces at
7062bf9, each with its control:CommandProcessorBuilder.With(5,DispatchBuilder.With(1,.Subscribers(1 → 17contents/.Resilience(0,DefaultResilience0,AddBrighterDefault0ClaimCheck.mdas controllinkcheck.py's ownslug()Source citations check out too:
UseExternalLuggageStoreis three overloads at:951/:971/:992,AddBrighterDefaultis atResiliencePipelineRegistryExtensions.cs:57and does useTryAddBuilder,Resilience()does throw on its first statement, and the luggage-store family enumerates to exactly the seven named.Two findings, both applied
§2.3 — the backstop family is SIX, not three. Enumerated rather than extrapolated, there are three
…OnErrorAttributeand three…OnErrorAsyncAttribute, all live at both refs. Task 3.3 said "the three" — standing obligation 2's exact failure mode, committed inside the document that states obligation 2, and the same shape as design §11 Q6'sMsSqlEntityFrameworkTransactionProvider.It matters rather than merely being wrong.
DeferMessageOnErrorAsyncAttributeis on 0 of 158 pages — the same zero-tell asAddBrighterDefaultandUseExternalLuggageStore— andSubscription<T>defaults toMessagePumpType.Proactor(Subscription.cs:291@10.7.0). So the reader P0-3 is written for, on MSSQL, Redis or MQTT where a nack discards andDeferMessageActionis the only safe choice, is on the async pump by default and needs the one member of the family this corpus has never named.§1 — a source line number is a figure and needs a ref. Every
<file>:<line>into../Brighterhere means@ 10.7.0, and two had already drifted:OutboxProducerMediator.cs:502is theInvalidOperationExceptionthrow at10.7.0andif (HasAsyncOutbox())onorigin/master; the DI factory's??=isServiceCollectionExtensions.cs:705at10.7.0and:724on master. The name is checked at both refs; the line number is only ever true at one.Gates
Spec-only, so nothing under
contents/moves — confirmed rather than assumed:linkcheck160,pagelint0 errors, 779 warnings, 158 pages. Counts re-derived after both edits: still 43 / 43. Renumbering the old §2.3 broke no cross-reference; nothing pointed at it.🤖 Generated with Claude Code
https://claude.ai/code/session_0146UueHL6H3zGBGTYwz7GtL