Commit e169acb
docs(changeset): make the two pending connectionTimeoutMs notes true when read as one release (#19918)
Fixes #19851
Clause-②: no
## What this changes
Changeset text only: two PENDING notes on `origin/main`,
`.changeset/18975-connector-retry-config-and-request-timeout.md` and
`.changeset/19580-retire-connector-connection-timeout-ms.md`, `+47 /
-29`. No code, no other file, and no frontmatter line: packages and
levels are byte-identical to the merge base.
Both notes go into the same next release. The last tag is
`@objectstack/*@17.4.0`. On npm, `latest` for `@objectstack/spec`,
`connector-rest`, `connector-openapi`, `connector-mcp`,
`connector-slack` and `service-automation` is `17.4.0`, published
2026-09-09, with no version after it. Read together as that one release,
the base text said that `ConnectorProviderContext` **gains**
`connectionTimeoutMs`, and also that the same member, called "a
published interface member", is **removed**. It also misstated what the
residue stage does with the default value, and it anchored its read
census to a moving ref. After this PR, every sentence the two notes
publish is true of what that release ships.
## DELIBERATE CORRECTION: this PR awaits the maintainer's written
confirmation, and `Check Changeset` is red on purpose
This PR adds no changeset of its own. It changes two pending changesets
it did not add. Route 0's discriminator against the merge base:
```
$ git diff --name-status 8490127 HEAD -- '.changeset/*.md'
M .changeset/18975-connector-retry-config-and-request-timeout.md
M .changeset/19580-retire-connector-connection-timeout-ms.md
```
Every row is `M` and none is `A`, so this is the DELIBERATE CORRECTION
class that `scripts/check-empty-changeset.mjs` names. It is not a
COLLISION: nothing of this PR's own was overwritten, and restoring the
base copies would republish the false sentences.
- ⛔ No `skip-changeset` label, and ⛔ no new changeset file (ruling D on
#18375).
- `Check Changeset` stays **advisory red**. It is not one of the seven
required contexts. Every other check should be green.
- **This PR awaits the maintainer's one-sentence confirmation of the
correction.** The owning seat carries it to this PR with its provenance
(who, the words, where). The PR is not to be armed before that
confirmation is on it.
## Measurements (taken before editing a word)
The worktree was cut at merge base `8490127962`. The checkout is a full
clone (`git rev-parse --is-shallow-repository` answers `false`).
### M1: the three members entered after 17.4.0, and no release carried
them
| Question | Instrument | Reading |
|---|---|---|
| When did each member enter and leave? | `git log -G
'connectionTimeoutMs\?:' origin/main` on `connector-provider.ts`,
`rest-connector.ts` and `openapi-connector.ts` | For all three files, it
entered with `b929e0a662` (2026-09-20, #19388) and left with
`fc29c74400` (2026-09-23, #19657). |
| Is `b929e0a662` in any release? | `git tag --contains b929e0a` | 0
tags. |
| Same question, by ancestry | `git merge-base --is-ancestor b929e0a
'@objectstack/spec@17.4.0'` | **exit 1**. The control leg is
`@objectstack/spec@17.3.0` (`8a1bad8b8e`), in the same checkout, against
the same target, an older commit: **exit 0**. |
| Is 17.4.0 the newest release? | `git ls-remote --tags origin
'refs/tags/@objectstack/spec@*'` and `npm view @objectstack/spec
dist-tags time` | The newest tag is `17.4.0`, which peels to
`7e6337007f`. The `connector-rest`, `connector-openapi` and
`service-automation` 17.4.0 tags point at the same commit. npm has
`latest` `17.4.0` and `rc` `17.0.0-rc.6`, and nothing was published
after 2026-09-09T03:57Z. |
| What did 17.4.0 ship? | `npm install @objectstack/spec@17.4.0`, then
read `dist/integration/index.d.ts` | `interface
ConnectorProviderContext` has `name`, `label`, `description`, `icon`,
`type`, `providerConfig`, `auth` and `loadPackageFile`. It has no
`connectionTimeoutMs`, and no `retryConfig` or `requestTimeoutMs`
either. |
| same | `npm pack @objectstack/connector-rest@17.4.0` and
`@objectstack/connector-openapi@17.4.0`, then read every `.d.ts` |
`interface RestConnectorOptions` and `interface OpenApiConnectorConfig`
are present (the control), with **0** `connectionTimeoutMs` occurrences
in any `.d.ts`. |
| What does the next release ship? |
`packages/spec/src/integration/connector-provider.ts:67` at the merge
base | `ConnectorProviderContext` declares `retryConfig` and
`requestTimeoutMs`. `connectionTimeoutMs` appears only in a "REMOVED"
comment. `rest-connector.ts:42` and `openapi-connector.ts:130` have
comments only. |
The authorable key **was** published. In the 17.4.0 source,
`connector.zod.ts:839` reads `connectionTimeoutMs:
z.number().min(1000).max(300000).optional().default(30000)`, and
`DeclarativeConnectorEntrySchema` (`:955`) is built on
`ConnectorSchema`. The M2 probe of the released 17.4.0 package shows
`ConnectorSchema` accepting and keeping an authored `15000`. So "a
published authorable key is removed on two carriers" stays true, and it
is now the only thing the Clause-② sentence rests on.
### M2: parse probes, with the path each refusal is reported at
For today's tree, `tsx` ran against `packages/spec/src` at the merge
base, for four carriers. The entry is `{ name: 'ledger_api', label:
'Ledger API', type: 'api' }` plus the key:
| `connectionTimeoutMs` | `ConnectorSchema` |
`DeclarativeConnectorEntrySchema` | `getMetadataTypeSchema('connector')`
| `ObjectStackSchema` (`connectors: [entry]`) |
|---|---|---|---|---|
| absent (control) | accept, key absent | accept, key absent | accept,
key absent | accept, key absent |
| `30000` | **accept, key stripped** | **accept, key stripped** |
**accept, key stripped** | **accept, key stripped** |
| `15000` | refuse `invalid_type` @ `connectionTimeoutMs` | same | same
| refuse `invalid_type` @ `connectors.0.connectionTimeoutMs` |
| `1000` | same as `15000` | same | same | same |
| `"30000"` (string) | same as `15000` | same | same | same |
Every refusal message names `requestTimeoutMs`. In every accepted case
`requestTimeoutMs` still reads `30000`, the control that shows the stage
leaves the live sibling alone. `ConnectorSchema` is a `pipe` whose input
stage is a `transform`. The tombstone **without the stage** is the
pipe's inner object. It refuses `30000` at `connectionTimeoutMs`, and it
accepts the same entry with the key absent (the control).
Released side: `@objectstack/spec@17.4.0` from npm emits
`connectionTimeoutMs: 30000` for that entry on `ConnectorSchema`, on
`DeclarativeConnectorEntrySchema` and on `ObjectStackSchema`, and it
accepts and keeps an authored `15000`. `npm pack` of `connector-mcp`,
`connector-openapi`, `connector-rest` and `connector-slack` at `17.4.0`
each ship one literal `connectionTimeoutMs: 3e4` in their JS.
### M3: which sites READ the key (one number: **six**)
The instrument is `git grep -n connectionTimeoutMs SHA -- .
':!packages/spec'`, keeping non-test code files. It was run at
`e07843b5a6`, the parent of the landing commit `fc29c74400`, and gives
an identical result at `6eaa0f4a81`, the review's merge base. The result
is 13 occurrences, 7 files, 5 packages:
- **6 reads:** `openapi-connector.ts:242`, `openapi-provider.ts:193`,
`rest-connector.ts:134`, `rest-provider.ts:64`, `plugin.ts:307`,
`plugin.ts:1589`
- 4 type declarations: `openapi-connector.ts:135`,
`rest-connector.ts:47`, `plugin.ts:291`, `plugin.ts:339`
- 3 literal `30000` writes: `mcp-connector.ts:247`,
`slack-connector.ts:94`, `plugin.ts:1782`
Six read expressions sit at six file:line locations. The "five sites"
phrasing elsewhere counts the two `?? 30000` fallbacks as one site: it
is the same set in a different unit (see the acceptance notes). Within
the changesets, the one count used is **six reads**, and the tree it was
taken on is now named. `0870fb5418`, which the note cites for the
earlier census, re-measures at exactly five hits, all
`connectionTimeoutMs: 30000,`, as the note says.
## Old and new, per file
### `.changeset/18975-connector-retry-config-and-request-timeout.md`
**(a)** This release does not add a member that the same release removes
(M1).
> old: `ConnectorProviderContext` gains `retryConfig`,
`connectionTimeoutMs` and `requestTimeoutMs`, read-only and resolved
from the entry …
> new: `ConnectorProviderContext` gains `retryConfig` and
`requestTimeoutMs`, read-only and resolved from the entry …
**(b)** The key is no longer described as "carried onto
`ConnectorProviderContext`" and "owed a decision". The same release
retires it, and no release carries it on the context (M1). The mapping
and the ledger still record the reason: `connector-fetch-policy.ts:57`
and `liveness/connector.json` `props.connectionTimeoutMs.status: dead`,
both at the merge base.
> old: **1 parent 19af43d commit e169acb
2 files changed
Lines changed: 47 additions & 29 deletions
Lines changed: 12 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
| 31 | + | |
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
| 59 | + | |
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
71 | 71 | | |
72 | | - | |
73 | | - | |
74 | | - | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
Lines changed: 35 additions & 18 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
| 28 | + | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
32 | | - | |
| 31 | + | |
33 | 32 | | |
34 | 33 | | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
35 | 42 | | |
36 | 43 | | |
37 | 44 | | |
| |||
41 | 48 | | |
42 | 49 | | |
43 | 50 | | |
44 | | - | |
| 51 | + | |
| 52 | + | |
45 | 53 | | |
46 | 54 | | |
47 | 55 | | |
| |||
73 | 81 | | |
74 | 82 | | |
75 | 83 | | |
76 | | - | |
| 84 | + | |
| 85 | + | |
77 | 86 | | |
78 | 87 | | |
79 | 88 | | |
| |||
85 | 94 | | |
86 | 95 | | |
87 | 96 | | |
88 | | - | |
89 | | - | |
90 | | - | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
91 | 102 | | |
92 | 103 | | |
93 | 104 | | |
| |||
103 | 114 | | |
104 | 115 | | |
105 | 116 | | |
106 | | - | |
107 | | - | |
108 | | - | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
109 | 125 | | |
110 | 126 | | |
111 | 127 | | |
112 | 128 | | |
113 | 129 | | |
114 | 130 | | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
119 | 137 | | |
120 | 138 | | |
121 | 139 | | |
| |||
126 | 144 | | |
127 | 145 | | |
128 | 146 | | |
129 | | - | |
130 | | - | |
131 | | - | |
| 147 | + | |
| 148 | + | |
132 | 149 | | |
133 | 150 | | |
0 commit comments