<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sisudoc-spine/src/sisudoc/io_out, branch main</title>
<subtitle>SiSU Spine: document publishing and search (in D) 2015</subtitle>
<link rel='alternate' type='text/html' href='https://www.doc-reform.org/projects/sisudoc-spine/'/>
<entry>
<title>separate abstraction lib from output processing</title>
<updated>2026-05-25T16:20:54+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-25T14:21:59+00:00</published>
<link rel='alternate' type='text/html' href='https://www.doc-reform.org/projects/sisudoc-spine/commit/?id=db3dd3c3a5f4c5cde9a736cb688f05af9f79d718'/>
<id>db3dd3c3a5f4c5cde9a736cb688f05af9f79d718</id>
<content type='text'>
create new directories under ./src/sisudoc ocda &amp; outputs in order to
separate the document abstraction library from downstream output
processing (stuff broken till paths &amp; modules fixed)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
create new directories under ./src/sisudoc ocda &amp; outputs in order to
separate the document abstraction library from downstream output
processing (stuff broken till paths &amp; modules fixed)
</pre>
</div>
</content>
</entry>
<entry>
<title>org files out of sync, fix</title>
<updated>2026-05-24T02:03:55+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-24T02:02:17+00:00</published>
<link rel='alternate' type='text/html' href='https://www.doc-reform.org/projects/sisudoc-spine/commit/?id=ba21ada59220f06f3ba1319b73b5983abbd07cac'/>
<id>ba21ada59220f06f3ba1319b73b5983abbd07cac</id>
<content type='text'>
(also cgi_sqlite_search_form.d did not belong here)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(also cgi_sqlite_search_form.d did not belong here)
</pre>
</div>
</content>
</entry>
<entry>
<title>css: html (additional) tags alignment</title>
<updated>2026-05-22T19:42:48+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-22T19:04:51+00:00</published>
<link rel='alternate' type='text/html' href='https://www.doc-reform.org/projects/sisudoc-spine/commit/?id=2cb20ea0436e4f0180716ff8440a686d5347ee8f'/>
<id>2cb20ea0436e4f0180716ff8440a686d5347ee8f</id>
<content type='text'>
css: align body-flow &lt;ul&gt;/&lt;li&gt; &amp; &lt;details&gt;/&lt;summary&gt; with &lt;p&gt;

Not used by sisudoc-spine but for hand-authored body-flow markup such as
the current homepage / body-flow, added block to each of the four html
CSS string heredocs in src/sisudoc/io_out/xmls_css.d

Existing tags are left in place and untouched.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
css: align body-flow &lt;ul&gt;/&lt;li&gt; &amp; &lt;details&gt;/&lt;summary&gt; with &lt;p&gt;

Not used by sisudoc-spine but for hand-authored body-flow markup such as
the current homepage / body-flow, added block to each of the four html
CSS string heredocs in src/sisudoc/io_out/xmls_css.d

Existing tags are left in place and untouched.

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>decouple abstraction phase1:2</title>
<updated>2026-05-22T19:42:48+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-21T18:52:41+00:00</published>
<link rel='alternate' type='text/html' href='https://www.doc-reform.org/projects/sisudoc-spine/commit/?id=fcacae04d8f13baee88528a3e72ed5f791c4c1c6'/>
<id>fcacae04d8f13baee88528a3e72ed5f791c4c1c6</id>
<content type='text'>
phase1 step2: move SSP serialiser into sisudoc.abstraction package

git mv src/sisudoc/io_out/create_abstraction_txt.d to
  src/sisudoc/abstraction/ssp.d

Module rename: sisudoc.io_out.create_abstraction_txt
  -&gt; sisudoc.abstraction.ssp

Completes phase1: after this commit the sisudoc.abstraction package has
zero outgoing edges into sisudoc.io_out. The library produces both the
in-memory document object model AND the .ssp text serialisation without
referencing any output-side module.

