Skip to content

Fixed logging of requests being passed between handlers. - #14

Merged
iancooper merged 1 commit into
BrighterCommand:masterfrom
mark-data8:master
Nov 4, 2014
Merged

iancooper merged 1 commit into
BrighterCommand:masterfrom
mark-data8:master

Conversation

@mark-data8

Copy link
Copy Markdown
Contributor

Trivial fix for exception when a request is being passed from a handler to its successor.

My first pull request - hope I've done it right!

iancooper added a commit that referenced this pull request Nov 4, 2014
Fixed logging of requests being passed between handlers.
@iancooper
iancooper merged commit 84e22d1 into BrighterCommand:master Nov 4, 2014
@iancooper

Copy link
Copy Markdown
Member

Thanks for that

@claude claude Bot mentioned this pull request May 6, 2026
6 of 9 tasks
iancooper added a commit that referenced this pull request Sep 12, 2026
#1 (92, Critical) the type-touch row saying PipelineValidator "calls
the extracted evaluator" is deleted — it was a relic of an abandoned
extract-to-core design and contradicted the row above it, step 1 and
the whole of Technology Choices. #2 (85) "plus one in core" -> "and
none in core". #3 (72) the failure-mode table gains the row C-20(i)
requires: a widest constructor MS DI would not select can warn WRONGLY,
so the count of report-wrongly rows is three, not two, and "all
reportable as misses" is corrected. #4 (70) NFR-9's exclusivity claim
restated as ownership, matching decision 6. #5 (68) the snapshot
collapses to one ArtefactRegistration per TYPE carrying its set of
kinds, so FR-22.3's de-duplication actually composes. #6 (65) the four
IBrighterOptions registration citations now describe the state after
ADR 0076 step 3 deletes them. #8 (58) AC-42 tests two of D15's three
cases, not three. #9 (56) BrighterOptionsRegistration named as the
carrier, and as a descriptor in the snapshot. #10 (55) the real reason
instance-registered artefacts are excluded. #11 (54) the duplicated
Specification/ValidationResultCollector commentary node and its solid
edge removed from the diagram; both diagrams re-rendered. #12 (52)
thread safety stated on the Validate() contract row. #13 (50) AC-24
moved onto the C-18 item. #14 (45) AC-44's obligation stated
accurately. #16 (40) reference-list drift.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YJjvJaUupNvDeTpEPp73as
iancooper added a commit that referenced this pull request Sep 12, 2026
0072 #1 (75) the faulted-Lazy eviction now states the removal
discipline that makes it safe: TryRemove takes the OBSERVED PAIR, not
the key. Under ExecutionAndPublication every thread that awaited the
faulting Lazy observes the exception and attempts the eviction, so a
key-only removal can delete a healthy Lazy a concurrent resolver
published — which under JoinAmbient yields two Scoped artefacts in one
borrowed request scope, exactly what FR-16(a) and AC-17 forbid. This is
the one place the protocol is not inherited, and it was the one place
left unspecified.

#2 (70) NFR-6 no longer cited for a reading it does not support — an
artefact per pipeline is cost proportional to pipelines, which NFR-6
permits; the real reason is given instead. #3 (66) the private-cache
fallback is replaced by declining at the probe, so one statement of
where the cache lives survives. #4 (64) ladder row 8's use of FR-23 is
declared an extension beyond that requirement's text, with the absent
AC recorded. #6 (58) AmbientScopeSourceException gains the Key
Components section and contract table its never-null invariant needs —
six sites unwrap it with e.InnerException!. #7 (55) AC-46's second
conjunct is resolved by stating the equivalence (under FR-27.1 the ask
and the scope are co-extensive) rather than naming an instrument AC-13
says cannot see scopes. #10 (44) the diagnostics singleton is held
nullable. #13, #14, #15 and set #11 (FR-16b named as owned).

⚠ The catch-block ranges are corrected in 0071 AND 0072 together —
:202-205 / :248-251, matching the touched table's own stated convention
— because fixing one file alone would have created fresh cross-ADR
drift, which the 0072 reviewer flagged explicitly.

