Repository navigation
docs(qa): 18.0 sweep round 7 — integration-system checklist-accuracy findings and four carried notes - #24717
Merged
objectstack-fleet[bot] merged 4 commits intoOct 20, 2026
Conversation
…findings and four carried notes Part (a): thirteen integration-system items revised from QA runs #24575 and #24615 (and #24556 / #24558's continuations): the Postgres recipe, the mongodb driver id, the sqlite filename key, the POST /test route order, the reload-versus-config-edit backoff, the --preset minimal messaging recipe, the timeout-with-retryPolicy probe, the per-clause narrowing of the declarative-connector pin, the mailbox and webhook fixture recipes. Part (b): platform-core.metadata-authoring-roundtrip's stale marker refreshed to #24598; access-security.activation-write-operator-gate's comma-range line citations re-pointed to symbols; access-security.platform-owner-email-anchor steps[0]'s walled parenthetical corrected; RUNNER.md's objectui-only count replaced by its rule. Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp Co-authored-by: Claude <noreply@anthropic.com>
…8-sweep-round7-integration
…8-sweep-round7-integration
The sixteen history rows were committed with the placeholder '#PENDING-24579R7' because the pull request had no number before it was opened. This changes exactly those sixteen strings and nothing else. 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-round7-integration
branch
October 20, 2026 02:37
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 7 of the 18.0 release sweep's wave anchor (#24579), one PR in two parts. Part (a) takes
integration-system, the last area §3 had not worked, from its run records #24575 (round 1,5b14b7f3) and #24615 (round 2,ba4afcc2), plus the rows #24556 and #24558 left for this file. Part (b) takes four notes carried from rounds 5 and 6. These are checklist and runner-doc defects only: no product code, test or pin changes.Every finding was re-derived from
origin/main's source before it was edited. Each edited item takes onerevisionbump and onehistoryrow naming its run record(s). The rows'refis a placeholder in this head; a fill commit replaces exactly those 16 strings with this PR's number.Part (a) —
docs/qa/platform-checklist/areas/integration-system.json13 items (cap 20).
datasource-credential-refusal-matrixfixtures.knownGaps[2],fixtures.knownGaps[4](new),steps[0],steps[8],acceptance[6].clause,source[2]datasource-admin-lifecyclesteps[2],steps[3],steps[4],steps[5],steps[8],acceptance[0].clause,acceptance[2].clause,acceptance[4].clause,acceptance[4].verifyexternal-schema-introspectionfixtures.knownGaps[0]external-schema-browser-uisteps[1],steps[7],acceptance[0].clause/.verify/.evidence,acceptance[3].verify,fixtures.knownGaps[3],fixtures.knownGaps[4](new)connector-degraded-recoveryfixtures.requires[0],steps[4],steps[6],acceptance[3].verifynotify-inbox-deliveryfixtures.requires[0],fixtures.knownGaps[2],steps[5],acceptance[3].verify,acceptance[4].verifyjob-scheduled-runfixtures.requires[1],steps[4],steps[6],acceptance[3].verify/.evidenceconnector-declarative-bootautomated.refinbound-mailbox-associationfixtures.requires[1],fixtures.knownGaps[0]notification-org-and-redeliver-eligibilityfixtures.requires[2],steps[2],steps[3]external-datasource-federated-readfixtures.requires[0],steps[4],acceptance[2].oracle/.evidenceexternal-schema-drift-gatefixtures.knownGaps[0],steps[0]connector-auth-kind-applicationsteps[1],fixtures.knownGaps[0],source[5]What each one says now, and the source it was checked against:
/usr/lib/postgresql/16/bin(re-read in this container), and QA run · integration-system (16/20) · 5b14b7f3 · 2026-10-19 · 11 PASS / 5 PARTIAL / 0 FAIL / 0 BLOCKED / 4 NOT-RUN #24575's recipe scored acceptance[1] and [6] pass. The gap now carries the recipe.mongodb, notmongo.DRIVER_CATALOGservesmongodb(driver-catalog.ts), and an authoredmongois refused by name since 18 (datasource.zod.ts). Fixed in both datasource items.filename.SqliteConfigSchemadeclaresfilename;fileis an alias that authoring refuses with a rename hint.POST /testorder (hypothesis 2). The item relied on the order:steps[3]andacceptance[2].clauseboth stated it.server.post(root + '/test')is registered after every:nameroute inadmin-routes.ts. "test" stays uncaptured only because no POST route takes a bare:name. So the ledger text is corrected. The code comment is reported in the acceptance notes below and is not edited.?schema=on Postgres (hypothesis 1). 18.0 round-2 sweep framework findings: a paid invoice line'samount/totalstays writable while its inputs are locked; an unevaluable hook condition answers 500 INTERNAL_ERROR;remote-tables?schema=never narrows on the SQL drivers #24619 row (c) is now service-datasource:remote-tables?schema=never narrows on the in-tree SQL drivers, so a named schema answers 200 with the wrong tables (#24619 row c) #24664, which is open. The knownGap's claim that a Postgres fixture would make narrowing live-scoreable is false:introspectSchemalistscurrent_schemas(false)tables with bare names. It is corrected.acceptance[1]states the finding: the twolistRemoteTablesroute twins diverge on?schema=— the admin spelling drops it #7955 contract and stays as written, because the defect makes it false live, not the clause.12dc7b47c340, and QA run · integration-system (17/20) · ba4afcc2 · 2026-10-19 · 17 PASS / 0 PARTIAL / 0 FAIL / 0 BLOCKED / 3 NOT-RUN #24615 ran at4016370a. Both were read.DatasourceResourcePagerows never open the item, sosteps[1]names the engine edit route.CREATE_MODE_CANVAS_TYPESis object / report / dataset / doc.acceptance[0]now scores the observable half (no name-less call) and records the guidance half as not-run.POST /meta/_migrate-stored. The item save door answersmetaWriteCapabilityVerdict's "Saving a metadata item requires…" with 403FORBIDDEN.importObjectmakes no existence check. This is recorded as a knownGap that no clause scores.degradeConnectorInstancerestarts attempts at 1 only on a signature change. Ametadata:reloadedreconcile retries at once and keeps counting.steps[6]now names a restart-free reload:os devrestarts on a source save, because its--restartdefaults to true.resolveServedCapabilitiesskips the always-on slate under--preset minimal. The knownGap carries QA run · integration-system (17/20) · ba4afcc2 · 2026-10-19 · 17 PASS / 0 PARTIAL / 0 FAIL / 0 BLOCKED / 3 NOT-RUN #24615's scratch app-todo recipe.runWithPolicyretries timeouts. A second probe with aretryPolicyis what can show it.connector-declarative-bootref. It is narrowed clause by clause against the two cases ofshowcase-declarative-mcp.dogfood.test.ts, in the shape round 2 used forscope-depth-asymmetry.MailboxServicePlugin, becauserequireslistsmailbox. What is missing is the IMAP sync composition, amailAssociationfield and an IMAP double.active === truepredicate. The item carries the active-then-switch-off recipe. It warns off a pending row, which answersDELIVERY_NOT_ELIGIBLEfromassertHttpRedeliverablefor another reason.Part (b) — carried notes
platform-core.metadata-authoring-roundtripautomated.stale.observedIn(#7695→#24598),.partial,.why,.ownedByaccess-security.activation-write-operator-gateacceptance[3].clause,acceptance[4].clause,acceptance[4].verify,acceptance[5].verify,negative[3],source[0]access-security.platform-owner-email-anchorsteps[0]RUNNER.md· "Environment facts the runner should not re-derive", the objectui-onlyautomated.refentrystudio-record-page.spec.tshas the same blob at4016370af3c9and12dc7b47c340(read in objectui), and QA run · tier1:automated-pins (149/166) · ba4afcc2 · 2026-10-19 · 60 PASS / 89 PARTIAL / 0 FAIL / 0 BLOCKED / 17 NOT-RUN #24598 ran it 0 passed / 1 failed.ownedBynames e2e(live): eleven live specs are stale or red at the console pin against the shipped showcase — the 18.0 sweep's Tier 1 run (#24598) read them as non-defects, and no card holds their repair objectui#13104. The marker also saidstudio-object-designer.spec.tswas unaffected. QA run · tier1:automated-pins (149/166) · ba4afcc2 · 2026-10-19 · 60 PASS / 89 PARTIAL / 0 FAIL / 0 BLOCKED / 17 NOT-RUN #24598 ran its F1 and F4 red, sopartialandwhynow say so.acceptance[3].clause,141-147→activation-gate.ts#refuseUngrantedActivationWrite, plus the header's "What it enforces"singlebullet (prose).acceptance[4].verify,155-163→#refuseUngrantedActivationWrite(the sentence) and#FLOW_ACTIVATION_SUBJECT/#ACTION_ACTIVATION_SUBJECT(the remedies).acceptance[5].verify,190→#refuseUngrantedActivationWriteand#refuseUngrantedActivationAuthoring(bothisSystemarms).negative[3],141-147→#readEffectiveTenancyPosture, plus the header's "Fail-open on an ABSENT posture is deliberate" section (prose).source[0](#posture, which resolved only to a localconst posture, plus five line ranges) → the four symbols above, plus the same header section in prose.serve.ts#walledPostureRefusalrefuses a walled posture before any config is read, and it reads noOS_PLATFORM_OWNER_EMAIL. The walled-theme text itself (RUNNER.md's entry and the seven knownGaps) is untouched, waiting for 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.abb111cb4c: this branch plusorigin/main73d4cc7391, which includes PR docs(qa): 18.0 sweep anchor round 6 — mark the objectui live specs stale at the console pin, and narrow or drop the pins that cover no full clause, in the UI-facing areas #24697. On it, the rule "anautomated.refnames an objectui path and no path in this checkout" counts 23 objectui-only items, plus 7 mixed. On the pre-docs(qa): 18.0 sweep anchor round 6 — mark the objectui live specs stale at the console pin, and narrow or drop the pins that cover no full clause, in the UI-facing areas #24697 based1173825b7the same rule counts 27. Round 6 counted 28 before and 24 after by its own rule. The old sentence's "23" therefore matches this tree only by coincidence: it was four short a commit earlier, and a second careful reader counts 24 here. The number moves with every pin edit, and no gate reads it. The entry now states the rule, and keeps every other sentence in it.Bounded in-place fixes (same defect class, mechanical, same file, same gate):
activation-write-operator-gateacceptance[4].clause: it said flows recommend the clone path and that the platform_admin POSITION admits. Both remedies name the operator and neither names a clone:automation-activation-posture-gate.test.tsassertsask your platform operatorwith noclone, and the action pin asserts noclone. The gate reads the PLATFORM_ADMIN posture rung (ec?.posture === 'PLATFORM_ADMIN', Four server-side readers derive platform authority from the NAME inExecutionContext.positions— same species as #15948's blocked escalation, and already reachable onmain#15981). The walled lead of the clause is unchanged.external-schema-browser-uiacceptance[3].verifycitedExternalDatasourcePanel.tsx,108-123, andconnector-auth-kind-applicationfixtures.knownGaps[0]andsource[5]citedindex.ts,103,142/,66,103,142. These are the (b)2 rot class, re-pointed to a symbol or to prose for objectui.notify-inbox-deliveryfixtures.requires[0]spelled recipients['{record.assignee}']. The flow declares one CEL value envelope.Findings left alone
notify-inbox-delivery: thenotifyassignee must be a user id (§3; #24575)RecipientResolver.resolveOnesends an email-shaped recipient toresolveEmail, which looks upsys_userby email under the fan-out system context and returns its id. It keeps the email verbatim only when nothing matches (recipient-resolver.ts). A user id works, but it is not required.external-schema-introspectionacceptance[1]and the title's "?schema= honoured"tursois absent fromGET /driversthoughPOSTaccepts it, and the turso edit form shows only Labeldriver-catalog.tsheader: turso needs an optional package, which a dropdown cannot arrange). No item text says otherwise.credentialsRefhandle and the admin door onlyhasSecret, "say whether intended"acceptance[2]judges the two shapes consistent, and #24575 scored it pass. The newknownGaps[4]describes both doors.schemaMode: "external"on POST needs anexternalblockschemaMode, so the finding has no target text./_console/apps/com.objectstack.setup/metadata/datasource/_console/apps/setup/metadata/datasource, the spelling the edited steps use.knownGaps[4]as scored under no clause; no clause changed.connector-auth-kind-application: the oauth2 build refusal is a raw zod dump that names no connectoracceptance[3]claims a located message only for the inline-authenticationrefusal, which #24615 measured located./tmpprints "Console dist not found"Excluded files, named only:
studio-authoring.draft-publish-lifecyclehas clause-free pins. The greensummary-rollup.spec.tsonrecords-forms.master-detail-atomic-saveandgrid-conditional-rules.spec.tsonrecords-forms.conditional-rules-gridover-claim a clause.records-forms.json,studio-authoring.json(PR #24697) andcli.json(PR #24681) are untouched.Acceptance notes (not filed)
packages/services/service-datasource/src/admin-routes.ts: the comment abovePOST /testsays it is "Registered before the:nameroutes". It is registered after all of them. There is no runtime effect, because no POST route takes a bare:name. Noted for the service-datasource lane.The comma-range line-citation spelling survives in other area files. The line-citation limb refuses only
file:NNNand a bare:NNN, so these do not trip it. Hits:access-security.record-view-read-audit,access-security.share-link-landing-page,ai.console-ai-surface-gating,attachments-storage.field-accept-maxsize-server-enforced, threeautomationitems, fiveidentity-authitems,platform-core.docs-portal-render,search.command-palette-navigation(15 items);cli,records-forms,studio-authoring.Same carrier as (b)2: qa(checklist): 18.0 release sweep anchor at 5b14b7f3 — re-point 5 red-row clauses + the wave's checklist-accuracy findings, fixture gaps and not-run handover (18 records) #24579.
Gates
On
abb111cb4c(the branch merged withorigin/main73d4cc7391),node scripts/pm/dispatch-gates.mjs --commands(no paths) derived 13 families. All 13 exited 0, with exit codes captured before any pipe:--ran: "13 derived famil(ies) accounted for — 13 run, 0 NOT-MEASURED (a DERIVED zero …)". The first pass ofcheck:doc-formula-expressionsexited 3 because@objectstack/lintwas unbuilt. It was built under the verify lock and re-run.check:platform-checklistruns in no per-PR CI, so this reading is its evidence: "OK — 16 areas, 327 items". Symbol anchors went from 886/896 at base to 917/927 resolved, none refused (hypothesis 3); merging docs(qa): 18.0 sweep anchor round 6 — mark the objectui live specs stale at the console pin, and narrow or drop the pins that cover no full clause, in the UI-facing areas #24697 left both totals unchanged. The anchor census moved access-security 96 → 107, integration-system 63 → 83, and platform-core 96 → 96.revisionbump and onehistoryrow, and that every other item and top-level key is deep-equal.docs/qa/**is in no package'sfiles[], so this PR publishes nothing and takesskip-changeset.Generated by Claude Code