Skip to content

Preserve model-bound JSON and named load-state aliases - #243

Draft
philipgreat wants to merge 6 commits into
mainfrom
fix/jackson-context-field-keys-20261021
Draft

philipgreat wants to merge 6 commits into
mainfrom
fix/jackson-context-field-keys-20261021

Conversation

@philipgreat

@philipgreat philipgreat commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Tracks #240, #241, #242 and teaql/teaql-conformance#210.

Scope

This main-based draft is independent of the Committed/Secret feature branches.
It corrects mismatches exposed by a small freshly generated School fixture.

  • Bind typed JSON writers to the current Context's model descriptors. Fixed
    values use descriptor accessor keys while retaining native JSON names;
    the serialization-only singleton and old generated classes keep their
    existing behavior. No reflection or swallowed getter failures.
  • Render canonical named relations as default camelCase JSON and read back
    their model/wire aliases. Duplicate aliases reject before construction.
  • Preserve named collection NULL without asking Jackson to reflectively open
    SmartList constructors; prevent unprefixed additional-info values from
    shadowing a declared relation's wire key. Readonly _ data stays separate.
  • Normalize named loaded-state aliases once per FieldLayout, not per row.
    A Java name and a KSML name share one canonical marker. Fixed bits and
    literal persistent # field codes are unchanged.
  • Correct two low-level PropertyReference inputs in the owned example to KSML
    keys. Existing Java-member loaded-state assertions are preserved unchanged.

Local evidence

  • Exact main-based head c8f70a4c0bf773d323f9c79266b8c579f283c3dc:
    affected Maven reactor 1,000 passed / 1 skipped, no failures/errors.
  • 11 focused cases (7 JSON, 4 named-state) are included in that reactor.
    Porting identical test files to fixed main 7f5d5baf produces expected RED:
    JSON 5 errors/2 passing controls; state 2 failures/2 errors.
  • A separate local P1+Secret combination with byte-identical correction files
    passes 1,065 / 2 skipped plus its complete standard example script.
  • The exact main-based complete standard example script passed with exit 0,
    unchanged source and an empty dedicated S3 bucket after the run. No previous
    candidate's receipt is reused for this head.

Retained native XML, RED baselines, exact source reconstruction, standard
example receipts and a deterministic report are in
conformance #211, under
evidence/2026-10-21-p1-latest-local-combination/.

The generated shared-state advanced gate still retains its original E-path
assertion: expected schoolType.code, latest generator returns
school_type.code. That policy requires confirmation and is not hidden,
weakened or counted as a passing complete-example gate. Do not interpret this
draft as full P0/P1 acceptance.

Reproduce the native gate

mvn -o -B -ntp -pl teaql-jackson,teaql-sqlite,teaql-tool-http -am test

Offline execution requires cached third-party dependencies. All TeaQL runtime
projects in this gate come from the local reactor. No version bump, package
publication, tag push, generator deployment or main merge. Commits carry
[skip ci]; validation for this draft is local only.

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