Diagram re-rendered.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YJjvJaUupNvDeTpEPp73as
iancooper added a commit that referenced this pull request Sep 12, 2026
Round 7's fifth ordinary slice. Closes 0070 #1, #2, #3, #4, #6, gap C #1,
gap C #9 and gap C #10 - the whole slice, nothing left open.

WHAT LANDED - 0070 (sixteen sites) and 0075:476 (one), 17 insertions /
16 deletions, net +53 words.

- #1 The Warning ledger was eight/seven and is ten/nine.
  FailedToReleaseTransformerAfterInitFailure (TransformerFactory.cs:69,
  TransformerFactoryAsync.cs:69) is a mapper-or-transform release Warning
  on this build path, in two types :358 already lists as touched.
- #2 TransformPipelineDrain is internal static and holds no state, so the
  third step arrives as a third delegate. Step 5 now gives both new
  signatures; the touched table's "Both parameter lists are unchanged" is
  now "Each list gains one delegate and nothing else".
- #3 MessageMapperRegistry forwards (step 6); it is not one of the
  two-line no-op implementations. Step 2 and the Risks cell both narrowed.
- #4 The Create contract row promised "exactly its current behaviour",
  which step 9 abolishes; it now points at step 6's rule for that lifetime.
- #6 The roles table named the builders as the six interfaces' only
  caller. False of four: the registry forwards to the mapper factories and
  TransformerFactory[Async] calls the transformer factories' Create.
- gap C #1 The "No hidden state" Positive is falsified by 0075's three
  AsyncLocal brackets. Rewritten to the narrower true thing, and its
  generator - alternative 1's first ground - with it.
- gap C #9 Alternative 8 was "Rejected by the settled decision on C-8";
  C-8 (requirements.md:375) delegates that decision TO the ADR. Circular
  appeal deleted, the concrete reason leads.
- gap C #10 Alternative 1's third count objected to "a second public core
  type"; the set adds five. Dropped, "three counts" -> "two counts".

WHAT THE ROW GOT WRONG - it named ten sites and the batch edited seventeen.

- #1's row named three sites and said :456 "stands as written". It does
  not: its numeral IS the release-group count. Two more were unnamed -
  :300 ("leaves the seven that exist alone") and :458 ("The seven keep
  their level") - and alternative 11 carries the numeral four times, not
  once. Five sites, seven occurrences.
- #2's row named the table clause and step 5's lead but not the finalizer
  paragraph, whose bold lead asserted "Drain keeps its signature" and
  whose "a third parameter" is a FOURTH one once the fix lands. Rule 11:
  a paragraph's bold lead is a site.
- gap C #1 named 0070's bullet but not 0075:476, which quotes that
  bullet's title verbatim. Renaming the bullet falsified the sibling, so
  both ends are in this commit (rule 3).

TWO FINDINGS IN ONE PARAGRAPH, AND THE RECOMMENDATIONS WERE DRAFTS

- gap C #1 and gap C #10 both edit alternative 1. Composed from their
  evidence, not their patches (O-0073 lesson 1).
- gap C #1's own draft ground was wrong: I first wrote that a per-flow
  slot has no end tied to the pipeline's life, then found alternative 1's
  own text says the builder brackets it, so FR-5's release is reachable.
  The true ground is 0075:476's own distinction - a bit, not a resource:
  a leaked bit costs a missed adoption, a leaked scope is shared by two
  pipelines and disposed by whichever finishes first (rule 21, the house
  form already existed in the sibling).
- #6's recommendation was "split the row - one phrase cannot carry two
  families". DECLINED: there are three call patterns, not two (registries
  <- builders; mapper factories <- the registry; transformer factories <-
  the builder for CreatePipelineScope and TransformerFactory[Async] for
  Create), so a split still needs a compound phrase in the factory row and
  would duplicate a correct Responsibilities cell. One row, corrected.
- #1's recommendation put the new message in the third bullet
  (FailedToReleasePipeline). It is a different member on different types;
  it got its own bullet, which is what the +1 block below is.

COUNTER-CASES VERIFIED AND LEFT ALONE

