Skip to content

Commit 65d4fff

Browse files
os-samclaude
andauthored
docs(metadata-protocol): name each decline list's remit and close the JSDoc's flow-conflict gap (#9271) (#9556)
`migrateStoredMetadata` is described by two hand-written decline lists that were not the same enumeration, and nothing enforced either count. - `protocol.ts` JSDoc: add the missing "a flow whose rename the conflict guard refused" bullet. That path is internal to the function and reachable from every door, so its absence was a real omission rather than a scope choice. - `protocol.ts` JSDoc: the remit sentence PR #9270 landed closed with "that does not by itself account for every difference ... see #9271". With the bullet above added, it now does, so the clause is restated as the finished fact it has become. - `cli.mdx`: name the decline table's remit — the operator-observable surface — and say which single member the JSDoc carries that it does not, and why no operator door can reach it. The two lists now differ by exactly one member, in one direction, for a stated reason. Prose only; no behaviour change. Claude-Session: https://claude.ai/code/session_017qYPmkKEsfbWY1yVg83p8F Co-authored-by: Claude <noreply@anthropic.com>
1 parent 955ccf2 commit 65d4fff

2 files changed

Lines changed: 22 additions & 6 deletions

File tree

content/docs/deployment/cli.mdx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -856,7 +856,12 @@ is `migrate-stored`, so a later diff shows which changes were an upgrade and
856856
which were somebody's edit.
857857

858858
What it deliberately declines, and names in the report rather than
859-
counting as done:
859+
counting as done. This table is the **operator-observable** surface — what a
860+
run can actually report, from the command above or the route below. The
861+
function's own JSDoc in `packages/metadata-protocol/src/protocol.ts` documents
862+
its full internal surface instead, and so lists one decline more: flow rows
863+
skipped for want of a reachable automation engine, which neither operator door
864+
can produce, because both supply a live one.
860865

861866
| Not rewritten | Why |
862867
| :--- | :--- |

packages/metadata-protocol/src/protocol.ts

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13183,20 +13183,31 @@ export class ObjectStackProtocolImplementation implements
1318313183
*
1318413184
* ## What it declines to touch, and says so
1318513185
*
13186-
* This section documents the function's internal surface, which is not
13187-
* always identical to what an operator running the CLI can observe:
13186+
* This section documents the function's FULL internal surface, which is
13187+
* not always identical to what an operator running the CLI can observe:
1318813188
* `os migrate meta --stored` always passes its own automation engine
1318913189
* (see `canonicalizeFlow` above), so the first bullet below is never
13190-
* observed from that door. That does not by itself account for every
13191-
* difference between this list and `content/docs/deployment/cli.mdx`'s
13192-
* decline table — see #9271.
13190+
* observed from that door. That is now the only difference between this
13191+
* list and `content/docs/deployment/cli.mdx`'s decline table, which
13192+
* documents the operator-observable surface and so carries the other
13193+
* four. #9271 ruled that split intentional: keep each list correct for
13194+
* its own audience rather than reconciling them.
1319313195
*
1319413196
* - **`flow` rows with no reachable automation engine.** Flow-node
1319513197
* conversions carry ADR-0078's open-namespace conflict guard, which
1319613198
* needs the engine's live executor registry. When one is reachable —
1319713199
* passed as `canonicalizeFlow`, or resolved from the services registry
1319813200
* (#4498) — flows are migrated like anything else (#4454); when none is,
1319913201
* they are reported `skipped` with that reason, never counted done.
13202+
* - **A flow whose rename that guard refused.** With an engine reachable,
13203+
* the same open-namespace check can still find the old node-type token
13204+
* is a LIVE name something else owns here. The conversion is refused and
13205+
* the row reported `failed`, naming the token and its path: rewriting
13206+
* would clobber that owner, and a quiet skip would hide it. Unlike the
13207+
* bullet above this one IS reachable from every door — the CLI boots an
13208+
* inert engine to hold the registry, and `POST /meta/_migrate-stored`
13209+
* resolves a live one from the services registry — so
13210+
* `content/docs/deployment/cli.mdx` carries it too.
1320013211
* - **Types with no repository write path** (neither `allowOrgOverride` nor
1320113212
* `allowRuntimeCreate`). This pass declines them, and since #5086 it
1320213213
* would have no choice: `saveMetaItem` refuses a code-only type with

0 commit comments

Comments
 (0)