You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
2026-10-08T21:00:00.000Z — ci-review on skilld-dev/skilld.dev | 3 found | 3 new | 0 already known | 0 outside allowed scope | 0 over 5 files | 3 issues requested
ci-review scan: skilld-dev/skilld.dev
Coverage: incomplete. Window 2026-10-01T21:00Z..2026-10-08T21:00Z. The repository has 1142 workflow runs in the window (API total); the scan limit of 100 newest runs was reached, covering 2026-10-07T06:01Z..2026-10-08T16:21Z. Excluded by the limit: ~1042 older in-window runs (mostly PR Test runs and by-design Deploy noop runs). Open PRs #321/#320/#318 last ran checks 2026-09-30, outside the window. gh run view --log returned empty output for this token, so per-job logs were fetched through the jobs REST endpoint instead: full logs for all 128 success/failure jobs of the 32 selected runs (15 push-main Test runs, 16 success Deploy runs, PR #560 Test run 37579712127), all attempt 1. Cancelled Test runs (4) and skipped Deploy noop runs (~13 in scope) were not log-reviewed: both outcomes are the workflows' documented concurrency behavior. No failed or timed-out run exists in the reviewed scope.
Reviewed runs (attempt 1, all conclusions success unless noted)
Test PR docs(work): add Reddit launch brief #560: 37579712127. Deploy noop example 37807978559 (skipped; controller log evidence unavailable, no diagnostic value: job skips by condition).
Candidates (repo repairs)
SkillBehaviors undefined prop — Run 37763046034 (attempt 1, first seen) through 37807825636 (attempt 1, latest main 324d014), job site / test, step Run pnpm test:run: stderr of test/unit/skill-detail-duplicate-canonical-path.nuxt.test.ts shows [Vue warn]: Invalid prop: type check failed for prop "behaviors". Expected Array | Null, got Undefined at <SkillBehaviors behaviors=undefined> (3 per run since 2026-10-08T10:22Z; introduced with 6b120f6fix(registry): preserve root Skill snapshots #573, which renders the panel for raw snapshots whose sourceFacts lack behaviors). Current HEAD still binds :behaviors="data.sourceFacts.behaviors" under v-if="data.raw || behaviors.length". Fix: coalesce to null at the binding (and optionally type the field optional).
Mdxg router spec outside setup — every reviewed Test run from 37579687657 (2026-10-07T06:06Z) onward, attempt 1, job site / test, step Run pnpm test:run: stderr of modules/mdxg/test/document-router.spec.ts shows [Vue warn]: onBeforeUnmount is called when there is no active component instance (7 per run, 112 total). The spec calls useMdxgDocumentRouter() bare, so its onBeforeUnmount never registers and each test leaks a popstate listener. Fix: run the composable inside a component instance (withSetup-style helper) in the spec.
Extensionless TS imports force jiti fallback — every reviewed run's postinstall/prepare, e.g. 37807825636 attempt 1 job site / test step Run pnpm install/dev:prepare and deploy job 37808195339 postinstall: [NUXT_B5023] nuxt.config.ts ... Cannot find module 'layers/marketing/app/utils/agent-pages', [NUXT_B8023] modules/og-static-fonts ... './sync', [NUXT_B8023] modules/file-icons ... '../../shared/file-icons' (up to 5 emissions per run). Cause: extensionless relative TS imports; Nuxt native loading fails and jiti re-transforms. Fix: explicit .ts extensions in nuxt.config.ts, modules/og-static-fonts/module.ts, modules/file-icons/module.ts.
No matching open or closed issue exists for any candidate (searched open issues plus closed-issue keyword matches; prior ci-review run in #563 was skipped and filed nothing).
Accepted noise (no repo change)
Canceled Test runs / skipped Deploy runs: documented concurrency behavior in .github/workflows (test cancel-in-progress; deploy noop groups). Evidence: workflow comments and outcome pattern.
Deploy ::error/::warning strings in job logs: echoed script text of the nuxt-dx budget step, not emitted annotations.
eslint warnings, 142→147 across 16 lint runs: harlanzw/ai-deslop-* doc-style rules plus a few jsdoc/prefer-satisfies advisories over 43 files, dominated by immutable ADRs and historical ops ledgers (docs/adr/, docs/ops/); AGENTS.md marks ADRs immutable. A repair would exceed the 5-file candidate limit. Trend is upward ~1 warning per doc PR; worth a policy decision later, not a defect.
pnpm v10 layout warning (every job, pnpm/action-setup shim refresh): runner tooling, next actor is the pinned actions in harlan-zw/harlan-nuxt or pnpm/action-setup, not this repo.
DEP0005 Buffer() deprecation (16 deploy jobs, nuxt-dx budget artifact download): external @harlan-zw/nuxt-dx CLI, next actor that repo.
mcp-toolkit "No MCP definitions found" (98 emissions, prepare in every job): upstream loader totals only file-based tools/resources/prompts/handlers and ignores the loaded default handler; this repo serves MCP through layers/mcp/server/mcp/index.ts via defineMcpHandler (verified in source and by passing webmcp tests). Next actor: @nuxtjs/mcp-toolkit upstream.
nuxt-ai-ready "SPA mode" / og-image "SSR disabled" (test jobs): vitest Nuxt environment advisories; production deploys build SSR with prerender.
skew-protection "No previous versions found" (once, deploy build 2026-10-07T06:xx): cold skew cache; the next deploy restored nuxt-skew-prod-* and saved a fresh key (run 37808195339 log).
INEFFECTIVE_DYNAMIC_IMPORT TrendingBoardItem (26 build emissions): deliberate eager head row plus Lazy tail in BoardRankedList.vue; the compiler statically imports the eager form either way, and hydrate-on-visible still defers tail hydration, so the stated perf goal holds.
wrangler posture warnings on every deploy build (cpu-limit-raised 300s; queue max_retries 100/4; workers-cache-assets-billable; observability logs head_sampling_rate 1; nitro assets override): each is a documented deliberate choice with rationale comments in wrangler.jsonc and the workflow; cost posture is a human decision, next actor Harlan.
plaintext-secret-var for ARTIFACT_KEY_WRAP_KEY_(ACTIVE_SLOT|PRIMARY_ID|SECONDARY_ID): heuristic name match; inspected the named settings only and confirmed they hold non-secret identifiers (a slot label and key IDs), not key material. No secret value is present, so no repair proposed; rotation runbook depends on these vars.
Edge cache MISS→HIT pairs and "Harness Worker matches 430914d" in deploy logs: expected first-visit/hit proof and unchanged-worker skip, by design.
Verdict
AMBER: every CI check in scope passed and every deploy succeeded, but three warning-level repository defects are current on main (one runtime prop warning, one test-hygiene warning with a listener leak, one build-hydration noise class). Coverage is incomplete per the 100-run cap stated above.
Since run 37763046034 (attempt 1, 2026-10-08T10:22Z, commit 6b120f6#573) through latest main run 37807825636 (attempt 1), job site / test, step Run pnpm test:run, test/unit/skill-detail-duplicate-canonical-path.nuxt.test.ts logs [Vue warn]: Invalid prop: type check failed for prop "behaviors". Expected Array | Null, got Undefined at <SkillBehaviors behaviors=undefined>, because SkillDetail.vue binds :behaviors="data.sourceFacts.behaviors" under v-if="data.raw || behaviors.length" and raw snapshots lack the field; the binding must coalesce undefined to null.
Verify with:pnpm exec vitest run test/unit/skill-detail-duplicate-canonical-path.nuxt.test.ts 2>&1 | grep -c 'Invalid prop: type check failed for prop "behaviors"' returns 0
Estimated to change 1 file.
In every reviewed Test run from 37579687657 (attempt 1, 2026-10-07T06:06Z) to 37807825636 (attempt 1), job site / test, step Run pnpm test:run, modules/mdxg/test/document-router.spec.ts emits [Vue warn]: onBeforeUnmount is called when there is no active component instance 7 times per run (112 total) because the spec calls useMdxgDocumentRouter outside setup, so the cleanup hook never registers and each test leaks a popstate listener on window.
Target:modules/mdxg/test/document-router.spec.ts
Verify with:pnpm exec vitest run modules/mdxg/test/document-router.spec.ts 2>&1 | grep -c 'onBeforeUnmount is called' returns 0
Estimated to change 1 file.
Every reviewed run's install/prepare step (e.g. run 37807825636 attempt 1, job site / test, steps Run pnpm install --frozen-lockfile --ignore-scripts and Run pnpm dev:prepare; also deploy job of 37808195339) emits NUXT_B5023 for nuxt.config.ts importing ./layers/marketing/app/utils/agent-pages and NUXT_B8023 for modules/og-static-fonts/module.ts importing ./sync and modules/file-icons/module.ts importing ../../shared/file-icons, all extensionless TS paths that Node native loading cannot resolve, so Nuxt re-transforms them through jiti; adding explicit .ts extensions restores native loading.
Recurring lint warnings, actionable: latest site / lint reported 154 warnings with no errors. Three current one-file source warnings are Candidates below. They recur in 48 reviewed Test logs.
Other lint warnings, no Candidate: Markdown style, documentation, and broader lint backlog span more than five files. They are non-blocking maintenance and are outside the Candidate file limit.
Node Buffer deprecation, no Candidate: successful deploys, including run 38521163057, emit DEP0005 while GitHub downloads the Nuxt DX artifact. The repository command has already completed. This is action/runtime dependency noise; no repository-owned target was proven.
Deploy failure resolved:run 38378730673, attempt 1, failed deploy → pnpm production:edge-cache because ten cache probes lacked ETags. Run 38392204556, attempt 1, then failed two cache probes by timeout. The later successful deploy completed the same check with warnings: []. No regression evidence.
Operational timeout:Weekly social 38292576693, attempt 1, timed out in weekly (discord) → Publish. The Discord setting existed; X settings did not. This is an external publish failure, not a source defect. Next actor: service owner, inspect the saved run receipt and endpoint health.
Cancelled runs:38336947826 and 38392079927 produced no repository diagnostic before cancellation.
No secrets were displayed.
layers/registry/server/data/clusters.ts#RENAMED_CLUSTER_SLUGS: In successful Test run 38520943548, attempt 1, site / lint warns that RENAMED_CLUSTER_SLUGS: Record<string, string> discards its known keys, so use satisfies to retain the literal key type.
modules/mdxg/src/runtime/components/MdxgPageView.vue#MarkdownDocument-auto-import: In successful Test run 38520943548, attempt 1, site / lint warns that MarkdownDocument is redundantly imported from #components although Nuxt auto-imports it for the template.
scripts/summarize-classifications.ts#buckets: In successful Test run 38520943548, attempt 1, site / lint warns that buckets: Record<string, number> discards its known keys, so use satisfies to retain them.
2026-10-22T21:00:00.000Z — ci-review on skilld-dev/skilld.dev | 1 found | 1 new | 0 already known | 0 outside allowed scope | 0 over 5 files | 1 issues requested
Coverage: complete for 2026-10-19 01:27:49 UTC through 2026-10-26 01:27:49 UTC.
Scope: skilld-dev/skilld.dev, default branch and currently open pull requests.
AMBER: two new maintenance Candidates. No broken check or security defect established.
Reviewed 22 runs, full available logs, 77 job records, steps, and check annotations.
Three existing lint findings remain owned by #657.
This delayed scan uses the current seven-day window. Routine ID: skilld-dev/skilld.dev:ci-review:2026-10-22T21:00:00.000Z.
Read the installed ci-review Skill, repository instructions, and all three workflow definitions. The public worker CLI confirmed public access. Full live reads replaced the controller's truncated evidence.
Default branch and local HEAD matched 2374b03a2bb08c4b73d4c768cbbfeec34fdef863.
Pagination returned 27 completed runs, then zero. The 100-run limit was not reached. Selected 22 runs: ten successes, ten skipped deploys, two cancellations. Every attempt was 1.
Open PR associations were checked against head SHAs and repository identities. Five runs belonged to PRs outside the currently open set: 39557286506, 39547760933, 39275546950, 39275545385, 39270814585. Their metadata was read; logs were outside the selected scope. Open PRs #560, #321, #320, and #318 had no associated completed run in this window.
Collected 109 open and closed issues and seven open PR descriptions. Checked matching findings, #657's current labels and triage comment, and merged PRs #590–#592. Neither new Candidate matched existing ownership. No matching Baseline repair appeared in the available records.
Every selected executed job had logs. Empty logs belonged to skipped workflows or cancellation before jobs started. No unavailable log or omitted diagnostic group remained. Full logs covered lint diagnostics missing from GitHub annotations.
Repository and GitHub stayed read only. No production requests or workflow reruns occurred. Scratch evidence and failing lint output remain in ~/scratch/ci-review-20261022/.
New Candidates
Both are maintenance, one file each. The controller can combine them before Issue triage.
Preserve page admission keys with satisfies.PAGE_ADMISSIONS uses a broad Record annotation. Current main reproduces harlanzw/prefer-satisfies.
Describe check policy return values.evaluateCI and evaluateD1 omit JSDoc return descriptions. Current main reproduces both warnings.
Evidence: successful Test 39710357143, attempt 1, site / lint, Run pnpm lint.
Local baseline command exited 1 with exactly three warnings:
#657 owns the clusters Record annotation, redundant MarkdownDocument import, and classification buckets annotation. All three recur in the latest successful lint run. Stored fingerprint remains ci-maintenance#58e5dbf642fb1f47; no duplicate Candidate.
Current blocker: harlan-agent-wait-to-implement, no assignee or matching open PR. Its earlier triage comment claims active-agent ownership. Next actor: controller, reconcile ownership before implementation approval.
Closed #586, #587, and #588 were fixed by #592, #591, and #590. All merge commits are ancestors of current main. Current source retains the fixes; latest Test logs lack those diagnostics. Deploy 39710569409 deployed the descendant SHA and passed smoke checks. No regression established.
Heuristic on repository instructions. No failed prompt contract established; no automatic instruction change.
Prose lint
Latest run: passive voice 62, autolinks 41, inline language tags 29, hedging 5, false dichotomy 9, weak openers 2. These 148 warnings span 42 prose files. Broad cleanup exceeds five files, so excluded from Candidates. ADRs are immutable; cron documentation is generated. Historical quotations and generic route syntax also need judgment. No wholesale rewrite or suppression proposed.
pnpm installation-layout warning
Shared setup refreshes shims and activates the requested pnpm; installs succeed. External setup migration notice. Shared action maintainer owns attribution.
Slow npm tarball downloads
Downloads finish and checks pass. Network throughput warning; no repository defect established.
Git initial-branch hint
Checkout initializes a repository before fetching the intended ref. Expected hint.
MCP toolkit finds no definitions
Preparation warning with a layered MCP entry point present. No failed MCP request established.
OG Image SSR, AI-ready SPA, and SEO rendering warnings
Vitest's Nuxt environment emits these. Production builds use SSR and pass deployed page smoke. No production SSR loss established.
AI-ready negotiation disabled
Intentional delegation to server/handlers/content-negotiation.ts for cache-compatible negotiation.
Artifact signer 503 and unavailable errors
Negative tests in artifact-build-reuse.test.ts and artifact-delivery.test.ts inject failures and prove retries. Expected.
Artifact timeout
artifact-rate-limit.test.ts exercises queue exhaustion and bounded retries. Expected; tests pass.
KV GET and PUT 503
artifact-github-reads.test.ts deliberately fails KV and proves GitHub fallback. Expected.
Missing image-proxy setting
Local route fixtures omit the optional setting; passing render/cache tests exercise fallback. No production setting inferred.
Sentry server maps disabled; no server maps uploaded
Source explicitly disables server maps. Client map upload succeeds before these warnings. Server symbolication is absent by configuration. Logs do not establish why that scope was chosen. Harlan owns any scope decision; no automatic expansion proposed.
PLUGIN_TIMINGS
Successful build profiling reports 96–100% JavaScript callback time. No budget failure or regression established.
Nitro overrides Wrangler assets
Generated deployment configuration owns assets. Deployment and smoke checks succeed.
Cloudflare log sampling advisory
Named setting enables full application-log sampling and disables invocation logs. No measured cost overage supplied. Harlan owns the observability tradeoff.
Workers cache billing advisory
Cache probe reports MISS then HIT with zero warnings. No cost-benefit defect established.
Raised CPU limit
Queue configuration documents high-I/O work and a 300-second invocation budget. No runaway execution shown.
Three plaintext-secret-var notices
Names identify wrapping-key IDs and an active-slot selector. Code treats them as metadata, separately from key material. Naming heuristic; no exposed secret established. No values reproduced.
Queue retry limits 100, 100, and 4
Successful repository-sync slices consume deliveries. Comments document why default retries stranded large repositories. Artifact delivery also has bounded retry handling.
Node DEP0005 Buffer() deprecation
Occurs during the Nuxt DX action's artifact-download phase. Comparison and report upload succeed. No stack identifies a repository call; external action maintainer owns attribution.
Cancellation errors
Two main Test runs were superseded by higher-priority runs. Concurrency annotations explain cancellation. Subsequent main Test and deploy succeed.
Ubuntu 26 migration notice
Runner-image transition notice. No compatibility failure established.
Nuxt DX Baseline-source notices
Successful comparisons identify earlier reports. Informational, not missing-Baseline repair findings.
Skipped deploys and steps
Workflow conditions prevent PR/cancelled Test runs from deploying. Main skips the redundant PR build; PRs skip push-only CLI grammar. Unchanged Harness deployments skip after version comparison.
Error text in scripts and filenames
Echoed conditional error branches, artifact options, and error-page chunk names are declarations, not executed failures. Step outcomes confirm success.
Latest lint reports 155 warnings, zero errors. Every rule is disposed above. Both social destination jobs succeeded without an actionable diagnostic.
Reviewed runs
All workflow files are under .github/workflows/. Full SHAs remain in scratch metadata. Every listed run is attempt 1.
checks/_helpers/policy.mjs#returns-descriptions: Successful Test https://github.com/skilld-dev/skilld.dev/actions/runs/39710357143, attempt 1, job site / lint, step Run pnpm lint, emits two jsdoc/require-returns-description warnings because evaluateCI and evaluateD1 have return types without descriptions, and both warnings reproduce against current main.
layers/marketing/app/utils/page-admissions.ts#PAGE_ADMISSIONS: Successful Test https://github.com/skilld-dev/skilld.dev/actions/runs/39710357143, attempt 1, job site / lint, step Run pnpm lint, warns that PAGE_ADMISSIONS's Readonly<Record<string, PageAdmission>> annotation discards known keys, and current main reproduces harlanzw/prefer-satisfies locally, so replace the annotation with a satisfies constraint.
2026-10-29T21:00:00.000Z — ci-review on skilld-dev/skilld.dev | 1 found | 1 new | 0 already known | 0 outside allowed scope | 0 over 5 files | 1 issues requested
Coverage: complete for 2026-10-22 21:05:00 through 2026-10-29 21:05:00 UTC, skilld-dev/skilld.dev only.
AMBER: two new maintenance Candidates. No broken check found.
Used the installed ci-review Skill in scan mode. No required Skill was missing. Repository and GitHub remained read only.
Evidence reviewed
Paginated completed runs: five returned, below the 100-run limit. No runs were excluded. All attempts were 1. No reruns required earlier-attempt review.
Read full logs for all three executing runs, job steps, and their check annotations. Both skipped runs contain only skipped jobs, with no execution logs.
Verified current main equals the local checkout, 2374b03a. Read open issues, open PR heads, closed issue history, and matching repair descriptions. Live public reads replaced the bounded controller snapshot. No private evidence was needed.
There was no executing deployment or main-push Test run within this window. The PR Test runs cover main plus their respective changes. Their changes do not touch either new Candidate's target.
New Candidates
Add the missing Repository preview fixture in the accessibility test. Its unexpected 404 sends the component into its unavailable state.
Replace relative demo fixture paths with canonical Skill routes. The current fixture emits repeated router warnings.
Both repairs affect one file each. Both have maintenance urgency. Neither matches existing issue or PR ownership.
Existing work
Finding
Owner
Blocker and next actor
Three known lint warnings: cluster keys, MarkdownDocument import, classification buckets
Checks and automated Review pass. Harlan is the next merge actor. No parallel repair.
Prior repairs #590, #591, and #592 were not re-proposed. Their original jiti, lifecycle, and behaviors-prop signatures did not appear in the selected logs. No regression is claimed.
Diagnostic dispositions
Repeated diagnostics are grouped below. Test diagnostics come from site / test, step Run pnpm test:run, unless stated otherwise.
Diagnostic
Context and disposition
Repository preview 404
Both Test runs, accessibility indexing case. The modal calls $fetch, but this file mocks only useFetch. Current source confirms the missing fixture. Candidate.
Router cannot match SKILL.md#demo
Both Test runs, HomeWhy and WhyVisual accessibility cases. WHY_DEMO.skillPath contains a filename; demoHref expects a registry route. Candidate.
Router cannot match /_HomeDemoCarousel
The private-page test explicitly proves this route does not exist. Expected negative-test output.
NUXT_E1005
Appears during initialization of account-related test files. Nuxt defines this as an initialization error. Logs contain only the code, without its underlying exception. Tests pass, but that does not establish harmlessness. Cause remains unresolved; no specific repair is proven. Next investigation belongs to Issue triage or Baseline repair if its reproduction owns this failure.
Signer 503, signer unavailable, build timeout
Named Artifact tests inject these failures to prove retry, recovery, and failed-build rejection. Expected negative-test output.
Archive read stopped early
Digest mismatch, GitHub rate-limit, and codeload fallback cases deliberately exercise these paths. Expected negative-test output.
KV GET/PUT 503
Artifact cache fallback tests inject failures and verify continued reads. Expected negative-test output.
Image proxy setting missing
Test fixtures exercise the absent-setting path. No production configuration conclusion follows. No secret value inspected.
Description-repair fixtures print progress while operating on test data. No failed test or production operation.
Suspense experimental notice
Vue development runtime notice during component tests. No repository defect established.
SSR disabled, OG Image disabled by SSR, SPA llms-full omission, SEO rendering advisory
Test harness boots the client environment. These diagnostics do not appear as production SSR failures in the reviewed builds. Accepted test-environment output.
No MCP definitions found
Prepare, typecheck, build, and test startup. Discovery is implemented through the repository's MCP layer. An empty toolkit definition scan alone does not prove a missing public operation. No repair established.
Content negotiation disabled
Explicit configuration delegates negotiation to server/handlers/content-negotiation.ts for shared-cache behavior. Accepted configuration advisory.
Wrangler assets overridden
Nitro's Cloudflare preset generates the final asset configuration. Both builds complete. No lost asset or deployment failure established.
Plugin timing warnings
Successful builds report font transforms and Vue callbacks as the main cost. Client builds take about 11 seconds. Profiling advice, without a proven bounded repair.
Log sampling above budget
Build-time Cloudflare advisory. Current configuration deliberately retains wide-event logs while disabling invocation logs. Cost policy needs owner judgment; no automatic reduction proposed.
Workers Cache makes assets billable
Advisory about the configured cache strategy. No measured cost regression or incorrect behavior established.
Raised CPU limit
Configured execution allowance. No runaway execution demonstrated by these CI logs. No speculative limit reduction proposed.
Queue retries above defaults
Repository sync comments explain sliced delivery versus failure budgets. Artifact retries also have explicit delivery controls. Default thresholds alone do not establish a defect.
Three plaintext-secret-name warnings
The flagged names describe key identifiers and an active slot. The heuristic does not establish exposed key material. No values were needed for triage.
pnpm installation-layout warning
Shared setup refreshes shims successfully, then installation completes. The source is the pinned shared setup action. Its maintainer is the next actor for any launcher migration; no repository workaround proposed.
Notice annotation on executing jobs. Checks pass on the selected image. No compatibility failure established.
AGENTS.md missing prompt examples
Prompt heuristic applied to repository instructions. No required response schema or demonstrated instruction failure justifies adding examples. Accepted heuristic warning.
Markdown prose warnings
Autolink, code-language tags, passive voice, hedging, false dichotomy, and weak-opener suggestions. These include immutable ADRs, historical records, and quoted research. Mechanical rewrites are not established repairs. No broad cleanup Candidate.
Known source lint warnings
PR #674 reports 155 warnings; #672 reports 152 after removing its three owned warnings. Remaining known source warnings stay with #657.
Skipped deploy jobs
Both workflows followed successful PR Test runs. The deployment condition accepts successful repository main pushes. Intended skips.
Skipped CLI grammar and pipeline steps
Grammar runs only on pushes. Direct test, lint, and typecheck commands run with task caching disabled. Intended skips.
Weekly X publish skipped
Destination was disabled; preparation and preview upload succeeded. Intended behavior. Discord preparation, publication, and receipt upload succeeded.
All diagnostic families are dispositioned. No logs were unavailable, and no dispositions were omitted. The unresolved initialization cause limits diagnosis, not log coverage.
No local test run or production change was performed. Candidate verification remains for implementation.
Confidence: 88/100. Untested path: local reproduction and verification of the proposed fixture repairs.
test/a11y.nuxt.spec.ts#repository-preview-fixture: Successful run https://github.com/skilld-dev/skilld.dev/actions/runs/40259991320, attempt 1, job site / test, step Run pnpm test:run, logs a Repository preview 404 in skillSearchRepositoryModal has no violations while indexing because the current test mocks useFetch while the modal uses $fetch, forcing an unintended unavailable preview state; run 40255246961 shows the same diagnostic.
test/a11y.nuxt.spec.ts#WHY_DEMO-skillPath: Successful run https://github.com/skilld-dev/skilld.dev/actions/runs/40259991320, attempt 1, job site / test, step Run pnpm test:run, emits VUE_ROUTER_R0004 for SKILL.md#demo in HomeWhy and WhyVisual cases because WHY_DEMO.skillPath is a relative filename while demoHref expects a canonical registry route, and current main retains that fixture; run 40255246961 shows the same diagnostic.
Verify with:pnpm exec vitest run test/a11y.nuxt.spec.ts -t 'skillSearchRepositoryModal has no violations while indexing' && pnpm exec vitest run test/a11y.nuxt.spec.ts -t 'homeWhy|whyVisual'
No diagnostic families were omitted from this report. Repeated diagnostics are grouped below.
Unavailable evidence
Run 41170192323, attempt 1: full-log retrieval returned log not found: 124446333351. The identified published-cli-grammar job-log fallback returned the same error. Job metadata and annotations were available. Other job output from this run remains unread; cancellation annotations do not establish clean logs.
New Candidate
Enable server source maps for Sentry uploads, estimated one file, maintenance urgency.
Vite server bundling reports no maps among 354 matched artifacts.
Nitro bundling reports no maps among 606 matched artifacts.
Sentry explicitly warns that sourcemap.server is disabled.
Current nuxt.config.ts sets sourcemap.server: false. The same warnings occur in attempt 1 and deploy 41163632774. This establishes a server-generation gap, rather than a general upload failure. No matching open or closed repair was found.
Implementation should enable server map generation for authenticated CI builds and retain map deletion after upload. Verification needs the CI build environment. No local authenticated build was run.
#657 owns all three. Current labels say harlan-agent-wait-to-implement; no assignee is set. Older triage mentions active work, but the current labels do not confirm it. Issue triage/controller must resolve readiness and ownership. No duplicate Candidate.
Missing return descriptions and page-admission typing
#671, fixed through #672. Earlier selected main logs contain the warnings; current main and newer logs contain the fix. No regression claimed.
Accessibility preview 404 and relative demo route
#675, fixed through #676. Original signatures are absent from newer reviewed tests. No duplicate Candidate.
Undici security updates
PR #680 already owns the dependency repair. Its Test run passed. Maintainer review/merge is next. No parallel security proposal.
Historical behaviors prop, router lifecycle, and jiti imports
Prior repairs #592, #591, and #590. Original signatures did not recur in available selected logs. No regression claimed.
Diagnostic dispositions
Diagnostic
Context and disposition
D1 storage timeout, code 7429
Deploy 41170362977 attempt 1, Apply D1 migrations, pnpm db:migrations:prod, failed with “storage operation exceeded timeout which caused object to be reset.” Attempt 2 passed at the same SHA. Recovered provider failure; no repository retry change proven safe or necessary. If it recurs, controller/Harlan handles provider diagnosis. #393 owns recurring provider escalation; this scan does not prove identical cause.
Cancellation errors and exit annotations
Five main Test runs report cancellation because a higher-priority request exists in the same concurrency group. Workflow uses cancel-in-progress: true; later main Test passed. Expected supersession. Missing logs remain a coverage gap.
Server source-map warnings
Current generation is disabled while server upload plugins run. New maintenance Candidate. Client upload succeeds.
Autolinks, code-language tags, passive voice, hedging, false dichotomy, and weak openers span historical records, quoted research, and immutable ADRs. No blanket rewrite is justified; broad cleanup exceeds five files. No repair proposal.
AGENTS.md missing prompt examples
Heuristic warning without a demonstrated instruction failure. No automatic instruction edit justified.
NUXT_E1005
Recurs during account-component test initialization, including watchlist, likes, devices, and token setup. Logs omit the underlying exception. Unchanged known diagnostic from #563; no distinct cause or bounded repair established. Issue triage/Baseline reproduction owns further attribution. Passing tests do not prove harmlessness.
Signer 503, signer unavailable, build timeout
Named Artifact tests inject failures to verify retries, recovery, and failed-build rejection. Source fixtures confirm intentional rejection paths. Expected negative-test output.
Digest mismatch, rate-limit, and codeload fallback cases exercise failure handling. Expected test output.
Missing image-proxy setting
Test-environment absent-setting path. No production setting conclusion follows. No secret values were inspected.
Offline likes, settings, logout, signup analytics, and watch saving
Named failure-recovery tests inject unavailable requests. Expected negative-test output.
Description-repair stderr
Fixture processing reports repair progress. No failed production operation established.
Unmatched private component route
Test explicitly verifies the private component has no public page route. Expected router output.
Suspense experimental notice
Vue development-runtime notice during component tests. No repository defect established.
SSR disabled, OG Image warning, SPA llms-full omission, SEO rendering warning
Client test initialization emits these warnings. Reviewed production builds render server bundles. No production SSR failure established.
No MCP definitions found
Toolkit’s file scan does not establish absent operations; the repository supplies a layered MCP handler. Prior reports document the same diagnostic. No missing endpoint proven.
Content negotiation disabled
Explicitly delegated to the site handler for shared-cache behavior. Accepted configuration advisory.
Wrangler assets overridden
Nitro generates final Cloudflare assets configuration. Builds and deployment succeed. No missing asset established.
Plugin timing warnings
Successful builds identify JavaScript callback cost. Profiling advice without a proven bounded repair.
Log sampling above routine budget
Existing configuration retains application logs and disables invocation logs. No measured billing regression supplied. Harlan owns the observability tradeoff; no speculative reduction.
Workers Cache billing advisory
Configured cache strategy; deployment includes an edge-cache check. No incorrect behavior or measured cost regression established.
Raised CPU limit
Configured execution allowance. CI logs do not demonstrate runaway execution. No speculative reduction.
Queue retries above defaults
Repository sync uses delivery continuations, so delivery count differs from failure count. Source comments explain prior dead-letter failures at the default budget. Artifact delivery has separate controls. No automatic reduction.
Three plaintext-secret-name warnings
Names describe wrapping-key identifiers and an active slot. Name matching alone does not establish exposed key material. No values printed or needed.
pnpm v10 installation layout under v11
Shared setup refreshes shims and installation succeeds. Shared action maintainer owns launcher migration. No repository workaround proposed.
Slow package downloads
Installs finish despite individual download-speed advisories. Transient transport noise.
DEP0005 Buffer constructor
Appears during Nuxt DX artifact retrieval after deployment commands. Comparison and upload succeed. External action/runtime attribution; no repository call identified.
Certificate rehash warning
Dependabot skips a certificate bundle because it contains multiple certificates. Update jobs finish successfully. External updater-image noise.
Ubuntu image migration
Hosted-runner notice. Selected successful checks provide no compatibility failure.
Evidence remains under ~/scratch/ci-review-2026-11-05/root-*. No local build or test was run.
Confidence: 88/100. Untested path: authenticated CI build after enabling server source maps.
In https://github.com/skilld-dev/skilld.dev/actions/runs/41170362977, attempt 2, job deploy, step Build, client source-map upload succeeds but Vite server and Nitro uploads find no maps among 354 and 606 artifacts respectively, while current main explicitly sets sourcemap.server: false, preventing server error symbolication.
Activity
harlan-github-agent commentedon Oct 7, 2026
2026-10-01T22:00:00.000Z — Skipped. This run was due more than 6 hours ago, so it was skipped.
harlan-github-agent commentedon Oct 8, 2026
2026-10-08T21:00:00.000Z — ci-review on skilld-dev/skilld.dev | 3 found | 3 new | 0 already known | 0 outside allowed scope | 0 over 5 files | 3 issues requested
ci-review scan: skilld-dev/skilld.dev
Coverage: incomplete. Window 2026-10-01T21:00Z..2026-10-08T21:00Z. The repository has 1142 workflow runs in the window (API total); the scan limit of 100 newest runs was reached, covering 2026-10-07T06:01Z..2026-10-08T16:21Z. Excluded by the limit: ~1042 older in-window runs (mostly PR Test runs and by-design Deploy noop runs). Open PRs #321/#320/#318 last ran checks 2026-09-30, outside the window.
gh run view --logreturned empty output for this token, so per-job logs were fetched through the jobs REST endpoint instead: full logs for all 128 success/failure jobs of the 32 selected runs (15 push-main Test runs, 16 success Deploy runs, PR #560 Test run 37579712127), all attempt 1. Cancelled Test runs (4) and skipped Deploy noop runs (~13 in scope) were not log-reviewed: both outcomes are the workflows' documented concurrency behavior. No failed or timed-out run exists in the reviewed scope.Reviewed runs (attempt 1, all conclusions success unless noted)
Candidates (repo repairs)
site / test, stepRun pnpm test:run: stderr of test/unit/skill-detail-duplicate-canonical-path.nuxt.test.ts shows[Vue warn]: Invalid prop: type check failed for prop "behaviors". Expected Array | Null, got Undefinedat<SkillBehaviors behaviors=undefined>(3 per run since 2026-10-08T10:22Z; introduced with 6b120f6 fix(registry): preserve root Skill snapshots #573, which renders the panel for raw snapshots whose sourceFacts lackbehaviors). Current HEAD still binds:behaviors="data.sourceFacts.behaviors"underv-if="data.raw || behaviors.length". Fix: coalesce to null at the binding (and optionally type the field optional).site / test, stepRun pnpm test:run: stderr of modules/mdxg/test/document-router.spec.ts shows[Vue warn]: onBeforeUnmount is called when there is no active component instance(7 per run, 112 total). The spec callsuseMdxgDocumentRouter()bare, so itsonBeforeUnmountnever registers and each test leaks apopstatelistener. Fix: run the composable inside a component instance (withSetup-style helper) in the spec.site / teststepRun pnpm install/dev:prepareand deploy job 37808195339 postinstall:[NUXT_B5023] nuxt.config.ts ... Cannot find module 'layers/marketing/app/utils/agent-pages',[NUXT_B8023] modules/og-static-fonts ... './sync',[NUXT_B8023] modules/file-icons ... '../../shared/file-icons'(up to 5 emissions per run). Cause: extensionless relative TS imports; Nuxt native loading fails and jiti re-transforms. Fix: explicit.tsextensions in nuxt.config.ts, modules/og-static-fonts/module.ts, modules/file-icons/module.ts.No matching open or closed issue exists for any candidate (searched open issues plus closed-issue keyword matches; prior ci-review run in #563 was skipped and filed nothing).
Accepted noise (no repo change)
::error/::warningstrings in job logs: echoed script text of the nuxt-dx budget step, not emitted annotations.harlanzw/ai-deslop-*doc-style rules plus a fewjsdoc/prefer-satisfiesadvisories over 43 files, dominated by immutable ADRs and historical ops ledgers (docs/adr/, docs/ops/); AGENTS.md marks ADRs immutable. A repair would exceed the 5-file candidate limit. Trend is upward ~1 warning per doc PR; worth a policy decision later, not a defect.@harlan-zw/nuxt-dxCLI, next actor that repo.layers/mcp/server/mcp/index.tsviadefineMcpHandler(verified in source and by passing webmcp tests). Next actor: @nuxtjs/mcp-toolkit upstream.nuxt-skew-prod-*and saved a fresh key (run 37808195339 log).hydrate-on-visiblestill defers tail hydration, so the stated perf goal holds.Verdict
AMBER: every CI check in scope passed and every deploy succeeded, but three warning-level repository defects are current on main (one runtime prop warning, one test-hygiene warning with a listener leak, one build-hydration noise class). Coverage is incomplete per the 100-run cap stated above.
Since run 37763046034 (attempt 1, 2026-10-08T10:22Z, commit 6b120f6 #573) through latest main run 37807825636 (attempt 1), job
site / test, stepRun pnpm test:run, test/unit/skill-detail-duplicate-canonical-path.nuxt.test.ts logs[Vue warn]: Invalid prop: type check failed for prop "behaviors". Expected Array | Null, got Undefinedat<SkillBehaviors behaviors=undefined>, because SkillDetail.vue binds:behaviors="data.sourceFacts.behaviors"underv-if="data.raw || behaviors.length"and raw snapshots lack the field; the binding must coalesce undefined to null.Target:
layers/registry/app/components/SkillDetail.vueVerify with:
pnpm exec vitest run test/unit/skill-detail-duplicate-canonical-path.nuxt.test.ts 2>&1 | grep -c 'Invalid prop: type check failed for prop "behaviors"' returns 0Estimated to change 1 file.
In every reviewed Test run from 37579687657 (attempt 1, 2026-10-07T06:06Z) to 37807825636 (attempt 1), job
site / test, stepRun pnpm test:run, modules/mdxg/test/document-router.spec.ts emits[Vue warn]: onBeforeUnmount is called when there is no active component instance7 times per run (112 total) because the spec calls useMdxgDocumentRouter outside setup, so the cleanup hook never registers and each test leaks a popstate listener on window.Target:
modules/mdxg/test/document-router.spec.tsVerify with:
pnpm exec vitest run modules/mdxg/test/document-router.spec.ts 2>&1 | grep -c 'onBeforeUnmount is called' returns 0Estimated to change 1 file.
Every reviewed run's install/prepare step (e.g. run 37807825636 attempt 1, job
site / test, stepsRun pnpm install --frozen-lockfile --ignore-scriptsandRun pnpm dev:prepare; also deploy job of 37808195339) emits NUXT_B5023 for nuxt.config.ts importing./layers/marketing/app/utils/agent-pagesand NUXT_B8023 for modules/og-static-fonts/module.ts importing./syncand modules/file-icons/module.ts importing../../shared/file-icons, all extensionless TS paths that Node native loading cannot resolve, so Nuxt re-transforms them through jiti; adding explicit.tsextensions restores native loading.Target:
nuxt.config.ts, modules/og-static-fonts/module.ts, modules/file-icons/module.tsVerify with:
pnpm dev:prepare 2>&1 | grep -cE 'NUXT_B(5023|8023)' returns 0Estimated to change 3 files.
harlan-github-agent commentedon Oct 15, 2026
2026-10-15T21:00:00.000Z — ci-review on skilld-dev/skilld.dev | 1 found | 1 new | 0 already known | 0 outside allowed scope | 0 over 5 files | 1 issues requested
CI review
Coverage: incomplete. Window: 2026-10-08T21:16Z to 2026-10-15T21:16Z.
main.Current baseline
Latest main checks passed:
576710ed, push.576710ed, workflow_run.Findings
site / lintreported 154 warnings with no errors. Three current one-file source warnings are Candidates below. They recur in 48 reviewed Test logs.DEP0005while GitHub downloads the Nuxt DX artifact. The repository command has already completed. This is action/runtime dependency noise; no repository-owned target was proven.deploy→pnpm production:edge-cachebecause ten cache probes lacked ETags. Run 38392204556, attempt 1, then failed two cache probes by timeout. The later successful deploy completed the same check withwarnings: []. No regression evidence.weekly (discord)→Publish. The Discord setting existed; X settings did not. This is an external publish failure, not a source defect. Next actor: service owner, inspect the saved run receipt and endpoint health.No secrets were displayed.
layers/registry/server/data/clusters.ts#RENAMED_CLUSTER_SLUGS: In successful Test run 38520943548, attempt 1,
site / lintwarns thatRENAMED_CLUSTER_SLUGS: Record<string, string>discards its known keys, so usesatisfiesto retain the literal key type.modules/mdxg/src/runtime/components/MdxgPageView.vue#MarkdownDocument-auto-import: In successful Test run 38520943548, attempt 1,
site / lintwarns thatMarkdownDocumentis redundantly imported from#componentsalthough Nuxt auto-imports it for the template.scripts/summarize-classifications.ts#buckets: In successful Test run 38520943548, attempt 1,
site / lintwarns thatbuckets: Record<string, number>discards its known keys, so usesatisfiesto retain them.Target:
layers/registry/server/data/clusters.ts, modules/mdxg/src/runtime/components/MdxgPageView.vue, scripts/summarize-classifications.tsVerify with:
pnpm exec eslint layers/registry/server/data/clusters.ts --max-warnings 0 && pnpm exec eslint modules/mdxg/src/runtime/components/MdxgPageView.vue --max-warnings 0 && pnpm exec eslint scripts/summarize-classifications.ts --max-warnings 0Estimated to change 3 files.
harlan-github-agent commentedon Oct 26, 2026
2026-10-22T21:00:00.000Z — ci-review on skilld-dev/skilld.dev | 1 found | 1 new | 0 already known | 0 outside allowed scope | 0 over 5 files | 1 issues requested
Coverage: complete for 2026-10-19 01:27:49 UTC through 2026-10-26 01:27:49 UTC.
Scope:
skilld-dev/skilld.dev, default branch and currently open pull requests.Full note and evidence summary
Scope and evidence
This delayed scan uses the current seven-day window. Routine ID:
skilld-dev/skilld.dev:ci-review:2026-10-22T21:00:00.000Z.Read the installed ci-review Skill, repository instructions, and all three workflow definitions. The public worker CLI confirmed public access. Full live reads replaced the controller's truncated evidence.
Default branch and local HEAD matched
2374b03a2bb08c4b73d4c768cbbfeec34fdef863.Pagination returned 27 completed runs, then zero. The 100-run limit was not reached. Selected 22 runs: ten successes, ten skipped deploys, two cancellations. Every attempt was 1.
Open PR associations were checked against head SHAs and repository identities. Five runs belonged to PRs outside the currently open set: 39557286506, 39547760933, 39275546950, 39275545385, 39270814585. Their metadata was read; logs were outside the selected scope. Open PRs #560, #321, #320, and #318 had no associated completed run in this window.
Collected 109 open and closed issues and seven open PR descriptions. Checked matching findings, #657's current labels and triage comment, and merged PRs #590–#592. Neither new Candidate matched existing ownership. No matching Baseline repair appeared in the available records.
Every selected executed job had logs. Empty logs belonged to skipped workflows or cancellation before jobs started. No unavailable log or omitted diagnostic group remained. Full logs covered lint diagnostics missing from GitHub annotations.
Repository and GitHub stayed read only. No production requests or workflow reruns occurred. Scratch evidence and failing lint output remain in
~/scratch/ci-review-20261022/.New Candidates
Both are maintenance, one file each. The controller can combine them before Issue triage.
PAGE_ADMISSIONSuses a broad Record annotation. Current main reproducesharlanzw/prefer-satisfies.evaluateCIandevaluateD1omit JSDoc return descriptions. Current main reproduces both warnings.Evidence: successful Test 39710357143, attempt 1,
site / lint,Run pnpm lint.Local baseline command exited 1 with exactly three warnings:
pnpm exec eslint layers/marketing/app/utils/page-admissions.ts checks/_helpers/policy.mjs --no-cache --max-warnings 0Existing work
ci-maintenance#58e5dbf642fb1f47; no duplicate Candidate.Current blocker:
harlan-agent-wait-to-implement, no assignee or matching open PR. Its earlier triage comment claims active-agent ownership. Next actor: controller, reconcile ownership before implementation approval.Diagnostic dispositions
Repeated diagnostics are grouped by cause. Representative evidence: Test 39710357143 and Deploy 39710569409, attempt 1.
prefer-satisfieswarningsserver/handlers/content-negotiation.tsfor cache-compatible negotiation.Latest lint reports 155 warnings, zero errors. Every rule is disposed above. Both social destination jobs succeeded without an actionable diagnostic.
Reviewed runs
All workflow files are under
.github/workflows/. Full SHAs remain in scratch metadata. Every listed run is attempt 1.Confidence: 96/100 for this read-only scan.
checks/_helpers/policy.mjs#returns-descriptions: Successful Test https://github.com/skilld-dev/skilld.dev/actions/runs/39710357143, attempt 1, job
site / lint, stepRun pnpm lint, emits twojsdoc/require-returns-descriptionwarnings because evaluateCI and evaluateD1 have return types without descriptions, and both warnings reproduce against current main.layers/marketing/app/utils/page-admissions.ts#PAGE_ADMISSIONS: Successful Test https://github.com/skilld-dev/skilld.dev/actions/runs/39710357143, attempt 1, job
site / lint, stepRun pnpm lint, warns that PAGE_ADMISSIONS'sReadonly<Record<string, PageAdmission>>annotation discards known keys, and current main reproducesharlanzw/prefer-satisfieslocally, so replace the annotation with a satisfies constraint.Target:
checks/_helpers/policy.mjs, layers/marketing/app/utils/page-admissions.tsVerify with:
pnpm exec eslint checks/_helpers/policy.mjs --no-cache --max-warnings 0 && pnpm exec eslint layers/marketing/app/utils/page-admissions.ts --no-cache --max-warnings 0Estimated to change 2 files.
harlan-github-agent commentedon Oct 29, 2026
2026-10-29T21:00:00.000Z — ci-review on skilld-dev/skilld.dev | 1 found | 1 new | 0 already known | 0 outside allowed scope | 0 over 5 files | 1 issues requested
Coverage: complete for 2026-10-22 21:05:00 through 2026-10-29 21:05:00 UTC, skilld-dev/skilld.dev only.
AMBER: two new maintenance Candidates. No broken check found.
Used the installed ci-review Skill in scan mode. No required Skill was missing. Repository and GitHub remained read only.
Evidence reviewed
Paginated completed runs: five returned, below the 100-run limit. No runs were excluded. All attempts were 1. No reruns required earlier-attempt review.
Read full logs for all three executing runs, job steps, and their check annotations. Both skipped runs contain only skipped jobs, with no execution logs.
.github/workflows/weekly-social.yml2374b03a2bb08c4b73d4c768cbbfeec34fdef863.github/workflows/deploy-cloudflare.yml2374b03a2bb08c4b73d4c768cbbfeec34fdef863.github/workflows/test.yml9f41f32da740aa6ea1e0533f206fb4419fd7f610.github/workflows/deploy-cloudflare.yml2374b03a2bb08c4b73d4c768cbbfeec34fdef863.github/workflows/test.yml5dff4c9d31f0f4265f097b2adb0487681188775aVerified current main equals the local checkout,
2374b03a. Read open issues, open PR heads, closed issue history, and matching repair descriptions. Live public reads replaced the bounded controller snapshot. No private evidence was needed.There was no executing deployment or main-push Test run within this window. The PR Test runs cover main plus their respective changes. Their changes do not touch either new Candidate's target.
New Candidates
Both repairs affect one file each. Both have maintenance urgency. Neither matches existing issue or PR ownership.
Existing work
Prior repairs #590, #591, and #592 were not re-proposed. Their original jiti, lifecycle, and behaviors-prop signatures did not appear in the selected logs. No regression is claimed.
Diagnostic dispositions
Repeated diagnostics are grouped below. Test diagnostics come from
site / test, stepRun pnpm test:run, unless stated otherwise.$fetch, but this file mocks onlyuseFetch. Current source confirms the missing fixture. Candidate.SKILL.md#demoWHY_DEMO.skillPathcontains a filename;demoHrefexpects a registry route. Candidate./_HomeDemoCarouselNUXT_E1005server/handlers/content-negotiation.tsfor shared-cache behavior. Accepted configuration advisory.All diagnostic families are dispositioned. No logs were unavailable, and no dispositions were omitted. The unresolved initialization cause limits diagnosis, not log coverage.
No local test run or production change was performed. Candidate verification remains for implementation.
Confidence: 88/100. Untested path: local reproduction and verification of the proposed fixture repairs.
test/a11y.nuxt.spec.ts#repository-preview-fixture: Successful run https://github.com/skilld-dev/skilld.dev/actions/runs/40259991320, attempt 1, job
site / test, stepRun pnpm test:run, logs a Repository preview 404 inskillSearchRepositoryModal has no violations while indexingbecause the current test mocks useFetch while the modal uses $fetch, forcing an unintended unavailable preview state; run 40255246961 shows the same diagnostic.test/a11y.nuxt.spec.ts#WHY_DEMO-skillPath: Successful run https://github.com/skilld-dev/skilld.dev/actions/runs/40259991320, attempt 1, job
site / test, stepRun pnpm test:run, emits VUE_ROUTER_R0004 for SKILL.md#demo in HomeWhy and WhyVisual cases because WHY_DEMO.skillPath is a relative filename while demoHref expects a canonical registry route, and current main retains that fixture; run 40255246961 shows the same diagnostic.Target:
test/a11y.nuxt.spec.ts, test/a11y.nuxt.spec.tsVerify with:
pnpm exec vitest run test/a11y.nuxt.spec.ts -t 'skillSearchRepositoryModal has no violations while indexing' && pnpm exec vitest run test/a11y.nuxt.spec.ts -t 'homeWhy|whyVisual'Estimated to change 2 files.
harlan-github-agent commentedon Nov 5, 2026
2026-11-05T21:00:00.000Z — ci-review on skilld-dev/skilld.dev | 1 found | 1 new | 0 already known | 0 outside allowed scope | 0 over 5 files | 1 issues requested
Coverage: incomplete for 2026-10-29 21:05:58 through 2026-11-05 21:05:58 UTC, skilld-dev/skilld.dev only.
AMBER: one new maintenance Candidate. One cancelled run’s logs are unavailable.
Used the installed
ci-reviewSkill in scan mode. No required Skill was missing. Repository files, GitHub, and production remained read only.Scope and evidence
mainmatches the checkout:786a28a1a54df96e75136533b3297d6d4389eb00.Unavailable evidence
Run 41170192323, attempt 1: full-log retrieval returned
log not found: 124446333351. The identifiedpublished-cli-grammarjob-log fallback returned the same error. Job metadata and annotations were available. Other job output from this run remains unread; cancellation annotations do not establish clean logs.New Candidate
Enable server source maps for Sentry uploads, estimated one file, maintenance urgency.
In deploy 41170362977, attempt 2, job
deploy, stepBuild:sourcemap.serveris disabled.Current
nuxt.config.tssetssourcemap.server: false. The same warnings occur in attempt 1 and deploy 41163632774. This establishes a server-generation gap, rather than a general upload failure. No matching open or closed repair was found.Implementation should enable server map generation for authenticated CI builds and retain map deletion after upload. Verification needs the CI build environment. No local authenticated build was run.
Existing work and resolved findings
harlan-agent-wait-to-implement; no assignee is set. Older triage mentions active work, but the current labels do not confirm it. Issue triage/controller must resolve readiness and ownership. No duplicate Candidate.Diagnostic dispositions
Apply D1 migrations,pnpm db:migrations:prod, failed with “storage operation exceeded timeout which caused object to be reset.” Attempt 2 passed at the same SHA. Recovered provider failure; no repository retry change proven safe or necessary. If it recurs, controller/Harlan handles provider diagnosis. #393 owns recurring provider escalation; this scan does not prove identical cause.cancel-in-progress: true; later main Test passed. Expected supersession. Missing logs remain a coverage gap.NUXT_E1005Run register
All attempts are 1 except the indicated deploy. SHA prefixes identify the recorded head commits.
Workflow paths: Test =
.github/workflows/test.yml; Deploy =.github/workflows/deploy-cloudflare.yml; Social =.github/workflows/weekly-social.yml; Dependabot =dynamic/dependabot/dependabot-updates.Excluded merged-PR runs: 41165032914, Test, pull_request, success, SHA
3ad617452efc9b1bef7bf99b6cc175e3d03ff6e9; 41161940339, Test, pull_request, success, SHAf2a538a143d405719a1ed4efbadd7314eb03b192.Evidence remains under
~/scratch/ci-review-2026-11-05/root-*. No local build or test was run.Confidence: 88/100. Untested path: authenticated CI build after enabling server source maps.
In https://github.com/skilld-dev/skilld.dev/actions/runs/41170362977, attempt 2, job
deploy, stepBuild, client source-map upload succeeds but Vite server and Nitro uploads find no maps among 354 and 606 artifacts respectively, while current main explicitly setssourcemap.server: false, preventing server error symbolication.Target:
nuxt.config.tsVerify with:
pnpm buildEstimated to change 1 file.