<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sisudoc-ocda-lib, 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>track orgify</title>
<updated>2026-10-04T15:43:53+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-10-04T15:43:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-ocda-lib/commit/?id=a489b74853a57c2f4bd12bbdf43f9f293e5f210a'/>
<id>a489b74853a57c2f4bd12bbdf43f9f293e5f210a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>track</title>
<updated>2026-10-03T01:39:24+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-10-02T19:01:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-ocda-lib/commit/?id=afcdcd2e99b5d06f8b3dd9d43b5fd2033e46b9ed'/>
<id>afcdcd2e99b5d06f8b3dd9d43b5fd2033e46b9ed</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>track</title>
<updated>2026-10-03T01:39:21+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-10-02T17:57:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-ocda-lib/commit/?id=c80a06efd9a5b6f709d6d4eddb6d6ef78f6502f2'/>
<id>c80a06efd9a5b6f709d6d4eddb6d6ef78f6502f2</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>track</title>
<updated>2026-10-03T01:39:17+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-10-02T17:30:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-ocda-lib/commit/?id=c458d2112ce91ccd55bcb2e5b6e7c6fc4ac083a3'/>
<id>c458d2112ce91ccd55bcb2e5b6e7c6fc4ac083a3</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>gleam sisudoc-ocda-lib</title>
<updated>2026-10-03T01:39:08+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-10-01T21:23:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-ocda-lib/commit/?id=919942b1b5222cf00a5f68605bc383462770fa22'/>
<id>919942b1b5222cf00a5f68605bc383462770fa22</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>README: the reader, in each language, and what writing it found</title>
<updated>2026-10-03T01:39:04+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-30T00:04:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-ocda-lib/commit/?id=e4ae72a1e57af96054581f4339557ccaebaac501'/>
<id>e4ae72a1e57af96054581f4339557ccaebaac501</id>
<content type='text'>
The library's reader, ocda-read: where it lives and why (src/read/,
kept out of the library in D by dub configuration, in Gleam because
nothing outside src/ is compiled), its modes in each language, and
the two properties it holds, the same output from every form and D ==
Gleam byte for byte. And the one defect it found in the library, the
database loader unable to say what it had not read. The module tables
gain ocda.inventory and the reader, the build notes the three
programs in one result.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The library's reader, ocda-read: where it lives and why (src/read/,
kept out of the library in D by dub configuration, in Gleam because
nothing outside src/ is compiled), its modes in each language, and
the two properties it holds, the same output from every form and D ==
Gleam byte for byte. And the one defect it found in the library, the
database loader unable to say what it had not read. The module tables
gain ocda.inventory and the reader, the build notes the three
programs in one result.

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>Gleam: ocda-read, byte for byte the D reader's</title>
<updated>2026-10-03T01:38:59+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-30T00:04:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-ocda-lib/commit/?id=e3410567f75f04ffe42321f9f0b105f793f32cd5'/>
<id>e3410567f75f04ffe42321f9f0b105f793f32cd5</id>
<content type='text'>
ocda-lib read, installed also as ocda-read: the modes the Gleam readers
had (the summary, --tree/--outline, --languages, --files,
--report-unknown), over the library, in src/read/, which is where
Gleam must put it. A D-only mode asked of it says so.

Its output is the D ocda-read's. For that the D reader's closing hint
no longer lists its modes, which this one has fewer of: both say that
--help lists them.

Checked over the 36 document-languages, on the .ssp and the .ocda.db:
D == Gleam byte for byte in all five modes, 36 of 36. And the same
from the .ssp, the .ocda.db and the .zip (a .sisupod unwrapped, the
Gleam library having no zstd): the summary, --tree and
--report-unknown 36 of 36; --languages of a database == of its pod
27 of 27, and of a single-language .ssp == its database; --files
answers for a database and says why not for the others, in the same
words in both languages.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ocda-lib read, installed also as ocda-read: the modes the Gleam readers
had (the summary, --tree/--outline, --languages, --files,
--report-unknown), over the library, in src/read/, which is where
Gleam must put it. A D-only mode asked of it says so.

Its output is the D ocda-read's. For that the D reader's closing hint
no longer lists its modes, which this one has fewer of: both say that
--help lists them.

