Skip to content

Spec 017 phase 6: acceptance — 42 of 42, AC8 and AC11 repaired on your ruling, 299 blocks build - #196

Merged
iancooper merged 12 commits into
masterfrom
spec/017-phase6
Oct 4, 2026
Merged

iancooper merged 12 commits into
masterfrom
spec/017-phase6

Conversation

@iancooper

Copy link
Copy Markdown
Member

Summary

Phase 6 of spec 017 is acceptance. Every criterion has been walked by its command or by the reader it names. The changed pages have been checked for widening, and both ledgers are complete. The spec closes at 42 of 42, with the residual sentence that 018 starts from.

This PR changes the published site, so it needs your sign-off to merge. After the merge, may I delete the head ref spec/017-phase6?

Phase 6 was planned to touch no page. At 6.1, the named readers found AC8's second half and AC11 unmet. You ruled on 2026-09-28 that both be repaired in this PR. As a result, git diff --name-only origin/master..HEAD -- contents lists 24 pages.

For your review: AC8 and AC11 re-read

Both walk rows in tasks.md § The acceptance walk still carry 6.1's verdict of unmet. The repairs are in § AC8 and AC11, repaired under the ruling. Re-reading them is this PR's review.

AC8. Three blocks were marked // ... where the using could have been written. They now carry their usings: QueryPipeline.md #8, PolicyFallback.md #3 and HowConfiguringTheCommandProcessorWorks.md #6 (plus #5 beside it). Once PolicyFallback.md #3's attribute resolved, it exposed a CS7036: [FallbackPolicy(backstop: true, step: 1)] omits the required circuitBreaker. All four lines on the page with that defect are repaired.

AC11. All thirty blocks that lacked a run with a control have now been run against Brighter 10.7.0 and Darker 4.1.1. Postgres, MySQL, DynamoDB-local and LocalStack ran in Docker. The runs found these claims false or partly false:

  • Darker step order. The lowest step is outermost. Logging at step 1 does not see retries, and QueryPipeline.md Fix typo in title of faq.rst #16's "won't log individual retries" says the reverse of the truth. The prose beside sphinx-ify "Usage Documentation" #1 also recommended the wrong fallback/retry layout.
  • PolicyFallback.md / HandlerFailure.md. Fallback receives the original exception. BrokenCircuitException appears only on later calls. PolicyFallback.md Update documentation #10's Polly fallback did not compile (CS0029, CS1929) and has been rewritten so that the service call runs through GetPipeline<Product>.
  • FeatureSwitches.md. With no registry, Config is On. A registry that is missing the handler throws ConfigurationException. On the in-memory transport, redelivery happens at once, not after a visibility timeout.
  • InMemoryOutbox.md Update ImplementingAHandler.rst #2. PostAsync deposits the message and dispatches it at once.
  • V10MigrationGuide.md Update BuildingAPipeline.rst #12. The page's CreateCopy omitted Policies.
  • Scheduler docs. "Falls back to immediate requeue if no scheduler configured" is false, because DI always registers InMemorySchedulerFactory.
  • Kafka/MessageMappers schema-registry header. The header encoding changes only .Value. The damage comes from a text-column outbox, and binaryMessagePayload: true is the repair.
  • Telemetry.md. If tracing is left unset, it behaves as None. With no AddProducers, there is no Command Processor span at all.

Outside the runs: 15 blocks on 10 pages registered a typeof(...) transaction provider without the configuration it is built from. Each block now registers it. Several MongoDB and EF Core V9 leftovers were repaired too. As a result, 4 MongoDB blocks now build.

Open, yours

  • Whether to file the CommandProcessorBuilder finding upstream (not yet ruled). In 10.7.0, Build() gives the Command Processor no tracer when there is no external bus (:304). This was run both ways and is stated on both pages.
  • No .accepted file yet. That is yours to add.

Gates

# Gate Result
1 linkcheck 165 files, 0 broken
2 pagelint 0 errors; warnings 537 → 524
3/4/7 shape / redirects / --verify unchanged: 161 / 77 / 161
5 versioncheck 0 stale of 18
6 optioncheck 0 mismatches, 59 tables, 519 rows
8 symbolcheck 0 findings, 22 entries, 3 silenced
9 blockcheck 990 blocks: 299 BUILT (295 before), 674 FAILED, 17 SKIPPED; baseline 299; 45 units, 0 violations

pagelint --changed origin/master exits 0. attr_mismatch.py reads 1, the deliberate PipelineValidation.md:250.

What 017 shipped

016's close (c7329bb) Now
BUILT 101 299
Pages with a FAILED block / with nothing BUILT 140 / 97 88 / 39
pagelint using debt 743 blocks, 115 pages 524 blocks, 66 pages
Scaffold units / pages mapped 14 / 15 45 / 67

Over the whole spec, 116 pages changed. The defect ledger has 116 rows, each at 0 after repair. Friction entries 67–80 were added. For D4, you ruled that attr_mismatch becomes pagelint rule 8, to be built in 018.

