DCG builder reference
Generated from dcg-unified-v1.md (spec: to be published), revision 7, dated 2026-09-25.
Specification SHA-256: 1358c31e2f947cc99eff3e63b5381d370c7853fcd50ea9516ea4f3455f788185
This page is generated from the unpublished protocol specification and should not be edited by hand.
The mainnet alpha program addresses are in the quickstart. This reference describes wire and account mechanics, not model quality.
Instruction tags
The unified-format allocation is parsed from specification §10. CloseResponseV5 is parsed from §7.4 because revision 6 added it there.
| Tag | Instruction | Builder role | Spec |
|---|---|---|---|
| 156 | RegistryCreateV2 |
Registry authority | §4.3 |
| 157 | RegistryWriteV2 |
Registry authority | §4.3 |
| 158 | RegistryFreezeV2 |
Registry authority | §4.3 |
| 159 | AdmissionBeginV2 |
Anyone | §5.2 |
| 160 | AdmissionStepV2 |
Anyone | §5.2 |
| 161 | UnifiedInit |
Executor | §6.5 |
| 162 | LandPositionRoots |
Executor | §6.6 |
| 163 | RevealPositionV5 |
Executor in a challenge | §7.5 |
| 164 | SelectSegmentV5 |
Challenger | §7.5 |
| 165 | FinalizeDocumentV5 |
Executor | §6.6 |
| 166 | ChallengeLeafV5 |
Challenger | §7.2 |
| 167 | ChallengePositionV5 |
Challenger | §7.5 |
| 168 | RevealV5 |
Executor | §7.2 |
| 169 | DescendV5 |
Challenger | §7.2 |
| 170 | SummaryLeafChallenge |
Challenger | §8.3.5 |
| 171 | ChallengeSummary |
Challenger | §8.3.5 |
| 172 | CloseDocumentV5 |
Anyone when close is allowed | §6.12 |
| 173 | RevealFamilyTableV5 |
Any signer | §7.7 |
| 174 | ConfigInit |
Program upgrade authority | §16.1 |
| 175 | ConfigSetAuthority |
Config admin; new admin also signs | §16.1 |
| 176 | TemplateSeal |
Template-seal authority | §16.2 |
| 177 | AttestOutputV5 |
Anyone | §6.11 |
| 178 | ResolveResultV5 |
Anyone | §6.11 |
| 179 | RevealSummaryV5 |
Executor | §8.3.5 |
| 180 | SelectSummaryV5 |
Challenger | §8.3.5 |
| 181 | AnswerSummaryV5 |
Anyone | §8.3.5 |
| 182 | CloseResponseV5 |
Anyone after a DCR1 v5 ruling | §7.4 |
| 185 | CloseResultV6 |
Anyone at or after the retention deadline | §6.12 |
Reused response and ruling tags
The unified specification reuses these existing tags for DCR1 v5. Tag 119 never applies to a v5 challenge.
| Tag | Instruction | Builder role | Spec |
|---|---|---|---|
| 115 | BeginResponse |
Executor | §7.4 |
| 116 | GrowResponse |
Executor | §7.4 |
| 117 | WriteResponse |
Executor | §7.4 |
| 118 | SealResponse |
Executor | §7.4 |
| 119 | CancelPending |
No v5 path; refused | §7.4 |
| 120 | VerifyTarget |
Executor | §7.4 |
| 121 | VerifyReads |
Executor | §7.4 |
| 122 | WeightsAnchor |
Executor | §7.4 |
| 123 | WeightsRows |
Executor | §7.4 |
| 124 | Execute |
Executor | §7.4 |
| 125 | WriteResponseAt |
Executor | §7.4 |
| 126 | RestageResponse |
Executor | §7.4 |
| 127 | VerifyArtifacts |
Executor | §7.4 |
| 128 | VerifyOutputs |
Executor | §7.4 |
| 129 | VerifyRangeSlots |
Executor | §7.4 |
| 131 | Settle |
Anyone after a ruling | §7.4 |
| 132 | Timeout |
Anyone after a deadline | §7.4 |
Existing PT2S setup tags
The unified specification starts from a sealed PT2S. These unchanged tags remain outside the v5 lifecycle.
| Tag | Instruction | Builder role | Spec |
|---|---|---|---|
| 140 | BaseInit |
Plan uploader | §16.2 |
| 141 | BaseUpload |
Plan uploader | §16.2 |
| 142 | BaseSeal |
Plan uploader | §16.2 |
| 143 | PT2SInit |
Plan uploader | §16.2 |
| 144 | PT2SHash |
Plan uploader | §16.2 |
| 145 | PT2SSeal |
Plan uploader | §16.2 |
Account index
| Account | Status | Role | PDA seeds |
|---|---|---|---|
PT2S |
existing, unchanged (pt2p_onchain.rs:29-45) |
sealed PT2P plan: base triple digests, PWR1, clause-12 v4, definition SHA-256 |
caller account (not a PDA) |
DRP2 |
new | frozen per-form registry, row version 2 | "dcg-envelope-registry-pt2" | EPOCH:u32 | registry_id:u32 |
DEA2 |
new | class-admission record | "dcg-envelope-admission-v2" | registry[32] | PT2S[32] | P:u32 |
DCM2 v6 |
new version (rev 7; v5 is the revision-6 program) | document header, no manifest | "dcg-hcl-document" | descriptor (unchanged seed) |
DPR2 v1 |
unchanged layout | landed position roots (LandPositionRoots) | "dcg-hcl-positions" | descriptor (unchanged) |
DFS2 |
new (rev 2) | the DFS2 family slot table; no roots | "dcg-hcl-family-slots" | descriptor |
DSR1 |
not used by v5 | — | — |
DCR1 v5 |
new version | ROOT_ONLY challenge record with convict | rev 4: "dcg-unified-challenge" | descriptor | challenger | nonce:u32, 8,192 bytes, created by the opening instruction (rev 3: challenger-created, as v3/v4) |
DCR2 v5 |
new version (rev 7; v4 is the revision-6 program) | the result record other programs read: status, proven outputs, request binding, every run term and the retention fields; replaced by the 96-byte DCRZ tombstone at tag 185 (§6.9) |
"dcg-hcl-result" | descriptor (unchanged seed), created by UnifiedInit |
| settlement escrow | new (rev 7) | transient pot holder during a custom settle; assigned to the settlement program for the callback and emptied (§7.4) | "dcg-hcl-settlement" | challenge |
DCF1 |
new (rev 4) | program config: admin, registry-admission authority, template-seal authority (§16.1) | "dcg-config" |
DTA1 |
new (rev 4) | template-seal approval of one sealed PT2S at one SHA-256 (§16.2) | "dcg-template-seal" | PT2S | PT2S_sha256 |
Account and wire layouts
The text blocks below are extracted from the normative specification.
DCF1 configuration account
0 magic "DCF1"
4 version:u16 = 1
6 reserved:u16 = 0
8 admin[32] rotates every role; zero = the config is frozen
40 registry_authority[32] signs tags 156-158; zero = no new registries
72 template_seal_authority[32] signs tag 176; zero = no new approvals or revocations
104 created_slot:u64
112 rotations:u32 successful ConfigSetAuthority count
116 reserved[12] = 0
128 end
DTA1 template approval
0 magic "DTA1"
4 version:u16 = 1
6 state:u8 1 approved, 2 revoked
7 zero:u8
8 PT2S[32]
40 PT2S_sha256[32] SHA-256 of the whole sealed PT2S account data (as DEA2 104)
72 sealer[32] the template-seal authority that last wrote it
104 slot:u64
112 end
DRP2 registry header
0 magic "DRP2"
4 version:u16 = 2
6 flags:u16 bit 0 frozen; other bits zero
8 epoch:u32 = EPOCH (4 for the re-key image)
12 registry_id:u32
16 row_count:u32 1..=64
20 rows_written:u32
24 authority[32] the compiled registry authority
56 machine_name[64] an accepted machine name, NUL-padded: "basanos/qwen35-4b-a16/1" (Q12)
or, revision 6.1, "basanos/qwen35-4b-a16/2" (V7)
120 census_digest[32] nonzero
152 table_root[32] zero until frozen
184 zero[8]
192 rows[row_count][64] strictly ascending by form_id
DRP2 registry row
0 form_id:u16 nonzero; 0xF001 = RS1 summary pseudo-form
2 respond_path:u8 0 none, 1 generic respond
3 witness_kind:u8 0 routed, 1 DWW1 rows, 2 position-table row, 3 model tensors
4 max_reads:u16
6 max_writes:u16
8 max_read_bytes:u32
12 max_write_bytes:u32
16 max_payload_bytes:u32
20 execute_cu:u32 0 = unmeasured
24 respond_cu:u32 0 = unmeasured
28 measured_position:u32 provenance only
32 measured_entry:u32 provenance only
36 row_version:u8 = 2
37 max_rs1_height:u8 0..=19
38 reserved:u16 = 0
40 max_range_slots:u32
44 position_limit:u32 nonzero; instances need p < position_limit
48 measured_positions:u32 provenance: P of the censused document
52 reserved[12] = 0
DEA2 class-admission record
0 magic "DEA2"
4 version:u16 = 2
6 flags:u16 bit 0 complete; other bits zero
8 registry[32] DRP2 address
40 table_root[32] the frozen DRP2 root at begin
72 PT2S[32]
104 PT2S_sha256[32] SHA-256 of the whole sealed PT2S account data
136 position_count:u32 P
140 base_classes:u32 B
144 generated_classes:u32 L · G
148 admitted:u32
152 n_max:u32
156 rs1_height:u8 H
157 zero[35]
192 bitmap, ⌈(B + L·G)/8⌉ bytes; bit i = class i admitted
DPD2 descriptor preimage
"basanos/dcg-unified-descriptor/4" 32 ASCII bytes (rev 7; /3 is the rev-4..6 program identity)
unified_version:u16 = 2
storage_mode:u8 = 1 ROOT_ONLY (Q6)
commitment_version:u8 = 3 §8
position_count:u32 P
segment_count:u16 1..=128 (rev 2)
family_count:u16 F, 1..=24 (rev 2; was 1..=64)
rs1_height:u8 H = ⌈log2 P⌉
pt2p_compiler_version:u8 pinned profile of PWR1 (pt2p_compiler.py)
reserved:u16 = 0
total_entries:u64 Σ_{p<P} entry_count(p)
dispute_terms[96] DDT2 (rev 7, §6.8): every dispute, settlement and retention term of the run
run_binding[160] DRB1 (rev 4, §6.10): executor, request binding, seed, outputs
clause12_v4[43] the PT2S's (P, segment count, PWR1 digest)
definition_sha256[32] the PT2S's
base_digest[3][32] routes, geometry, payloads (= PWR1 bytes 40..136)
model_root[32] nonzero
position_table_root[32] nonzero
prompt_commitment[32] nonzero
registry_epoch:u32
registry[32] DRP2 address
registry_table_root[32]
dfs2_sha256[32] SHA-256 of the DFS2 body
DCM2 v6 document header
0 magic "DCM2"
4 version:u16 = 6
6 flags:u16 1 armed, 2 finalized, 4 refuted, 8 closed, 16 ROOT_ONLY, 32 sealed;
16|32 always set; other bits zero
8 descriptor[32] DPD2 digest
40 authority[32] executor = init signer
72 position_count:u32 P
76 segment_count:u16
78 reserved:u16 = 0
80 reserved:u32 = 0 (v1 entries_per_position)
84 positions_complete:u32 roots landed so far (LandPositionRoots)
88 entries_complete:u64 0 until FinalizeDocumentV5 sets it to total_entries (rev 2)
96 document_root[32] final v3 prefix root; zero until finalized
128 open_challenges:u32
132 challenger_wins:u32 every ruling for a challenger, by any path (§7.9); rev 1–3 named it
refuted_positions (it counts rulings, so one position may count twice)
136 finalize_slot:u64
144 dispute_deadline:u64 LSD1 at FinalizeDocumentV5
152 prefix_root[32] v3 prefix root after positions_complete positions (batch end)
184 challenge_window_slots:u64 = DDT2 bytes 8..16 (LSD1 reads it here)
192 total_entries:u64
200 PT2S[32]
232 PT2S_sha256[32]
264 model_root[32]
296 position_table_root[32]
328 prompt_commitment[32]
360 registry[32] DRP2
392 registry_table_root[32]
424 DEA2[32]
456 DFS2[32] the DFS2 table account (rev 1: DFR1)
488 family_table_digest[32] zero until FinalizeDocumentV5; then SHA256(rs1-table | descriptor | F | roots)
520 registry_epoch:u32
524 family_count:u16
526 rs1_height:u8
527 commitment_version:u8 = 3
528 peak_count:u8 0..=32
529 executor_bond_state:u8 rev 3: 0 none (bond 0), 1 held, 2 paid on refutation, 3 returned at close
530 reserved[6] = 0
536 peaks[32] × 40 level:u8 | zero[3] | first:u32 | digest[32]; unused slots zero
1816 dispute_terms[96] DDT2 (§6.8), written at init, never changed
1912 run_binding[160] DRB1 (§6.10), written at init, never changed; seed at 2,016
2072 end
DFS2 family-slot account
0 magic "DFS2"
4 version:u16 = 1
6 flags:u16 = 0
8 descriptor[32]
40 family_count:u16 F, 1..=24
42 rs1_height:u8 H
43 zero:u8
44 body_len:u32
48 DFS2 body (§6.2)
DDT2 run terms
0 magic "DDT2"
4 version:u16 = 1
6 reserved:u16 = 0
8 challenge_window_slots:u64 a challenge may open until finalize_slot + this
16 response_window_slots:u64 every per-round deadline is phase-change slot + this
24 challenger_bond_lamports:u64 escrowed by each challenger at open; any value, 0 allowed
32 executor_bond_lamports:u64 escrowed by the executor at UnifiedInit; any value, 0 allowed
40 executor_reward_bps:u16 built-in rule's share of the executor bond, 0..=10,000
42 reserved:u16 = 0
44 reserved:u32 = 0
48 settlement_program[32] zero = built-in rule; nonzero = BSS1 program
80 custom_settle_window_slots:u64 opportunity window after a challenger ruling
88 result_retention_slots:u64 result lifetime after CloseDocumentV5
96 end
DCR2 v5 result record and DCRZ tombstone
0 magic "DCR2" discriminator while outputs are retained
4 version:u16 = 5
6 status:u8 0 PENDING, 1 FINAL, 2 REFUTED, 3 SETTLED
7 document_closed:u8 1 once CloseDocumentV5 ran, else 0
8 descriptor[32]
40 document_root[32] zero until FinalizeDocumentV5
72 request_id[32] DRB1; opaque to DCG (Tier C: the request account address)
104 consumer_digest[32] DRB1; opaque to DCG (Tier C: SHA-256 of TRQ1)
136 executor[32] the DCM2 authority
168 finalize_slot:u64 zero until FinalizeDocumentV5
176 dispute_deadline:u64 finalize_slot + challenge_window_slots
184 status_slot:u64 slot of the last status change; 0 while PENDING
192 challenger_wins:u32 DCM2 132 when the status was last set
196 output_count:u32 DRB1
200 output_first_position:u32 DRB1
204 outputs_attested:u32 popcount of the bitmap
208 output_width:u8 DRB1, 1..=32
209 zero[7]
216 run_terms[96] DDT2, copied from DCM2 at init; immutable
312 retention_slots:u64 DDT2.result_retention_slots; nonzero at init
320 retention_start_slot:u64 0 until CloseDocumentV5; never changes afterward
328 retention_deadline:u64 checked start + retention_slots; 0 until start
336 outputs[output_count][output_width] zero until attested
336 + count·width attested bitmap, ⌈count/8⌉ bytes, LSB-first, write-once
DRB1 run binding
0 magic "DRB1"
4 version:u16 = 1
6 reserved:u16 = 0
8 executor[32] must be the UnifiedInit signer (= DCM2 40)
40 request_id[32] opaque to DCG; zero = no consumer request
72 consumer_digest[32] opaque to DCG; zero exactly when request_id is zero
104 seed[32] committed random seed; zero = none (greedy)
136 output_first_position:u32
140 output_count:u32 ≥ 1
144 output_base_entry:u32 base (old) index o of the entry whose write is the output
148 output_write:u8 write ordinal of that entry
149 output_width:u8 1..=32 bytes per output
150 reserved[10] = 0
160 end
SPP1 segment-to-position proof
segment_ordinal:u16 | path_count:u8 | 0:u8 | segment_table_root[32] | sibling[path_count][32]
DLE1 event header
0 magic "DLE1"
4 version:u16 = 2 (revision 7; version 1 is the revision-6 program)
6 kind:u8
7 zero:u8
8 descriptor[32]
40 slot:u64 the Clock slot of the instruction
48 body fixed length per kind; 32-byte fields are keys or digests
(an output value is zero-padded); integers LE; pads zero
TRQ1 Tier C request block
0 magic "TRQ1"
4 version:u16 = 1
6 sampler_form:u8 0 = greedy argmax committed by the template
7 zero:u8
8 request[32] the request account = DRB1 request_id
40 requester[32]
72 nonce:u64
80 prompt_token_count:u32
84 max_new_tokens:u32 = DRB1 output_count
88 prompt_commitment[32] = DCM2 328
120 prompt_tokens_sha256[32] SHA-256 of the prompt ids, u32 LE each
152 tokenizer_sha256[32] nonzero
184 sampling_params[32] zero for sampler 0
216 seed[32] = DRB1 seed; zero for sampler 0
248 machine_id[32] the Tier C machine (template, model, geometry)
280 run_terms[96] DDT2; must equal the document's block
376 end
DCR1 v5 revision regions
| bytes | phases | content |
|---|---|---|
176..178 staged:u16, 178..180 segment_count:u16, 180 verified:u8, 181..192 zero, 192..192+32S roots |
7, 8 | position-reveal staging (§7.5); cleared by SelectSegmentV5 |
3072 verified:u8, 3073 zero, 3074..3076 staged:u16, 3076..3080 zero, 3080..3080+32F roots |
1, 2 | family-table reveal, FTR (§7.7); ends at most at 3,848 |
DPR2 v1 inherited layout
0 magic "DPR2"
4 version:u16 = 1
6 reserved:u16 = 0
8 descriptor[32]
40 position_count:u32
44 positions_written:u32
48 position_root[P][32]
DRU1 inherited response layout
0 magic "DRU1"
4 version:u16 = 1
6 phase:u16 1 staging, 2 sealed
8 challenge[32]
40 executor[32]
72 declared_total:u32
76 cursor:u32
80 body_sha256[32]
112 deadline:u64
120 reserved[8] = 0
128 body[declared_total]
DPR2 and DRU1 are inherited layouts. The unified specification does not change their wire versions.
Derived addresses
All PDAs use the deployed DCG program unless the table says otherwise. Integer seeds are unsigned little-endian.
| Account | Seeds (program = the DCG program) |
|---|---|
| DCF1 | "dcg-config" |
| DRP2 | "dcg-envelope-registry-pt2" | EPOCH:u32 | registry_id:u32 |
| DTA1 | "dcg-template-seal" | PT2S | PT2S_sha256 |
| DEA2 | "dcg-envelope-admission-v2" | DRP2 | PT2S | P:u32 |
| DCM2 v6 | "dcg-hcl-document" | descriptor |
| DPR2 | "dcg-hcl-positions" | descriptor |
| DFS2 | "dcg-hcl-family-slots" | descriptor |
| DCR2 v5 / DCRZ | "dcg-hcl-result" | descriptor |
| DCR1 v5 | "dcg-unified-challenge" | descriptor | challenger | nonce:u32 (created by 166, 167 and 171) |
| settlement escrow | "dcg-hcl-settlement" | challenge[32] |
| Tier C request | "tco-request" | requester | nonce:u64 under the Tier C program (its address is the request id, §16.6) |
| DRU1 | "dcg-hcl-response" | challenge[32] (§7.4) |
| ProgramData | upgradeable-loader PDA [program_id] (§16.1) |
Revision 6 permits a predictable account to hold lamports before creation. The creating instruction tops it up to rent. Existing data or a non-system owner still fails.
Events
| kind | name | emitted by | body (bytes) |
|---|---|---|---|
| 1 | init |
161 | executor[32], request_id[32], position_count:u32, output_count:u32, executor_bond:u64 (80) |
| 2 | land |
162 | first:u32, count:u32, positions_complete:u32, zero:u32, prefix_root[32] (48) |
| 3 | finalize |
165 | document_root[32], family_table_digest[32], dispute_deadline:u64 (72) |
| 4 | challenge_open |
166, 167, 171 (rev 5) | challenge[32] (DCR1 address), challenger[32], position:u32 (171: the family index), challenge_kind:u8 (1 leaf, 2 position, 3 summary), zero[3], deadline:u64, bond:u64 (88) |
| 5 | respond |
163, 164, 168, 169, 173, the respond tags, 170, 179, 180, 181 (rev 5) | challenge[32], tag:u8, actor:u8 (1 executor, 2 challenger, 0 any signer: 181), phase_from:u8, phase_to:u8, zero:u32, deadline:u64 (48) |
| 6 | ruling |
every RULE (§7.9): 166/168/169 convicts, the respond verdict (incl. 181), 132 | challenge[32], winner:u8, cause:u8, zero:u16, code:u32, challenger_wins:u32, zero:u32 (48) |
| 7 | settle |
131 | challenge[32], winner[32], record_bond_paid:u64, settlement_pot:u64, winner_payout:u64, loser_payout:u64, burn_payout:u64, route:u8 (1 built-in, 2 custom, 3 fallback), zero[7] (112) |
| 8 | close |
172 | executor[32], refund:u64, executor_bond_returned:u64, result_status:u8, finalized:u8, zero[6] (56) |
| 9 | output |
177 | index:u32, outputs_attested:u32, position:u32, width:u8, zero[3], value[32] (48) |
| 10 | resolve |
178 | status:u8, zero[3], challenger_wins:u32, outputs_attested:u32, zero:u32 (16) |
| 11 | close_result |
185 | executor[32], refund:u64, retention_start_slot:u64, retention_deadline:u64, closed_slot:u64, zero:u32 (68) |
Event rules:
- Account state is authoritative. Events are an index.
- Ignore events from failed transactions.
- Attribute
Program data:through the invoke stack to the expected program. - Refuse unknown versions, kinds, lengths, and nonzero padding.
- CloseResponseV5 (tag 182) emits no event; its lamport delta is the receipt.
- A transaction log can be truncated. Rebuild state from accounts.
Refusal codes
Unified-format codes parsed from the specification
| code | name | meaning |
|---|---|---|
| 785 | PLAN_BINDING |
PT2S not sealed or not bound (keys, lengths, digests); clause-12 v4, PWR1 base digests, compiler version, total_entries, P, n_max or H differ from the recomputed values; DFS2 table invalid |
| 786 | WITNESS_DOMAIN |
position ≥ row.position_limit, or a witness-kind-2 form at position ≥ 32,768 |
| 787 | RANGE_BOUND |
range_slots > row.max_range_slots, rs1_height > row.max_rs1_height, or rs1_height > 19 |
| 788 | APPEND_ORDER |
LandPositionRoots with first ≠ positions_complete (gap, overlap or replay; the v3 append is in position order) |
| 789 | REVEAL_MISMATCH |
a revealed child set does not reproduce the landed commitment (position reveal vs DPR2, FTR vs DCM2 488, SPP1 table root ≠ derived), or a revealed child is zero |
| 790 | REVEAL_ORDER |
a reveal chunk with first neither 0 nor the staged count, or past the child count |
| 791 | DISPUTE_TERMS |
a DDT2 block is malformed or fails §6.8: a window or retention value outside its mechanical bounds, reward over 10,000 bps, or the settlement program/window zero relation fails |
| 792 | CONFIG_AUTHORITY |
(rev 4) DCF1 not the PDA, not system-owned with no data at init (revision 6: it may hold lamports, topped up, §7.1), or malformed; ConfigInit not signed by the ProgramData upgrade authority, or the program/ProgramData accounts do not match; a role instruction not signed by the role's current key (a zero key disables the role); a new admin that does not co-sign; any rotation of a frozen (zero-admin) config |
| 793 | TEMPLATE_SEAL |
(rev 4) no DTA1 approval in state 1 for (PT2S, SHA-256 of the PT2S data); TemplateSeal on a PT2S that is not sealed, or approve/revoke from the wrong state |
| 794 | RUN_BINDING |
(rev 4) a DRB1 block is malformed or fails §6.10: executor ≠ signer, request id and consumer digest not both zero or both nonzero, outputs past P, width outside 1..=32, a retired, missing, T-scaled or range output write, or a width that differs from the write length, or a DCR2 over 10 MiB |
| 795 | OUTPUT_PROOF |
(rev 4) AttestOutputV5: the output is already attested or the result is closed, the leaf's write row, the leaf path or the SPP1 does not reach the landed DPR2 root at the derived coordinate |
| 796 | RESULT_STATE |
(rev 4) ResolveResultV5 when the status is not PENDING, the record is closed, or neither REFUTED nor FINAL holds yet; CloseDocumentV5 of an unrefuted finalized document with an output unattested |
| 797 | SUMMARY_PRODUCER |
(rev 5) a summary slot answer's producer does not match the sealed slot: the DCL2 preimage is malformed or for another descriptor, its coordinate is not the derived (q, segment, local), it has no write row write_ordinal, or that row is not (region(f), q · stride(f), stride(f)) (§8.3.5) |
| 798 | SETTLEMENT_PROGRAM |
(rev 7) a custom settlement callback returns success but leaves escrow lamports, reduces a recipient's net lamports, or the tag-131 custom/fallback account list does not match DDT2; a failed CPI retains its callee error because Solana cannot return control |
Reused closure, DCR1, and ESL1 codes
| Code | Name | Meaning |
|---|---|---|
| 580 | CL_MALFORMED |
Malformed instruction data or account encoding |
| 581 | CL_COORDINATE |
Coordinate, position, segment, or index out of range |
| 582 | CL_AUTHORITY |
Wrong signer or authority account |
| 583 | CL_ROOT |
Required root is zero |
| 586 | Path mismatch |
Merkle or summary path does not reach the committed root |
| 591 | CL_MISSING |
Not all positions are landed |
| 592 | CL_AFTER_FINAL |
Instruction is not allowed after finalization |
| 598 | CL_OVERFLOW |
Checked integer or lamport arithmetic overflow |
| 599 | CL_CLOSE |
Close state or timing is not allowed |
| 602 | PT2P decode |
PT2P plan or clause decoding failed |
| 603 | PT2P decode |
PWR1 or plan geometry decoding failed |
| 730 | DCR1_BAD |
Challenge instruction data is malformed |
| 731 | DCR1_AUTH |
Wrong signer, account, or binding |
| 733 | DCR1_PHASE |
Challenge or account is in the wrong phase |
| 734 | DCR1_PROOF |
Choice, slot, or proof index is invalid |
| 736 | DCR1_DEADLINE |
Current slot is past the round deadline |
| 741 | DCR1_INCOMPLETE |
Response is incomplete |
| 770 | REGISTRY_ACCOUNT |
Registry account is not the expected PDA or state |
| 771 | REGISTRY_AUTHORITY |
Wrong registry authority signer |
| 772 | REGISTRY_STATE |
Registry, admission, or account state is wrong |
| 773 | REGISTRY_EPOCH |
Registry epoch is wrong |
| 774 | REGISTRY_ROOT |
Frozen registry root does not match |
| 775 | ROW_MALFORMED |
Registry row is malformed or out of order |
| 776 | ROW_CAPABILITY |
Registry row capability differs from the image |
| 777 | FORM_ABSENT |
No registry row exists for the form |
| 778 | WITHDRAW_ONLY |
Form has no generic respond path |
| 779 | OVER_CU |
Execute or respond CU is unmeasured or over the limit |
| 780 | SHAPE_BOUND |
Instance exceeds a registry row shape limit |
| 781 | RESPOND_LIMIT |
Instance exceeds a compiled respond limit |
| 782 | ADMISSION_STATE |
Admission record or account state is wrong |
| 783 | ENVELOPE_CANCEL |
Envelope cancellation is not allowed |
| 784 | TEMPLATE_BINDING |
Legacy template binding is invalid |