fix(ci): make the explorer job and cargo audit gate actually pass - #587
Open
Depo-dev wants to merge 5 commits into
Open
fix(ci): make the explorer job and cargo audit gate actually pass#587Depo-dev wants to merge 5 commits into
Depo-dev wants to merge 5 commits into
Conversation
- Add explorer build and type-check job to CI (closes #387) - Create .cargo/audit.toml with ignore entries for 10 pre-existing advisories from the first real Dependency audit run (closes #373) - Remove continue-on-error from cargo audit step so it blocks again - Update deny.toml ignore list to match audit.toml triage Issues #497 and #505 are operational tasks (running soak tests against staging infrastructure and verifying gap detection in production) that require live environment access and cannot be addressed via code changes.
Add explorer CI job, triage cargo audit advisories, restore blocking
PR #565 added an Explorer CI job and restored blocking on cargo audit, but shipped without CI checks. Both gates fail as merged. cargo audit: - .cargo/audit.toml wrote its ignore list as { id, reason } tables. That is cargo-deny syntax; cargo-audit's schema wants an array of advisory-ID strings and exits with "invalid type: map, expected a string". With continue-on-error removed the Dependency audit job died on a fatal parse error before scanning anything. Rewrote the list as ID strings and moved each rationale into the comment above its entry. - Dropped yanked = "warn", which is not a valid [advisories] key. - The triage missed RUSTSEC-2026-0258 (h2 unbounded empty DATA frames), published after the issue was filed. Upgraded h2 0.4.15 -> 0.4.19 on the hyper 1.x path, which clears it. The remaining hit is h2 0.3.27 reached through tonic 0.11 -> hyper 0.14, where the 0.3 line has no patched release, so it is ignored with that rationale until tonic is upgraded. - Synced deny.toml and corrected its "10 advisories" comment; the list is 12 entries. cargo audit now exits 0. Explorer: - npm ci could not resolve: @astrojs/tailwind@6.0.2 peers astro ^3||^4||^5 but the project is on astro 7, so the job failed on its first real step. @astrojs/tailwind is EOL at 6.0.2 and will not support astro 7, so migrated to @tailwindcss/vite with tailwindcss 4, added the global stylesheet Tailwind 4 requires, and dropped tailwind.config.mjs after moving its font-mono stack into an @theme block. - src/pages/contract/[address]/index.astro carried a botched conflict resolution: a duplicated frontmatter block and a second, older <Base> template, giving the file three --- fences. astro build failed with "Unexpected token". Kept the newer template (the one wired to ErrorState/getErrorState) and removed the stale copy. - Fixed four pre-existing type errors that fail astro check: a11y-test used checkA11y, which returns void and throws, to collect results; it now uses getViolations. perf-test lost null-narrowing on a let assigned inside a callback. Also removed a dead EmptyState import. - Added the npm cache to the job, matching the other Node jobs. npm ci, npm run build and npm run lint all pass; astro check reports 0 errors and 0 warnings. cargo check --workspace and cargo fmt are clean.
Both jobs this branch fixes still failed in CI, for reasons that do not reproduce on Windows. - npm ci failed with "Missing: @emnapi/core@1.11.1, @emnapi/runtime@1.11.1 from lock file". The lockfile was generated on Windows, where npm prunes optional dependencies the Linux runner resolves. Regenerated it under WSL; npm ci, npm run build and npm run lint all pass on Linux, with astro check reporting 0 errors and 0 warnings. - The Dependency audit step failed before running any audit: audit-check installs cargo-audit without --locked, so it resolves dependencies to their newest releases, and kstring 2.0.4 now requires rustc 1.96 while the stable runner is on 1.94. That failure was previously hidden by continue-on-error, which this branch removes. Installing cargo-audit explicitly with --locked builds against its own lockfile, which works on stable; the action then reuses the binary on PATH.
The previous regeneration still failed npm ci with "Missing: @emnapi/core@1.11.1, @emnapi/runtime@1.11.1 from lock file". Regenerating on Linux was not enough: @bruits/satteri-wasm32-wasi pins those two exactly and @tailwindcss/oxide-wasm32-wasi wants ^1.11.1, but no install on either Windows or Linux resolves the wasm32-wasi packages, so npm pruned their dependencies from the tree while the runner's npm ci still validates them. Regenerated with --include=optional so every optional platform's dependencies are recorded regardless of the generating host. npm ci, npm run build and npm run lint all pass on Linux, with astro check reporting 0 errors and 0 warnings.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings PR #565 (merged into
staging/pr565-integration, notdev) intodevtogether with fixes for the gaps it shipped with. #565 merged with no CI checks reported, and both gates it adds fail as merged.cargo audit
.cargo/audit.tomlwrote its ignore list as{ id, reason }tables — that is cargo-deny syntax. cargo-audit wants an array of advisory-ID strings and exits withinvalid type: map, expected a string. Withcontinue-on-errorremoved, the Dependency audit job died on a fatal parse error before scanning anything. Rewrote the list as ID strings and moved each rationale into the comment above its entry.yanked = "warn", which is not a valid[advisories]key.0.4.15 -> 0.4.19on the hyper 1.x path, which clears it. The remaining hit is h20.3.27reached through tonic 0.11 -> hyper 0.14, where the 0.3 line has no patched release, so it is ignored with that rationale until tonic is upgraded.deny.tomland corrected its "10 advisories" comment; the list is 12 entries.cargo auditnow exits 0.Explorer
npm cicould not resolve:@astrojs/tailwind@6.0.2peers astro^3||^4||^5but the project is on astro 7, so the job failed on its first real step.@astrojs/tailwindis EOL at 6.0.2 and will not support astro 7, so migrated to@tailwindcss/vitewith tailwindcss 4, added the global stylesheet Tailwind 4 requires, and droppedtailwind.config.mjsafter moving itsfont-monostack into an@themeblock.src/pages/contract/[address]/index.astrocarried a botched conflict resolution: a duplicated frontmatter block and a second, older<Base>template, giving the file three---fences.astro buildfailed with "Unexpected token". Kept the newer template (the one wired toErrorState/getErrorState) and removed the stale copy.astro check:a11y-testusedcheckA11y, which returnsvoidand throws, to collect results — it now usesgetViolations.perf-testlost null-narrowing on aletassigned inside a callback. Also removed a deadEmptyStateimport.Verification
npm ci,npm run buildandnpm run lintall pass; astro check reports 0 errors and 0 warnings.cargo auditexits 0, andcargo check --workspace --all-targetsandcargo fmt --checkare clean.Note:
deny.tomlkeepsyanked = "deny"while two yanked crates (chacha20,spin) are pulled in transitively. No workflow runs cargo-deny today, so it is dormant — flagging it rather than changing security posture that was not asked about.