Checked over the 36 document-languages, on the .ssp and the .ocda.db:
D == Gleam byte for byte in all five modes, 36 of 36. And the same
from the .ssp, the .ocda.db and the .zip (a .sisupod unwrapped, the
Gleam library having no zstd): the summary, --tree and
--report-unknown 36 of 36; --languages of a database == of its pod
27 of 27, and of a single-language .ssp == its database; --files
answers for a database and says why not for the others, in the same
words in both languages.

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>Gleam: what a source holds, and what a database holds unread</title>
<updated>2026-10-03T01:38:54+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-30T00:00:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-ocda-lib/commit/?id=8faa5db8e78973122c46b0ba03ad8064f678f150'/>
<id>8faa5db8e78973122c46b0ba03ad8064f678f150</id>
<content type='text'>
The mirror of the D commit before it. ocda/inventory gives the
languages of any form, in the manifest's order, each with its markup
file and the sha256 of its .ssp (stored by the database, taken from
the bytes for a .ssp or a pod), and what a .ocda.db carries. The
sha256 comes from OTP's crypto through a four line Erlang FFI file,
since the standard library has none and a Hex package would be one
more fixed output hash; the whitelist admits src/*.erl for it.

The database loader counts the columns it does not read, on the
conditions the .ssp writer uses, so that it can say what it did not
understand; it could not before. The pod loader's archive, language
and text helpers become public for the inventory.

Checked: the four dumps, D and Gleam of .ssp and .ocda.db, identical
36 of 36, and with --unknown also 36 of 36; --languages of a database
== of its pod, 27 of 27.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The mirror of the D commit before it. ocda/inventory gives the
languages of any form, in the manifest's order, each with its markup
file and the sha256 of its .ssp (stored by the database, taken from
the bytes for a .ssp or a pod), and what a .ocda.db carries. The
sha256 comes from OTP's crypto through a four line Erlang FFI file,
since the standard library has none and a Hex package would be one
more fixed output hash; the whitelist admits src/*.erl for it.

The database loader counts the columns it does not read, on the
conditions the .ssp writer uses, so that it can say what it did not
understand; it could not before. The pod loader's archive, language
and text helpers become public for the inventory.

Checked: the four dumps, D and Gleam of .ssp and .ocda.db, identical
36 of 36, and with --unknown also 36 of 36; --languages of a database
== of its pod, 27 of 27.

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>D: ocda-read, the reader, over the library, of every form</title>
<updated>2026-10-03T01:38:49+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-29T23:37:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-ocda-lib/commit/?id=33821eb37c78b00fedd7b0454ec0b77aeb8342ff'/>
<id>33821eb37c78b00fedd7b0454ec0b77aeb8342ff</id>
<content type='text'>
One reader where there were two. sisudoc-ssp-reader read a .ssp and
sisudoc-ocda-db-reader a .ocda.db, each with its own parser; this one
is built on the library, so every mode reads a .ssp, a .ocda.db and a
.sisupod, and says the same thing of each. Its output modules are the
.ssp reader's, copied (the reader repositories are unchanged) and
moved onto the library's model, which was the reader's types renamed
and added to. From the database reader, --languages and --files.

  ocda-read [--tree|--outline|--html|--llm-text|--llm-jsonl|--images|
             --verify --image-dir=&lt;d&gt;|--languages|--files|
             --report-unknown|--validate] &lt;file&gt; [lang]

Two modes are about the file and say so: --files answers for a
.ocda.db, and --validate checks a .ssp as text and refuses anything
else. Where a file holds several languages and none is named, every
form reads the first and says so, where the database used to take one
and the pod refuse.

In src/read/ beside the library in src/ocda/; dub.json keeps it out of
the library (configurations "library" and "ocda-read"), and the flake
builds it as a package. The flake's default is now all three programs
in one bin/: built separately into the same result link, each replaced
the one before, and the pipeline's dump looked for ocda-dump where
only ocda-agree was left.

Checked over the 36 document-languages:
- against the .ssp reader, on a .ssp, byte for byte after the first
  line (Parsed: is Read:): --tree, --html, --llm-text, --llm-jsonl,
  --images, --verify, --validate, 36 of 36; the summary differs only
  in the closing hint, which names the two new modes;
- against the database reader, on a .ocda.db: --files 27 of 27, and
  --languages 27 of 27 on language, source and digest (its id column,
  the database's own key, is left out);
- the same output from the .ssp, the .ocda.db and the .sisupod: the
  summary and --tree, --html, --llm-text, --llm-jsonl, --images and
  --report-unknown, 36 of 36; --languages, .ocda.db == .sisupod 27 of
  27, and a single-language .ssp == its database, 26 of 26.

Not reproduced, deliberately: the database reader's --outline, which
ordered the headings by their position within their own section, so
that the toc and the "(skip)" headings of other sections fell among
the body's. --outline here is --tree.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
One reader where there were two. sisudoc-ssp-reader read a .ssp and
sisudoc-ocda-db-reader a .ocda.db, each with its own parser; this one
is built on the library, so every mode reads a .ssp, a .ocda.db and a
.sisupod, and says the same thing of each. Its output modules are the
.ssp reader's, copied (the reader repositories are unchanged) and
moved onto the library's model, which was the reader's types renamed
and added to. From the database reader, --languages and --files.

  ocda-read [--tree|--outline|--html|--llm-text|--llm-jsonl|--images|
             --verify --image-dir=&lt;d&gt;|--languages|--files|
             --report-unknown|--validate] &lt;file&gt; [lang]

Two modes are about the file and say so: --files answers for a
.ocda.db, and --validate checks a .ssp as text and refuses anything
else. Where a file holds several languages and none is named, every
form reads the first and says so, where the database used to take one
and the pod refuse.

In src/read/ beside the library in src/ocda/; dub.json keeps it out of
the library (configurations "library" and "ocda-read"), and the flake
builds it as a package. The flake's default is now all three programs
in one bin/: built separately into the same result link, each replaced
the one before, and the pipeline's dump looked for ocda-dump where
only ocda-agree was left.

Checked over the 36 document-languages:
- against the .ssp reader, on a .ssp, byte for byte after the first
  line (Parsed: is Read:): --tree, --html, --llm-text, --llm-jsonl,
  --images, --verify, --validate, 36 of 36; the summary differs only
  in the closing hint, which names the two new modes;
- against the database reader, on a .ocda.db: --files 27 of 27, and
  --languages 27 of 27 on language, source and digest (its id column,
  the database's own key, is left out);
- the same output from the .ssp, the .ocda.db and the .sisupod: the
  summary and --tree, --html, --llm-text, --llm-jsonl, --images and
  --report-unknown, 36 of 36; --languages, .ocda.db == .sisupod 27 of
  27, and a single-language .ssp == its database, 26 of 26.

Not reproduced, deliberately: the database reader's --outline, which
ordered the headings by their position within their own section, so
that the toc and the "(skip)" headings of other sections fell among
the body's. --outline here is --tree.

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>D: what a source holds, and what a database holds unread</title>
<updated>2026-10-03T01:38:45+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-09-29T23:36:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sisudoc.org/projects/sisudoc-ocda-lib/commit/?id=a14ef39dc207955de13ba2b141a69236e356a521'/>
<id>a14ef39dc207955de13ba2b141a69236e356a521</id>
<content type='text'>
ocda.inventory answers two questions about the file rather than the
document. languages(path), for every form alike: the languages in the
manifest's order (which every .ssp records in @source languages), each
with the markup it was made from and the sha256 of its .ssp - stored
by the database, taken from the bytes for a .ssp or a pod, and the
same. carried(path), for a .ocda.db: what it holds besides the
abstraction, by role and storage.

And the database loader now counts what it holds and the model does
not. The text loader meets every property line and counts those it
does not keep; this one asks for columns by name and so never saw the
others, and reported that it had understood everything, which is the
silence the count exists to prevent. It counts them on the conditions
under which the .ssp writes the same property, and the report is now
the same from a .ssp, a .ocda.db and a .sisupod: 36 of 36.

The pod loader's archive and language-name helpers become package
visible for the inventory.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ocda.inventory answers two questions about the file rather than the
document. languages(path), for every form alike: the languages in the
manifest's order (which every .ssp records in @source languages), each
with the markup it was made from and the sha256 of its .ssp - stored
by the database, taken from the bytes for a .ssp or a pod, and the
same. carried(path), for a .ocda.db: what it holds besides the
abstraction, by role and storage.

And the database loader now counts what it holds and the model does
not. The text loader meets every property line and counts those it
does not keep; this one asks for columns by name and so never saw the
others, and reported that it had understood everything, which is the
silence the count exists to prevent. It counts them on the conditions
under which the .ssp writes the same property, and the report is now
the same from a .ssp, a .ocda.db and a .sisupod: 36 of 36.

The pod loader's archive and language-name helpers become package
visible for the inventory.

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