Repository navigation
docs(qa): 18.0 sweep round 10 — the walled boot's release attribution, two comma-range citations, the console-dist fact re-measured - #24788
Merged
objectstack-fleet[bot] merged 3 commits intoOct 20, 2026
Conversation
…ange citations Part (c): RUNNER.md's "A walled boot is a fixture of its own" entry and the walled knownGaps line on seven items said 18.0 refused a walled posture at boot. 18.0.0 is published only after 18.x step 4 has merged (ruling record 6282882793), so it boots one; of the published @objectstack/cli prereleases only 18.0.0-next.5 carries serve.ts walledPostureRefusal. Each line now says so. Part (b): access-security.platform-owner-email-anchor source[5] and source[7] drop their ',200' / ',261' residue and anchor the declarations those lines held at 45397ed. Each edited item takes one revision bump and one history row. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
Eight history[*].ref strings move from the placeholder to #24788; nothing else changes. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
Contributor
Author
Seat reviewACCEPT ·
This seat readies the PR and queues it with auto-merge. Generated by Claude Code |
objectstack-fleet
Bot
deleted the
claude/issue-24579-v18-sweep-round10
branch
October 20, 2026 06:14
This was referenced Oct 20, 2026
This was referenced Oct 20, 2026
This was referenced Oct 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #24579
Clause-②: no
Round 10 of the 18.0 release sweep's wave anchor (#24579), claim
6284039882. One PR in three bounded parts, checklist ledger only: 8 items in 3 area files, each with onerevisionbump and onehistoryrow, plus one sentence ofRUNNER.md, which carries no revision. No product code, test, pin, objectui spec or changeset text changed.Base
795ff708d8, which wasorigin/mainwhen the worktree was made. The edits are commit9a85df9a8c.origin/mainthen moved to74f78159af(#24777, one dogfood test file, disjoint from this PR) and is merged in at8bfefd50f5, the head this PR opens on. The history rows'refis written as a placeholder and filled with this PR's number in one later commit that changes only those 8 strings.Part (a): "Console dist not found" (#24615, body line 170) re-measured, nothing recorded
#24615 wrote: "A scratch app copy booted from /tmp prints 'Console dist not found at packages/console/dist' because the path is resolved relative to cwd." At this base the cause it names does not hold, so
RUNNER.mdgets no new entry.795ff708d8packages/cli/src/utils/console.ts#resolveConsolePath.os servecalls it in its UI-portals block withonDriftonly, socwddefaults toprocess.cwd(), not the served app's root.@objectstack/console/package.jsonresolved from the cwd'spackage.jsonAND from the CLI's own module location; (2) the cwd'snode_modules/@objectstack/console; (3)../objectui/apps/consoleand../../objectui/apps/consolefrom the cwd. Pass 1 takes the first candidate withdist/index.html; pass 2 takes the first candidate.formatConsoleDistMissingWarning(same file), viadescribeConsoleDistMissing. The path ispath.relative(buildRoot, dist), wherefindConsoleBuildRootreturns the nearest manifest above the console package that declaresobjectui:build. That is the root of the framework checkout the CLI belongs to, not the cwd.ba4afcc239?git log ba4afcc239..795ff708d8 -- packages/cli/src/utils/console.tsis empty. Inserve.tsthe only change is PR #24667's deletion of the walled refusal (+1 / −48 lines).examples/app-showcaseand from a scratch directory outside the tree, both resolve this checkout'spackages/consolethrough the CLI-own leg, and both print the same line:⚠ Console dist not found at packages/console/dist — pnpm build does not produce it. Build it with pnpm objectui:build in(this checkout's root).objectui/apps/consolewith a builtdist../objectuior../../objectuipoints at it. This is the one cwd-relative leg, and the canonical in-tree boot (cwdexamples/app-showcase) does not reach a sibling checkout through it either.packages/console/distexists (a byte-identical copy ofconsole.ts)hasDist: true. With the dist removed (the control), it prints the same "at packages/console/dist" line, naming that model checkout's root.pnpm objectui:buildin that checkout, the remedy the warning itself names. "Harmless for API-only items" holds: such a boot mounts a 503 responder on/_console/that names the remedy, and the API is unaffected.The probes run the source function with the same argument the boot passes (
onDrift, nocwd), through tsx's own CLI entry. Thenode_modules/.bin/tsxshim puts the workspace store onNODE_PATH, and that alone made the cwd leg resolve from outside the tree. A realos serveboot from a scratch copy was not run: NOT MEASURED, because the source function is what that boot calls and the CLI closure build is outside this checklist-only card.Part (b):
access-security.platform-owner-email-anchorsource[5]andsource[7]These are the two comma ranges round 9 left (its report
6283532816,out_of_scope_findings[0]), because PR #24667 held the item at the time.45397edf53795ff708d8source[5]env.tsline 200 =export function resolvePlatformOwnerEmail()packages/types/src/env.ts#PLATFORM_OWNER_EMAIL_ENV,200 (PLATFORM_OWNER_EMAIL_ENV / resolvePlatformOwnerEmail)packages/types/src/env.ts#PLATFORM_OWNER_EMAIL_ENV + packages/types/src/env.ts#resolvePlatformOwnerEmail (the variable's name, and its live per-call read)declaration(resolvePlatformOwnerEmailis live:platform-admin.tscalls it)source[7]admin-routes.tsline 261 =export const DATASOURCE_ADMIN_CAPABILITY = 'manage_platform_settings';packages/services/service-datasource/src/admin-routes.ts#manage_platform_settings,261 (the manage_platform_settings-floor probe)packages/services/service-datasource/src/admin-routes.ts#DATASOURCE_ADMIN_CAPABILITY (the manage_platform_settings-floor probe)declaration(the old#manage_platform_settingsresolved only as aliteral)The gate's extractor read the old strings as
env.ts#PLATFORM_OWNER_EMAIL_ENVandadmin-routes.ts#manage_platform_settings, and ignored,200and,261. That is why no gate caught the residue. Onlysource[5]andsource[7]moved: #24465 (queued) re-authors other fields of this item.Part (c): the walled boot's release attribution
Measurement. Is
serve.ts#walledPostureRefusalpresent in each published@objectstack/cli18.0.0 prerelease? Each was read in its npm tarball (npm pack, then a grep ofpackage/dist) and at its version tag. The repo is not shallow.walledPostureRefusalinserve.tsat the tagis not supported in 18.0 (NOT_IMPLEMENTED)ae6bd1a6an ancestor of the tag18.0.0-next.0d889448b9318.0.0-next.10c52e4307518.0.0-next.2e5136ff10f18.0.0-next.32c9bf9430a18.0.0-next.4npm view @objectstack/cli versions, no tag)18.0.0-next.5820fd5aef018.0.06282882793item 1: only after steps 4 to 7 mergemainthe refusal lived fromae6bd1a696(feat(cli)!: 18.0 guards — os migrate organization-ownership refuses, and os serve refuses a walled posture at boot #24480, 2026-10-19T06:49Z) tofc34d000fc(PR feat(objectql,cli,plugin-webhooks)!: 18.x step 4: the walled lift (8b walled half, the os serve lift, the declared-webhook name guard, declared webhooks deployment-wide) #24667, 2026-10-20T03:59Z), bygit log -S walledPostureRefusal origin/main -- packages/cli/src/commands/serve.ts. At this baseserve.tsholds 0 occurrences.@objectstack/cli@17.7.0tag commit4e4e881427(2026-10-06, older than both commits tested) answers exit 0 against all five tags.fc34d000fcis an ancestor of none of the five tags (exit 1 ×5, with the same control), so nothing has been published since step 4.next.5carries the refusal, and there is nonext.4. "Every 18.0.0 prerelease" would be wrong.Edits. Hypothesis 3 is also falsified: the eight places use three phrasings, so there are three rewrites. Each rewrite changes only the attribution, and #24580 stays the change's reference.
RUNNER.md, entry "A walled boot is a fixture of its own"walledPostureRefusal()inpackages/cli/src/commands/serve.ts). Of the builds published so far, only the18.0.0-next.5prerelease carries that refusal, asmaindid fromae6bd1a6until step 4:next.0tonext.3predate it, and nonext.4was published. So on 18.0.0"fixtures.knownGapsline each (byte-identical sentence)attachments-storage.chunked-upload-integrityfixtures.knownGaps[0]The chunked-upload line never said 18.0 refused. It dated the walled boot only "Since 18.x step 4", so it told neither runner which release it is on. That is why it was not left alone.
access-security.walled-environment-metadata-operator-onlyfixtures.knownGaps[0]access-security.activation-write-operator-gatefixtures.knownGaps[0]access-security.grant-table-write-contractfixtures.knownGaps[0]access-security.parent-and-organization-write-guardsfixtures.knownGaps[0]access-security.no-active-org-session-semanticsfixtures.knownGaps[2]platform-core.settings-organization-isolation-and-platform-rungfixtures.knownGaps[0]attachments-storage.chunked-upload-integrityfixtures.knownGaps[0]access-security.platform-owner-email-anchor(part b)source[5],source[7]How the edits were made. The area files went through round 9's span-recording editor (
r9-edit.mjs, md5e1385d0fbc102efb2a9507dad5133089), extended with areplaceop that asserts its prior text occurs exactly once in the leaf. It re-parses each file and asserts four things: the new document equals the old one with the declared ops applied; every other item and top-level key is value-equal; the changed leaf paths are the declared field plusrevisionplus one newhistoryrow; and the text outside the edited items is byte-identical. Its reported changed paths matched the declarations for all 8 items. TheRUNNER.mdedit asserted that its one replaced line occurs exactly once and that the text on either side is byte-identical. The control-byte scan of the 4 files reads 0.Left alone, and why
platform-core.v18-boot-refusals,areas/cli.jsonand every "18.0 supports fresh installs only" sentence: PR feat(cli,runtime)!: the upgrade ceremony opens — v17 and 18.0 databases take it, and a server serves only a database it created or one the ceremony certified (18.x steps 5 and 6) #24681 (steps 5 and 6, open) edits them, and the claim excludes them.platform-owner-email-anchor's other fields, its walledsteps[0]parenthetical included: docs(qa): re-author access-security.platform-owner-email-anchor for the Default Organization grant — PR #24373 landed #11979, the trigger the item names for its own re-author #24465 re-authors them. That parenthetical names no release; it says a walled posture boots once provisioned, which holds.historyrows (revisions written by docs(qa): 18.0 sweep anchor round 5 — the walled-posture and second-organization themes, runner environment facts, and two carried notes #24687 and PR feat(objectql,cli,plugin-webhooks)!: 18.x step 4: the walled lift (8b walled half, the os serve lift, the declared-webhook name guard, declared webhooks deployment-wide) #24667 on these items): history is append-only, and each new row records the correction.RUNNER.md's "A stocksingleboot holds exactly one organization" entry: it names no release.Gates
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, no paths (4 paths against merge base795ff708d): 13 families, the same list at9a85df9a8cand at8bfefd50f5. All 13 ran on9a85df9a8c, each exit code captured before any pipe, and all exited 0. They are re-run on the final head (after thereffill), and those readings go in the card's report. The 13:check-ci-filter-parity,check-closing-keyword-parity(and its--self-test),check-comment-mask-corpus,check:doc-formula-expressions,check:cross-package-test-inputs,check:doc-authoring,check:driver-memory-census,check:gitlink-declared,check:nul-bytes,check:platform-checklist,check:refd-timer-probeandcheck:watch-hint-literal.check:doc-formula-expressionsfirst exited 3 (PREREQUISITE NOT MET:@objectstack/formulaunbuilt). Afteros-verify-lock.sh -c 'pnpm exec turbo run build --concurrency=2 --filter=@objectstack/formula --filter=@objectstack/lint'(VERDICT command-exit 0) it exited 0.--ran: "13 derived famil(ies) accounted for — 13 run, 0 NOT-MEASURED".check:platform-checklistruns in no per-PR CI, so this reading is its evidence:795ff708d8: "OK — 16 areas, 328 items", "line citations: 0 survive across 21 swept documents", "symbol anchors: 942/952 resolved", 10 on the residual, 18 file floors held;9a85df9a8c: the same, with "symbol anchors: 943/953 resolved". The one new anchor isenv.ts#resolvePlatformOwnerEmail.git merge-tree --write-tree HEAD b5010d9c03(PR feat(cli,runtime)!: the upgrade ceremony opens — v17 and 18.0 databases take it, and a server serves only a database it created or one the ceremony certified (18.x steps 5 and 6) #24681's head, fetched frompull/24681/head): exit 0 at9a85df9a8c(tree8476465619), and exit 0 again at8bfefd50f5(tree12cf869ead). No path here is routed to theos-regendriver. feat(cli,runtime)!: the upgrade ceremony opens — v17 and 18.0 databases take it, and a server serves only a database it created or one the ceremony certified (18.x steps 5 and 6) #24681 touchesplatform-core.json(itemv18-boot-refusals) andcli.json, which are item-disjoint from this PR.Acceptance notes
docs/qa/**ships in no package. The root package is private, and no published manifest'sfiles[]namesdocs/qa(control: 73 published manifests namedist). So the PR carriesskip-changeset.Generated by Claude Code