← Back to list
01Issue
BugShippedSwamp ClubPublic
Assigneesstack72
Relationships
#1326 Published extension scores dependency-trust as "missing" (0/2) while client `extension quality` earns it (2/2); no verdict exposed
Opened by magistr · 7/21/2026· Shipped 7/22/2026
Summary
The dependency-trust quality factor ("Dependencies pass trust gates") is scored
inconsistently between the client CLI and the server-side registry, and when it
fails the server exposes no verdict for authors to act on.
For @magistr/stripe-mpp@2026.07.21.2 (beta):
- Client
swamp extension quality stripe-mpp/manifest.yaml --json→dependency-trustearned (2/2), overall 14/14 (100%). It audits the two direct npm importsmppx@0.8.12andstripe@22.4.0-beta.1; both pass (MIT, high weekly downloads, not deprecated, no OSV vuln). - Running the domain checker directly —
checkDependencyTrust(...)fromsrc/domain/extensions/extension_dependency_trust_checker.tsagainst those two specifiers — returns{ errors: [], warnings: [], passed: true }(fresh, no cache). - Server / published page (https://swamp-club.com/extensions/@magistr/stripe-mpp?channel=beta) shows "Dependencies pass trust audit ×0/2", status "missing", dropping the published grade from A (100%) to B (85%).
swamp extension info @magistr/stripe-mpp --jsonreports"score": { "percentage": 85, "grade": "B" }and"dependencies": []— the registry recorded zero dependencies for the extension.
Two distinct problems
- Client/server divergence. The server marks
dependency-trustas missing/0 for deps that the client — and the sharedcheckDependencyTrustcode — earn (2/2). The published grade is wrong (B instead of A). A locally-green extension publishes as trust-failing. - No verdict surfaced. Neither the extension page nor
swamp extension info --jsonstates WHICH dependency failed or WHY (deprecated / OSV vuln / not-evaluated). The status "missing" (as opposed to "failed") suggests the server never computed or persisted a dependency-trust result rather than computed-and-failed. Authors have no way to diagnose or fix.
Steps to reproduce
- Publish
@magistr/stripe-mpp2026.07.21.2to thebetachannel. Its model source (extensions/models/stripe_mpp.ts) importsnpm:mppx@0.8.12,npm:mppx@0.8.12/server, andnpm:stripe@22.4.0-beta.1. - Client:
swamp extension quality stripe-mpp/manifest.yaml --json→dependency-trustearned (2/2), 100%,dependencyTrust.passed = true, two deps audited. - Registry: open the extension page, or
swamp extension info [@magistr](/u/magistr)/stripe-mpp --json→dependency-trust"missing" (0/2), grade B (85%),dependencies: [].
Leads for the maintainers
- The registry stores
dependencies: []for this extension. The server-side dependency extraction appears not to have run or persisted at publish, so the trust factor is unevaluable → "missing" → 0/2 (and it silently downgrades the grade). - Worth checking as a contributing cause: the model source
stripe_mpp.tscontains a raw NUL byte (an intentional SHA-256 idempotency-key domain separator,`${op}\x00${input}`at ~line 318). Because of the NUL,file(1)classifies the source asdataand plaingrepskips it as binary. The client extractor (extractDependencySpecifiers) usesDeno.readTextFileand reads it (NUL and all), so it findsmppx/stripe. If the server-side extractor reads the file with any binary/text detection (or a non-Deno path), it may skip the file and extract zero deps — matching the observeddependencies: []. (Hypothesis — flagging as a lead.) - Separately, a latent inconsistency in
fetchNpmFacts(extension_dependency_trust_checker.ts): thedeprecated/license/lastPublishfacts are read from thelatestdist-tag version's manifest, while OSV is queried on the pinned version. Not the cause here, but a correctness gap (a deprecated pinned version would be missed).
Asks
- Expose the server-side dependency-trust verdict — the audited deps plus
errors/warnings, or an explicit "not evaluated / reason" — on the extension page and
via
swamp extension info --json, so authors can see what failed. - Reconcile server scoring with the client
checkDependencyTrust(same inputs, same fail-open-on-unreachable behavior). A "missing"/unevaluated factor should not silently score 0/2 and downgrade the grade as if the check had failed.
Environment
- swamp CLI:
20260720.142822.0-sha.0caa5556 - Extension:
@magistr/stripe-mpp@2026.07.21.2(beta channel) - Relevant source (main):
src/domain/extensions/extension_dependency_trust_checker.ts(fail conditions = deprecated OR OSV HIGH/CRITICAL/UNKNOWN; everything else is a non-blocking warning),src/domain/extensions/extension_dependency_extractor.ts(audits directnpm:/jsr:imports parsed from the model source,zodexcluded).
02Bog Flow
Shipped
Click a lifecycle step above to view its details.
03Sludge Pulse