<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sisudoc-ocda-lib/gleam/flake.lock, branch orgify</title>
<subtitle>SiSU Spine: tools</subtitle>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-ocda-lib/'/>
<entry>
<title>ocda-lib in Gleam, and four agreements of 36 of 36</title>
<updated>2026-10-03T01:38:14+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-26T01:18:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-ocda-lib/commit/?id=e1994c4e01788fe46f534dddb104a1c808f47f48'/>
<id>e1994c4e01788fe46f534dddb104a1c808f47f48</id>
<content type='text'>
The model, both loaders, the dispatch and the canonical dump, in Gleam.
A deliberate field-for-field mirror of the D library, including where
that is not the most idiomatic Gleam: text is one string with the lines
joined by newline rather than a list of lines, and the properties are
typed fields rather than a list of pairs. A difference that existed in
one language and not the other would show in every dump and mean
nothing, so the two lose the same distinctions in the same places.

The dump is what makes the agreement testable. Both languages write it
byte for byte alike, so four questions are diff, and over the reference
collection all four hold:

  D:       .ssp == .ocda.db      36 of 36
  Gleam:   .ssp == .ocda.db      36 of 36
  .ssp:      D == Gleam          36 of 36
  .ocda.db:  D == Gleam          36 of 36

and a fifth, that the two report exactly the same ignored properties
with the same counts.

The Gleam .ssp loader agreed with the D one at the first attempt. The
Gleam .ocda.db loader had one defect of its own, found by the sweep and
worth recording because of its shape: a JSON element decoder handled
strings and integers and fell through to a fallback that yielded "".
table_widths is an integer array except where the columns divide
evenly, when it is [33.3333,...], and one table in the collection does
that. Its widths came back as three empty strings, so a value that
could not be read turned into one that looked read. That is the failure
the unknown counts exist to prevent, and a decoder fallback quietly
reintroduces it.

Shipped as an Erlang shipment rather than an escript, as the .ocda.db
reader is and for the same reason: sqlite on the BEAM is a NIF and a
NIF cannot load from inside an escript archive.

gleam.toml and the model came in with the previous commit, which was
about the dump; they belong here.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The model, both loaders, the dispatch and the canonical dump, in Gleam.
A deliberate field-for-field mirror of the D library, including where
that is not the most idiomatic Gleam: text is one string with the lines
joined by newline rather than a list of lines, and the properties are
typed fields rather than a list of pairs. A difference that existed in
one language and not the other would show in every dump and mean
nothing, so the two lose the same distinctions in the same places.

The dump is what makes the agreement testable. Both languages write it
byte for byte alike, so four questions are diff, and over the reference
collection all four hold:

  D:       .ssp == .ocda.db      36 of 36
  Gleam:   .ssp == .ocda.db      36 of 36
  .ssp:      D == Gleam          36 of 36
  .ocda.db:  D == Gleam          36 of 36

and a fifth, that the two report exactly the same ignored properties
with the same counts.

The Gleam .ssp loader agreed with the D one at the first attempt. The
Gleam .ocda.db loader had one defect of its own, found by the sweep and
worth recording because of its shape: a JSON element decoder handled
strings and integers and fell through to a fallback that yielded "".
table_widths is an integer array except where the columns divide
evenly, when it is [33.3333,...], and one table in the collection does
that. Its widths came back as three empty strings, so a value that
could not be read turned into one that looked read. That is the failure
the unknown counts exist to prevent, and a decoder fallback quietly
reintroduces it.

Shipped as an Erlang shipment rather than an escript, as the .ocda.db
reader is and for the same reason: sqlite on the BEAM is a NIF and a
NIF cannot load from inside an escript archive.

gleam.toml and the model came in with the previous commit, which was
about the dump; they belong here.

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
</feed>
