☆ 1
CodeIssuesPull RequestsActionsSecurityInsights
✨ AI
More
Settings

CI#373 failure

push·fix/explore-discovery-opt-in·b799129·queued 1d ago·duration 1m 16s
AI failure analysis
Not analysed yet. Autopilot picks failed runs up on a five-minute tick; this runs it now instead of waiting.
cifailure1m 15s
Install dependencies
$ bun install --frozen-lockfile
1.1s
Typecheck
$ bash scripts/ci-typecheck.sh
39.7s
Test (CI-safe suite)
$ bash scripts/ci-tests.sh
34.5sexit 1
==> Install dependencies
$ bun install --frozen-lockfile
bun install v1.3.14 (0d9b296a)

+ @playwright/test@1.60.0
+ @types/bun@1.3.14
+ @types/k6@2.0.0
+ drizzle-kit@0.31.10
+ cpu-features@0.0.10
+ @anthropic-ai/sdk@0.96.0
+ @neondatabase/serverless@1.1.0
+ @simplewebauthn/server@13.3.0
+ drizzle-orm@0.45.2
+ highlight.js@11.11.1
+ hono@4.12.18
+ marked@18.0.3
+ postgres@3.4.9
+ sanitize-html@2.17.5
+ ssh2@1.17.0
+ typescript@5.9.3

86 packages installed [1097.00ms]

[exit 0 in 1101ms]

==> Typecheck
$ bash scripts/ci-typecheck.sh

[exit 0 in 39666ms]

==> Test (CI-safe suite)
$ bash scripts/ci-tests.sh
--- design audit ---
FILE                                                LITERALS  BANNED  SAMPLES
----------------------------------------------------------------------------------------------------
src/views/agent-workspace.tsx                       76        0       
src/routes/admin-server-targets.tsx                 53        0       
src/views/distribution.tsx                          47        0       
src/routes/pulls.tsx                                42        0       
src/routes/ai-archaeology.tsx                       40        0       
src/routes/claude-web.tsx                           35        0       
src/views/production-layers.tsx                     34        0       
src/views/layout.tsx                                33        0       
src/views/daily-brief.tsx                           33        0       
src/views/trust-report.tsx                          33        0       
src/routes/admin.tsx                                29        0       
src/routes/admin-integrations.tsx                   28        0       
src/views/org-memory.tsx                            28        0       
src/routes/admin-deploys-page.tsx                   27        0       
src/routes/share.tsx                                26        0       

[design-audit] 172 file(s) with literal colors · 0 banned-family literal(s)
[design-audit] no banned-family colors. Literal debt above burns down per file.
running 405 test files (20 excluded as credential-dependent)
--- failures ---
src/__tests__/synthetic-journeys.test.ts:
(fail) journey:explore-data — 200 is not enough > red when /explore renders a shell with zero repo links [50.38ms]
--
src/lib/selfcheck/authz.test.ts:
(fail) journey:explore-data — 200 is not enough > red when /explore renders a shell with zero repo links [50.38ms]
--- why (assertion + stack preceding each failure) ---
(pass) which constraint fired > username is asked case-folded, email exactly [0.17ms]
(pass) which constraint fired > username is checked first, so a doubly-taken pair reports the name [0.16ms]
(pass) which constraint fired > returns null when neither is found, and callers do not treat that as success [0.19ms]
(pass) which constraint fired > the JSON path answers 409, not 500 [0.16ms]
(pass) the setup endpoint really upserts now > uses DoUpdate, because the row it returns owns the repository [0.19ms]
(pass) the setup endpoint really upserts now > does not overwrite the email of an account that already exists [0.16ms]

src/__tests__/synthetic-journeys.test.ts:
(pass) journey:login-form — the rejection is the pass > green when a wrong password is properly rejected (200, no session cookie) [50.88ms]
(pass) journey:login-form — the rejection is the pass > red when the login handler 500s [48.45ms]
(pass) journey:login-form — the rejection is the pass > red — CRITICAL — if a wrong password ever sets a session cookie [51.55ms]
(pass) journey:explore-data — 200 is not enough > green when /explore actually lists repositories [51.38ms]
75 |     const r = await journey("journey:explore-data", (url) =>
76 |       url.endsWith("/explore")
77 |         ? new Response("<html><body><h1>Explore</h1></body></html>", { status: 200 })
78 |         : new Response("ok", { status: 200 })
79 |     );
80 |     expect(r.status).toBe("red");
                          ^