- :396 "No ambient state anywhere ... nothing per-flow" - its subject is
  the scope-carrying mechanism, of which it is true (rule 14: narrower
  than the design, not false). :609 already states the correct set-wide
  form and NAMES 0075's flag as the only such mechanism in play; the
  Positive bullet was made consistent with :609 rather than restated.
- C-8 keeps eight body citations (:37, :41, :47, :297, :298, :299, :530,
  :656) after the appeal was deleted, so ## References owes no deletion
  (rule 21c, counted in the body).
- Residual "seven"/"eight" in 0070 are four different subjects: seven
  ADRs (:74), seventeen-of-eighteen classes (:385), the siblings' eight
  release-note items (:577) and eight broken interfaces (:579).
- Rule 12a run: no mermaid block carries a Warning count, a Drain
  parameter list or the renamed bullet. The sequence diagram already
  draws Pipeline->>Registry, which corroborates #6's fix. The class
  diagram's builder->transformer-factory edge glosses the
  TransformerFactory hop at the same level :593 already coexists with -
  unchanged before this batch and unchanged by it.
- O-0075 lesson 1 run: 0070 #8, #9, #10, #11, #12, #13, #14 and gap C
  #12, #14 re-read against the new text; none falsified. Clean for the
  third batch running.
- 0075:565's References gloss ("it removed all per-flow state from the
  design") stays true via :396 and :609 and was not edited.

BOOKKEEPING

requirements.md owes nothing and this was CHECKED against the document:
no log-message name or count appears in it at all, TransformPipelineDrain
/ Drain / releaseScope appear nowhere, "per-flow" and "hidden state"
appear nowhere, the fallback-contract wording appears nowhere, and its one
MessageMapperRegistry hit is C-17's registry-BUILDER file citation. Ninth
batch in a row to owe nothing there; that is now nine and it is still not
a rule. No frontmatter moved, so no index.md diff was owed - the
regeneration was run anyway and is empty, still 99 indexed. Fences balance
(14 in 0070, 12 in 0075); no mermaid block touched and the set still holds
26. HTML entities 0.

D8 MEASUREMENT - ONE COLUMN ROSE BY ONE

0070 259/3/0/112/82/4 -> 260/3/0/112/82/4; set 1496/26/1/881/424/26 ->
1497/26/1/881/424/26. The +1 block is the new ledger bullet: the family
gained a member, so the list did. No bold added in either column. Two
sentences I drafted crossed 40 words and were SPLIT rather than kept -
0070's 40+ sentence count falls 56 -> 55, so 0070 #7 (56, promoted into
Phase 5) is left slightly better, not worse (O-0075 lesson 6).
Phase 4's instrument was reproduced FIRST and matched the recorded
baseline exactly on all seven rows at the review's own HEAD (09856a6:
1468/27/1/864/400/26), and today's set matched O-0074's recorded
post-landing figures, before any edit. The 0075 row's apparent drift from
O-0075's note is 532b3ba, the owner-directed Terms block, and the
instrument reproduces that note's figure exactly at 18e2971.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YJjvJaUupNvDeTpEPp73as
iancooper added a commit that referenced this pull request Sep 12, 2026
… 7 (batch O-set)

Closes set #4 (68), set #8 (62), set #9 (62), set #12 (62) and set #14 (60) -
the whole batch, nothing left open. Bucket S/factual. No requirements revision.

