Skip to content
Pocketto
Reference

Troubleshooting

Pocketto error codes grouped by area, each with its recovery route, from CLI contract mismatches and plan structure errors to Enterprise PR blockers.

Every failure mode below names its code and its recovery route. General principles first:

  • Never hand-edit log.json or lifecycle.json. The CLI is the only writer.
  • Failures write nothing before refusing. A refusal is safe to investigate.
  • Recovery order for lifecycle projection issues: lifecycle repair → lifecycle drain.

CLI envelope and handshake

CodeMeaningRecovery
BAD_CONTRACT--contract was not an integerPass an integer
CONTRACT_MISMATCHSkill and CLI disagree on contractUpdate skills/plugin, or pin the CLI (npx -y pocketto-pi@<version> older / @latest newer), the error states which
UNKNOWN_COMMAND / UNKNOWN_FLAG / MISSING_VALUEBad invocationCheck the CLI reference
ENTERPRISE_COMMAND_UNAVAILABLEmode/format on a Core installThese are Enterprise-owned commands: install the matching Enterprise role

structure / plans

CodeMeaningRecovery
NO_TASKSPlan did not parse into tasksFix the plan against the plan template; dry-run again
UNKNOWN_TASK_REFA dependency references a nonexistent taskFix the annotation
CYCLE_DETECTEDDependency cycleRemove the artificial dependency or extract a [prereq] task
PIPELINE_TOO_OLDPlan from an older pipeline generationFinish it under the pinned release (npx -y pocketto-pi@3.1.3 for v3), then update
LOG_JSON_UNPARSEABLElog.json exists but does not parsestructure --reset is the explicit rebuild (discards execution state, authorization required)
Interrupted structurePartial write of execution-plan/ or log.jsonRe-run structure --reset on that plan; never hand-repair

log / execution

CodeMeaningRecovery
DUPLICATE_DONE_SHAA task's done_sha matches a sibling (collapsed parallel merge)Re-log with that task's own merge commit: log update … --sha <own merge commit>
Task stuck mid-auditloop_info shows an exhausted windowRECOVERY_CHECKPOINT: authorize another bounded window explicitly; do not restart

lifecycle

CodeMeaningRecovery
LIFECYCLE_BAD_STATEIllegal transition (e.g. log handoff after log close)Order is fixed: last stacked phase → log handoff → log close
LIFECYCLE_BAD_ARTIFACT familyBad artifact ref (root, path, sha256, stale digest)Fix the referenced artifact or re-stage it; specific LIFECYCLE_* codes name the exact problem
PROJECTION_REPAIR_REQUIREDProjection write failed after the event committedlifecycle repair → lifecycle drain
LIFECYCLE_REPAIR_STATE_UNRECOVERABLENo trusted task-state sourceManual resolution; nothing was changed
LIFECYCLE_SCHEMA_UNSUPPORTEDschema above 2Update the CLI
PIN_V3_REQUIREDMigration attempted on a progressed v3 planFinish it on v3 (npx -y pocketto-pi@3.1.3); migration is pristine-only
adapter-unavailableDrain with no registrationEvents stay pending; reinstall/pin the adapter, then drain again

Enterprise

CodeMeaningRecovery
ENTERPRISE_ADAPTER_CONTRACT_MISMATCHRegistration written under adapter contract 1Reinstall the adapter (see Enterprise setup)
ADAPTER_REGISTRATION_NOT_PORTABLELegacy absolute-path registrationNon-blocking warning; reinstall after upgrading Core to migrate
ADAPTER_CONTRACT_MISMATCHDrain hit an incompatible registrationEvents stay pending, no remote call; fix the registration, then drain
PUSH_CONSENT_REQUIREDPush needs approval of the exact commitconsent-push … --sha <40-hex> after you approve that SHA
PR_BLOCKED (retryable)parent PR merged (no reusable child PR), parent PR not recorded, parent branch not published, root base not publishedPublish/record the parent (or open/retarget the child PR on GitHub for a merged parent), then rerun. Each drain rerun spends one of 6 delivery attempts, so prefer publish-phase
PR_BLOCKED (terminal)base retargeted, duplicate open PR, parent PR closed, remote branch diverged, foreign PR, ambiguous identity, …Fix on GitHub; Pocket never retargets, closes duplicates, rebases, or force-pushes
GH_UNKNOWN on spec-approvedDelivery failed for an unidentified reasonFollow the missing-label consent recovery for issue #70, a documented workaround, not a runtime fix
Attempts exhausted6 total delivery attemptsTerminal: manual resolution

Education

CodeMeaningRecovery
EDU_CONFIG_INVALIDThe ## Pocket Education block is malformedStop and show the error. Fix by hand or recalibrate (edu init --reset) only if the learner agrees, never silently
EDU_SCHEMA_UNSUPPORTEDProfile written by a newer CLInpx -y pocketto-pi@latest; never reset or rewrite the profile automatically

Still stuck?

  • Run npx -y pocketto-pi doctor [--strict] to check the installation.
  • Read the exact error: Pocketto errors are written to name the unblocking action.
  • Search or open an issue at the GitHub repository.

On this page