You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
os start with no project, the docs' one-line Community quickstart, warns that the platform's own empty-kernel stub com.objectstack.empty declares no engines.protocol range #29937
Filing gate: ① a user-visible defect with a named landing point. Reach: the boot banner of os start in an empty directory, measured once on the published 18.3.0 CLI.
Business reason: docs.objectos.ai's home page gives one command for ObjectOS Community: npm i -g @objectstack/cli && os start. Its first boot ends with "Boot diagnostics — 1 informational: WARN [AppPlugin] [protocol] package 'com.objectstack.empty' declares no engines.protocol range; loading under protocol 18.0.0 without a compatibility check (ADR-0087)." The package is the stub the runtime writes for itself, so the very first thing a newcomer sees is a compatibility warning about something they cannot fix or even find, on the platform's own headline command.
Reader who acts: the triage seat, then a domain:server / runtime implementer in packages/runtime/src/default-host.ts (the empty-boot stub manifest, about L140–155): give the stub engines: { protocol: '^<major>' } (and refresh an existing stub in ~/.objectstack/dist/objectstack.json written by an older CLI), or exempt the synthesized stub from the check.
Duplicate search (incl. closed): "declares no engines.protocol" → 12 hits (#28535 closed is os package install nesting engines under manifest.manifest, a different producer; the rest are QA records and older ADR-0087 cards), empty kernel os start warn → 441 (top 6 are QA run records).
QA-source: post-release 18.3.0 newcomer walkthrough, docs.objectos.ai Community Path A, anchor #27377
Observed: banner "Artifact: none (empty kernel — install apps via the Console marketplace)", then the WARN above under Boot diagnostics. ~/.objectstack/dist/objectstack.json holds manifest.id: com.objectstack.empty with no engines.
Expected: the empty kernel boots with no protocol-compatibility warning about its own stub.
Read fresh. Measured on the published 18.3.0 CLI: os start in an empty directory (the docs' one-line Community quickstart) warns that the platform's own stub com.objectstack.empty declares no engines.protocol range. Boot noise on the first command, so p3.
Claim: PM loop round 2
Session: session_01Utp6CbPxYq1wQmUNWvMZkC (seat) · dev = project card thread session_01Utp6CZgQTno2oPVD2GLd2n
Account: os-bill
Branch: claude/project-thread-8igxgg
Worktree: objectstack-issue-29937
Domain: domain:server
Seat: domain:server#3
File surface: packages/runtime/src/default-host.ts (the empty-boot stub manifest gains engines.protocol; an existing stub written by an older CLI is refreshed), its tests; folded with #29936 on one branch, packages/cli/src/commands/serve.ts dev artifact door, one changeset per package — stop on breach; explain in the report.
Container & model: S, mode:thread, model: default judgment tier (dispatch-gates --tier: no path-derived mandate; floor sonnet · default opus · ceiling fable), effort: high (S)
Clause-②: no — boot diagnostics only; nothing accepted or published changes
Metadata-protocol: none
Responsibility: default-host.ts writes the stub without engines (reading, from the filer) | none: the warning is cosmetic but on the docs quickstart | every newcomer running os start in an empty directory; measured on published 18.3.0
Thread-read: 6610211104
Premise: holds
Serial constraints cleared: folded family: #29937 (chain head) + #29936 on branch claude/project-thread-8igxgg, one PR, a Fixes line and a commit per card. Seat 4 #30119 touches cli compile.ts/build.ts only; #30217 (this seat) touches cloud-connection + cli doctor.ts; no other in-flight claim on default-host.ts or serve.ts.
{
"issue": 29937,
"status": "done",
"branch": "claude/project-thread-8igxgg",
"pr": "https://github.com/objectstack-ai/objectstack/pull/30333",
"session": "session_01Utp6CZgQTno2oPVD2GLd2n",
"premise_still_valid": true,
"summary": "Folded family #29937 (chain head) + #29936, one draft PR #30333, head 2041627b. #29937: the empty-boot stub com.objectstack.empty now declares engines.protocol ^PROTOCOL_MAJOR (ensureEmptyBootStub in packages/runtime/src/default-host.ts); a stub still at the home location with no range or another major's range is rewritten in that one key only, anything else is left alone. The measurement found a second path the card did not name: from the second os start on, the supervisor resolves HOME_DIR/.objectstack/dist/objectstack.json as the home-dist artifact rung and passes it as artifactPath, so the empty-boot branch never runs again; commit 8e3ceadd refreshes the stub on that path too. #29936: premise held, but the cause is narrower than the filing said. The published @objectstack/metadata bundle declares `var MetadataPlugin = class _MetadataPlugin`, so the dev door's constructor-name-only gate missed the standalone stack's MetadataPlugin. Both serve doors now ask one hasMetadataPlugin predicate (plugin name com.objectstack.metadata, then class name). createStandaloneStack is untouched.",
"tests": "head 2041627b. Runtime: pnpm --filter @objectstack/runtime exec vitest run --maxWorkers=2, Test Files 545 passed (545), Tests 9840 passed, 19 skipped, lock VERDICT command-exit 0; new default-host-empty-stub.test.ts 9/9. CLI unit (pnpm --filter @objectstack/cli exec vitest run --project unit --maxWorkers=2) on 8e3ceadd: 1 failed / 5429 passed, boot-preparation-parity.test.ts asked for hasMetadataPlugin to be listed; fixed in 2041627b (SERVE_ONLY entry), that file then 37/37; stack-collections + both serve door pins 34/34. Integration tier declared to CI. Typecheck runtime and cli: VERDICT command-exit 0. Real boots on this branch's built CLI: #29937 before (default-host.ts restored from a26abbc6, runtime rebuilt): WARN 'com.objectstack.empty declares no engines.protocol range'; after: no Boot diagnostics, stub carries ^18; legacy stub with commit 1 only: WARN persists (home-dist rung); with commit 2: gone, stub refreshed. #29936 before (serve.ts restored from a26abbc6, cli rebuilt) on an os init -t app scaffold under os dev: WARN Plugin superseded: 'com.objectstack.metadata'; after: superseded count 0, metadata plugin listed once. Restore legs: git diff HEAD empty, packages rebuilt from HEAD. Ablations via scripts/ablation-replace.mjs (all restored, blob == HEAD): name clause dropped from hasMetadataPlugin, 1 failed / 21 passed; stub engines line removed, 3 failed / 6 passed; named-path refresh disabled, 1 failed / 8 passed. Logs: /mnt/project-files/server-seat3/29937/.",
"gates": "dispatch-gates --commands, 61 families, run on 8e3ceadd, exit codes recorded per line (gates-ran.txt): 59 exit 0; check:dual-build-cjs-loads and check:i18n-coverage exit 3 PREREQUISITE NOT MET (need a whole-workspace build), NOT MEASURED and left to CI. dispatch-gates --ran: '61 derived famil(ies) accounted for — 59 run, 2 NOT-MEASURED'. Last commit 2041627b touches only a cli test, so 17 families that read it (closing-keyword-parity, comment-mask adoption and corpus, issue-citations script and pnpm, closed-ceremony-text, cross-package-test-inputs, keyed-text-bounds, logger-receiver-detach, nul-bytes, refd-timer-probe, registry-log-declared, rest-log-spy-declared, test-source-alias, tier-file-adoption, type-check-debt, undeclared-dep-imports) were re-run on 2041627b, all exit 0. This narrowing is declared; the rest of the families were not re-run. check-plugin-teardown-shape --self-test passed after git fetch origin 621a4876. PR check-runs: in_progress at report time.",
"dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
"mcp_calls": "3 — mcp__github__issue_read x3 (#29937 get, #29936 get, #29937 get_comments), read-only, before the Claim; no MCP write",
"api_writes": "2 — fleet-write relay pr_create (POST /repos/objectstack-ai/objectstack/dispatches, run 41979931218 success, read-back 10875/10875 bytes identical, PR #30333 draft, no assignees, no labels); this os-dev-report comment via post-stamped (POST /repos/objectstack-ai/objectstack/issues/29937/comments). Plus git push of the designated branch (4 pushes, not REST).",
"open_questions": [],
"security_findings": "none",
"out_of_scope_findings": [
"carrier: PR #30333 Acceptance notes · noted, not filed: the seat asked for one commit per card; #29937 has two (4a5bb322, 8e3ceadd) and #29936 two (028a043a, 2041627b), because the branch is claude/project-thread-*, which AGENTS.md section 3 treats as shared, so it was not rewritten",
"carrier: none · noted, not filed: published tsup bundles can rename a class that refers to itself (class _X), so any plugin identity check that compares constructor.name alone is blind on an installed CLI while green in source-run tests; the other checks in stack-collections.ts compare the plugin name first, so no other live defect was measured"
]
}
Report taken 2026-11-05T06:23Z.
Not done by this thread, per the dispatch order: no card or PR assignee, no review request, no MCP write (the session's own assign-and-request step is skipped for the seat's hand-off); skip-changeset not applied, because the diff ships one patch changeset each for @objectstack/runtime and @objectstack/cli.
Activity
objectstack-fleet commentedon Nov 3, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: first-touch audit · p3 ·
domain:server·pm:queue· 2026-11-03T16:56Z⛔ Not a claim.
os startin an empty directory (the docs' one-line Community quickstart) warns that the platform's own stubcom.objectstack.emptydeclares noengines.protocolrange. Boot noise on the first command, so p3.Generated by Claude Code
objectstack-fleet commentedon Nov 5, 2026
domain:server#3 · os-bill · session_01Utp6CbPxYq1wQmUNWvMZkC
Claim: PM loop round 2
Session:
session_01Utp6CbPxYq1wQmUNWvMZkC(seat) · dev = project card threadsession_01Utp6CZgQTno2oPVD2GLd2nAccount:
os-billBranch:
claude/project-thread-8igxggWorktree:
objectstack-issue-29937Domain:
domain:serverSeat:
domain:server#3File surface:
packages/runtime/src/default-host.ts(the empty-boot stub manifest gainsengines.protocol; an existing stub written by an older CLI is refreshed), its tests; folded with #29936 on one branch,packages/cli/src/commands/serve.tsdev artifact door, one changeset per package — stop on breach; explain in the report.Container & model:
S,mode:thread,model: default judgment tier (dispatch-gates --tier: no path-derived mandate; floor sonnet · default opus · ceiling fable),effort: high (S)Clause-②: no — boot diagnostics only; nothing accepted or published changes
Metadata-protocol: none
Responsibility:
default-host.tswrites the stub withoutengines(reading, from the filer) | none: the warning is cosmetic but on the docs quickstart | every newcomer runningos startin an empty directory; measured on published 18.3.0Thread-read: 6610211104
Premise: holds
Serial constraints cleared:
folded family: #29937 (chain head) + #29936 on branch claude/project-thread-8igxgg, one PR, a Fixes line and a commit per card. Seat 4 #30119 touches cli compile.ts/build.ts only; #30217 (this seat) touches cloud-connection + cli doctor.ts; no other in-flight claim on default-host.ts or serve.ts.objectstack-fleet commentedon Nov 5, 2026
domain:server#3 · os-bill · session_01Utp6CZgQTno2oPVD2GLd2n
os-dev-report
{ "issue": 29937, "status": "done", "branch": "claude/project-thread-8igxgg", "pr": "https://github.com/objectstack-ai/objectstack/pull/30333", "session": "session_01Utp6CZgQTno2oPVD2GLd2n", "premise_still_valid": true, "summary": "Folded family #29937 (chain head) + #29936, one draft PR #30333, head 2041627b. #29937: the empty-boot stub com.objectstack.empty now declares engines.protocol ^PROTOCOL_MAJOR (ensureEmptyBootStub in packages/runtime/src/default-host.ts); a stub still at the home location with no range or another major's range is rewritten in that one key only, anything else is left alone. The measurement found a second path the card did not name: from the second os start on, the supervisor resolves HOME_DIR/.objectstack/dist/objectstack.json as the home-dist artifact rung and passes it as artifactPath, so the empty-boot branch never runs again; commit 8e3ceadd refreshes the stub on that path too. #29936: premise held, but the cause is narrower than the filing said. The published @objectstack/metadata bundle declares `var MetadataPlugin = class _MetadataPlugin`, so the dev door's constructor-name-only gate missed the standalone stack's MetadataPlugin. Both serve doors now ask one hasMetadataPlugin predicate (plugin name com.objectstack.metadata, then class name). createStandaloneStack is untouched.", "tests": "head 2041627b. Runtime: pnpm --filter @objectstack/runtime exec vitest run --maxWorkers=2, Test Files 545 passed (545), Tests 9840 passed, 19 skipped, lock VERDICT command-exit 0; new default-host-empty-stub.test.ts 9/9. CLI unit (pnpm --filter @objectstack/cli exec vitest run --project unit --maxWorkers=2) on 8e3ceadd: 1 failed / 5429 passed, boot-preparation-parity.test.ts asked for hasMetadataPlugin to be listed; fixed in 2041627b (SERVE_ONLY entry), that file then 37/37; stack-collections + both serve door pins 34/34. Integration tier declared to CI. Typecheck runtime and cli: VERDICT command-exit 0. Real boots on this branch's built CLI: #29937 before (default-host.ts restored from a26abbc6, runtime rebuilt): WARN 'com.objectstack.empty declares no engines.protocol range'; after: no Boot diagnostics, stub carries ^18; legacy stub with commit 1 only: WARN persists (home-dist rung); with commit 2: gone, stub refreshed. #29936 before (serve.ts restored from a26abbc6, cli rebuilt) on an os init -t app scaffold under os dev: WARN Plugin superseded: 'com.objectstack.metadata'; after: superseded count 0, metadata plugin listed once. Restore legs: git diff HEAD empty, packages rebuilt from HEAD. Ablations via scripts/ablation-replace.mjs (all restored, blob == HEAD): name clause dropped from hasMetadataPlugin, 1 failed / 21 passed; stub engines line removed, 3 failed / 6 passed; named-path refresh disabled, 1 failed / 8 passed. Logs: /mnt/project-files/server-seat3/29937/.", "gates": "dispatch-gates --commands, 61 families, run on 8e3ceadd, exit codes recorded per line (gates-ran.txt): 59 exit 0; check:dual-build-cjs-loads and check:i18n-coverage exit 3 PREREQUISITE NOT MET (need a whole-workspace build), NOT MEASURED and left to CI. dispatch-gates --ran: '61 derived famil(ies) accounted for — 59 run, 2 NOT-MEASURED'. Last commit 2041627b touches only a cli test, so 17 families that read it (closing-keyword-parity, comment-mask adoption and corpus, issue-citations script and pnpm, closed-ceremony-text, cross-package-test-inputs, keyed-text-bounds, logger-receiver-detach, nul-bytes, refd-timer-probe, registry-log-declared, rest-log-spy-declared, test-source-alias, tier-file-adoption, type-check-debt, undeclared-dep-imports) were re-run on 2041627b, all exit 0. This narrowing is declared; the rest of the families were not re-run. check-plugin-teardown-shape --self-test passed after git fetch origin 621a4876. PR check-runs: in_progress at report time.", "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm", "mcp_calls": "3 — mcp__github__issue_read x3 (#29937 get, #29936 get, #29937 get_comments), read-only, before the Claim; no MCP write", "api_writes": "2 — fleet-write relay pr_create (POST /repos/objectstack-ai/objectstack/dispatches, run 41979931218 success, read-back 10875/10875 bytes identical, PR #30333 draft, no assignees, no labels); this os-dev-report comment via post-stamped (POST /repos/objectstack-ai/objectstack/issues/29937/comments). Plus git push of the designated branch (4 pushes, not REST).", "open_questions": [], "security_findings": "none", "out_of_scope_findings": [ "carrier: PR #30333 Acceptance notes · noted, not filed: the seat asked for one commit per card; #29937 has two (4a5bb322, 8e3ceadd) and #29936 two (028a043a, 2041627b), because the branch is claude/project-thread-*, which AGENTS.md section 3 treats as shared, so it was not rewritten", "carrier: none · noted, not filed: published tsup bundles can rename a class that refers to itself (class _X), so any plugin identity check that compares constructor.name alone is blind on an installed CLI while green in source-run tests; the other checks in stack-collections.ts compare the plugin name first, so no other live defect was measured" ] }Report taken 2026-11-05T06:23Z.
Not done by this thread, per the dispatch order: no card or PR assignee, no review request, no MCP write (the session's own assign-and-request step is skipped for the seat's hand-off);
skip-changesetnot applied, because the diff ships one patch changeset each for@objectstack/runtimeand@objectstack/cli.Generated by Claude Code
objectstack-fleet commentedon Nov 5, 2026
domain:server#3 · os-bill · session_01Utp6CbPxYq1wQmUNWvMZkC
Landed · 2026-11-05T07:12Z
665db006c13ae24c2817e67cebb312639fd9f7aa(merged_at 2026-11-05T07:08Z); it carried bothos startwith no project, the docs' one-line Community quickstart, warns that the platform's own empty-kernel stubcom.objectstack.emptydeclares no engines.protocol range #29937 andos devon anos init -t appscaffold warns "Plugin superseded: 'com.objectstack.metadata'" on every boot, because the platform registers its own metadata plugin twice #29936.pm:dispatchedremoved.