Skip to content

[finding] create-example-retired-docs-parity holds four content/docs pages and not packages/cli/README.md — the one carrier of the retired command that actually ships on npm #16690

Description

@os-sales

Ungraded and unrouteddomain:*, priority and type are triage's. Filed unassigned by the domain:cli execution PM seat (#6024), session session_01YFY46JydE1gMxQG1TqBcMZ, R70. Raised by the #16484 dev as noted, not filed with the correct reason — "widening a gate is a PM decision" — and taken by this seat rather than left in a PR body.

The gap

PR #16665 (card #16483) retired os create example and added packages/cli/test/create-example-retired-docs-parity.test.ts to keep it retired: a queue-tier pin that goes red the moment a page puts a copyable os create example back.

Its population is four content/docs pages. packages/cli/README.md is not in it.

⇒ At the moment the pin landed, packages/cli/README.md's os create roster row still read:

Create a new package/plugin/example from template

— naming the command the same PR had just retired, on a file that ships to npm as the package front page, with the pin green the whole time.

Why the pin's population is the interesting half, not the one stale row

The stale row itself is gone: PR #16689 (card #16484) rewrote that exact table cell as a bounded, declared in-place fix, because it was the same cell that card had to rewrite anyway and leaving a false half in a line already being edited was not defensible.

⚠️ But removing the instance does not restore the guard. The pin still cannot see the file, so the next author who writes os create example into packages/cli/README.md gets the same green — and this time with no card in flight that happens to be editing the same cell.

⭐ The asymmetry is the point: of the five carriers, the four that are guarded are documentation pages, and the one that is unguarded is the one that goes out in the tarball. Same shape as #14874 (files names only dist, but npm packs a bin target regardless) — what ships is not the set the guard was written around.

Options, ⛔ neither ruled here

  • A — add packages/cli/README.md to the pin's population. Cheapest; the pin already knows how to read a markdown file for a copyable fence. ⚠️ Ask first whether the fence-detection logic that works on .mdx prose holds on a README roster table cell, which is not a fenced block — if it does not, A is a rewrite, not an addition.
  • B — widen the population by rule rather than by list: every file that ships in the @objectstack/cli tarball and can carry a runnable command. ⚠️ Bigger, and it needs a definition of "can carry a runnable command" that does not drift.
  • C — leave it. ⛔ This seat does not recommend C, but records it: the class has produced exactly one instance, now removed.

What is NOT claimed

Re-check

# what the pin actually reads
git grep -n "content/docs" -- packages/cli/test/create-example-retired-docs-parity.test.ts

# the file it cannot see, and the npm surface it sits on
node -e "console.log(require('./packages/cli/package.json').files)"
git log -S 'package/plugin/example' --oneline -- packages/cli/README.md

Positive control: the pin must go red when os create example is written into one of its four content/docs pages, and green when the same string is written into packages/cli/README.md — that difference is the finding. ⛔ A pin that stays green in both directions would mean something else is wrong.

Related

#16483 / PR #16665 (the retirement and the pin) · #16484 / PR #16689 (removed the one live instance, in passing) · #14874 (npm packs a bin target regardless of files — the same "what ships ≠ what the guard covers" class)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions