Skip to main content
← Back to list
01Issue
BugShippedSwamp CLIPublic
Assigneesskunk-ape

Relationships

#3022 extension quality, fmt --check and push disagree: bare-specifier severity, cache hit skips gates, gate failure hides the rubric, fmt ignores project config

Opened by skunk-ape · 10/5/2026· Shipped 10/6/2026

Problem

swamp extension quality, fmt --check and push give different answers for the same extension:

  • Bare import-map names are a blocking error in quality.ts:206 and a medium warning in push.ts:834. First-party @swamp/azure-kv (@azure/core-auth) and @swamp/issue-lifecycle (@std/path, zod) are published today and cannot be scored; stagecraft rewrote its imports to get past it. Earlier rounds: #505, #167.
  • quality aborts without a score when any push gate fails, because it calls extensionPushPrepare and surfaces the first thrown error (quality.ts:168-178), so a safety error hides the whole rubric. #1481 was the exit-code half of this.
  • A quality cache hit skips prepare entirely (quality.ts:137-164), so safety, review, upgrade-chain and collective checks do not run on a cached archive, while a push cache hit skips only fmt/lint (push.ts:758).
  • extension fmt --check runs without the project deno.json (fmt.ts:77) while push uses it.

Expected

  • The same severity for bare specifiers in quality and push, with the import-map rewrite suggested in the message. Either both warn and note the extension will be unscored, or both error.
  • A quality cache hit still runs safety, review, upgrade-chain and collective checks.
  • Quality prints the rubric even when a gate fails, with the gate failure beside it.
  • fmt --check uses the project config, as push does.

Acceptance

  • quality and push --dry-run on @swamp/azure-kv agree on the bare-specifier outcome.
  • quality on an extension that trips a safety error prints the rubric and the error.
  • quality run twice (second run a cache hit) with a hidden file added between runs reports the hidden file on the second run.
  • fmt --check and push agree on every extension in swamp-extensions (the assessment found no disagreement on 46 with the current code; this is the regression check).

Source: the extension push assessment (2026-10-02, swamp 20261002.194016) and the Extension Push UX Plan, which groups this with its lane and order.

02Bog Flow
✓OPEN✓TRIAGED✓IN PROGRESS✓SHIPPED+ 1 MOREASSIGNED+ 8 MOREREVIEW+ 9 MOREPR_MERGED+ 2 MORESESSION_SUMMARIZED

Shipped

10/6/2026, 11:24:36 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
skunk-ape assigned skunk-ape10/6/2026, 9:22:01 PM
Editable. Press Enter to edit.

skunk-ape commented 10/5/2026, 2:34:57 PM

Guardrail: when quality and push disagree, prefer the stricter severity with a better message over relaxing both. For bare specifiers that means error in both with the import-map rewrite suggested, unless there is a reason the registry can score them; an extension that publishes unscorable is the outcome to avoid. A quality cache hit must run every gate the cold path runs.

Sign in to post a ripple.