error: expect(received).toBe(expected)

Expected: "red"
Received: "green"

      at <anonymous> (/ci-work/gluecron-run-iAp1W9/checkout/src/__tests__/synthetic-journeys.test.ts:80:22)
(fail) journey:explore-data — 200 is not enough > red when /explore renders a shell with zero repo links [50.38ms]
--
(skip) executeSlashCommand — /test (DB-backed) > falls back gracefully when no test workflow is configured
(skip) personal-semantic — DB-backed > refuses to return rows when the opt-in flag is OFF
(skip) personal-semantic — DB-backed > search returns results across multiple owned repos
(skip) personal-semantic — DB-backed > search EXCLUDES repos the user has no access to
(skip) personal-semantic — DB-backed > cross-user content leak prevention — User A's results never contain User B's repo data
(skip) personal-semantic — DB-backed > setPersonalSemanticEnabled flips the flag and isPersonalSemanticEnabled reads it
(skip) findTrackedDocs — drift detection > treats first-time observations as fresh, second-time differing hashes as stale
(skip) proposeDocUpdate > opens a PR with the refreshed markdown when Claude returns a patch
(skip) recordAiCost — DB-backed > inserts a row that summarizeCostsForUser can find
(skip) recordAiCost — DB-backed > never throws on bad input — swallows DB errors
(skip) runSpecToPr — end-to-end with fake Claude > opens a PR, tags it, and rewrites the spec status to building
(skip) runSpecToPr — end-to-end with fake Claude > refuses a spec whose status is not 'ready'
(skip) API v2 — git plumbing write endpoints (DB-backed) > POST /git/blobs round-trips utf-8 and base64 content
(skip) branch-previews — DB pipeline > enqueue creates a building row with a computed preview URL
(skip) branch-previews — DB pipeline > re-pushing the same branch DEDUPES — same id, new SHA, status='building'
(skip) branch-previews — DB pipeline > markPreviewReady flips status to 'ready' with completed_at
(skip) branch-previews — DB pipeline > markPreviewFailed records error_message + truncates
(skip) branch-previews — DB pipeline > expireOldPreviews transitions ready rows past expires_at to 'expired'
(skip) branch-previews — DB pipeline > expireOldPreviews leaves fresh rows alone
(skip) branch-previews — DB pipeline > listPreviewsForRepo orders by build_started_at descending
(skip) install-token — successful mint > mints a glc_ PAT + writes auth.install_token.created audit row
(skip) install-token — successful mint > defaults name + scope when body is empty


1 tests failed:
(fail) journey:explore-data — 200 is not enough > red when /explore renders a shell with zero repo links [50.38ms]
--- summary ---
(skip) proposeDocUpdate > opens a PR with the refreshed markdown when Claude returns a patch
(skip) recordAiCost — DB-backed > inserts a row that summarizeCostsForUser can find
(skip) recordAiCost — DB-backed > never throws on bad input — swallows DB errors
(skip) runSpecToPr — end-to-end with fake Claude > opens a PR, tags it, and rewrites the spec status to building
(skip) runSpecToPr — end-to-end with fake Claude > refuses a spec whose status is not 'ready'
(skip) API v2 — git plumbing write endpoints (DB-backed) > POST /git/blobs round-trips utf-8 and base64 content
(skip) branch-previews — DB pipeline > enqueue creates a building row with a computed preview URL
(skip) branch-previews — DB pipeline > re-pushing the same branch DEDUPES — same id, new SHA, status='building'
(skip) branch-previews — DB pipeline > markPreviewReady flips status to 'ready' with completed_at
(skip) branch-previews — DB pipeline > markPreviewFailed records error_message + truncates
(skip) branch-previews — DB pipeline > expireOldPreviews transitions ready rows past expires_at to 'expired'
(skip) branch-previews — DB pipeline > expireOldPreviews leaves fresh rows alone
(skip) branch-previews — DB pipeline > listPreviewsForRepo orders by build_started_at descending
(skip) install-token — successful mint > mints a glc_ PAT + writes auth.install_token.created audit row
(skip) install-token — successful mint > defaults name + scope when body is empty


1 tests failed:
(fail) journey:explore-data — 200 is not enough > red when /explore renders a shell with zero repo links [50.38ms]

 5164 pass
 155 skip
 1 fail
 14358 expect() calls
Ran 5320 tests across 404 files. [34.21s]

[exit 1 in 34467ms]