<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sisudoc-spine/org, branch main</title>
<subtitle>SiSU Spine: document publishing and search (in D) 2015</subtitle>
<link rel='alternate' type='text/html' href='https://www.amissah.org/projects/sisudoc-spine/'/>
<entry>
<title>ocda public surface + dub.json import-path and dyaml cleanups</title>
<updated>2026-05-25T16:21:38+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-25T15:33:14+00:00</published>
<link rel='alternate' type='text/html' href='https://www.amissah.org/projects/sisudoc-spine/commit/?id=6ce2e8efb3a81b724840c06d62d5c8379992f7f0'/>
<id>6ce2e8efb3a81b724840c06d62d5c8379992f7f0</id>
<content type='text'>
Three small follow-ups to the ocda/outputs split:

1. Add src/sisudoc/ocda/package.d (module sisudoc.ocda) as a 2-line
   public re-export of sisudoc.ocda.abstraction. Provides downstream
   consumers with a canonical "import sisudoc.ocda;" entry point and
   a stable handle for eventual peer-repo packaging of the
   abstraction library.

2. Fix the D import-path root in dub.json so it matches the declared
   module names:
   - spine:abstraction sub-package
     "importPaths": [ "./src/sisudoc" ] -&gt; [ "./src" ]
   - main package buildTypes (dmd, ldc2, ldmd2, gdc, gdmd)
     "-I=src/sisudoc" -&gt; "-I=src"
   The modules are named sisudoc.ocda.* / sisudoc.outputs.* /
   sisudoc.* so the filesystem-based resolver needs to see
   ./src as the root (so &lt;root&gt;/sisudoc/ocda/X.d resolves).

3. Replace dyaml sub-package's destructive preGenerateCommands
   ("rm -rf ./src/ext_depends/D-YAML/{examples,testsuite}") with
   declarative excludedSourceFiles globs. The two directories do
   not exist in the vendored D-YAML tree, so the rm was a no-op
   in practice; the glob form is defensive (would silently skip
   them if they were ever re-introduced) and removes the
   destructive side-effect from every build.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Three small follow-ups to the ocda/outputs split:

1. Add src/sisudoc/ocda/package.d (module sisudoc.ocda) as a 2-line
   public re-export of sisudoc.ocda.abstraction. Provides downstream
   consumers with a canonical "import sisudoc.ocda;" entry point and
   a stable handle for eventual peer-repo packaging of the
   abstraction library.

2. Fix the D import-path root in dub.json so it matches the declared
   module names:
   - spine:abstraction sub-package
     "importPaths": [ "./src/sisudoc" ] -&gt; [ "./src" ]
   - main package buildTypes (dmd, ldc2, ldmd2, gdc, gdmd)
     "-I=src/sisudoc" -&gt; "-I=src"
   The modules are named sisudoc.ocda.* / sisudoc.outputs.* /
   sisudoc.* so the filesystem-based resolver needs to see
   ./src as the root (so &lt;root&gt;/sisudoc/ocda/X.d resolves).

3. Replace dyaml sub-package's destructive preGenerateCommands
   ("rm -rf ./src/ext_depends/D-YAML/{examples,testsuite}") with
   declarative excludedSourceFiles globs. The two directories do
   not exist in the vendored D-YAML tree, so the rm was a no-op
   in practice; the glob form is defensive (would silently skip
   them if they were ever re-introduced) and removes the
   destructive side-effect from every build.

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>ocda + outputs split: module/import + dub.json fixups</title>
<updated>2026-05-25T16:21:38+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-25T14:47:12+00:00</published>
<link rel='alternate' type='text/html' href='https://www.amissah.org/projects/sisudoc-spine/commit/?id=0c5e723742fb923bfa85e3ee47434b463f390f20'/>
<id>0c5e723742fb923bfa85e3ee47434b463f390f20</id>
<content type='text'>
Modules and imports rewritten to sisudoc.ocda.* and
sisudoc.outputs.*; dub.json excludedSourceFiles and the
spine:abstraction sub-package sourcePaths collapsed to
./src/sisudoc/ocda.

Verified: nix build .#spine-overlay-ldc clean.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Modules and imports rewritten to sisudoc.ocda.* and
sisudoc.outputs.*; dub.json excludedSourceFiles and the
spine:abstraction sub-package sourcePaths collapsed to
./src/sisudoc/ocda.

