docs(objectql,cloud-connection): mark the two remaining out-of-repo app paths - #16977
Conversation
…pp paths `apps/cloud` and `apps/objectos-ee` were deleted from this repository and now live in `objectstack-ai/cloud`. Two source comments still named them as live paths here and were in neither of the two earlier censuses. `ObjectQLPluginOptions.skipSchemaSync`'s TSDoc is the main repair: it is an imperative naming `apps/cloud/scripts/migrate.ts`, a script this repo does not contain, and it is the same sentence about the same script as the migrate-and-exit note in `packages/cli/src/commands/serve.ts`. The two were written as a pair and only one had ever been swept, so the marker is copied from that pair verbatim. The `marketplace-install-local-seed-replayer` test's rationale uses the older terse in-repo form, matching the spelling its siblings already use. The objectql docblock is emitted into `dist/index.d.ts` and `dist/index.d.mts`, both inside the published tarball, so it takes a patch changeset. The cloud-connection half publishes nothing — no test file is in that tarball. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ADLdAs2pVcH17h9tZKWMBg
📓 Docs Drift Check1 anchor(s) derived from 1 changed package(s); no hand-written page names any of them, so this run has nothing to list — not a clean bill of health. This check sees only pages that NAME a derived anchor: one that documents this change in prose, or enumerates it in an authoring dialect, names none and stays invisible to it on every run. What this run could not see
Coarse fallback — 16 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 d78fbc430e26d661d92cb22604b56b078e0862fd && git checkout d78fbc430e26d661d92cb22604b56b078e0862fd
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 50dc2141aed8d6b99e42f3a47dcd80892f133ac6 4789f1dc3db9642ba7c74d363efb4a69386905bb && git checkout -B drift-repro 50dc2141aed8d6b99e42f3a47dcd80892f133ac6 && git merge --no-ff 4789f1dc3db9642ba7c74d363efb4a69386905bb
node scripts/docs-audit/affected-docs.mjs --json 50dc2141aed8d6b99e42f3a47dcd80892f133ac6 |
Fixes #15297
Clause-②: no
Two source comments still named
apps/cloud/apps/objectos-eeas live paths in thisrepository. Both apps were deleted from here and live in
objectstack-ai/cloud; #14634swept three such sites and #14806 swept six more, and these two were in neither census.
This marks both, using a spelling that already exists in the tree rather than a new one.
Census, and its positive control
Re-measured on
origin/main efd6b43acein this worktree, greping the pathsapps/objectos/apps/cloud— never the bare tokens (objectos.ai,cloud.objectos.ai,DEFAULT_CLOUD_URL, the root-domain guard, the dev seed addressand the plugin ids
objectos-ee/objectos-runtime/objectos-environment/objectos-stackare all correct, several of them literal plugin ids insideserve.ts).The claim being checked is a negative, so it is run with the card's own positive control
in the same run:
apps/is not empty, so "apps/cloudis not in this tree" is a reading and not a brokenquery. 87 path hits total; every one outside the two sites below is a
CHANGELOG.md/ROADMAP.md/docs/adr/**historical record, a_console/apps/cloud_control/...Console route (a different path), or already marked out-of-repo.
Line numbers are a property of a tree. All four anchors below were re-read on
efd6b43acerather than trusted from the card, which quotedplugin.ts:142— thesentence has since drifted to
:163, and theserve.tshouse spelling has now beenrecorded at three different offsets (branch →
:4557→:4663) with its contentunchanged.
Site 1 —
packages/objectql/src/plugin.ts:163, the main repairTSDoc on
ObjectQLPluginOptions.skipSchemaSync. Present tense, unmarked, and animperative: it tells the reader DDL is managed out-of-band and names a concrete
script this repo does not contain.
It is the same sentence, about the same script, as
serve.ts's migrate-and-exit note at:4663— the two were written as a pair and drifted apart because only one of them hadever been in a census. So the marker is copied verbatim from its pair:
placed at the end of the existing sentence rather than mid-clause, because the original
reads "an
apps/cloud/scripts/migrate.tsrun" — a noun phrase an inserted relativeclause would break. The referent is genuine, so the disposition is to mark it, not to
rename or delete it.
Site 2 —
.../marketplace-install-local-seed-replayer.test.ts:16A test's rationale, weaker than site 1; the value is consistency. It uses the older terse
in-repo precedent from
multi-node-gate-mount.ts:9—(…, cloud repo)— becausethat is the form its siblings use. The path sits outside the parentheses only because
this sentence needs it as its grammatical subject; the marker text is unchanged.
apps/objectos-eemention has "three siblings". On
efd6b43acethere are seven other non-historicalmentions, not three — the card omits
packages/cli/test/serve-organizations-host-resolution.e2e.test.ts:88,packages/cloud-connection/src/cloud-connection-plugin.ts:23,packages/rest/src/single-kernel-isolated-api-key-matrix.test.ts:21andpackages/rest/src/single-kernel-isolated-session-org-claim-matrix.test.ts:10.The card's substantive claim survives: all seven mark the app as living elsewhere, so
site 2 was indeed the only unmarked one. Only the enumeration was short.
Changeset — decided on a measurement, not on "it's only a comment"
skip-changesetis a real mechanism in this repo, and it would have been wrong here.What the diff publishes was measured rather than assumed:
The edited TSDoc is emitted into
dist/index.d.tsanddist/index.d.mts, both of whichare inside the published tarball (
files: ["dist", "README.md", "CHANGELOG.md"]). It isthe text an IDE shows on hover over
skipSchemaSync. ⇒@objectstack/objectqlgets apatchchangeset.The
cloud-connectionhalf publishes nothing — its tarball is 10 files and contains notest file — so it is not in the changeset:
Clause-②: noholds independently of that: publishing is not the Clause-② test. Thediff adds no exported symbol and no key on any published payload — it is comment prose,
which the carrier rules place with spelling and formatting.
验收备注
Observations from the census, deliberately not swept in and not filed — none is a
reproducible defect, a declared-contract violation, or a metadata-authoring trap:
packages/cli/src/commands/serve.ts— the observability env-knob note the card routesto a separate card has drifted from the card's
:133to:149onefd6b43ace.That site is untouched here and remains open elsewhere; [question]
serve.ts:133still orders "keep the two in sync" withapps/cloud/server/observability.ts— does that mirror still exist inobjectstack-ai/cloud? #15295 is not addressed here.packages/observability/README.md:39— the card lists it for completeness andexplicitly does not assert it as a defect (it already reads "handled in apps/cloud —
see that repo's exporter"). Optional tightening; left alone.
.gitignore:121carriesapps/cloud/artifacts/, an ignore pattern for a directorythis repo no longer has. Dead config, matches nothing, harmless.
packages/spec/prompts/architecture.md:26is a product-strategy inventory that makesno claim about this tree;
_console/apps/cloud_control/...matches are a Console routeon a different path;
CHANGELOG.md/ROADMAP.md/docs/adr/**hits are historicalrecords. All untouched.
No
apps/cloudorapps/objectosdirectory was created, and no bare-token sweep was run.Verification
COVERAGE and VERDICTS are stated separately below; they are different claims.
Everything below was measured on the final commit
4789f1d. Exit codes are captured byredirect-then-
$?, never across a pipe, and each verdict quotes the line the gate itselfprinted rather than a bare
$?.COVERAGE — what was measured
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack→ 57--ran→ 57 derived, 57 run, 0 NOT-MEASURED, 0 UNRUN@objectstack/objectql(typecheck + tests),@objectstack/cloud-connection(tests; it declares notypecheckscript)turbo run build --filter='./packages/*' --filter='./packages/*/*' --concurrency=2— 72/72 tasks, so no gate read a staledist/Repo-wide
pnpm lintis CI's run, not this PR's. The narrowing is declared, with allthree readings rather than an assertion:
ESLint#isPathIgnoredovergit ls-files,not a hand-written glob): 8396 tracked, 2016 ignored → population 6380. Both edited
files report
ignored=false, so they are inside it.--format json: 2 files linted, 0 errors, 0 warnings.calculateConfigForFilereportstype-aware=falsefor both files, matching
eslint.config.mjs's own declaration that this repo "neverenables type-aware linting (no
parserOptions.project, no typed@typescript-eslintrules) for ANY file, test or not". With no type-aware rule anywhere, a comment edit in
these two files cannot move the verdict on a file it did not touch.
VERDICTS — what the measurements said
✓ dispatch-gates --ran: 57 derived famil(ies) accounted for — 57 run, 0 NOT-MEASURED.pnpm --filter @objectstack/objectql testTest Files 287 passed (287)·Tests 4826 passed (4826)pnpm --filter @objectstack/objectql typecheckcheck:test-typecheck: OK — @objectstack/objectql's test layer compiles under packages/objectql/tsconfig.test.jsonpnpm --filter @objectstack/cloud-connection testTest Files 29 passed (29)·Tests 374 passed (374)eslint --no-inline-configTwo families first returned exit 3
PREREQUISITE NOT MET—check:dual-build-cjs-loads("this gate reads built output, and some package has no
dist/") andcheck:type-check-debt("1 workspace dependenc(ies) … have no built type entry point on disk"). ⛔ Neither was read
as a pass. Both were re-run after the 72-task build and returned real verdicts:
check:type-check-debtreds with exit 3 under a tighterheap than CI's. Run inside a batch carrying
NODE_OPTIONS=--max-old-space-size=4096it OOMsand refuses to record (
tsc exited null … refusing to record 0); the gate pins its ownCI-shaped 6144 MB ceiling and needs to be left alone to do it. Its exit 3 there was an
artifact of the harness, not a reading of this diff — the run above is the reading.
Ablation — inapplicable, and deliberately not invented
This diff adds no guard, no rule, no check and no test. There is nothing whose failure mode
could be demonstrated by mutating it, so no ablation is reported. The claim this PR makes is
a census, and its falsifiable half is the positive control at the top, which fired.
Generated by Claude Code