Guide · core
Use when
A command ended with
outcome: unknown, exit code 4 or 5, a timeout, or no reply, and you do not know whether the change happened.Looking for something else?
A change that returned
pending (problem change-waits-for-approval). A submit that reports partial (problem submit-partly-applied).Outcome
You can say one of three things, and you can show why. The change happened once. The change did not happen, and you sent it once with its first key. Or you cannot tell yet, and you have told the person why.Before you start
- Stop. Do not send the change again with a new request id.
- Find the request id. The CLI prints it as
request-id:for a keyed change, and you can set it with--request-id. On MCP, find the call and its arguments in your own history. - Know your credential (
penumbra whoami). A partial submit resumes only with the credential that sent it (card rule workspace.6).
Steps
- Read what the exit code says.
- Exit code 5 and
transport_deadline: Penumbra did not answer in time and may still be working on it. Run the same command with the same--request-id. - Exit code 4 and
outcome: unknown (deadline): the request may have run. Its last line gives the command to run again with the same key. Go to step 2. - Exit code 4 and
outcome: pending: that is an approval, not a lost reply (problem change-waits-for-approval).
- Exit code 5 and
- Ask Penumbra what it recorded for the key.
- CLI:
penumbra requests get <key>. This covers Files changes: uploads, replaces, documents, collections and tags. - Expect
outcome: appliedwithreplayed: true, the operation and the File or collection it made. The change happened. Go to Check. - Expect
outcome: unknownwithreason: request_not_observedand exit code 4. Penumbra holds no outcome for the key. Go to step 3.
- CLI:
- Read the state the change would have made.
- A Files change:
penumbra files show <file>,penumbra files versions <file>orpenumbra files collections list. - A workspace change:
penumbra graph workspace show "<name>". Compare the item count and the revision with what you meant to do. - An extraction:
penumbra graph extractions "<workspace>". Use the run id thatpenumbra graph extractprinted. Do not build one. - MCP: call
check_statuswith no reference. It lists your recent executions, up to 20 from the last 24 hours. Then call it with the referenceexecution:<id>of the one that was running. If the state shows the change, it happened. Go to Check. If it does not, go to step 4.
- A Files change:
- Send the same command again, with the same arguments and the same key.
- CLI:
penumbra files collections create "<name>" --request-id <key>is one example. Repeat the exact command that you ran. - Expect
outcome: appliedon the first run. If Penumbra had the outcome already, it saysoutcome: applied (replayed). The change does not run twice with one key (problem reply-lost). - A different body under the same key is refused with
idempotency_conflictand exit code 3. Do not change the arguments. If you must change them, read the state again first, and use a new key only for new work.
- CLI:
- A command that has no request id sends the change again if you repeat it.
penumbra graph workspace modifyis such a command. Read the workspace first (step 3), and repeat only the part that is missing. Workspacehydrate,keep-new, andrefreshare keyed: repeat the exact command with its original--request-idas in step 4. - A submit that now reports
partialorunresolvedis not a lost reply. Follow problem submit-partly-applied. A write that answersgraph_write_busydid not apply: wait, then send it with the same key (problem graph-busy). - If an approved change ended in
unknown, Penumbra does not run it again. Read the state (step 3) before you ask for another approval (card rule approval.8).
Check
- You have one of three proofs.
penumbra requests get <key>saysapplied. Or a read of the state shows the change once. Or a repeat with the same key returnedoutcome: applied. - The count of what you changed is the same as after one change. For a collection, one collection with that name. For a workspace, the item count of one capture.
If it goes wrong
Worth offering
- Offer to name the request id in your report, so the person can read the same outcome later.
- When a job runs many changes, offer to choose its request ids first and write them down, so a lost reply costs one lookup.
- If replies get lost often, offer to report it with
penumbra feedback(card feedback).