Relationships
#4129 Over-limit contentMetadata publishes a blank extension page; archive fallback extracts nothing
Opened by keeb · 10/29/2026
Summary
An extension whose contentMetadata exceeds any registry listing limit publishes "successfully" but gets a blank extension page: no models, methods, or arguments are listed. The one signal is a warnings.registry line in the push summary that is easy to miss, and the archive fallback that is supposed to rescue the listing extracts nothing for perfectly valid model files.
What happened
@keeb/ashby 2026.10.29.1 (a full Ashby ATS API wrapper, generated from Ashby's OpenAPI spec) had 57 model files. swamp extension push manifest.yaml -y reported status: pushed, with only:
warnings.registry: contentMetadata was rejected (contentMetadata.models exceeds limit of 50); the registry listing was extracted from the archive insteadswamp extension info @keeb/ashby --json then shows contentMetadata.models: []. The page lists nothing, although the extension loads and runs fine once pulled.
Why the page is blank rather than partially listed
validateContentMetadata(swamp-clublib/domain/extension/extension-content.ts) throws on the first limit breach:MAX_MODELS = 50,MAX_METHODS_PER_MODEL = 50,MAX_ARGS_PER_METHOD = 30,MAX_GLOBAL_ARGS_PER_MODEL = 30. One over-limit model or method discards the whole listing.- The archive fallback (
lib/app/extract-extension-content.ts) is weaker than the CLI extractor (src/domain/extensions/extension_content_extractor.ts):- it reads a model's type only from
ModelType.create("..."), nottype: "...", which is what the CLI and every current extension use; - it reads only the first literal
methods: { ... }block, so methods merged in by spread (methods: { ...methods }) count as zero; - a model with no recognised type and zero methods is dropped entirely.
So the fallback produced
models: []for 57 valid models.
- it reads a model's type only from
Expected
A listing over a limit should never produce a blank page silently. Any of these would fix it:
- CLI pre-check (best):
swamp extension pushandswamp extension qualityknow the limits, so they should fail or prominently warn before publishing, naming the limit and the offending model/method, with a remediation (see the related feature request on splitting by domain). - Registry degrade, not discard: list the first N models and methods (or drop only the offending entries) and flag the truncation, rather than rejecting everything.
- Fallback parity: the archive fallback should understand
type: "..."and the same forms the CLI extractor does, so the fallback actually falls back. - At minimum, make the
warnings.registryline stand out in the human-readable push summary. It currently reads like a footnote on a successful push.
Environment
- swamp CLI 20260206.200442.0
- Extension:
@keeb/ashby2026.10.29.1 (57 models). Since replaced by seven@keeb/ashby/<domain>extensions, all of which list correctly.
Open
No activity in this phase yet.
system commented 10/29/2026, 6:16:39 PM
Classified automatically when this issue was filed.
- Source: Swamp Club
If you feel this classification is incorrect, add a ripple to tell us so.
keeb commented 10/29/2026, 6:16:46 PM
Related: #4130 (CLI pre-check for listing limits, suggest per-domain split) and #4131 (skill/docs: limits, static-extraction rules, splitting by domain).
Sign in to post a ripple.