Repository navigation
Closed
Labels
Description
Run record for the full-checklist wave anchored on #23878 (selector all, run per area). Runner session session_01K3qUoyh1xFGoWzAACPMbXJ, dispatched by the domain:devx seat 1 PM. Protocol: .claude/skills/checklist-test/SKILL.md + docs/qa/platform-checklist/RUNNER.md.
Environment fingerprint
- framework:
94114c1f269f6b3d885f24b6f4689dce29504574(origin/main at run start;pnpm install --frozen-lockfile && pnpm build, 75/75 green) - resolver:
node scripts/checklist-select.mjs allat that sha → 272 runnable · 2 blocked hidden · 1 planned .objectui-sha:daeb77fc84dd824e74c95b87cdede85afdb248e7. ⚠pnpm objectui:buildFAILS on this sha (Console pin does not build on main: objectui daeb77fc imports checkPageComponentViewData, deleted from spec by #23784 #23908). Browser/mixed verdicts ran on a console built at that same pin against@objectstack/specfroma35f7a67^(the commit before the deletion), served from a linked worktree at94114c1fwith identical framework dists.check:console-shamatches.- app: showcase · boot
OS_PORT=P objectstack dev --ui --seed-admin -p P -d file:…/data.db· per-runner port and DB · seeded admin + demo personas - browser: Playwright 1.63 on
/opt/pw-browsers/chromium(Chromium 141), one context per persona - timestamp: 2026-10-16 (UTC) · runners:
- G12 integration-system: ports [41220,41221,41222,41225,41230] · sequential · env 12 min / test 62 min
Scope
Selector area:integration-system (from the all resolution) · 18 runnable item(s):
integration-system.connector-declarative-bootr2 · P1 · api → passintegration-system.connector-degraded-recoveryr2 · P1 · api → passintegration-system.connector-stdio-default-denyr2 · P1 · cli → passintegration-system.connector-spec-path-no-escaper2 · P2 · build → passintegration-system.connector-descriptor-auditr2 · P2 · cli → passintegration-system.flow-connector-pickerr4 · P2 · browser → passintegration-system.webhook-lifecycler6 · P1 · mixed → partialintegration-system.job-scheduled-runr3 · P1 · mixed → passintegration-system.email-template-renderr6 · P2 · mixed → passintegration-system.notify-inbox-deliveryr3 · P1 · mixed → partialintegration-system.external-datasource-federated-readr2 · P1 · api → passintegration-system.datasource-admin-lifecycler3 · P1 · api → passintegration-system.external-schema-introspectionr3 · P1 · api → passintegration-system.external-schema-drift-gater2 · P1 · cli → passintegration-system.notification-preference-suppressionr2 · P2 · mixed → partialintegration-system.datasource-credential-refusal-matrixr4 · P0 · mixed → partialintegration-system.connector-auth-kind-applicationr1 · P1 · api → passintegration-system.external-schema-browser-uir3 · P1 · mixed → pass
Per-clause verdicts
| item | # | clause (short) | verdict | evidence |
|---|---|---|---|---|
| connector-declarative-boot | 0 | 3 provider variants listed declarative+ready | pass | GET /automation/connectors 200: showcase_status_api, showcase_status_openapi, showcase_mcp_tools each origin declarative state ready; total 5; showcase_erp_catalog absent |
| connector-declarative-boot | 1 | actions derived from upstream | pass | mcp actions [echo_upper] = scripts/mcp-fixture.mjs tools/list; openapi actions [getHealth] = status-openapi.json operationId |
| connector-declarative-boot | 2 | materialized instances dispatch end-to-end | pass | trigger ping: ping.body {status ok,version 18.0.0-next.2}; trigger echo: echo.structuredContent {upper OBJECTSTACK}; runs status completed |
| connector-declarative-boot | 3 | authoring gate rejects malformed entries | pass | os compile exit 2 x3: providerConfig requires a provider; must not author actions (rest derives them); must not inline secrets via authentication, use auth credentialRef |
| connector-declarative-boot | 4 | unknown provider is hard boot error | pass | scratch boot aborts: connector instance qa_c5 declares provider no_such_provider, but no provider factory is registered (automation plugin startup failed) |
| connector-declarative-boot | 5 | disabled declaration gone after reboot | pass | scratch boot with showcase_status_api enabled:false: listing = openapi, mcp, rest, slack (status_api absent); reload teardown not separately driven |
| connector-degraded-recovery | 0 | boot completes, degraded husk visible | pass | args to missing script: boot healthy; WARN Connector registered DEGRADED; descriptor state degraded, degradedReason could not reach its MCP server, actions [] |
| connector-degraded-recovery | 1 | degrade only for upstream-unavailable; config fault fatal | pass | transport.kind carrier_pigeon boot aborts: providerConfig.transport.kind must be stdio or http (plugin startup failed); unreachable upstream degrades |
| connector-degraded-recovery | 2 | dispatch of degraded fails fast quoting reason | pass | POST echo trigger 400 FLOW_FAILED in ~74ms: connector showcase_mcp_tools is degraded - could not reach its MCP server... distinct from no-such-connector |
| connector-degraded-recovery | 3 | backoff 5s doubling to 300s | pass | retry attempts at 12:07:22.7/28.5/38.7/58.8/08:38.8: gaps 5.8s,10.1s,20.1s,40.1s; reload-reset half not driven live (unit pins only) |
| connector-degraded-recovery | 4 | atomic restart-free recovery | pass | re-added script file; retry at 12:09:59 logged Connector registered showcase_mcp_tools; same server PID; state ready, echo_upper; echo run output upper OBJECTSTACK |
| connector-stdio-default-deny | 0 | non-opted-in stdio refused naming mechanism | pass | boot without declarativeStdio aborts: declares a stdio transport (command 'node'), but declarative stdio transports are disabled by default - a stdio transport launches a local process from stack metadata |
| connector-stdio-default-deny | 1 | allowlist mismatch quotes command and allowlist | pass | command python3 boot aborts: stdio transport with command 'python3', which is not in the host's declarativeStdio allowlist [node] |
| connector-stdio-default-deny | 2 | deny is boot-fatal config fault, not degrade | pass | both denied boots exited (health 000); 0 DEGRADED / retrying lines; no fixture process observed |
| connector-stdio-default-deny | 3 | allowlisted boot materializes ready | pass | stock boot: showcase_mcp_tools origin declarative state ready, action echo_upper |
| connector-spec-path-no-escape | 0 | package-relative spec derives actions | pass | stock: showcase_status_openapi ready with action getHealth |
| connector-spec-path-no-escape | 1 | absolute path rejected incl Windows | pass | boot aborts: package file ref '/etc/hostname' is absolute - file refs must be relative to the declaring stack/package root; same for C:\x\spec.json |
| connector-spec-path-no-escape | 2 | escape rejected on resolved path; inside form passes | pass | '../../outside.json' escapes the stack/package root - reads are confined to app root; './src/../src/system/connectors/status-openapi.json' boots ready getHealth |
| connector-spec-path-no-escape | 3 | missing file loud: fatal at boot, skip-with-log on reload | pass | boot aborts: could not be read (resolved to .../app/does-not-exist.json) ENOENT; --no-restart reload logs ERROR failed to materialize and server stays up |
| connector-descriptor-audit | 0 | loud side names names + prescription | pass | WARN [Automation] 1 declarative connector(s) declare actions but are not registered ... : qa_inert_desc ... or mark a deliberate catalog-only entry with enabled: false |
| connector-descriptor-audit | 1 | three quiet conditions | pass | stock boot: no audit warn; same-boot descriptor named slack (plugin-registered) not listed; provider-bound instances never named |
| connector-descriptor-audit | 2 | audit re-runs on metadata reload | pass | --no-restart boot, added enabled:true descriptor, recompile; 12:13:44 warn listing qa_inert_desc after artifact auto-reloaded, no restart |
| flow-connector-picker | 0 | picker lists exactly the API instances | pass | API 5 connectors; Studio connector field datalist holds the same 5 names, no extras (screenshot confirmed field render; native list read from DOM) |
| flow-connector-picker | 1 | declarative annotated, plugin not | pass | datalist labels: three end with "· declarative"; rest and slack carry no annotation |
| flow-connector-picker | 2 | picked instance offers derived actions + input schema | pass | action option echo_upper (Echo Upper); input field Text with help "Text to upper-case" = inputSchema.properties.text |
| webhook-lifecycle | 0 | declared webhook materializes with remaps | pass | sys_webhook showcase_task_changed: object_name showcase_task, active false, managed_by package, definition_json carries envelope (object, isActive, timeoutMs 30000) |
| webhook-lifecycle | 1 | per-record variants each deliver once with recordId | pass | in-org scratch webhook: receiver got data.record.created / updated / deleted, one each, recordId 51HJPulmTpFgcWGY |
| webhook-lifecycle | 2 | bulk pair aggregate shape | blocked(dependency) | not driven: in-org flow multi-write events carry no organizationId (knownGaps[1], maintainer question on #23166) |
| webhook-lifecycle | 3 | headers, HMAC, timeout, outbox rows | pass | X-QA-Custom header present; signature = HMAC-SHA256(body, secret) verified; row timeout_ms 5000; rows success attempts 1; dead receiver -) pending attempts 2 error fetch failed |
| webhook-lifecycle | 4 | redeliver replay + refusal matrix | pass | 200 {id,status pending}; replayed X-Objectstack-Signature byte-equal to originals; 401, 400 INVALID_REQUEST, 400 MISSING_REQUIRED_FIELD, 404, 409 DELIVERY_NOT_ELIGIBLE; cross-org 404 + NEVER_SENT via pins |
| webhook-lifecycle | 5 | retired trigger kinds fail at parse | pass | compile exit 2: Invalid value 'undelete' (did you mean delete); Invalid value 'api'; planted stored row warns 'declares trigger(s) the engine never emits: undelete - ignored' |
| webhook-lifecycle | 6 | admin-edited row survives reboot | pass | after reboot showcase_task_changed: active true, url http://127.0.0.1:41221/shipped, customized true |
| job-scheduled-run | 0 | cron, interval, once each fire | pass | scratch jobs: qa_job_interval 31 runs, qa_job_once 1 run at at-time, qa_job_cron (Asia/Tokyo, every minute) 2 runs; side-effect file lines match |
| job-scheduled-run | 1 | name-keyed sys_job + counters | pass | sys_job rows keyed by name with adapter ids; run_count/failure_count/last_status move (throw 6/6 failed, interval 31/0 success) |
| job-scheduled-run | 2 | retry per converged policy; no-policy one attempt | pass | qa_job_throw attempts 1,2,3 at +0s,+1s,+3s then failed; qa_job_throw_nopolicy 1 attempt per fire |
| job-scheduled-run | 3 | over-timeout run status timeout, counts as failure | pass | qa_job_timeout runs status timeout, error timed out after 1000ms, failure_count 2; retry-of-timeout not exercised (no policy) |
| job-scheduled-run | 4 | two skip doors loud and distinct | pass | WARN job handler not found in bundle.functions - skipping (qa_job_nohandler); enabled:false skip logs only at DEBUG (job disabled - skipping); neither ran |
| job-scheduled-run | 5 | closed doors refuse loudly | pass | compile: job.id removed ... name IS the job's identity ... os migrate meta --from 16; cron-)schedule, fn-)handler did-you-means; PUT /meta/job 403 NOT_CREATABLE |
| email-template-render | 0 | authored template renders all holes | pass | sys_email: subject "✅ Task done: QA Title One", body "The task QA Title One on project QA Proj was marked done." no {{ residue |
| email-template-render | 1 | missing required var fails fast; optional ok | pass | delivery dead MISSING_VARIABLES: title; missing project renders "on project was marked done" |
| email-template-render | 2 | active:false -> TEMPLATE_INACTIVE | pass | delivery error TEMPLATE_INACTIVE: qa_inactive_tpl |
| email-template-render | 3 | exact (name, locale), en-US fallback | pass | zh-CN user got "ZH-CN 完成: LocProbe"; zh user got en-US "ADMIN-EDIT done: LocProbe"; no-locale user got en-US |
| email-template-render | 4 | fromOverride/replyTo; derived text | pass | from "QA Sender (qa-sender@qa.test)", reply_to qa-reply@qa.test, body_text "Hello FromVal derived"; item has no bodyText |
| email-template-render | 5 | admin overlay survives reboot; source edit served on reload | pass | post-reboot GET meta subject "ADMIN-EDIT done: {{title}}"; scratch copy --no-restart source edit served "RELOADED-SOURCE done" without restart |
| email-template-render | 6 | authoring rejections loud | pass | compile: unrecognized key body; content -) bodyHtml did-you-mean; name must be dotted snake_case; category retired |
| email-template-render | 7 | raw send door auth + validation | pass | authed 200 status sent (LogTransport); anon 401 UNAUTHENTICATED; string body 400 INVALID_REQUEST; bad shape 400 VALIDATION_FAILED; bodyHtml 400 at least one of text or html; 501 not driven |
| notify-inbox-delivery | 0 | notify node delivers inbox row | pass | assignee GET /notifications: type task.assigned, title "New task assigned: Content backlog", actionUrl /showcase_task/6ch9Y62mcXPrRAed |
| notify-inbox-delivery | 1 | recipient-scoped | pass | third member GET /notifications: notifications [] unreadCount 0 |
| notify-inbox-delivery | 2 | mark-read persisted per receipt | pass | POST /notifications/read readCount 1; ?read=false empty; receipt row (notification,user,inbox) state read; read/all readCount 1 -) unread 0 |
| notify-inbox-delivery | 3 | 401 anon; 501 without messaging | blocked(fixture) | anon 401 UNAUTHENTICATED (pass); 501 half needs a boot without messaging, showcase always requires it (knownGaps[2]) |
| notify-inbox-delivery | 4 | unimplemented channel never fakes delivery | pass | push probe: no inbox row, no delivery row; WARN emit: channel 'push' is not registered; refused 1 delivery row(s) the dispatcher could only dead-letter |
| external-datasource-federated-read | 0 | federated objects in meta and queryable | pass | meta lists showcase_ext_customer/order; /data returns c1..c3 total 3; filter status=paid total 3, top=2 returns 2 |
| external-datasource-federated-read | 1 | writes refused with located error | pass | POST/PATCH/DELETE 403 EXTERNAL_WRITE_FORBIDDEN naming datasource showcase_external allowWrites false; c1 unchanged |
| external-datasource-federated-read | 2 | connection listed with ok health | pass | GET /datasources: showcase_external schemaMode external origin code active true status ok; detail 200; console panel shows Active |
| datasource-admin-lifecycle | 0 | drivers catalog static, not anonymous | pass | admin 200: memory,sqlite,postgres,mysql,mongodb each with configSchema; anon 401 UNAUTHENTICATED |
| datasource-admin-lifecycle | 1 | uniform floor 401/403 | pass | anon 401 on list/drivers/POST; no-cap 403 PERMISSION_DENIED "requires the manage_platform_settings capability" on all three |
| datasource-admin-lifecycle | 2 | POST /test draft probe, no persistence | pass | 200 {ok true, latencyMs 2}; list unchanged (default, showcase_external) |
| datasource-admin-lifecycle | 3 | migrate-credential outcomes | pass | live clean row 200 {status already-bound}; bind arm via unit pin datasource-credential-migration.test.ts |
| datasource-admin-lifecycle | 4 | runtime create provenance + health | pass | POST 201 qa_ds_probe origin runtime status ok; list shows it |
| datasource-admin-lifecycle | 5 | secret never echoes | pass | detail hasSecret true, redactedConfigKeys []; secret string found 0 times in create/list/detail bodies |
| datasource-admin-lifecycle | 6 | malformed draft 400 DATASOURCE_ADMIN_ERROR | pass | filename:123 -) 400 DATASOURCE_ADMIN_ERROR config.filename expected string; missing name -) 400 same code |
| datasource-admin-lifecycle | 7 | 503 names external-datasource when unwired | pass | unit pin admin-routes.test.ts passed; live remote-tables answered 200 wired (not-applicable-live) |
| datasource-admin-lifecycle | 8 | 404 + ledger | pass | GET /datasources/does-not-exist 404 RESOURCE_NOT_FOUND; datasource-route-ledger.conformance.test.ts passed |
| external-schema-introspection | 0 | remote-tables lists tables with columnCount 7 | pass | 200 tables customers columnCount 7, orders columnCount 7 |
| external-schema-introspection | 1 | ?schema= honoured / degrades | pass | pin #7955 cases pass; live ?schema=main, ?schema=, ?schema=a&schema=b all 200 full set on both spellings (narrowing unobservable on SQLite) |
| external-schema-introspection | 2 | object-draft reviewable compilable | pass | draft fields type-only (no primaryKey), header line exact, value import, // Remote primary key: id, review []; tsc on draft.source exit 0 |
| external-schema-introspection | 3 | two spellings one operation | pass | external/tables set equals remote-tables; object-draft and tables/customers/draft bodies identical; twin pin passed |
| external-schema-introspection | 4 | auth floor identical on both spellings | pass | anon 401 UNAUTHENTICATED on all 4 routes; no-cap 403 PERMISSION_DENIED naming manage_platform_settings on all 4 |
| external-schema-drift-gate | 0 | default fail refuses boot | pass | induced lifetime_value float-)boolean; onMismatch omitted and explicit fail: boot aborts 'Object showcase_ext_customer does not match its remote table on datasource showcase_external: type_mismatch customers.lifetime_value' |
| external-schema-drift-gate | 1 | warn proceeds and logs | pass | warn boot healthy; WARN [external-validation] external schema drift {datasource, object, diffs type_mismatch lifetime_value} |
| external-schema-drift-gate | 2 | ignore is silent | pass | ignore boot healthy; zero [external-validation] verdict lines |
| external-schema-drift-gate | 3 | checkOnBoot:false honoured loudly | pass | fail+checkOnBoot false boot healthy; INFO boot schema validation SKIPPED ... datasources [showcase_external] objectsSkipped 2; all-clear objects 0 |
| external-schema-drift-gate | 4 | skip is boot-step only | pass | same boot: armed background drift check {showcase_external, intervalMs 60000}; checkonboot pin passed |
| external-schema-drift-gate | 5 | partial-read honesty | pass | list-diagnosed-consumer-sweep.test.ts passed (in 39-test batch) |
| external-schema-drift-gate | 6 | periodic re-check observational | pass | external-validation-plugin.test.ts passed; live armed background drift check line on checkIntervalMs boot |
| notification-preference-suppression | 0 | suppression row mutes inbox | pass | pref (assignee, task.assigned, inbox, false) -) refire: assignee task.assigned count stays 2; INFO suppressed for all recipients by preference |
| notification-preference-suppression | 1 | no dead-letter fake | pass | sys_notification_delivery: 8 rows all success, none failed/dead; no new inbox row |
| notification-preference-suppression | 2 | flip back resumes | pass | enabled true -) next fire count 3 |
| notification-preference-suppression | 3 | most-specific-wins; mandatory topic bypass | blocked(fixture) | user ON over * global OFF delivered (count 4) - pass; mandatoryTopics half not configurable on showcase (knownGaps[1]), mechanism in preference-resolver pin |
| notification-preference-suppression | 4 | sys_notification_template renders via delivery | pass | email channel row (qa.ntpl, email, en): sys_email subject "NT subject for QA-NT-TITLE", body "NT body: QA-NT-TITLE via template" |
| datasource-credential-refusal-matrix | 0 | every inline-credential door refuses at publish | pass | 9 datasource doors refused at os compile (exit 2) AND POST /datasources (400 DATASOURCE_ADMIN_ERROR), each naming key + credentialsRef; connector inline authentication refused at compile |
| datasource-credential-refusal-matrix | 1 | credentialsRef alternative publishes and connects | blocked(environment) | publish ok (compile exit 0; runtime 201) but no reachable postgres/mysql/mongo: status error ECONNREFUSED |
| datasource-credential-refusal-matrix | 2 | both read doors redact and agree | pass | admin + meta doors for 6 datasources: 0 planted values except plugin non-canonical apiSecret; config objects identical across doors |
| datasource-credential-refusal-matrix | 3 | presence-preserving redaction | pass | qa_ds_probe hasSecret true vs showcase_external hasSecret false; turso redactedConfigKeys [encryptionKey] vs [] |
| datasource-credential-refusal-matrix | 4 | legacy alias rows redacted | pass | direct DB-planted passwd, pwd, auth_token, jwt: absent from both doors, redactedConfigKeys lists them |
| datasource-credential-refusal-matrix | 5 | unknown driver fixed spellings redacted | pass | qa_plugin_drv: password, authToken absent, url userinfo stripped (proto://pu@h/x); apiSecret served as written (ruled boundary) |
| datasource-credential-refusal-matrix | 6 | echoed-mask write guard | blocked(environment) | PATCH config echo 200; hasSecret still true, same sys_secret handle (partial reading); connect probe impossible without DB |
| datasource-credential-refusal-matrix | 7 | not a privilege artifact | pass | no-cap 403 and anon 401 on both doors for every datasource and list |
| connector-auth-kind-application | 0 | each kind lands in its wire shape | pass | echo receiver: none no auth; bearer "Bearer SEKRIT-bearer-111"; basic "Basic cWE6U0VLUklULWJhc2ljLTIyMg==" = b64(qa:pw); X-API-Key header; ?api_key= with no header |
| connector-auth-kind-application | 1 | secret via resolution not metadata | pass | meta auth {type bearer, credentialRef QA_BEARER_TOK} etc.; wire carries env values |
| connector-auth-kind-application | 2 | unresolvable credentialRef boot-fatal | pass | boot aborts: credentialRef 'QA_BEARER_TOK' did not resolve ... set the 'QA_BEARER_TOK' env var, or wire AutomationServicePluginOptions.credentialResolver (ADR-0097 §3) |
| connector-auth-kind-application | 3 | oauth2 and inline authentication refused at authoring | pass | compile: auth.type Invalid discriminator value. Expected none/bearer/api-key/basic; inline authentication refused with the #7990 message |
| connector-auth-kind-application | 4 | no resolved secret in served bodies | pass | grep SEKRIT in /automation/connectors and /meta/connector bodies: 0 hits; basic username qa present |
| external-schema-browser-ui | 0 | panel only for federated datasource | pass | screenshot: showcase_external shows External Datasource panel, Tables/Validation tabs, READ-ONLY pill; default (managed) shows none; unsaved-draft guard not exercised |
| external-schema-browser-ui | 1 | SchemaBrowser mirrors API | pass | panel rows customers 7, orders 7 = GET external/tables; only one tables fetch on mount |
| external-schema-browser-ui | 2 | import chain lands real object | pass | draft POST 200, dialog shows showcase_customers + generated source; PUT /meta/object/showcase_customers 200; meta bound to showcase_external; /data rows; write 403; server twin 201 {object} |
| external-schema-browser-ui | 3 | refresh catalog round trip | pass | POST refresh-catalog 200 snapshotAt 12:49:23.205Z; header renders snapshot 10/16/2026, 12:49:23 PM |
| external-schema-browser-ui | 4 | validation panel reports server result | pass | POST validate 200 ok true 2 results; panel: All 2 objects match, rows showcase_ext_customer, showcase_ext_order |
| external-schema-browser-ui | 5 | floors for validate/import/refresh + PUT meta | pass | anon 401 on all; no-cap 403 manage_platform_settings (validate), manage_metadata (import, refresh-catalog); PUT /meta/object 403 requires manage_metadata |
| external-schema-browser-ui | 6 | 503 detector | pass | objectui daeb77f vitest api.test.ts: 16 passed (503 SERVICE_UNAVAILABLE cases); live unwired render not applicable on stock boot |
| integration-system.connector-declarative-boot | pass | |||
| integration-system.connector-degraded-recovery | pass | |||
| integration-system.connector-stdio-default-deny | pass | |||
| integration-system.connector-spec-path-no-escape | pass | |||
| integration-system.connector-descriptor-audit | pass | |||
| integration-system.flow-connector-picker | pass | |||
| integration-system.webhook-lifecycle | partial | |||
| integration-system.job-scheduled-run | pass | |||
| integration-system.email-template-render | pass | |||
| integration-system.notify-inbox-delivery | partial | |||
| integration-system.external-datasource-federated-read | pass | |||
| integration-system.datasource-admin-lifecycle | pass | |||
| integration-system.external-schema-introspection | pass | |||
| integration-system.external-schema-drift-gate | pass | |||
| integration-system.notification-preference-suppression | partial | |||
| integration-system.datasource-credential-refusal-matrix | partial | |||
| integration-system.connector-auth-kind-application | pass | |||
| integration-system.external-schema-browser-ui | pass |
Reproduction rules (fails)
None: no clause failed.
Derived item verdicts
14 pass · 4 partial · 0 fail · 0 blocked · 0 not-run (of 18).
Pin runs (Tier 1, RUNNER rule 6):
integration-system.connector-declarative-boot: packages/qa/dogfood vitest --maxWorkers=1 showcase-declarative-mcp.dogfood.test.ts: 2 passed / 0 failedintegration-system.connector-degraded-recovery: service-automation vitest connector-degrade-cause, degraded-register-cause, connector-descriptor-audit, connector-materialization: 76 passed / 0 failedintegration-system.connector-stdio-default-deny: connector-mcp vitest src/mcp-provider.test.ts: 19 passed / 0 failedintegration-system.connector-descriptor-audit: service-automation connector-descriptor-audit.test.ts in batch: 76 passed / 0 failedintegration-system.webhook-lifecycle: dogfood webhook-materialization.dogfood.test.ts: 1 passed; service-messaging http-outbox-parked-record, http-signature-at-rest, http-outbox: 19 passed; plugin-webhooks redeliver tenant-scope/member/auth-gate: 30 passedintegration-system.email-template-render: dogfood email-template-materialization.dogfood.test.ts: 4 passed / 0 failedintegration-system.datasource-admin-lifecycle: service-datasource admin-routes, envelope.conformance, datasource-credential-migration, datasource-route-ledger.conformance: 88 passed / 0 failedintegration-system.external-schema-introspection: rest vitest remote-tables-twin.equivalence.test.ts: 10 passed / 0 failedintegration-system.external-schema-drift-gate: runtime vitest external-validation-plugin, external-validation-checkonboot, list-diagnosed-consumer-sweep: 39 passed / 0 failedintegration-system.notification-preference-suppression: service-messaging vitest preference-resolver.test.ts: 25 passed / 0 failedintegration-system.connector-auth-kind-application: connector-rest rest-connector.test.ts: 10 passed; service-automation connector-materialization.test.ts in 76-test batch passedintegration-system.external-schema-browser-ui: objectui checkout daeb77f (repo root) vitest packages/app-shell/src/views/metadata-admin/external/api.test.ts: 16 passed / 0 failed
Fixture gaps
integration-system.webhook-lifecycleclause 2: in-org predicate multi-write bulk events carry no organizationId; maintainer question open on QA run · surface:mixed (90/90) · 36b2889c · 2026-10-12 · 72 PASS / 10 PARTIAL / 8 FAIL / 0 BLOCKED / 0 NOT-RUN #23166integration-system.notify-inbox-deliveryclause 3: 501 half needs a boot without MessagingServicePlugin; showcase requires messagingintegration-system.notification-preference-suppressionclause 3: mandatoryTopics is a constructor option, default []; no showcase topic is mandatoryintegration-system.datasource-credential-refusal-matrixclause 1: no reachable credential-protected postgres/mysql/mongo in the containerintegration-system.datasource-credential-refusal-matrixclause 6: connect half of the echoed-mask probe needs the same database
Checklist-accuracy findings from this area close out on the wave anchor #23878; they are not extracted.
Activity
objectstack-fleet commentedon Oct 16, 2026
Close-out for this record (checklist-test §5), 2026-10-16T17:20Z. 14 pass · 4 partial · 0 fail of 18. There is no
failrow. Each partial's gap is parked on the wave anchor:Checklist-accuracy findings in this record close out on #23878. Closed by the
domain:devxseat 1 PM (seat post #6023) ·os-sales·session_014eFvbvGK4FjXvscggDNTD4, as part of the paced close-out of the #23878 wave.Generated by Claude Code