Skip to content

CAS: store full-length keys in JSON metadata objects - #2288

Closed
k-morozov wants to merge 2 commits into
antalya-26.6from
cas/full_key_json_nodex
Closed

k-morozov wants to merge 2 commits into
antalya-26.6from
cas/full_key_json_nodex

Conversation

@k-morozov

@k-morozov k-morozov commented Aug 28, 2026 •

Copy link
Copy Markdown

Changelog category (leave one):

  • New Feature
  • Backward Incompatible Change

Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):

Store full-length keys in JSON CAS metadata objects instead of abbreviated ones

Documentation entry for user-facing changes

...

CI/CD Options

Exclude tests:

  • Fast test
  • Integration Tests
  • Stateless tests
  • Stateful tests
  • Unit tests
  • Performance tests
  • Aarch64 tests
  • All with ASAN
  • All with TSAN
  • All with MSAN
  • All with UBSAN
  • All with Coverage
  • All Regression
  • Disable CI Cache

Regression jobs to run:

  • Fast suites (mostly <1h)
  • Aggregate Functions (2h)
  • Alter (1.5h)
  • Benchmark (30m)
  • CAS (content-addressed storage; Antalya only)
  • ClickHouse Keeper (1h)
  • Iceberg (2h)
  • LDAP (1h)
  • OAuth (5m)
  • Parquet (1.5h)
  • RBAC (1.5h)
  • SSL Server (1h)
  • S3 (2h)
  • S3 Export (2h)
  • Swarms (30m)
  • Tiered Storage (2h)

Signed-off-by: Konstantin Morozov <just.morozov.k@gmail.com>
@github-actions

github-actions Bot commented Aug 28, 2026 •

Copy link
Copy Markdown

Workflow [PR], commit [37417b6b]

Signed-off-by: Konstantin Morozov <just.morozov.k@gmail.com>
@k-morozov k-morozov changed the title CAS use full keys in json CAS: store full-length keys in JSON metadata objects Aug 28, 2026
@k-morozov

Copy link
Copy Markdown
Author

Another PR

@k-morozov k-morozov closed this Aug 31, 2026
filimonov added a commit that referenced this pull request Sep 4, 2026
Three adjudications from review: keys stay "sufficiently full" semantic
words (exact full member names rejected); the cut ships as a generation
RESET (`G_BUILD` -> 1, baseline change points, retired-field sentinels
and legacy generation tests deleted) since no installations exist; and
C++ members follow an asymmetric rule - never more cryptic than the wire
key, fuller where the wire is budget-compressed.

Also folds in the review findings on revision 1: corrected descriptor
math (213/224 today, 228/239 after the rename, 1 spare byte at the
240 floor, 17 `ref` bytes at 256, worst case derived from the
`ProvenanceOp` table), the complete `op` inventory, `hold_reason`
instead of `hold`, `key_generation` for `blob_run` rows,
`condemn_round` unified across `cas_blob_meta` and `cas_run`, `pid`
sanctioned as an established fragment, and a closed-value-sets section.

Related: #2288

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
filimonov added a commit that referenced this pull request Sep 4, 2026
Review of revision 2 (5cc34ca) found four substantive defects, all
fixed:

- the `pl`/`rte`/`rts` sentinels are RETAINED, reclassified from
  compatibility scaffolding to permanently forbidden known-field guards:
  without them a tolerant reader would silently drop a persisted payload
  or accept removed terminal semantics from a malformed or hand-edited
  current-generation object;
- the pool gates keep their own post-reset tests: `v:1` +
  `min_reader_generation:2` -> UNKNOWN_FORMAT_VERSION (the separate
  `decodePoolMeta` check the `v:2` test cannot cover), `v:0` via the
  dormant backward gate, and a fresh pool minting
  `min_reader_generation:1`; only generation-3-10 fixtures are deleted;
- the member rule stays absolute: `RunRef::generation` is renamed
  `key_generation` (the wire key out-explained the member), resolving
  the contradiction with "no member renames required";
- the closed value sets are completed (`cas_blob_meta` state, snapshot/
  catalog/fold-seal record kinds, the 17 registry type strings).

Also: the `ProvenanceOp` wire words must move from two switches into one
constexpr table shared by encoder, decoder, and the boundary test (the
floor slack is one byte), and PR #2288 is described as rejected for this
design rather than rejected outright (it remains an open draft).

Related: #2288

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants