Skip to content

docs(quickstart): re-transcribe both boot samples against CLI 17.7.0 - #326

Merged
os-support-ai merged 1 commit into
mainfrom
claude/youthful-cannon-b4o03w
Oct 13, 2026
Merged

os-support-ai merged 1 commit into
mainfrom
claude/youthful-cannon-b4o03w

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Part of #141
Clause-②: no

Re-transcribes both quickstart boot samples against @objectstack/cli 17.7.0, the npm latest since 2026-10-06T12:13Z. It applies the card's standing item 6 to "What's loaded out of the box". It also removes the two sys_migration sentences, because neither line is printed on either path at 17.7.0.

One file, content/docs/quickstart.mdx, +16/−17. The page has no locale siblings.

What changed, and what measured it

Every row compares the 17.7.0 boots against a date-bounded 17.5.0 control (step 0 below).

Change 17.7.0 17.5.0 control
Path A Plugins: 31 loaded → 32 32 in 3 of 3 fresh boots and 1 reboot; the added name is MigrationRecovery 31 in 2 of 2
Path B Build complete (175ms) → (312ms) declared machine-variable, re-transcribed from the transcription capture b177-1 (187–312 ms over 9 boots) 164 and 316 ms
Path B artifact 1.9 KB → 2.2 KB 9 of 9 1.9 KB in 2 of 2
Path B banner row Config: objectstack.config.ts → Artifact: dist/objectstack.json Artifact: row in 9 of 9, Config: row in 0 Config: row in 2 of 2, Artifact: row in 0
Path B Plugins: 36 loaded → 38 38 in 9 of 9; added names TelemetryDatasource and MigrationRecovery 36 in 2 of 2
Both pins 17.5.0 → 17.7.0 npm view @objectstack/cli dist-tags answers latest: '17.7.0' n/a
Both sys_migration sentences removed Paged read of 'sys_migration' is NOT deterministic and the DATABASE_ERROR for the missing table: 0 in every capture (Path A 3 fresh + 1 reboot, Path B 9) each printed once per boot, Path A 2 of 2 and Path B 2 of 2
Both-paths list gains "Migration recovery" MigrationRecovery loads on both paths (A 4 of 4, B 9 of 9) 0 of 4
Path B paragraph names the telemetry datasource, and the closing sentence attributes it to development mode activation legs below not loaded

Every other line of both blocks re-measured unchanged. After the edit, the transcription captures show 0 published-but-absent lines and 0 order violations: Path A against a177-1, a177-2 and a177-3, Path B against b177-1. Path B's other 8 captures miss only the declared timing line, with 0 order violations. The contended capture is compared with its ports normalised.

Item 6: plugin names per path at 17.7.0

  • Path A (32): HonoServer, Marketplace, PlatformObjects, MigrationRecovery, Auth, @objectstack/setup, @objectstack/account, Security, Audit, com.objectstack.runtime.default-datasource, com.objectstack.metadata, ObjectQL, empty, RestAPI, Dispatcher, MCPServerPlugin, QueueServicePlugin, JobServicePlugin, CacheServicePlugin, SettingsServicePlugin, EmailServicePlugin, StorageServicePlugin, SmsServicePlugin, SharingServicePlugin, MessagingServicePlugin, AnalyticsServicePlugin, PackageServicePlugin, ExternalDatasourceServicePlugin, ExternalValidationPlugin, DatasourceAdminServicePlugin, DatasourceAdminRoutes, ConsoleUI.
  • Path B (38): the Path A list without empty, plus TelemetryDatasource, my-app, AutomationServicePlugin, RecordChangeTriggerPlugin, ScheduleTriggerPlugin, TimeRelativeTriggerPlugin and ApiTriggerPlugin.
  • Both paths (31): the 30 names of 17.5.0 plus MigrationRecovery. Every name the list already covered still loads on both paths. MigrationRecovery is the one shared name it did not cover.
  • A-only: empty (the app slot). B-only: my-app (the app slot), the five automation and trigger plugins, and TelemetryDatasource.

The scaffold still declares requires: ['automation', 'triggers'] (objectstack.config.ts:43). Three activation legs ran on copies of a 17.7.0 scaffold, with dist/ and .objectstack/ removed and a fresh HOME:

