83 lines
1.9 KiB
Markdown
83 lines
1.9 KiB
Markdown
|
|
# PCB1 — Parameter Block Encoding (FCS/1)
|
|||
|
|
|
|||
|
|
Status: Approved
|
|||
|
|
Owner: Architecture
|
|||
|
|
Version: 1.0.0
|
|||
|
|
SoT: Yes
|
|||
|
|
Last Updated: 2026-02-21
|
|||
|
|
Linked Phase Pack: PH07
|
|||
|
|
Tags: [execution, parameters, deterministic]
|
|||
|
|
|
|||
|
|
**Document ID:** `PCB1`
|
|||
|
|
**Layer:** L2 — Parameter block encoding for FCS/1 descriptors
|
|||
|
|
|
|||
|
|
**Depends on (normative):**
|
|||
|
|
|
|||
|
|
* `DDS` — PCB1 envelope and TLV layout (DDS §7.3)
|
|||
|
|
* `ASL/1-CORE v0.4.x` — logical value model
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 0. Purpose & Scope
|
|||
|
|
|
|||
|
|
`PCB1` defines a **deterministic, canonical** encoding for parameter blocks used
|
|||
|
|
by `FCS/1` descriptors. It standardizes slot manifests, slot data ordering, and
|
|||
|
|
arity validation.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. Logical Model
|
|||
|
|
|
|||
|
|
A PCB1 parameter block is a two-part payload:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
PCB1 {
|
|||
|
|
slot_manifest : list<Slot>
|
|||
|
|
slot_data : bytes
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
Slot {
|
|||
|
|
index : uint32
|
|||
|
|
name : string
|
|||
|
|
type : enum
|
|||
|
|
digest : bytes[32]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Slots MUST appear in ascending `index` order. The `slot_data` is a packed byte
|
|||
|
|
sequence that respects the manifest ordering.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. Canonical Encoding
|
|||
|
|
|
|||
|
|
The canonical byte encoding is defined by DDS §7.3:
|
|||
|
|
|
|||
|
|
* COR/1 envelope with `MAGIC="PCB1"`, `VERSION=0x01`, `FLAGS=0x00`.
|
|||
|
|
* Strict TLV order; no padding.
|
|||
|
|
* Required TLVs:
|
|||
|
|
* `slot_manifest (0x50)` — BCF/1 list of slot descriptors.
|
|||
|
|
* `slot_data (0x51)` — packed bytes aligned with the manifest.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. Validation Rules
|
|||
|
|
|
|||
|
|
Implementations MUST reject PCB1 payloads that violate any of the following:
|
|||
|
|
|
|||
|
|
1. TLVs are not in strict ascending order, or appear more than once.
|
|||
|
|
2. `slot_manifest` entries are not sorted by `index`.
|
|||
|
|
3. Slot digest mismatches (`ERR_PCB_DIGEST_MISMATCH`).
|
|||
|
|
4. Non-deterministic or duplicated manifest ordering (`ERR_PCB_MANIFEST_ORDER`).
|
|||
|
|
5. Arity mismatch between PCB1 slot count and the enclosing FCS/1 descriptor
|
|||
|
|
(`ERR_PCB_ARITY_MISMATCH`).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. Conformance
|
|||
|
|
|
|||
|
|
An implementation is **PCB1–conformant** if it:
|
|||
|
|
|
|||
|
|
* Emits the exact canonical encoding in DDS §7.3.
|
|||
|
|
* Enforces the validation rules in §3.
|