docs(v4): diagnostic-family amendment - third object kind + RDPlot rename rows - #704
Conversation
…name rows Spec section 3.5 formalizes diagnostics as a third object kind alongside estimators and results, with exactly one load-bearing bit: estimator results carry the canonical inference quintet, diagnostic results do not. Membership is the library's EXISTING Diagnostics-and-Sensitivity docs family made checkable (parallel-trends testing, placebo suite, HonestDiD, pre-trends power, power analysis), with BaconDecomposition and RDPlot re-homed into it at 4.0 [M-090] and the upcoming CJM 2020 density test born into it. One Diagnostic marker base ships additively in Phase 2 on the class-shaped members (input shape deliberately unconstrained: data-in and results-in both belong); function members stay functions; import paths do not move; zero new classes beyond the base. (A narrower classes-only tier with HonestDiD/PowerAnalysis carve-outs was drafted and rejected: the docs family already draws the right line.) RDPlot.fit()'s post-freeze outcome_col/running_col params get standard rename rows [M-088]/[M-089] under the spec's missed-rename clause - the ledger's first live maintenance event. 74-row ledger; snapshot/floor updated in the same diff. Docs + ledger + test counts only; no public API or numerical behavior change. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eVKbBqzenDKa5idwtexQa
Overall AssessmentExecutive Summary
MethodologyNo findings. The Registry identifies RDPlot as non-estimating ( Code QualityNo findings. PerformanceNo findings; documentation and enforcement-test changes only. MaintainabilityM-091 does not gate promised consumer propagation
Tech DebtNo findings. SecurityNo findings; no secrets or executable security-sensitive changes detected. Documentation/TestsThe claimed “existing” family does not match current documentation
M-090 omits named documentation surfaces
Path to Approval
|
…framing, API-roster surface M-091's done-gate now requires consumer propagation, not just marker membership: BusinessReport must reject marked diagnostics as primary estimator input BY TYPE (today it special-cases only Bacon by name) and practitioner_next_steps must route marked diagnostics through diagnostic handling (not the unknown-result estimator fallback) - consumer files added to the row's scope. Section 3.5 reframed honestly as a NEW canonical consolidation anchored on (not identical to) the docs family, with explicit reclassifications and non-members (Conley is an embedded inference method, not a diagnostic object). M-090 gains docs/api/index.rst (which lists Bacon as an estimator today) and a terminal grouping assertion. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eVKbBqzenDKa5idwtexQa
|
🔁 AI review rerun (requested by @igerber) Head SHA: Overall Assessment✅ Looks good — no unmitigated P0 or P1 findings. Executive Summary
MethodologyNo findings. Registry support: Code QualityStale release-gate docstring
PerformanceNo findings. MaintainabilityNo findings. M-091 now names the reporting consumers and requires type-based routing tests ( Tech DebtNo findings. SecurityNo findings; no secrets or security-sensitive executable changes were introduced. Documentation/TestsNo findings. The prior documentation concerns are resolved by the canonical-consolidation wording and M-090’s explicit API roster coverage ( |
…ate rule Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eVKbBqzenDKa5idwtexQa
|
🔁 AI review rerun (requested by @igerber) Head SHA: Overall AssessmentExecutive Summary
MethodologyNo findings. RDPlot is explicitly non-estimating ( Code QualityNo findings. PerformanceNo findings. Maintainability[Newly identified] DiagnosticReport propagation is not release-gated
Tech DebtNo findings. SecurityNo findings. Documentation/TestsPublic documentation index is outside M-090’s gate
Path to Approval
|
…cs homepage surface M-091's consumer-propagation criteria now cover all three named consumers: DiagnosticReport itself must route by the marker (at least one non-Bacon marked result handled as a diagnostic, never via estimator fallback, with Bacon's read-out retained and tested). M-090 gains docs/index.rst - the docs homepage also lists Bacon under Supported Estimators today. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eVKbBqzenDKa5idwtexQa
|
🔁 AI review rerun (requested by @igerber) Head SHA: Overall Assessment✅ Looks good — no unmitigated P0 or P1 findings. Executive Summary
MethodologyNo findings. Registry confirms RDPlot is not an estimator and Bacon is diagnostic ( Code QualityNo findings. PerformanceNo findings. MaintainabilityNo findings. The previous marker-propagation gap is resolved ( Tech DebtNo findings. SecurityNo findings. Documentation/TestsNo findings. The homepage is included in M-090’s gated surfaces ( |
Summary
BaconDecompositionre-homed out of the API estimator roster at 4.0 andRDPlotconsolidated under the unified family grouping. (A narrower classes-only tier with HonestDiD/PowerAnalysis carve-outs was drafted and rejected: the docs family already draws the right line.)Diagnosticmarker lives on RESULT containers (consumers hold results, not entry points): the enumerated roster spans Bacon/RDPlot/HonestDiD/pre-trends/power/placebo/HAD-pretest/DiagnosticReport result types, exempt from the section 5 quintet BY TYPE and isinstance-checkable so BusinessReport/DiagnosticReport/practitioner routing stop special-casing by name. Entry points are not marked; input shape (data-in vs results-in) is deliberately unconstrained; raw-dict functions andTWFEWeightsResultparticipate in the docs family only (explicit narrowing). No import-path moves; zero new classes beyond the single marker base.introduced_in: "3.9"- a 3.9 release cannot ship without the marker + its full-roster test (and the due gate now rejectsevaluateas a dodge, with a regression fixture); [M-090] separately gates the 4.0 docs/roster reorganization; [M-088]/[M-089] migrateRDPlot.fit()'s post-freezeoutcome_col/running_colparams under the spec's missed-rename clause - the ledger's first live maintenance event, working as designed.Forward-reference note for review:
newlocators onplannedledger rows name 3.9/4.0 surface that does NOT exist at HEAD -tests/test_v4_matrix.pyasserts their ABSENCE until the owning phase ships.Methodology references (required if estimator / math changes)
Validation
tests/test_v4_matrix.py- 170 checks green (75-row snapshot/floor, hardenedintroduced_ingate rejectingplanned/evaluate, new regression fixture); ledger/spec crossrefs verified.Security / privacy
🤖 Generated with Claude Code
https://claude.ai/code/session_017eVKbBqzenDKa5idwtexQa