Initial project import
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# Configuration storage layers
|
||||
|
||||
The following SQL tables have the same observed storage-row shape:
|
||||
|
||||
`FileName`, `Creation`, `Modified`, `Attributes`, `DataSize`, `BinaryData`,
|
||||
`PartNo`.
|
||||
|
||||
| Layer | Role | Direct adapter writes |
|
||||
|---|---|---|
|
||||
| `Config` | Active base configuration | Forbidden |
|
||||
| `ConfigSave` | Pending base configuration changes | Controlled `upo_test` only |
|
||||
| `ConfigCAS` | Active extension content-addressed store | Forbidden |
|
||||
| `ConfigCASSave` | Pending extension configuration overlay | Controlled `upo_test` only |
|
||||
|
||||
`PartNo` must be read and preserved. The currently proven writer handles a
|
||||
single-part stream only; a multi-part stream is unsupported until a
|
||||
table-aware round-trip codec exists.
|
||||
|
||||
## Addressing rules
|
||||
|
||||
Base `Config` objects are commonly addressed by metadata GUID. Extension active
|
||||
objects are reached through `_ExtensionsInfo` → extension root in `ConfigCAS`
|
||||
→ root manifest → object part SHA-1 key. Do not infer a semantic role from a
|
||||
suffix such as `.0`; inspect the payload and route evidence.
|
||||
|
||||
For normal content-addressed rows, `ConfigCAS.FileName` was observed to equal
|
||||
SHA-1 of the stored bytes. Always compute and compare the hash rather than
|
||||
trusting the name: an activation experiment left a legacy alias whose name was
|
||||
an old key while its bytes had the new SHA-1.
|
||||
|
||||
## Write sequence
|
||||
|
||||
1. Resolve public object/form/module against live SQL.
|
||||
2. Read active bytes and any existing saved-state rows.
|
||||
3. Prepare only missing saved rows; never overwrite a user’s existing rows.
|
||||
4. Encode the changed stream losslessly.
|
||||
5. Update every proved companion index in the same SQL transaction.
|
||||
6. Read back and validate hashes and semantic exact-match count.
|
||||
7. Tell the human which Configurator scope to reload.
|
||||
Reference in New Issue
Block a user