WHAT LANDED - sixteen ADR sites in seven files, plus one index.md row.

  set #9  the shared "Where this ADR sits" preamble in ALL SEVEN drops "one
          decision each". It is false of two: 0072:31 and 0076:34 each open
          "This ADR decides two things". Each ADR's own opening sentence already
          states its own decision count correctly, so this was the second,
          drifted copy - 0070:385's house rule, an argument stated in two places
          is an argument that drifts apart, and S-a lesson 2's "drop the numeral
          from the sibling pointers" in a second guise.

  set #8  0071's `handler` tag removed; it is outside adr_frontmatter.md's
          controlled vocabulary and 0071 was the only ADR in 99 using it.
          index.md republishes tags, so the regeneration rides this commit
          (rule 4) - exactly one row moved, still 99 indexed / 101 pipe lines,
          and the regeneration is idempotent.

  set #14 FR-6 was split in fact and described as split at ONE end only.
          0070:41 claimed it unqualified under "Each requirement below is
          discharged here"; 0071:41 qualified it "for the handler family" but
          named no other end. Both now carry the house form, taken verbatim
          from 0071's own NFR-5/NFR-6 bullet: "ADR 0071 carries the handler
          half" / "ADR 0070 carries the transform half".

  set #4  FR-10 names three types (D4) and was described as split at NEITHER
          end. 0072:35 claimed it whole while declaring `IAmAScopeProvider` and
          `ScopeAffinity`; `IAmAScope` is 0070's, and the string FR-10 appeared
          nowhere in 0070. Both ends now state the division, on the FR-13 model
          0073:50 and 0074:48 already name, and 0070's ## References gains
          FR-10 (its `IAmAScope` half).

  set #12 C-8 covers the same three seam types. 0070:37 reported it "confirmed
          that the seam types live in Paramore.Brighter" while introducing one
          of them; 0072, which declares the other two in core, never cited C-8.
          0070:37 now confirms the home C-8 assumes for `IAmAScope` and names
          0072 for the other two; 0072:510 states the reciprocal and 0072's
          ## References gains C-8 (rule 21b).

WHAT THE ROW GOT WRONG

  The row named twelve sites and the batch edited SIXTEEN, plus the index.

  TWO UNNAMED, and one is in a file no set finding mentions for this subject:
  - 0072:720, ## References, which owed C-8 the moment 0072:510 confirmed a
    home (rule 21b: where a bullet names a guard, ## References owes it).
  - 0073:52, "It serves FR-10, FR-12, FR-16, FR-18 and FR-23, EACH DISCHARGED
    BY ADR 0072" - a third ADR asserting the ownership this batch divides.
    Rule 21b exactly: assigning ownership falsifies every sibling that
    previously claimed the thing, and the sweep that found it was over the
    ownership VERBS (discharg|whole of|split), not over FR-10.

  AND THE REVIEW FILE'S OWN RANKED INDEX MISNUMBERS THIS BATCH. review-design.md
  line 141's index OMITS the C-8 finding and renumbers the three below it, so
  its "set #12" and "set #14" are the set-level section's #13 and #15. The
  set-level section (line 1275) is the source and is internally consistent -
  18 findings, 14 at or above 60, rows 1-14 - and O-0072's landing note
  confirms the convention by closing "set #13" = the latches finding. A session
  trusting the ranked index would land two wrong findings.

  A RECOMMENDATION'S SITE LIST OVER-REACHED FOR ONCE, RATHER THAN UNDER-REACHING.
  set #4 says the string FR-10 appears "in neither 0070 nor 0071 - not in Scope,
  not in References", implying both owe a citation. 0071 owes NOTHING: it
  declares no FR-10 type and exposes no provider, and the property the finding
  is reaching for - that the added core member names `IAmAScope` rather than a
  container type - is already owned by NFR-1(a), which 0070 claims at 0070:49
  and 0071 explicitly routes to 0070 at 0071:48. Reading FR-10 rather than the
  finding is what settled it (rule 17).

COUNTER-CASES VERIFIED AND LEFT ALONE

  - 0070:297 "This confirms C-8's assumption" - the Home row of `IAmAScope`'s
    own contract spec, so its subject IS that one type. Narrower than its
    subject is not false (rule 14), and a qualifier added there would be a
    claim the section does not need. 0070:298 "(C-8, settled)" is the disposal
    half and is exactly right.
  - 0070:511, :521, :530 state FR-6 inside step 5, whose subject is
    `TransformPipeline<TRequest>` throughout; 0070:47 and 0071:44 cite FR-6 only
    as AC-8's tag. Citations, not claims (rule 15).
  - 0072:101 "FR-10 pairs that obligation with OOS-3" and 0073:97 "FR-10 states
    the rule on the provider" are content citations, and 0073:506 is a bare
    ## References entry - none asserts ownership.
  - The "Where this ADR sits" TABLE was not touched. Its 0072 row names one of
    that ADR's two decisions, and its 0076 row already names two - it is the
    PREAMBLE that made the rows read as exhaustive (rule 12b, a classifier
    sentence is the lead-in of every row at once). Dropping the clause leaves
    the table byte-identical in all seven, and every ## References sibling
    one-liner still matches its cell.
  - The phrase was INHERITED, and inheriting a sentence copies its truth
    conditions and not its truth: "Four ADRs came out of the #4252 lifetime
    work, one decision each" is the 0066-0069 preamble, and it is TRUE there -
    none of those four opens "decides two things" (checked). Those are Accepted
    ADRs outside the review's remit and were not touched (S-g's rule).
  - No taxonomy addition was proposed for `handler`. The house tags the
    CONCERN, not the pipeline element: 0037-reject-message-on-error-handler and
    0063-request-validation-handler both name a handler in the title and
    neither reaches for such a tag, and 0067 - the nearest sibling in subject -
    carries three tags. `lifetime, di, pipeline` already say what 0071 is
    about. Rule 21a run and it came back "delete", not "keep it and mark it".
  - Below-threshold set findings re-read against the new text: #15 (C-3/AC-21),
    #17 (OOS-6/OOS-11) and #18 (0075's title) are untouched and none is
    falsified. Note #15 is scored 55 in its own section and 60 in the ranked
    index; the section governs, so it stays closed by being below threshold.
  - Rule 12a run: no mermaid block in the set carries FR-6, FR-10, C-8 or a
    decision count.

