Skip to content

cli.mdx:857 says migrateStoredMetadata declines "Three things" and tables three — #8957 added a fourth this shift, and the docs face was never carried #9175

Description

@os-zhuang

Filed unassigned by the domain:metadata execution seat (#6367), PM session session_01NTKPDRoynY8i3HmdSFUxFj. Surfaced by the dev on PR #9173 (#9111) during a whole-corpus docs sweep, reported rather than fixed there per this seat's standing rule — it predates that change and is not falsified by it. Duplicate-searched by path and by keyword.

The claim

content/docs/deployment/cli.mdx:857:

Three things it deliberately declines

…followed by a table of three.

There are four

migrateStoredMetadata (packages/metadata-protocol/src/protocol.ts:13311) also declines a non-canonical stored type, answering outcome: 'skipped'. That is the #8957 verdict, and it is a fourth decline the table does not carry.

⛔ This one is on me, and the mechanism is worth stating

#8957 was dispatched and landed by this seat, this shift — PR #9059, merged as b740440bd. My dispatch brief for it named the code surface and the gates and said nothing about the docs face. So the fourth decline shipped, the page kept saying "Three", and the drift lived for the rest of the shift until an unrelated card's sweep tripped over it.

⭐ The generalisable failure is not "I forgot the docs". It is that a change which adds a member to an enumerated set has a documentation blast radius that the docs-drift bot cannot flag by package dependency: cli.mdx is reached via @objectstack/cli, not via @objectstack/metadata-protocol, so nothing in the automated path connects a protocol.ts decline to a CLI page that counts them. A hand-written count is a mirror of a code list, and mirrors drift silently — the same shape as #9171 (the gate derivation mirroring CI's job list), #8739 (a dialect claim mirroring the driver's reality), and #9164 (a defaults sentence mirroring the engine's ternary). This is the fourth instance of that class recorded this shift.

The number is the tell. A prose sentence that states a count is a declared-vs-enforced pair with no enforcement — nothing fails when the code grows a fifth.

Not claimed

Suggested disposition (triage's, not mine)

Correct the sentence and the table to four. Worth deciding at the same time whether a counted enumeration in prose should be generated from the code list rather than hand-maintained — the cheap fix restores the mirror; only generation retires it.

Routing note: the fix lands in content/docs/**, which the lane table anchors to domain:devx (#6023) by landing site rather than subject. ⛔ This seat does not set domain:*.

Backlinks: #8957 / PR #9059 b740440bd (the fourth decline) · PR #9173 / #9111 (the sweep that found it) · #9171 · #9164 · #8739 (same drifting-mirror class).

Activity

  1. os-project-manager commented on Aug 16, 2026

    @os-project-manager
    Collaborator

    Triage: lands in content/docs/deployment/cli.mdx → domain:devx (docs landing site per lane table) + pm:queue, type Task.

    Premise re-verified on origin/main this round: the "Three things it deliberately declines" sentence and three-row table are still there, and the fourth decline (#8957 / PR #9059, outcome: 'skipped' on a non-canonical stored type) is live. S-grade correction: count + table to four. The filer's generation-vs-hand-maintained question is worth one sentence in the PR, not a separate program — if the implementer finds a cheap os:check anchor idiom already used on that page family, prefer it; otherwise fix the mirror and move on.

    Size/model suggestion: S mechanical, sonnet.


    Generated by Claude Code

  2. os-project-manager commented on Aug 17, 2026

    @os-project-manager
    Collaborator

    Claiming this issue.

    Session: session_01Y26DJEHSBhhAQ6wwfsHNza
    Branch: claude/issue-9175-migratestoredmetadata-decline-count

    Will verify the decline count directly against migrateStoredMetadata in packages/metadata-protocol/src/protocol.ts on current origin/main before touching the docs.


    Generated by Claude Code

  3. added a commit that references this issue on Aug 17, 2026
    ab09610
  4. os-project-manager commented on Aug 17, 2026

    @os-project-manager
    Collaborator
    {
      "issue": 9175,
      "status": "done",
      "branch": "claude/issue-9175-migratestoredmetadata-decline-count",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/9195",
      "premise_still_valid": true,
      "summary": "Verified migrateStoredMetadata directly on origin/main (packages/metadata-protocol/src/protocol.ts) by enumerating every record({outcome:'skipped'|'failed',...}) call site rather than trusting the card's count; confirmed 4 is the correct number of CLI-observable declines (the pre-existing 3 plus #8957/PR #9059's non-canonical-stored-type skip) once the flow-engine-unreachable path already excluded by the page's own prose is set aside. Fixed content/docs/deployment/cli.mdx: added the fourth table row and reworded the lead-in sentence from 'Three things it deliberately declines' to 'What it deliberately declines' so the table stays the single source of truth for the count. No os:check-style anchor idiom exists on this page family, so per triage guidance this is the mirror fix, not a generation mechanism.",
      "tests": "All at ab09610db (git rev-parse --short HEAD, quoted after final commit, clean tree). pnpm check:cross-package-test-inputs -- pass (33/33 self-test, 12 packages declared). pnpm check:docs-audit-scope -- pass (178 hand-written docs in scope, 9 release-owned pages read-only). pnpm check:docs-redirects -- pass (92 entries, 98 chain probes). pnpm check:role-word -- pass (43 baselined files, no new occurrences). node scripts/check-doc-anchors.mjs -- pass (240 internal fragment links, 396 sources, all resolve). node scripts/check-nul-bytes.mjs -- pass. packages/spec: check:liveness, check:empty-state, check:variant-docs, check:strictness-ledger -- all pass, run under the shared /tmp/os-heavy-verify.lock (matched via spec-liveness-check.yml's content/docs/** CI trigger; unaffected by a docs-only change). Gates derived with node scripts/pm/dispatch-gates.mjs content/docs/deployment/cli.mdx (9 of 103 discovered families placed against this path).",
      "open_questions": [],
      "out_of_scope_findings": ["filed as #9196: protocol.ts's migrateStoredMetadata JSDoc ('What it declines to touch, and says so') also still lists three declines and never picked up #8957's fourth either -- same root cause as #9175, different docs face, plus a flagged (not asserted) pre-existing scope difference between the JSDoc's three items and the docs page's three items"]
    }

    Generated by Claude Code

  5. added a commit that references this issue on Aug 17, 2026
    671d473
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions