CHANGELOG: the 2026-09-18 board — fifty-four entries from two seats' fifty-nine merged PRs, spliced once - #3672
Merged
Merged
Conversation
…spliced once Fifty-nine PRs merged to dev today across the coordinator's lanes and the wave-2 worker's; each lane returned its entry to a buffer instead of touching this file, so that fifty-plus PRs did not each rebase the same twenty lines. This is the one splice. Every entry is one line (the archiver's compact() and the pins read them that way); riders fold into their parent's entry (#3599 under #3590, #3619 under #3611, #3623 under #3616, #3640 under #3633; #3617 test-only and #3661 re-cut as #3666 carry none); #3657's entry is in because it MERGED to dev - the twin to main is what is still pending. [Unreleased] gains a `### Added` above `### Fixed` (Keep-a-Changelog order) for the six new capabilities: per-user theme colours (#3606 / #3577 arm B), routed alert families (#3668 / #3598), the PostgreSQL logging audit tool (#3643 / #3607), the service-side wait sampler (#3645 / #3604), and the log-event classifier with its temp-file / autovacuum parser families (#3646 / #3601, #3664 / #3602 #3603). The other forty-eight are honesty fixes to existing surfaces and append to `### Fixed` after the wave-1 bullets, in PR-number order. Thirty-six reference definitions added for the issues the new entries cite and the index did not yet define; the [Unreleased] group is one ascending run again, which moves [#3557] into its slot (the one deleted line). Nothing under ## [3.8.0] or older is touched; the archive script was not run. One editorial touch: the #3585 entry ended in a dangling "Darling" and now reads "Darling only." (the tool exists only in the Darling MCP host). tools/changelog/changelog_archive.py verify: all PASS (1420 bold entries, floor 1,329; 1,358 distinct refs resolve; CRLF throughout; 356,539 bytes under the 750 KiB ceiling). ChangelogIndexAndArchiveTests: 5/5 pass via a net10.0 harness.
This was referenced Sep 19, 2026
erikdarlingdata
added a commit
that referenced
this pull request
Sep 19, 2026
… PRs across the #3653, #3542 and #3691 waves, #3704, #3710, #3712 and #3735, spliced once (#3751) Sixty-five PRs merged to dev since #3672 (the first splice) across two seats - the coordinator's #3653 brains-review residue lanes and the wave-2 worker's #3542 / #3691 PostgreSQL-target engine lanes - and by rule none touched this file; each returned its entry to a buffer. This is the one splice. Text-only; one file; nothing outside ## [Unreleased] and the definition block moves. [Unreleased] gains a ### Changed between ### Added and ### Fixed (Keep-a-Changelog order) for the nine entries whose subject is a designed behaviour that now behaves differently - routing (#3712 confidence chooses the channel), gating (#3692 tempdb persistence, #3734 blocking/LRQ gates, #3724 peak-and-mean), the wire shape (#3719 one error envelope), the review guard's drift arm (#3673), lineage metadata (#3723) and two grading changes (#3693, #3747). Twenty-two new capabilities append to ### Added (the sixteen PostgreSQL-target fact families and rungs, CONFIG_CHANGED, the recurrence label, the V134/V135 columns, the review traps file, the measurement census); thirty-two defects append to ### Fixed. Order within each section is ascending PR number, as #3672 did. Every entry is one line and verbatim from its buffer (trailing whitespace only). Four PR pairs fold into one entry as the buffers wrote them (#3738+#3746, #3683+#3686, #3681+#3685, #3726+#3729); #3695 carries three entries. #3673 has no issue and cites none, like the file's ninety-six other ref-less entries. Five definitions added ([#3691], [#3704], [#3710], [#3712], [#3735]) at the end of the [Unreleased] run, which stays one ascending run (3517..3735). No archive touched; the split was not run. tools/changelog/changelog_archive.py verify: all PASS (1,483 bold entries, floor 1,329; 1,363 distinct refs resolve; 1,372 definitions; CRLF throughout; 409,263 bytes under the ceiling). Client-hygiene grep over the file: zero hits.
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.
What this is
Fifty-nine PRs merged to
devon 2026-09-18 across two seats — the coordinator's lanes and the wave-2 worker's — and by rule none of them touchedCHANGELOG.md: each returned its entry to a buffer so that fifty-plus PRs would not each rebase the same twenty lines of[Unreleased]. This is the one splice. Docs-only; one file.Mechanism
## [Unreleased]: 6 under a new### Added(placed above### Fixed, Keep-a-Changelog order — Added, Changed, Fixed) and 48 appended to### Fixedafter the 21 wave-1 bullets, in PR-number order.[Unreleased]goes from 21 to 75 bullets.devat1dae2ade(gh pr view 3657 --json state→ MERGED); the twin tomain(A Claude review that posted nothing no longer finishes green: read-only tools end the denial churn, the job fails when no verdict was submitted, and the transcript survives the runner (main copy, lands first) #3656, closed) is what is still pending under the release train. The entry describes thedevworkflow, which is what shipped.tools/changelog/changelog_archive.py'scompact()reads the first bold span as the title and folds the entry's[#N]s after it; a wrapped entry would archive as two. Shape matches the file byte-for-byte:- **Title** ([#N]) - prose,([#N], [#M])for the one two-issue entry (The log said what the spill cost and what the vacuum cost, and the store kept the sentence: two parser families lift bytes and run figures into V130 columns of pg_log_events, and autovacuum health shows per-table run cost beside the catalog (#3602, #3603) #3664 → Per-event temp spill attribution from log_temp_files — counters know a database spilled, not which execution spilled 4 GB at 03:07 #3602, Autovacuum per-run cost from log_autovacuum_min_duration — the health view says whether it ran, not what it cost #3603). Annotated parentheticals (([#3541] A2),([#3542] v1 plumbing)) follow the released precedent of([#2138] phase 1)and([#1840] review).[#N]the new entries cite that the index did not already define. The[Unreleased]definition group (the leading run before 3.8.0's) is now one ascending run of 57; the only deleted line in the diff is[#3557], which sat after[#3563]and moved into its sorted slot. Context refs[#2159],[#2711],[#3287]were already defined and are reused; bare#3579-style mentions inside prose need no definition (house style, e.g. the get_memory_trend: join the grants series so total_granted_mb carries real data (complete fix for #3529) #3548 bullet). All 36 verified as issues, not PRs, so the/issues/Npath is right. Definitions: 1,331 → 1,367.## [3.8.0]or older is touched. The archive script was not run (splitis for the release cut).…produced by construction. Darling— and now readsDarling only.(get_store_metricsexists only in the Darling MCP host; verified by grep).Added vs Fixed — the judgment
New capabilities are Added; honesty fixes to existing surfaces are Fixed.
theme-overrides.json, live re-apply — a feature that did not exist (flagged Added by the lane).config_notification_routestable (V131), a closed family taxonomy, three MCP tools, a viewer grid, hot-reload — new routing capability (flagged Added by the lane).get_pg_logging_auditis a new MCP tool; nothing existing was corrected.collect.pg_log_events, V129), new shared tailer, newget_pg_log_eventstool.recent_runsonget_pg_autovacuum_health— extends #3646's new capability rather than correcting an existing surface.One I left in Fixed per the brief's "everything else" rule but would flag for a second look: #3665 (#3542 v1 plumbing, "PostgreSQL targets enter the analysis pipeline"). Its branch is
feat/, it introduces apg_fact vocabulary and a second engine component set, and "no schema, no content" is true but it is still a capability PostgreSQL targets did not have. If the coordinator reads it as Added it is a one-line move. Thefeat/3540-*pair (#3595 V127, #3630 V128) stays Fixed with confidence: the schema columns exist to stop a fabricated 0.00 reading, which is an honesty fix.Audit trail — every entry's PR → issue
get_store_metrics'job_historyblock now says whose eyes its rows are visible to, and proves rows exist where it canMerge-state check (all 59 PRs above): every one reads MERGED with base
dev, and every merge commit is an ancestor of this branch's base (git merge-base --is-ancestor). The buffers'[PR open]markers on #3583, #3587, #3588, #3589 were stale — all four had merged. No header in either buffer was still marked PROVISIONAL (already cleaned before I read them); no PR number appears twice.Not placed (merged after the buffers closed, no buffered entry): #3669 (#3542 durability posture,
6ddee19d) and #3670 (#3542 PG_BAD_ACTOR top statements,e0041b5c) merged todevwhile this lane ran. Their entries belong to the #3542 content lanes' buffer and are not in either file I was given; this branch is fast-forwarded onto them (neither touchedCHANGELOG.md) so the next splice appends cleanly.What it does NOT do
Closeskeyword — there is none to close).docs/changelog/*,tools/changelog/archive-census.txt, or any released section.Verification
python3 tools/changelog/changelog_archive.py verify— all PASS: 356,539 bytes (ceiling 768,000); CRLF throughout (the.gitattributeseol=crlfcheckout form — the splice was done in Python with explicit\r\nso no line was silently converted); every[#N]resolves (1,358 distinct); 1,420 bold entries against the 1,329 floor; every archive's census row still matches.Darling.Tests/ChangelogIndexAndArchiveTests— 5/5 pass, executed on this Mac via a throwaway net10.0 xunit harness compiling that one file with its output underDarling/Darling.Tests/bin/so the walk-up toPerformanceMonitor.slnresolves (the harness output was removed before commit;git statusclean but forCHANGELOG.md).Review-dark self-review
CHANGELOG.mdonly — the[Unreleased]section and its definition group.### Addedheading — new subsection in[Unreleased]; pinned byverify's section parse and the archiver'sgroup_prose, which treats###as a group boundary. (b) The moved[#3557]definition — a move, not a loss; pinned by "every[#N]resolves" on both instruments. (c) The get_store_metrics: the job_history block said 'recording' and never said whose eyes the rows are visible to — it now evaluates the view's ownership filter for its own reader and proves rows exist where it can (#3574) #3585Darling only.edit — the one word I wrote; pinned only by the grep thatget_store_metricslives underDarling/.[#3542]'s single definition is right when three more PostgreSQL-target analysis engine: design and v1 build #3542 lanes (A PostgreSQL target's durability posture is stated, not inferred: fsync and full_page_writes off are CRITICAL policy cards, synchronous_commit off names the commits a crash discards, Aurora's managed pair is present and ungraded, and no tuning path can reach any of them (#3542 lane 8) #3669, A PostgreSQL analysis pass now names the statement: PG_BAD_ACTOR facts from pg_statement_stats carry one shape's share of the window's execution time, its calls/sec and mean, and a drill-down with the normalised text — the query-shaped leaf every PostgreSQL story needs (#3542 lane 7) #3670, and the rest) will cite it — it is, definitions are per file not per entry.