BOOKKEEPING

  requirements.md owes nothing and this was CHECKED against the document, not
  assumed. It contains "frontmatter", "tag" and "Where this ADR sits" zero
  times; its three "one decision" hits are all "adoption decision" in AC-13 and
  AC-52; and it never assigns an FR to an ADR - the ADRs are what is brought
  into line with FR-10 and C-8, exactly as O-0071's #3 and O-0072's set #13
  were. C-8's own "The ADR should confirm this" is the document's collective
  use of "the ADR" for design (C-13), not a claim that one ADR does it.

  Fences balance (14/16/16/8/12/12/16); HTML entities 0; the set still holds 26
  mermaid diagrams and no diagram line is touched.

D8 MEASUREMENT

  NO COLUMN MOVED IN EITHER DIRECTION: set 1496/25/1/881/424/26 before and
  after, and every per-file row identical. Phase 4's instrument was rebuilt
  from PROMPT-reference.md section 8's definitions and reproduced the recorded
  baseline EXACTLY on all seven rows at 09856a6 (1468/27/1/864/400/26) on the
  first run, then matched O-front's post-landing figures before any edit.

  One column DID rise on the first pass - 0072 prose bold 101 -> 102, from a
  bolded **C-8** in step 1 - and it was removed rather than explained: D8's own
  "a fix that needs bold is in the wrong place", and 0072 already cites
  constraints unbolded (0072:646, C-12a). The reported figure is after that fix.

  0070 #7 is PROMOTED into Phase 5 (rule 18b), so its dimension was measured
  too: 0070's 40+ word sentences are 55 before and 55 after, against the review
  HEAD's 59. The batch adds one sentence to 0070 and it is not a long one.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YJjvJaUupNvDeTpEPp73as
iancooper added a commit that referenced this pull request Sep 26, 2026
Issues worked, each at every site in the file:
- the disposable clone's refs: origin/ forms, origin/master reset to the
  real one, clone figures are not calibration values (#1);
- complete K-fixture file sets, K13 and K14 added (#4, #18);
- which fixture carries which AC: AC-27 on K2, K1's complete two-path
  list under the amended FR-14, AC-40, AC-42 (#2, #3, #7, #9);
- a visible red for every script task: plain write in T3.1, atomic write
  by inspection in T7.1, in_range in T8.2, adr-unresolved fixture (#5,
  #8, #11);
- T11.1 split in three, Phase 5 dependency, baselines, T1.3 placement
  (#10, #12, #13, #14, #17);
- judged-path ACs recorded as unexercised rather than passed, and the
  coverage tables corrected (#6, #15, #16, #19);
- T17.5's AC-25 and stand-in reruns held inside the (C-8) window.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P2WY2ELStCVRM2SW3vajnr
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.

2 participants