The serialiser previously imported sisudoc.io_out.paths_output for the
single purpose of constructing the .ssp output path. That import is
dropped; the path construction is inlined as three lines of std.path
(chainPath / asNormalizedPath / array) producing
  &lt;output_path&gt;/&lt;language&gt;/abstraction/&lt;doc_uid_out&gt;.ssp
- byte-for-byte the same path the previous spineOutPaths!() call
produced.

Updated:
- src/sisudoc/abstraction/ssp.d - module decl + inline path
- src/sisudoc/abstraction/package.d - public import .ssp
- src/sisudoc/spine.d - import sisudoc.abstraction.ssp (x2)

Completes decouple abstraction phase1

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
phase1 step2: move SSP serialiser into sisudoc.abstraction package

git mv src/sisudoc/io_out/create_abstraction_txt.d to
  src/sisudoc/abstraction/ssp.d

Module rename: sisudoc.io_out.create_abstraction_txt
  -&gt; sisudoc.abstraction.ssp

Completes phase1: after this commit the sisudoc.abstraction package has
zero outgoing edges into sisudoc.io_out. The library produces both the
in-memory document object model AND the .ssp text serialisation without
referencing any output-side module.

The serialiser previously imported sisudoc.io_out.paths_output for the
single purpose of constructing the .ssp output path. That import is
dropped; the path construction is inlined as three lines of std.path
(chainPath / asNormalizedPath / array) producing
  &lt;output_path&gt;/&lt;language&gt;/abstraction/&lt;doc_uid_out&gt;.ssp
- byte-for-byte the same path the previous spineOutPaths!() call
produced.

Updated:
- src/sisudoc/abstraction/ssp.d - module decl + inline path
- src/sisudoc/abstraction/package.d - public import .ssp
- src/sisudoc/spine.d - import sisudoc.abstraction.ssp (x2)

Completes decouple abstraction phase1

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>decouple abstraction phase0:2</title>
<updated>2026-05-22T19:42:48+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-21T18:14:38+00:00</published>
<link rel='alternate' type='text/html' href='https://www.doc-reform.org/projects/sisudoc-spine/commit/?id=265176e24a7aa64d6bcd11c04d3e6020f629023b'/>
<id>265176e24a7aa64d6bcd11c04d3e6020f629023b</id>
<content type='text'>
phase0 step2: move curation modules from meta/ to io_out/curate/

Curation modules moved to src/sisudoc/io_out/curate/, module
declarations renamed sisudoc.io_out.curate.metadoc_curate* from
sisudoc.meta.metadoc_curate* and updated spine.d imports. File contents
are otherwise unchanged.

Completes phase0: meta/ now has zero io_out imports - the abstraction
core's outgoing deps are now only:
  meta/ internals + io_in/ + ext_depends/D-YAML

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
phase0 step2: move curation modules from meta/ to io_out/curate/

Curation modules moved to src/sisudoc/io_out/curate/, module
declarations renamed sisudoc.io_out.curate.metadoc_curate* from
sisudoc.meta.metadoc_curate* and updated spine.d imports. File contents
are otherwise unchanged.