Leg Plugins the five TelemetryDatasource
pnpm dev with the requires line deleted (anchor count 1 before, 0 after) 33 0 of 5 loaded
os start (production) on an unmodified copy 37 5 of 5 not loaded
pnpm dev with OS_TELEMETRY_DB=0 37 5 of 5 not loaded

The declaration still explains the five. Development mode explains the telemetry datasource. The CLI's own rule is "dev mode + file-backed primary → default ON", in @objectstack/cli@17.7.0 dist/utils/telemetry-datasource.js. A pnpm dev boot leaves objectstack.telemetry.db beside objectstack.db in .objectstack/data/. The production leg and the opt-out leg leave only objectstack.db.

Reader-facing names. Neither new name has a package description of its own, so each comes from its own source's description:

  • "Migration recovery" comes from the MigrationRecoveryPlugin class JSDoc in @objectstack/runtime@17.7.0 dist/index.d.ts: "boot reconciliation for the ADR-0119 D2 migration journal". The runtime's package description is the generic "ObjectStack Core Runtime & Query Engine".
  • "a dedicated telemetry datasource, a second SQLite file beside the database" comes from the header of @objectstack/cli@17.7.0 dist/utils/telemetry-datasource.js: "where the dedicated telemetry datasource lives", "provision that second SQLite file".

Step 0: the control

  • Command: npm --prefix … install @objectstack/cli@17.5.0 --before=2026-09-29T09:00:00.000Z. This timestamp falls after the last 17.5.0 publish (@objectstack/spec, 2026-09-29T08:09:33Z). It falls before the first 17.6.0 publish (2026-10-02T02:50Z) and before better-auth 1.7.7 (2026-09-30T21:30Z). Across the 53 names, nothing else was published between 17.5.0 and 17.6.0.
  • Read back: 53 of 53 @objectstack names at 17.5.0, better-auth and @better-auth/core 1.7.3. The control scaffold was made with npm_config_before set to the same timestamp, and it also reads back 53 of 53 at 17.5.0.
  • Validated against the 17.5.0 blocks on main. Path A had 0 absent lines and 0 order violations in 2 of 2 boots. Path B had 0 order violations, and its only absent line was the declared timing, in 2 of 2.
  • Experiment trees (the CLI tree and both scaffolds): 53 of 53 at 17.7.0, better-auth 1.7.3.

Port behaviour (item 2): no drift

  • Uncontended: Path B binds 3000 in 8 of 8 boots, with 0 server bound to port lines.
  • Contended: a real os start 17.7.0 held :3000, answering health 200 before and after. The literal ↪ server bound to port 3001 (requested 3000) appeared exactly once, the API row read http://localhost:3001/, and health and ready answered 200 on 3001.
  • The paragraph is unchanged.

Declarations by diff (item 4) and sequence (item 5)

Each omitted line in the transcription captures is named by its block's declaration:

  • Path A omits the no-config line, the storage advisory, two crypto-key lines, the plugin-name list and boot diagnostics.
  • Path B omits pnpm's script header, compile progress, the configuration load, the crypto lines, the MCP trailer, the plugin-name list and boot diagnostics.

New at 17.7.0 among the omitted lines (control comparison):

  • A reworded compile step.
  • The two new plugin names.
  • A third Path B boot-diagnostics warning (2 → 3). See the Acceptance notes.

The MCP trailer lands inside the banner in 8 of 8 uncontended Path B boots: interleaved with banner lines in 5, contiguous in 3. It lands after Press Ctrl+C to stop in the 1 contended boot. "usually lands inside the banner, often interleaved" still holds, so the sentence is unchanged.

Standing checks:

  • The original item 3 has 0 > **Warning blockquotes. A live control finds 1 other > ** blockquote, at :124.
  • The seeded dev credential and its caveat lines are present in 9 of 9 Path B boots and on the page.