Verified: nix build .#spine-overlay-ldc clean.

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>0.22.0</title>
<updated>2026-05-24T19:51:54+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-24T19:51:54+00:00</published>
<link rel='alternate' type='text/html' href='https://www.amissah.org/projects/sisudoc-spine/commit/?id=66022e4ae7206721140565f6a6e42209518094da'/>
<id>66022e4ae7206721140565f6a6e42209518094da</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>decouple abstraction phase2: dub sub-package split</title>
<updated>2026-05-24T02:48:23+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-24T02:32:45+00:00</published>
<link rel='alternate' type='text/html' href='https://www.amissah.org/projects/sisudoc-spine/commit/?id=09d1ec0f4e00f970b27d300706aff6b7dc83eaaa'/>
<id>09d1ec0f4e00f970b27d300706aff6b7dc83eaaa</id>
<content type='text'>
Declare sisudoc.abstraction as a dub sub-package (spine:abstraction)
within the existing dub.json. The sub-package's sourcePaths cover
exactly the abstraction-side clusters that were freed from io_out
edges in phase 0 and phase 1:

  - src/sisudoc/abstraction (package surface + ssp serialiser)
  - src/sisudoc/meta        (per-document abstraction)
  - src/sisudoc/io_in       (file/pod ingress)

Its declared dependencies are spine:dyaml and spine:imageformats
only - no d2sqlite3, no io_out. The main "spine" package adds
spine:abstraction to its dependencies and lists those three
directories in excludedSourceFiles so dub does not compile the
abstraction-side sources twice when the executable is built with
--combined (as the nix derivation does).

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Declare sisudoc.abstraction as a dub sub-package (spine:abstraction)
within the existing dub.json. The sub-package's sourcePaths cover
exactly the abstraction-side clusters that were freed from io_out
edges in phase 0 and phase 1:

  - src/sisudoc/abstraction (package surface + ssp serialiser)
  - src/sisudoc/meta        (per-document abstraction)
  - src/sisudoc/io_in       (file/pod ingress)

Its declared dependencies are spine:dyaml and spine:imageformats
only - no d2sqlite3, no io_out. The main "spine" package adds
spine:abstraction to its dependencies and lists those three
directories in excludedSourceFiles so dub does not compile the
abstraction-side sources twice when the executable is built with
--combined (as the nix derivation does).

(assisted by Claude-Code)
</pre>
</div>
</content>
</entry>
<entry>
<title>0.21.0</title>
<updated>2026-05-24T02:18:38+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-05-24T02:18:38+00:00</published>
<link rel='alternate' type='text/html' href='https://www.amissah.org/projects/sisudoc-spine/commit/?id=113688dac23f8f98163672c2c31fe7ab33a0a698'/>
<id>113688dac23f8f98163672c2c31fe7ab33a0a698</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</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.amissah.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.amissah.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.amissah.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 phase1:1</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:39:34+00:00</published>
<link rel='alternate' type='text/html' href='https://www.amissah.org/projects/sisudoc-spine/commit/?id=ca59943ad212cec4c7a2d167468109d95d7a9d74'/>
<id>ca59943ad212cec4c7a2d167468109d95d7a9d74</id>
<content type='text'>
phase1 step1: introduce sisudoc.abstraction package re-export surface

Create src/sisudoc/abstraction/package.d as a library-facing re-export
module for the document-abstraction stage.

The surface currently re-exports:
- sisudoc.meta.metadoc          (spineAbstraction, A-layer entry)
- sisudoc.meta.metadoc_from_src (docAbstraction, B-layer entry)

No code moves; no behaviour change. The package exists so external
consumers can `import sisudoc.abstraction;` and reach the entry points
without depending on spine's internal directory layout.

(assisted by Claude-Code)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
phase1 step1: introduce sisudoc.abstraction package re-export surface

Create src/sisudoc/abstraction/package.d as a library-facing re-export
module for the document-abstraction stage.

The surface currently re-exports:
- sisudoc.meta.metadoc          (spineAbstraction, A-layer entry)
- sisudoc.meta.metadoc_from_src (docAbstraction, B-layer entry)

No code moves; no behaviour change. The package exists so external
consumers can `import sisudoc.abstraction;` and reach the entry points
without depending on spine's internal directory layout.

(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.amissah.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>
</feed>
