You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Two PENDING changesets ship false connector-ledger mechanism claims into CHANGELOG.md — and they are two different classes, only one of which may be corrected #19729
Filed by the domain:spec execution seat 2, session session_01UDXER3sdqfeVYpEWZs5mZx, 2026-09-22T13:15Z. ⛔ Unlabelled and unrouted — an execution seat files, triage grades and routes. Suggested lane: domain:spec (both fragments describe packages/spec's connector ledger).
⏱️ This card has a deadline that most do not. Both fragments are PENDING.changeset/ entries. changeset versiondeletes the fragment and publishes its text into CHANGELOG.md, so every hour they sit there is an hour closer to a false mechanism claim shipping to consumers as a released changelog entry. ⛔ Do not let this age on the queue like an ordinary p3.
What is wrong, in two DIFFERENT classes — and the split is the whole point
The two fragments look like one finding. They are not, and conflating them is how a fixer produces a half-corrected record.
Class 1 — FALSE WHEN WRITTEN. These are defects in the record and must be corrected.
and packages/spec/liveness/connector.json's own authentication row — seeded by the very PR that wrote this changeset — already read 「the only value an author may write is { type: 'none' }, and anything else is LOUDLY REFUSED rather than silently dropped … Not live: the accepted value does nothing」.
⇒ the same PR wrote the false claim in its changeset and the correct one in its ledger row. That is an internal contradiction at authoring time, so ⛔ no historical archaeology is needed to call it false-when-written. And ADR-0097 §3, the instrument the sentence names, is titled 「Credentials are references」 and rejects inline secrets in stack metadata — ⛔ not the key.
(b) 「The keys an authored entry can actually reach are the ConnectorProviderContext fields plus name and enabled」
Three counts, none of which depended on anything that changed since: nameis one of those fields (connector-provider.ts:68), so 「plus name」 double-counts; provideris read on the authoring door (plugin.ts:1478, :1533) and is not on the interface, so it is missing; loadPackageFileis on the interface but is host-injected (plugin.ts:1601), so it is over-included.
Class 2 — TRUE WHEN WRITTEN, stale now. ⛔ These are a DATED RECORD and must NOT be rewritten.
the same line's 「four declared subsystems with no engine — syncConfig, fieldMappings, retryConfig, health」 — retryConfig was genuinely dead when written.
⭐ The ruling this card asks for, and why the obvious objection dissolves
The delivering round declined to touch either fragment and asked the seat. Its stated worry was that 「rewriting the mechanism sentences while leaving the dated counts produces exactly the half-corrected row this round exists to stop」.
That worry dissolves once the two classes above are separated. A dated record's job is to say what was true when it was written. So:
a sentence that was never true is a defect in the record ⇒ correct it;
a sentence that was true and has since been overtaken is the record working ⇒ ⛔ leave it, and if anything add the later fact beside it rather than overwriting it.
That is not a hybrid. It is the same rule packages/spec/liveness/README.md already applies to its own Notes, and the same one PR #19657's round 5 applied when it recorded both halves of an overtaken falsification rather than overwriting the old claim.
⇒ The ask: correct Class 1 only, in .changeset/18582:9. ⛔ Leave every Class 2 sentence exactly as written, in both fragments. If the taker judges .changeset/18983 worth a dated 「as of #18975 it also carries …」 note, that is a judgement call, ⛔ not a correction — and its conclusion stands either way.
The corrected wording already exists and can be lifted verbatim from packages/spec/liveness/README.md:942 and from connector.json's _note at PR #19657's head 657788103c9bd6cfca04ad4aaae85b6920476514 — ⛔ the taker does not need to re-derive any of it.
Ruling 5644350230 item 4's lane-split logic and the ordinary scope rule both apply: these are another card's release inputs, outside packages/spec and outside that PR's touched set. ⭐ And the distinction that makes the refusal principled rather than convenient: round 5 of that PR was failed precisely because it left a stale claim in a line its own diff touched. Neither of these fragments is such a line. ⇒ correcting them there would be a cross-card rider; correcting them here is the record.
Maintainer-action: countersign PR #19746 in writing on the PR (the route-0 DELIBERATE CORRECTION confirmation pr-automation.yml asks for), then merge it over the deliberately red Check Changeset — done when PR #19746 is MERGED and .changeset/18582-connector-analytics-cube-liveness-ledgers.md on origin/main carries the corrected line 9
Filed by the
domain:specexecution seat 2, sessionsession_01UDXER3sdqfeVYpEWZs5mZx, 2026-09-22T13:15Z. ⛔ Unlabelled and unrouted — an execution seat files, triage grades and routes. Suggested lane:domain:spec(both fragments describepackages/spec's connector ledger).⏱️ This card has a deadline that most do not. Both fragments are PENDING
.changeset/entries.changeset versiondeletes the fragment and publishes its text intoCHANGELOG.md, so every hour they sit there is an hour closer to a false mechanism claim shipping to consumers as a released changelog entry. ⛔ Do not let this age on the queue like an ordinary p3.What is wrong, in two DIFFERENT classes — and the split is the whole point
The two fragments look like one finding. They are not, and conflating them is how a fixer produces a half-corrected record.
Class 1 — FALSE WHEN WRITTEN. These are defects in the record and must be corrected.
.changeset/18582-connector-analytics-cube-liveness-ledgers.md:9carries two:(a) 「
authenticationisplanned: refused outright by ADR-0097 §3, never ignored」⭐ Measured at the merge base of PR #19657 — i.e. before any of this work touched anything:
packages/spec/src/integration/connector.zod.ts:776already readauthentication: ConnectorAuthConfigSchema.optional().default({ type: 'none' });packages/spec/liveness/connector.json's ownauthenticationrow — seeded by the very PR that wrote this changeset — already read 「the only value an author may write is{ type: 'none' }, and anything else is LOUDLY REFUSED rather than silently dropped … Notlive: the accepted value does nothing」.⇒ the same PR wrote the false claim in its changeset and the correct one in its ledger row. That is an internal contradiction at authoring time, so ⛔ no historical archaeology is needed to call it false-when-written. And ADR-0097 §3, the instrument the sentence names, is titled 「Credentials are references」 and rejects inline secrets in stack metadata — ⛔ not the key.
(b) 「The keys an authored entry can actually reach are the
ConnectorProviderContextfields plusnameandenabled」Three counts, none of which depended on anything that changed since:
nameis one of those fields (connector-provider.ts:68), so 「plusname」 double-counts;provideris read on the authoring door (plugin.ts:1478,:1533) and is not on the interface, so it is missing;loadPackageFileis on the interface but is host-injected (plugin.ts:1601), so it is over-included.Class 2 — TRUE WHEN WRITTEN, stale now. ⛔ These are a DATED RECORD and must NOT be rewritten.
.changeset/18582:9's counts 「74 properties: 20live, 1planned, 53dead」 — the seeding-time measurement. It is 29 / 1 / 44 today, because [Decision] ADR-0049 欠ConnectorSchema.retryConfig(8 个子键)与connectionTimeoutMs/requestTimeoutMs一次裁定 —— 账本已记 dead 并自陈「欠的是裁定不是清扫」,而退休会拿掉文档对 429 的唯一建议(#18794 的另一半) #18975 movedretryConfig's eight toliveand PR feat(spec)!: retire connector.connectionTimeoutMs — carried everywhere, applied nowhere #19657 retiresconnectionTimeoutMs.syncConfig,fieldMappings,retryConfig,health」 —retryConfigwas genuinely dead when written..changeset/18983-connector-header-rate-limit-remedy.md:28-30— 「ConnectorProviderContextcarries exactlyname,label,description,icon,type,providerConfig,authandloadPackageFile」. It now also carriesretryConfigandrequestTimeoutMs, added by [Decision] ADR-0049 欠ConnectorSchema.retryConfig(8 个子键)与connectionTimeoutMs/requestTimeoutMs一次裁定 —— 账本已记 dead 并自陈「欠的是裁定不是清扫」,而退休会拿掉文档对 429 的唯一建议(#18794 的另一半) #18975. ⛔ PR feat(spec)!: retire connector.connectionTimeoutMs — carried everywhere, applied nowhere #19657 did not make this false — that list never namedconnectionTimeoutMs— and its conclusion (「a provider factory is never handed either key」) still holds.⭐ The ruling this card asks for, and why the obvious objection dissolves
The delivering round declined to touch either fragment and asked the seat. Its stated worry was that 「rewriting the mechanism sentences while leaving the dated counts produces exactly the half-corrected row this round exists to stop」.
That worry dissolves once the two classes above are separated. A dated record's job is to say what was true when it was written. So:
That is not a hybrid. It is the same rule
packages/spec/liveness/README.mdalready applies to its own Notes, and the same one PR #19657's round 5 applied when it recorded both halves of an overtaken falsification rather than overwriting the old claim.⇒ The ask: correct Class 1 only, in
.changeset/18582:9. ⛔ Leave every Class 2 sentence exactly as written, in both fragments. If the taker judges.changeset/18983worth a dated 「as of #18975 it also carries …」 note, that is a judgement call, ⛔ not a correction — and its conclusion stands either way.The corrected wording already exists and can be lifted verbatim from
packages/spec/liveness/README.md:942and fromconnector.json's_noteat PR #19657's head657788103c9bd6cfca04ad4aaae85b6920476514— ⛔ the taker does not need to re-derive any of it.⛔ Why this is not a rider on PR #19657
Ruling
5644350230item 4's lane-split logic and the ordinary scope rule both apply: these are another card's release inputs, outsidepackages/specand outside that PR's touched set. ⭐ And the distinction that makes the refusal principled rather than convenient: round 5 of that PR was failed precisely because it left a stale claim in a line its own diff touched. Neither of these fragments is such a line. ⇒ correcting them there would be a cross-card rider; correcting them here is the record.Duplicate-search words
changeset ConnectorProviderContext,authentication refused outright,connector ledger seeding counts,changeset-18983 interface enumeration,pending changeset false mechanismMaintainer-action: countersign PR #19746 in writing on the PR (the route-0 DELIBERATE CORRECTION confirmation
pr-automation.ymlasks for), then merge it over the deliberately redCheck Changeset— done when PR #19746 is MERGED and.changeset/18582-connector-analytics-cube-liveness-ledgers.mdonorigin/maincarries the corrected line 9Generated by Claude Code