The residual, the line 018 starts from: 674 of 990 C# blocks still do not compile against the released packages. Of those, 630 are on the 64 pages that 017's tranches never reached: 314 name a pinned type they never import, 145 do not parse, and 113 need a type their page never shows. So 018 first builds pagelint rule 8 and gives --classify its second compile, then tranches those 64 pages by what that instrument finds.

🤖 Generated with Claude Code

iancooper and others added 12 commits September 28, 2026 21:29
…half, AC11

The walker's findings, each verdict not yet ruled: AC6's rule-1 reading finds no
stubbed type a page tells the reader to write; AC8's second half unmet on three
blocks marked // ... where the using could be written; AC11 unmet on 30 of 119
behavioural repaired blocks.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016Am29wrQUS81NVh8dUyNuy
- AC8: using directives where three blocks said // ... ; writing them exposed
  [FallbackPolicy(backstop: true, step: 1)] missing its required circuitBreaker (CS7036), x4
- AC11, the thirty claims run with controls against 10.7.0 / Darker 4.1.1. False, and repaired:
  Darker's decorator order read backwards (QueryPipeline.md); a backstop's exception flow
  and a Polly fallback that cannot reach the handler (PolicyFallback.md); feature switches
  with no registry, and DontAckAction's redelivery (FeatureSwitches.md, HandlerFailure.md);
  no scheduler said to mean immediate requeue (BrighterSchedulerSupport.md);
  CharacterEncoding.Raw said to protect binary bodies (KafkaConfiguration.md,
  MessageMappers.md); spans said to need only AddBrighterInstrumentation (Telemetry.md,
  ConfiguringOpenTelemetry.md); CreateCopy without Policies; InMemoryOutbox's comment
- Found beside the runs: 15 blocks naming a provider by typeof without registering what
  it is built from, on 10 pages; EFCoreOutbox.md's V9 Use{DB}Outbox prose; MongoDB's
  OnResolvingACollection.Create and MongoClientSettings.ConnectionString, on two pages

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016Am29wrQUS81NVh8dUyNuy
…UILT

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016Am29wrQUS81NVh8dUyNuy
…rows 2 and 9 at bd95ee0

AC6 accepted by the maintainer. AC8 and AC11 unmet at the walk and repaired under
the ruling: the run table, 2.5's three missing cases and controls, ten defect-ledger
rows. blockcheck 295 -> 299 BUILT, pagelint 537 -> 524, the other gates unmoved.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016Am29wrQUS81NVh8dUyNuy
--classify is deterministic and agrees with the probe but for 146 parse
and 82 import blocks, each explained; seven of the 82 reach import by an
extension method's name on another receiver, the Order blind spot again,
none on a tranche page. The tranche pages hold 44 FAILED blocks, all
listed. Both unit-rule plants exit 1; --list-skips reads 17.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016Am29wrQUS81NVh8dUyNuy
… ledger to 6.5

Walked at f46221d. AC10 is met on the pages. Its ledger has three rows that do not
say what the pages now say: #15 and #16 still read "open" though both are repaired,
and #100's grep catches a correct use that 6.1 added. They go to 6.5.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016Am29wrQUS81NVh8dUyNuy
…eached by a ledger row, nothing reverted

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016Am29wrQUS81NVh8dUyNuy
#15 and #16 were open rows carried into #82 and #83; each now says so,
with their grep. #24 and #61 get asyncscan.py (CS1997, CS4032), #83 and
#16 get mapperscan.py, #55 gets its greps, and #100's grep narrows to the
key type. Each probe finds its defects at c7329bb and nothing at HEAD.
#55's controller grep leaves two off-tranche wrapper shapes, 018's.

6.4's phase 2 Context lines are #7's, not #83's; corrected.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016Am29wrQUS81NVh8dUyNuy
Fourteen entries read from phases 1–6's as-executed sections, each with
what 018 should do; recurrences of 53 and 58's family left unnumbered.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016Am29wrQUS81NVh8dUyNuy
…8, built in 018

Twenty-five attr_mismatch.py runs in phases 2–5 as evidence: 7 → 1 at 5.5, never rose.
The six repaired blocks are still FAILED, so the baseline risk is latent. Proposal and
ruling in tasks.md § For the maintainer: D4; design.md's D4 row records it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016Am29wrQUS81NVh8dUyNuy
What 017 shipped: 101 → 299 BUILT, pages with nothing BUILT 97 → 39, pagelint debt
743 → 524. --classify at e0385b4 puts 630 of the 674 FAILED blocks on the 64 pages no
tranche reached. AC8's second half and AC11, repaired under the 2026-09-28 ruling, are
re-read in this PR's review; acceptance is the maintainer's.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016Am29wrQUS81NVh8dUyNuy
The maintainer accepted the AC8 and AC11 repairs in #196's review and asked
for the CommandProcessorBuilder finding to be filed upstream. Telemetry.md
and ConfiguringOpenTelemetry.md link the issue, as #4465's page does.
.accepted exists, and the README and tasks.md status lines say ACCEPTED,
42 of 42.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@iancooper
iancooper merged commit 3a79b20 into master Oct 4, 2026
10 checks passed
@iancooper
iancooper deleted the spec/017-phase6 branch October 4, 2026 14:50
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.

1 participant