Skip to content

Generate linked Atomic resources from OpenAPI and support them in Keep View - #720

Open
michielbdejong wants to merge 3 commits into
mainfrom
codex/recursive-atomic-keep-views
Open

michielbdejong wants to merge 3 commits into
mainfrom
codex/recursive-atomic-keep-views

Conversation

@michielbdejong

@michielbdejong michielbdejong commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

SyncD’s raw Braid representation wraps each source record in source-id/source-json, which prevents schema-aware consumers from traversing nested fields. Add an opt-in --braid-view atomic representation: source-id stays a string, source-json references an OpenAPI-typed row, and nested objects/arrays become linked resources with ordered array occurrences.

The generator preserves local/recursive schema references, declared field types, required/optional fields, null versus absence, empty containers, duplicates and exact numeric tokens. Schema IDs follow the pinned OAD hash and JSON Pointer; representation versions also include the generated schema fingerprint. Raw snapshots/history and the existing Atomic-peer projection remain unchanged. The supported conversion profile and validation limits are documented in syncables/docs/recursive-atomic.md.

Google Keep View 0.3.0 reads this graph directly and registers the exact supported Note class, with a read-only source path. Its immutable bundle and catalog integrity are updated. ELFA supplies the companion native replica and sandbox host; a local trial with the user's existing SyncD collection rendered 111 notes and 803 rendered checklist checkboxes. No private records, credentials, runtime state or real-data screenshots are included here.

Validation: 2,009 Syncables tests passed with a dedicated PostgreSQL test database (3 existing optional cases skipped); Syncables lint/build/changelog checks passed; Keep View typecheck and all 26 unit/DOM tests passed; bundle reproducibility/immutability and formatting checks passed. The ELFA companion passed 86 unit/native-WASM tests, typechecking, a production build, and real broker/browser checks for source references, Keep rendering, read-only checkboxes, search, layout switching and reload persistence.

AI-assisted implementation and substantive prompt/output disclosure: syncables/docs/ai-logs/sessions/2026-11-02-recursive-atomic-keep-view.md.

Final CI: all 40 checks passed on head 51b2b83afc240e079f47544630d60b59b18461d4 (5 path-gated checks skipped). This includes the required CI gate, Syncables on Node 22/24/26, native Atomic-peer acceptance, the Keep View browser lane, catalog/bundle checks, and shared tooling certification. The mock replay fixture timestamp and shared statement-padding fixes are included.

Michiel de Jong added 3 commits November 2, 2026 17:24
Add an opt-in recursive Braid representation and schema-scoped read-only Keep rendering. Preserve raw snapshots and source history.

Claude-Session: codex://threads/01a19cc4-6c36-7ff3-a198-70a7e84cf1d7
Codex-Session: codex://threads/01a19cc4-6c36-7ff3-a198-70a7e84cf1d7
CI can mint the explicit cross-agent timestamp in the same millisecond as the prior accepted owner request. Reuse a freshly minted owner header for the test instead of consulting the wall clock again.

Claude-Session: codex://threads/01a19cc4-6c36-7ff3-a198-70a7e84cf1d7
Codex-Session: codex://threads/01a19cc4-6c36-7ff3-a198-70a7e84cf1d7
Claude-Session: codex://threads/01a19cc4-6c36-7ff3-a198-70a7e84cf1d7
Codex-Session: codex://threads/01a19cc4-6c36-7ff3-a198-70a7e84cf1d7

joepio commented Nov 3, 2026

Copy link
Copy Markdown
Member

Complexity review. syncables/src/daemon/recursive-atomic.ts (+509) carries its own copies of several helpers:

  • The escapePointer / un-escape pair (~0/~1) also appears in daemon/owned-list.ts. Earlier PRs added more copies in the integrations. One jsonPointer.{escape,unescape} in syncables would serve them all.
  • encode (canonical JSON that keeps number lexemes) is another canonical serializer next to canonical() in calendar/.../lens/edit.ts and localthought/plugin.js. Ids hashed from it must stay byte-stable, which is an argument for exactly one implementation.
  • ATOMIC, C and D are hand-written https://atomicdata.dev/... prefixes, here and again in google-keep-view/app/recursive.ts (P, M). Import the URL constants from @tomic/lib, plus one shared META from syncables.
  • docs/ai-logs/sessions/2026-11-02-…md is a session log. It belongs in the PR description, not the repo.

Generated by Claude Code

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants