Files
core-devops d6603d7cd2
E2E Staging SaaS (full lifecycle) / E2E Staging Plugin Install Lifecycle (pull_request) Has been skipped
E2E Workspace Lifecycle (staginge2e) / E2E Workspace Lifecycle (staging) (pull_request) Has been skipped
Block integration-tester contamination artifacts / Block staging-trigger / invalid manifest contamination (pull_request) Successful in 7s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 7s
E2E Peer Visibility (literal MCP list_peers) / detect-changes (pull_request) Successful in 6s
CI / Python Lint & Test (pull_request) Successful in 7s
E2E Peer Visibility (literal MCP list_peers) / E2E Peer Visibility (local) (pull_request) Has been skipped
Handlers Postgres Integration / detect-changes (pull_request) Successful in 7s
Harness Replays / detect-changes (pull_request) Successful in 8s
Lint forbidden tenant-env keys / Scan for repo-host token write into tenant workspace surface (pull_request) Successful in 6s
Lint curl status-code capture / Scan workflows for curl status-capture pollution (pull_request) Failing after 8s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 3s
Lint forbidden tenant-env keys / Scan workspace_secrets writers for forbidden env keys (pull_request) Successful in 9s
E2E API Smoke Test / detect-changes (pull_request) Successful in 19s
E2E Workspace Lifecycle (staginge2e) / E2E Workspace Lifecycle (compile+skip) (pull_request) Successful in 16s
lint-required-workflows-docker-host-pinned / Lint docker-host pin on docker-touching workflows (pull_request) Successful in 7s
E2E Peer Visibility (literal MCP list_peers) / E2E Peer Visibility (pull_request) Successful in 12s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 21s
Lint publish-runner timeout-minutes / Lint publish-runner timeout-minutes (pull_request) Successful in 14s
E2E Chat / detect-changes (pull_request) Successful in 26s
lint-no-coe-on-required / lint-no-coe-on-required (pull_request) Successful in 17s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 15s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 5s
CI / Detect changes (pull_request) Successful in 29s
sop-checklist / review-refire (pull_request_target) Has been skipped
Lint workflow YAML (Gitea-1.22.6-hostile shapes) / Lint workflow YAML for Gitea-1.22.6-hostile shapes (pull_request) Successful in 18s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 15s
qa-review / approved (pull_request_target) Failing after 13s
E2E Chat / E2E Chat (pull_request) Successful in 7s
lint-setup-go-cache / lint-setup-go-cache (pull_request) Successful in 21s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 3s
reserved-path-review / reserved-path-review (pull_request_target) Failing after 14s
security-review / approved (pull_request_target) Failing after 14s
sop-checklist / all-items-acked (pull_request) acked: 0/7 — missing: comprehensive-testing, local-postgres-e2e, staging-smoke, +4 — body-unfilled: comprehensive-testing, local-postgres-e2
template-delivery-e2e / detect-changes (pull_request) Successful in 18s
PR Diff Guard / PR diff guard (pull_request) Successful in 21s
sop-checklist / na-declarations (pull_request) N/A: (none)
sop-checklist / all-items-acked (pull_request_target) Successful in 16s
lint-required-context-exists-in-bp / lint-required-context-exists-in-bp (pull_request) Failing after 33s
gate-check-v3 / gate-check (pull_request_target) Failing after 24s
template-delivery-e2e / Template-asset delivery (fresh seo-agent — config+prompts via asset channel, seo-all via plugin reconcile) (pull_request) Successful in 2s
Lint pre-flip continue-on-error / Verify continue-on-error flips have run-log proof (pull_request) Successful in 38s
Local Provision Lifecycle E2E / Local Provision Lifecycle E2E (stub) (pull_request) Successful in 34s
lint-continue-on-error-tracking / lint-continue-on-error-tracking (pull_request) Successful in 51s
Local Provision Lifecycle E2E / Local Provision Lifecycle E2E (real image + MiniMax LLM, advisory) (pull_request) Successful in 45s
Harness Replays / Harness Replays (pull_request) Successful in 1m36s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 2m21s
CI / Canvas (Next.js) (pull_request) Successful in 3m45s
CI / Canvas Deploy Status (pull_request) Successful in 2s
CI / Platform (Go) (pull_request) Successful in 4m45s
CI / all-required (pull_request) Has been cancelled
E2E Staging SaaS (full lifecycle) / pr-validate (pull_request) Waiting to run
E2E Staging SaaS (full lifecycle) / E2E Staging SaaS (pull_request) Waiting to run
E2E Staging SaaS (full lifecycle) / E2E Staging Platform Boot (pull_request) Waiting to run
E2E Staging SaaS (full lifecycle) / E2E Staging Concierge user_tasks (pull_request) Waiting to run
E2E Staging SaaS (full lifecycle) / E2E Staging Workspace Requests (core#2606) (pull_request) Waiting to run
E2E Staging SaaS (full lifecycle) / E2E Staging Concierge Creates Workspace (pull_request) Waiting to run
E2E Staging SaaS (full lifecycle) / E2E Staging Concierge (compile+skip) (pull_request) Waiting to run
E2E Staging SaaS (full lifecycle) / E2E Staging Concierge Platform Agent (pull_request) Waiting to run
fix(canvas/plugins): explicit loading state for Plugins tab async sections + CI regression guards
The workspace Plugins tab (SkillsTab) rendered its EMPTY state ("0
installed", "Registry returned 0 plugins") while the installed-plugins
and registry fetches were still in flight, so the tab looked broken
until data arrived a second later (user-reported).

Bug 1 (loading state): add an `installedLoading` flag + a
`PluginSkeletonRows` animated skeleton (motion-safe, aria-busy /
role=status) so each async section shows an explicit loading affordance
while pending, and only falls back to the empty state after the fetch
resolves with zero results. The installed section had no loading state
at all (it painted the "0 installed" header during load); the registry
section's plain "Loading registry…" text is upgraded to the same
skeleton.

Bug 2 (registry not shown in the Install dialog): the registry data
path (GET /plugins → render) and loading/error/empty states already
exist on main (the "no registry available" string the user saw is from
an older deployed image). Confirmed the dialog lists the registry; the
remaining "empty-during-load" flash is resolved by Bug 1's fix. Added
test coverage pinning that the dialog shows the registry list when
/plugins returns entries.

CI regression guards:
- canvas vitest (SkillsTab.loadingState.test.tsx): asserts skeleton
  while pending (not empty), rows on resolve-with-data, empty/compact
  pill on resolve-empty, and the install dialog lists registry entries
  when /plugins returns data.
- workspace-server staging e2e (TestPluginInstallLifecycle_Staging):
  registry non-empty → install plugin on a SaaS workspace →
  ListInstalled returns it (guards CP #3125 EIC readback) → workspace
  back online+routable + serves A2A after the install restart (guards
  the #159 mgmt-MCP self-heal). Wired as a fail-loud (advisory) job in
  e2e-staging-saas.yml; to gate it, add the context to
  required-contexts.txt + branch protection (owner action, noted in the
  job comment).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 17:14:50 -07:00
..