Completes phase0: meta/ now has zero io_out imports - the abstraction
core's outgoing deps are now only:
  meta/ internals + io_in/ + ext_depends/D-YAML

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>source_pod: --pod2 include (doc abstraction) .ssp</title>
<updated>2026-05-16T15:58:32+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-15T23:05:49+00:00</published>
<link rel='alternate' type='text/html' href='https://www.doc-reform.org/projects/sisudoc-spine/commit/?id=9d244bf416f94415faa532fc5c7d98c0213012b6'/>
<id>9d244bf416f94415faa532fc5c7d98c0213012b6</id>
<content type='text'>
- include all (doc abstraction) .ssp in pod zip and in digests
  - fixed: for multi-language pods built with --pod2, only the last
    language's .ssp file was being written into pod.zip and listed in
    .digests.txt each languages' .ssp files were on disk in the pod
    directory (copied during their own per-language passes) but were not
    in final zip as it was being built once for each language and
    writing over previous, (only the last one remaining). The solution
    is to follow the pattern already used to avoid this by .sstm and
    .ssi, namely wait for the last language and iterate the
    manifest_list_of_languages internaly.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- include all (doc abstraction) .ssp in pod zip and in digests
  - fixed: for multi-language pods built with --pod2, only the last
    language's .ssp file was being written into pod.zip and listed in
    .digests.txt each languages' .ssp files were on disk in the pod
    directory (copied during their own per-language passes) but were not
    in final zip as it was being built once for each language and
    writing over previous, (only the last one remaining). The solution
    is to follow the pattern already used to avoid this by .sstm and
    .ssi, namely wait for the last language and iterate the
    manifest_list_of_languages internaly.

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>latex: some fixes for xelatex 2025</title>
<updated>2026-05-16T15:58:32+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-15T23:03:57+00:00</published>
<link rel='alternate' type='text/html' href='https://www.doc-reform.org/projects/sisudoc-spine/commit/?id=f968e493cc95501296c2f86d1a0994aed366e132'/>
<id>f968e493cc95501296c2f86d1a0994aed366e132</id>
<content type='text'>
(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>sqlite: stop on missing/unwritable sqlite-db-path</title>
<updated>2026-05-16T15:57:30+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-15T22:51:42+00:00</published>
<link rel='alternate' type='text/html' href='https://www.doc-reform.org/projects/sisudoc-spine/commit/?id=d9eb4ea08e509515f594b9bfcbf1c422d04c7e0c'/>
<id>d9eb4ea08e509515f594b9bfcbf1c422d04c7e0c</id>
<content type='text'>
- fatal error on missing/unwritable --sqlite-db-path

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- fatal error on missing/unwritable --sqlite-db-path

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>org headers rearranged (&amp; odd hilighting issue)</title>
<updated>2026-05-04T16:12:12+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-04T15:46:57+00:00</published>
<link rel='alternate' type='text/html' href='https://www.doc-reform.org/projects/sisudoc-spine/commit/?id=c81bb010f45b732f97d7fbecd812ecae28f2be7d'/>
<id>c81bb010f45b732f97d7fbecd812ecae28f2be7d</id>
<content type='text'>
- odd hilighting issue ... must result from my org config, but "fix"
  makes things easier for me.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- odd hilighting issue ... must result from my org config, but "fix"
  makes things easier for me.
</pre>
</div>
</content>
</entry>
<entry>
<title>add children_headings to document abstraction</title>
<updated>2026-04-23T00:42:31+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-04-22T19:28:10+00:00</published>
<link rel='alternate' type='text/html' href='https://www.doc-reform.org/projects/sisudoc-spine/commit/?id=ef717e73137e7ce0c0f699bbfa4fc2da461fce37'/>
<id>ef717e73137e7ce0c0f699bbfa4fc2da461fce37</id>
<content type='text'>
Add int[] children_headings field to DocObj_MetaInfo_ and
compute it in the post-processing pass of metadoc_from_src.d,
right after last_descendant_ocn. Single O(n) pass builds a
parent_ocn -&gt; child heading OCNs map, then assigns to each
heading object. Useful for tree-structured output.

The .ssp serializer now reads directly from the abstraction
field instead of pre-computing its own map.

  metadoc_object_setter.d: +1 line (field declaration)
  metadoc_from_src.d: +17 lines (computation)
  create_abstraction_txt.d: -10 lines (simplified)

Co-Authored-By: Anthropic Claude Opus 4.6 (1M context)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add int[] children_headings field to DocObj_MetaInfo_ and
compute it in the post-processing pass of metadoc_from_src.d,
right after last_descendant_ocn. Single O(n) pass builds a
parent_ocn -&gt; child heading OCNs map, then assigns to each
heading object. Useful for tree-structured output.

The .ssp serializer now reads directly from the abstraction
field instead of pre-computing its own map.

  metadoc_object_setter.d: +1 line (field declaration)
  metadoc_from_src.d: +17 lines (computation)
  create_abstraction_txt.d: -10 lines (simplified)

Co-Authored-By: Anthropic Claude Opus 4.6 (1M context)
</pre>
</div>
</content>
</entry>
</feed>
