Uh oh!
There was an error while loading. Please reload this page.
docs(cli): stop naming the out-of-repo apps/objectos as serve.ts's in-repo host-config example - #14812
Conversation
…in-repo host-config example `packages/cli/src/commands/serve.ts` named `apps/objectos` at three sites as if it were a path in this repo. It is not: `apps/` holds exactly one entry, `apps/docs`. The app is real but lives in the sibling `objectstack-ai/cloud` repo, split out of this one (CHANGELOG.md, "deleted from this repo ... now lives in `objectstack-ai/cloud/apps/objectos`"; ROADMAP.md says the same). The three sites are not one defect repeated, so they do not take one fix: - `:1921` is a provenance note about where the artifact-first fallback came from. The referent is genuinely out of this repo, so it is marked as such rather than renamed — a reader who wants it can still find it. - `:2791` and `:2965` were worked examples of live branches. Both branches key on a SHAPE (`plugins[]` already holding an `AppPlugin` instance; a config composing several `new AppPlugin(...)` entries), never on an app name, so the shape is stated and no app is named. `examples/app-showcase` is named once, at the one claim that is true of it and checkable: a host config whose `plugins[]` holds instantiated plugins while the stack still carries top-level metadata. Comments only; no behaviour, no exported surface, no authored metadata changes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016yfqQh2dBgPAymYd7xipza
📓 Docs Drift CheckThis PR changes 1 package(s): 17 hand-written doc(s) name something this change touched — list omitted above 15 rows. Re-derive on the tree named below: ⛔ 4 release-owned page(s) also affected — read-only, see AGENTS.md Documentation Guardrails. What this run could not see
Coarse fallback — 22 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 5aaf82037be18e900bc5f6494b7499ff190d9e33 && git checkout 5aaf82037be18e900bc5f6494b7499ff190d9e33
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 5a5336b399db2ef18dd4700f97d579a328197dda 876ce8ee525be2c5f371c0d8fb16b85d42f84dd1 && git checkout -B drift-repro 5a5336b399db2ef18dd4700f97d579a328197dda && git merge --no-ff 876ce8ee525be2c5f371c0d8fb16b85d42f84dd1
node scripts/docs-audit/affected-docs.mjs --json 5a5336b399db2ef18dd4700f97d579a328197dda
|
Uh oh!
There was an error while loading. Please reload this page.
Fixes#14634
packages/cli/src/commands/serve.tsnamedapps/objectosat three sites as though it were a path in this repo. It is not. The app is real — it lives in the siblingobjectstack-ai/cloudrepo, split out of this one — so the precise claim is "not in this repo", never "does not exist".Readings, with the positive control
The card's claim is a negative, so it is paired with a control that shows the query works and the directory is not simply unreadable:
Where the app actually went, from this repo's own records —
CHANGELOG.md:and
ROADMAP.md:41: "apps/cloud,apps/objectos,apps/studio, andservice-tenantno longer exist in this repo."Why the three sites did not take one fix
The dispatch asked which disposition is true of the host-config feature — name something openable, or mark it out-of-repo. The answer is both, because the three sites are making different claims. Treating them as one defect repeated is what would have produced a wrong one-line sweep.
:1921— a provenance note. Marked out-of-repo.It says where the artifact-first fallback came from. The referent genuinely is the out-of-repo app, so renaming it would destroy true information; the defect was only that nothing told the reader to stop looking in
apps/. It now names the app and says where it lives::2791and:2965— worked examples of live branches. Shape stated, no app named.Both branches key on a shape, never on an app:
plugins[]already holding anAppPlugininstance, and a config composing severalnew AppPlugin(...)entries. The app name was never what the code read, so it is gone and the shape is spelled out. This is what makes the comment un-falsifiable rather than merely re-pointed.examples/app-showcaseis named once, at the one claim that is true of it.It is added to the "even host/aggregator configs need this wrap" sentence — a host config whose
plugins[]holds instantiated plugins while the stack still carries top-level metadata. Checked before writing it, because naming a wrong example here would be the same defect again:plugins[]atexamples/app-showcase/objectstack.config.ts:134holdsConnectorOpenApiPlugin,ConnectorMcpPlugin,ConnectorRestPlugin,ConnectorSlackPlugin;manifest:79,objects:189,apps:202,flows:213,apis:259— so it really does carry both halves;serve-host-config-security-registrar.pin.test.tsrecords anos devboot of it, which is what the added parenthetical claims and no more.⛔ It is deliberately not named at
:2791's skip branch or at:2965. Itsplugins[]holds noAppPlugininstance, and it declares top-leveltranslations:181— so at those two sites it would have been a fresh false example.File face
One file, comments only:
packages/cli/src/commands/serve.ts(+17 −9).No behaviour, no exported surface, no authored metadata, no control-flow.
hasAppPluginAlready,pluginBundleHasTranslationsand the artifact-fallback block are byte-identical.Changeset: none —
skip-changesetinstead, and the measurement behind thatThe dispatch asked me to conclude and say why. Its parenthetical was that a comment in
packages/cli/src/**ships inside a released package; measured, it does not:src/is not published. This diff changes nodistbehaviour and releases nothing, which is the closed-list comments-only case, andlint.ymlstates the same test in its own words — "such a PR releases nothing, so by the workflow's own prescription it takes the label".dispatch-gates.mjsprints the same fork: "write one unless this card publishes nothing from any released package (then the skip-changeset label instead)".Gates — 24 families derived, 21 measured green, 3 NOT MEASURED
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstackderived the family list from the real change set (23 by path + 1 by change kind = 24), rather than from a recalled list. All readings below were taken at head876ce8ee52, which is the final commit — the tree has not moved since.Exit codes captured before any pipe (
cmd > log 2>&1; EXIT=$?), and each verdict quoted from the gate's own output rather than from$?:Package-level, under the shared verify lock:
Those 19 files are the exact blast radius of a comments-only edit: they are every file under
packages/cli/src/commands/that readsserve.tsas text (git grep -l "serve\.ts'"), includingserve-host-config-security-registrar.pin.test.ts, whose source pins sit within a few lines of two of the three edits. None asserts on comment text — checked before editing — and all 19 stay green.3 of the 24 are NOT MEASURED, not red, each refusing by its own documented prerequisite branch and each saying so in its own words:
check:test-completeness— exit 3: "this gate grades a savedturbo run testlog, and no log was named … the local reading for this gate is NOT MEASURED. ⛔ It is not a red."check:i18nandcheck:i18n-coverage— exit 1 on the prerequisite branch: "PREREQUISITE NOT MET — the workspace CLI is not built … Nothing was checked".check:dual-build-cjs-loads— exit 3: "PREREQUISITE NOT MET — this gate reads built output, and some package has no dist/ … ⛔ This is NOT a pass: nothing was measured." (13 packages listed.)Clearing those needs a full workspace build on a box four other agents are queued on. Declared narrowing: a diff of three source comments cannot move a translation bundle, an
os lintlabel count, or a CJS/ESM resolution — no string is authored, extracted or exported by it — and CI runs the farm exactly once regardless. They are recorded as not measured rather than as passed.No test pins the edited comment text — checked before editing (
git grepoverpackages/cli/src/**/*.test.ts,packages/cli/test/,scripts/); theserve*.pin.test.tsfamily asserts on code strings only.What I did NOT do, and why
objectos. ~50 occurrences inpackages/cli/srcare correct and load-bearing:objectos.ai/cloud.objectos.ai(the product domain,DEFAULT_CLOUD_URL, the root-domain guard,admin@objectos.ai), andobjectos-ee/objectos-runtime/objectos-environment/objectos-stack, several matched as literal plugin ids. The false references are the pathapps/objectosonly, and the difference is invisible from the token.apps/objectosto make the old comments true.CHANGELOG.md, the per-package changelogs,docs/adr/0004-*,docs/adr/0006-*, orROADMAP.md. Those name the same path as history and are accurate as written;ROADMAP.md:41andcontent/docs/getting-started/examples.mdx:40already state the app is gone.apps/objectosreferences inpackages/adapters/hono,packages/plugins/plugin-hono-serverandpackages/cloud-connection, and fourapps/cloudreferences insideserve.tsitself. Filed as [finding] Seven more source comments name deleted in-repo app paths (apps/objectos,apps/cloud) as live — same class as #14634, outside its ruled scope #14806 (searched first; no open card covered it). Theapps/cloudone atserve.ts:133is the reason they are not a rider here: "keep the two in sync if you tweak names" is a live cross-repo obligation, and whether it still stands cannot be read from this repo — a decision, not a mechanical rename.🤖 Generated with Claude Code
https://claude.ai/code/session_016yfqQh2dBgPAymYd7xipza
Generated by Claude Code