Module Creator
Troubleshoot the Module CLI
Map validation, archive, authentication, network, and review failures to a safe next step.
Validation fails
- Run module validate . --json and use the error code and JSON pointer to find the manifest or asset field.
- If the manifest is missing, rename it to fabled.module.json. Remove the legacy fabled-module.json when both exist.
- Update every asset's declared bytes and sha256 after editing. module pack validates those declarations and computes the final archive digest; it does not rewrite source declarations.
- Check package/publisher id syntax, exact semantic versions, supported target/slot combinations, capability consent, locale tags, contribution references, and contiguous migrations.
Archive inspection fails
Recreate the artifact with module pack. General-purpose ZIP tools may add compression, comments, platform metadata, links, duplicate/case-colliding names, or data descriptors that the safe profile rejects. Keep the archive under 5 MiB, each entry under 1 MiB, and the entry count at 128 or fewer.
Login or saved credentials fail
- Generate a fresh code in Account → Security. Codes expire after 120 seconds and work once.
- Paste only the exact fabled://module-cli URI or 43-character code. Do not pass it as an argument.
- Run module logout, then login again if the session has expired, was rejected, or uses the legacy version-1 format. Retry a failed server revocation before removing a live credential file. Removing a legacy file does not revoke its Firebase session.
- On POSIX, fix the parent directory to private ownership/permissions and the credential file to 0600. On Windows, use a private user-profile path protected by your ACL.
- For local development, set FABLED_API_URL to the matching loopback backend and generate the code in the local Fabled account page. The CLI needs no Firebase web key. Keep using the API origin selected during pairing.
Publishing or review fails
- 401/403: log in again or confirm the supplied automation token has publisher/submission access.
- 409: do not invent a new request id after an uncertain response. Retry the same artifact with the printed --request-id; a true immutable conflict needs a new version or corrected namespace.
- 413: reduce declared assets and repack below the 5 MiB admission limit.
- CHANGES_REQUESTED: read reviewerNote, automatedFindings, and warnings in module status --json, change the project, increment the immutable release version, validate, pack, and submit again.
- A valid CLI command can still be unavailable while its beta service gate is off. This is not fixed by weakening the manifest or credentials.
A module is acquired but not running
- Acquisition grants entitlement only. Open the account library, choose Install, accept the exact offered release terms, and then choose Activate for an eligible account-targeted module.
- If Install is unavailable, confirm the package and release are active and reviewed, the entitlement is active, and the installation rollout gate is enabled.
- If Activate is unavailable, check the accepted release, host compatibility, dependencies, runtime policy, signatures, and activation rollout gate.
- For community campaign activation, confirm that the matching backend is deployed and the installed exact release has accepted terms and active ADMIN_GRANT or FREE_ACQUISITION authority. Only the exact campaign owner can activate or disable modules.