Acceptance notes

  • A new sys_migration line, inside boot diagnostics, on Path B only. It reads WARN Insert operation failed {"object":"sys_migration", … UNIQUE constraint failed: sys_migration.id …} with an inline stack.
    • It appears in 9 of 9 Path B boots at 17.7.0 and in 0 of 2 in the control. It also appears in the requires-deleted and telemetry-off dev legs.
    • It appears in 0 of 4 Path A boots and 0 under os start on the scaffold.
    • The server keeps serving: health and ready answer 200.
    • It is one of the "boot diagnostics" that Path B's declaration already names, so this PR adds no sentence for it.
    • It is reported to the seat as an upstream finding.
  • Outside the card's watched items, and not edited here.
    • Following "Add your own object" literally on a fresh scaffold does not produce a task object. src/objects/task.ts, as published, compiles to Data: 1 Objects 3 Fields: the scaffold loads objects through the src/objects/index.ts barrel, which does not export it.
    • Exporting it from that barrel makes pnpm build exit 2: Object 'task' is missing the package namespace prefix. Rename it to 'my_app_task' (namespace = 'my_app').
    • It is the same on the 17.5.0 control, so it is not new at 17.7.0.
    • The doc-samples gate passes the block (quickstart.mdx:237) because it checks parsing, not loading. Reported to the seat as a finding.
  • The "Project layout" tree lists only src/objects/. The 17.7.0 scaffold has eight src/ barrels (actions, apps, dashboards, flows, objects, picklists, skills, views); the control has seven. Noted, not edited.

Gates, on e52161d (tree equals commit)

Each exit code was captured before any pipe.

Gate Exit Verdict line
gen-zh-hant.mjs --check 0 ✓ zh-Hant: 54 generated file(s) match the zh-Hans sources byte for byte.
check-half-states.mjs --self-test 0 ✓ check-half-states self-test: 1551 cases pass.
check-node-floor.mjs and --self-test 0, 0 ✅ Every declared floor clears what the dependency tree requires, and the declarations agree.
npm ci --prefix .github/scripts/doc-samples …, then check-doc-samples.mjs 0, 0 ✓ doc samples: every ts/js block on 79 English page(s) parses with @objectstack/spec 17.7.0 · 98 pass · 10 not a spec sample · 2 opted out
pnpm turbo run type-check --continue --force (verify lock) 0 Tasks: 1 successful, 1 total, Cached: 0 cached
pnpm turbo run build --force (verify lock) 0 Tasks: 1 successful, 1 total, Cached: 0 cached
check-locale-surface.mjs 0 ✓ every advertised URL has a source file and every source file is advertised; …
check-positioning.mjs 0 ✓ positioning: 4 copies equal their constants; …
check-search-locales.mjs 0 ✓ search locales: all 8 locales answer 200, …
pnpm turbo run test --force (verify lock) 0 ✓ 11 self-test(s) passed, Cached: 0 cached
check-translations.mjs 0 ✓ translations gate passed
check-translation-output.mjs --self-test 0 ✓ self-test: 29 rule case(s), …
check-translation-ownership.mjs --actor 'objectstack-fleet[bot]' --files changed.txt 0 This PR touches 0 translation artifact(s) and 1 other file(s).
check-translation-output.mjs --files changed-output.txt 0 ✓ translation output gate passed (213 pre-existing finding(s) reported)

I grepped the built apps/docs/.next/server/app/en/docs/quickstart.html:

  • Present: Plugins: 32 loaded 2, Plugins: 38 loaded 2, Build complete (312ms) 2, Migration recovery 2, dedicated telemetry datasource 2.
  • Absent: 17.5.0 0, sys_migration 0, Config: objectstack.config.ts 0.

The rendered-page proof is CI's smoke-check step on this head.


Generated by Claude Code

Path A: Plugins 31 -> 32 loaded. Path B: Build complete re-transcribed
(312ms), artifact 1.9 -> 2.2 KB, the banner's Config row is now an
Artifact row, Plugins 36 -> 38 loaded. Both pins move 17.5.0 -> 17.7.0.

The sys_migration paged-read warning and DATABASE_ERROR are no longer
printed on either path, so their sentences leave both declarations.

"What's loaded out of the box": Migration recovery joins the both-paths
list, and Path B's paragraph names the telemetry datasource that
development mode opens beside the SQLite database.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H1D12NQAtnCRwY1YzR43Vd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants