Skip to content

Releases: blackwell-systems/gcf-go

v1.3.1

Choose a tag to compare

@blackwell-systems blackwell-systems released this 23 Jun 17:19

Flatten Opt-Out

  • EncodeGeneric(data, gcf.GenericOptions{NoFlatten: true}) disables nested object flattening
  • CLI: gcf encode-generic --no-flatten
  • Backward compatible: EncodeGeneric(data) unchanged

Bug Fixes

  • Field names containing > excluded from tabular columns (spec rule 7.4.6.1.4)
  • Field names containing > no longer eligible for flattening analysis
  • Decoder no longer treats literal > in key names as a path separator
  • Decoder accepts orphan attachments (fields excluded from column list)
  • Fuzz key generator includes > for adversarial testing; 12 targeted edge case tests

Full changelog: v1.3.0...v1.3.1

Full Changelog: v1.3.0...v1.3.1

v1.3.0: Nested Object Flattening (Spec v3.2)

Choose a tag to compare

@blackwell-systems blackwell-systems released this 23 Jun 04:22

Nested Object Flattening

Encoder automatically flattens fixed-shape nested objects into > path column names. Decoder reconstructs nesting from > paths.

## [2]{id,"customer>name","customer>email",items,total}
ORD-1|Alice|[email protected]|^|59.98

Instead of:

## [2]{id,customer,items,total}
@0 ORD-1|^{name,email}|^|59.98
Alice|[email protected]

Impact

  • 20-48% fewer tokens on deeply nested API data (Jira, Stripe, K8s, calendar events)
  • 100% comprehension on every frontier model (validated across 20 models, 8 providers)
  • Generation validity: 0% to 96-100% on Mistral Medium
  • Falls back to attachment mechanism for variable-length arrays, objects with different keys, objects with > in key names, empty nested objects
  • Round-trip guarantee preserved

Validation

  • 200K random + 100K adversarial round-trips: zero failures
  • 10M bracket-colon fuzz: zero failures
  • 173 conformance fixtures (15 new for flattening)
  • CI: Go 1.22, 1.23, 1.26 all passing

v1.2.3

Choose a tag to compare

@github-actions github-actions released this 19 Jun 14:39

Full Changelog: v1.2.2...v1.2.3

v1.2.2

Choose a tag to compare

@github-actions github-actions released this 19 Jun 05:54

Full Changelog: v1.2.0...v1.2.2

v1.2.1

Choose a tag to compare

@blackwell-systems blackwell-systems released this 18 Jun 17:58

Patch release. Fixes encoder quoting for edge cases involving bracket-colon patterns in string values.

Full Changelog: v1.2.0...v1.2.1

v1.2.0

Choose a tag to compare

@blackwell-systems blackwell-systems released this 14 Jun 21:46

Spec v3.1 Conformance

Spec change

  • tool field in graph profile header is now optional (SHOULD be present for MCP, not required)

Bug fixes

  • Quote strings containing commas in scalar values
  • Decode v2-format indented attachments in tabular rows
  • Reject duplicate attachments on the same row
  • Reject orphan attachments on rows without ^ cells

Conformance

  • 157/157 fixtures passing
  • 23.25B+ round-trips verified across all 6 implementations, zero failures

Full spec release: gcf v3.1.0

Full Changelog: v1.1.0...v1.2.0

v1.1.0: Inline Schema Encoding

Choose a tag to compare

@blackwell-systems blackwell-systems released this 13 Jun 06:12

v1.1.0: Inline Schema Encoding

The generic profile encoder now produces inline schema format for nested objects with 3+ scalar fields. This is a breaking change from v1.0.x output.

Breaking Changes

  • EncodeGeneric output format changed (inline schemas, no attachment indentation)
  • Decoder no longer accepts v1.0.x indented attachment syntax
  • Comma no longer quoted in pipe-delimited contexts
  • Strings starting with digits no longer quoted unless they match JSON number grammar

New Features

  • Inline object schema (^{fields}): nested objects encoded positionally
  • Shared array schemas: identical nested arrays omit field headers after first row
  • 25.5% fewer tokens than TOON across 15 real-world datasets
  • Codex CLI backend for eval harness (OpenAI models via ChatGPT subscription)
  • OpenAI Batch API support for eval

Integrity

  • 477M lossless round-trip iterations
  • 100% comprehension accuracy on every frontier model tested
  • 156 conformance fixtures passing
  • All error detection ported from v2 decoder (duplicate keys, orphan attachments, etc.)

Full spec: https://github.com/blackwell-systems/gcf/releases/tag/v3.0.0

v1.0.2: CLI generic profile + key ordering fix

Choose a tag to compare

@blackwell-systems blackwell-systems released this 11 Jun 05:49
  • CLI: encode-generic and decode-generic subcommands
  • Both graph and generic profiles supported from the command line
  • Fix: encode-generic now preserves JSON key insertion order (uses ParseJSONOrdered)

v1.0.1

Choose a tag to compare

@github-actions github-actions released this 10 Jun 10:43

Fix

  • Graph StreamEncoder now emits ##! summary trailer (was still using old ## _summary format from v1.4)

Install

go get github.com/blackwell-systems/[email protected]

gcf-go v1.0.0

Choose a tag to compare

@blackwell-systems blackwell-systems released this 10 Jun 08:25

Reference implementation for GCF SPEC v2.0 Stable

133 conformance fixtures passing. 80M property-based round-trips with zero failures. 7.9M fuzz executions, 3 bugs found and fixed. Cross-language conformance matrix verified.

New

  • scalar.go: common scalar grammar (quoting, escaping, parsing, number formatting)
  • orderedmap.go: OrderedMap type preserving JSON key insertion order
  • ParseJSONOrdered: ordered JSON parser for conformance-grade encoding
  • Property-based round-trip tests (configurable via GCF_ITERATIONS env var)
  • Fuzz targets for encoder and decoder with saved crash regression cases
  • Conformance test runner for 133 fixtures
  • Cross-language encode/decode matrix verification

Breaking changes from v0.6.0

  • EncodeGeneric emits GCF profile=generic header
  • DecodeGeneric requires GCF profile= header
  • Strings colliding with typed literals are quoted ("true", "123", "-")
  • Full JSON string escaping (\b, \f, \n, \r, \t, \uXXXX, surrogate pairs)
  • Full JSON number grammar with exponent notation
  • - for null, ~ for absent fields, ^ for nested attachments
  • ##! summary trailer replaces ## _summary
  • Graph encoder emits profile=graph, sorts symbols by score descending
  • Graph encoder assigns IDs after sorting (sequential in output order)
  • Session encoder uses session-stable IDs across calls

Lossless round-trip invariant

decodeGeneric(encodeGeneric(value)) == value for every JSON value. Proven by:

  • 80M random and adversarial round-trips
  • 7.9M fuzz executions (3 bugs found and fixed: negative zero, large integer precision, quoted brace in field declarations)
  • Structural proof by construction (scalar injectivity + container injectivity)

Install

go get github.com/blackwell-systems/[email protected]