Skip to content

docs(plans): define Go JSON dynamic contract and delivery - #1353

Draft
coderdan wants to merge 2 commits into
nextfrom
docs/go-json-tree-plan
Draft

coderdan wants to merge 2 commits into
nextfrom
docs/go-json-tree-plan

Conversation

@coderdan

@coderdan coderdan commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Go cannot yet use the merged JSON-tree engine through its dynamic guest interface. This plan defines the shared contract and implementation slices needed to deliver the complete JSON capability to the customer, while allowing the public Rust facade and packaging work to follow.

The existing docs/plans/2026-10-24-go-json-tree.md is updated in place so tracking-issue links remain valid. docs/plans/2026-10-25-go-json-engine-contract.md supplies findings with immutable source links against merged next at ebdb5de0a (#1363, #1362 and #1366).

Proposed contract

  • One immutable configured target definition serves writes, queries and reads, with shared Rust validation and capability discovery.
  • Operation-specific results distinguish containment, ordering, selectors and subtree token lists.
  • Prepared reads retain the original trusted request; the guest rederives native verification state when opening returned rows. The read contract uses the merged token-list and wildcard-probe design.
  • JSON transport preserves the supported number model and distinguishes SQL NULL, encrypted JSON null and a missing selection.
  • Extraction, subtree reads, children and counts are in the first customer release.
  • Initially support the existing column-and-keyset context profile; explicitly reject unsupported row/scope bindings. Future row binding requires separate native ciphertext-context and search-scope inputs.
  • Adopt Vitamin C chore(deps-dev): bump js-yaml from 4.1.1 to 4.2.0 #520/docs: refresh root README around the three Stack pillars #526 for opaque blobs separately from the existing JSON-tree storage format.

Implementation sequence

  1. Configured-target contract, schemas, registry and generated types.
  2. Full-document dynamic encryption/decryption.
  3. Queries and request-bound reads through Rust and the guest.
  4. Generated Go APIs, typed database values and read objects.
  5. Cross-language, PostgreSQL, conformance and storage compatibility gates.

Start with one configured field proving batch round trip, containment and a request-bound subtree read through the guest. This is an implementation milestone, not a reduced release scope. The plan maps the slices to #1348–#1352; their issue descriptions still need alignment.

Validation

Documentation only: checked Markdown fences, JSON examples, relative links and git diff --check. No implementation, build, database or performance tests were run. Proposed APIs are explicitly distinguished from current engine behavior.

Related

Ngram research and the separate Go delivery document are outside this PR.

Plans how a Go program declares, stores and queries an encrypted JSON
document (EQL v4 json_tree). Most of the work is in Rust: the engine
refuses the JSON index in a data plan, and the family is missing from
the EQL catalog, so Go has no types to generate. Five steps, one issue
each, with the decisions the Go surface needs.

Refs #1347

Claude-Session: https://claude.ai/code/session_01XQN1QpaWVDGjHEg39KEJF3
@changeset-bot

changeset-bot Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 42c38f4

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai

coderabbitai Bot commented Oct 24, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

Base automatically changed from feat/json-tree-gates to next October 24, 2026 06:12

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.

1 participant