<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sisudoc-spine/src/sisudoc, 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>spine may be run against a zipped spine-pod url</title>
<updated>2026-04-13T20:55:02+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-04-13T20:32:08+00:00</published>
<link rel='alternate' type='text/html' href='https://www.amissah.org/projects/sisudoc-spine/commit/?id=c28f9e360110cd797d47d57cb29d4e4498fb1e0b'/>
<id>c28f9e360110cd797d47d57cb29d4e4498fb1e0b</id>
<content type='text'>
- claude contributed src
  - processes zip from url using (system
    installed) curl for download
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- claude contributed src
  - processes zip from url using (system
    installed) curl for download
</pre>
</div>
</content>
</entry>
<entry>
<title>spine may be run against a document-markup zip pod</title>
<updated>2026-04-13T20:25:56+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-04-13T19:33:07+00:00</published>
<link rel='alternate' type='text/html' href='https://www.amissah.org/projects/sisudoc-spine/commit/?id=d0ac448e6425c9e4246cd529aeb11643dce8093f'/>
<id>d0ac448e6425c9e4246cd529aeb11643dce8093f</id>
<content type='text'>
- claude contributed src
  - Opens the zip with std.zip.ZipArchive (reads the whole file into
    memory)
  - Locates pod.manifest inside the archive to discover document paths
    and languages
  - Extracts markup files (.sst/.ssm/.ssi) as in-memory strings
  - Extracts images as in-memory byte arrays
  - Extracts conf/dr_document_make if present
  - Presents these to the existing pipeline as if they were read from
    the filesystem
  - Some security mitigations:
    - Zip Slip / Path Traversal: Reject entries containing `..` or
      starting with `/`; canonicalize resolved paths and verify they
      fall within extraction root
    - Zip Bomb: Check `ArchiveMember.size` before extracting; enforce
      per-file (50MB) and total size limits (500MB)
    - Entry Count: Limit number of entries (a pod should have at most
      ~100 files)
    - Path depth: limit (Maximum 10 path components).
    - Symlinks: Verify no symlinks in extracted content before
      processing (post-extraction recursive scan)
    - Filename Validation: Only allow expected characters; reject null
      bytes
    - Malformed Zips: Catch `ZipException` from `std.zip.ZipArchive`
      constructor
    - Cleanup on error
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- claude contributed src
  - Opens the zip with std.zip.ZipArchive (reads the whole file into
    memory)
  - Locates pod.manifest inside the archive to discover document paths
    and languages
  - Extracts markup files (.sst/.ssm/.ssi) as in-memory strings
  - Extracts images as in-memory byte arrays
  - Extracts conf/dr_document_make if present
  - Presents these to the existing pipeline as if they were read from
    the filesystem
  - Some security mitigations:
    - Zip Slip / Path Traversal: Reject entries containing `..` or
      starting with `/`; canonicalize resolved paths and verify they
      fall within extraction root
    - Zip Bomb: Check `ArchiveMember.size` before extracting; enforce
      per-file (50MB) and total size limits (500MB)
    - Entry Count: Limit number of entries (a pod should have at most
      ~100 files)
    - Path depth: limit (Maximum 10 path components).
    - Symlinks: Verify no symlinks in extracted content before
      processing (post-extraction recursive scan)
    - Filename Validation: Only allow expected characters; reject null
      bytes
    - Malformed Zips: Catch `ZipException` from `std.zip.ZipArchive`
      constructor
    - Cleanup on error
</pre>
</div>
</content>
</entry>
<entry>
<title>latex minor improvements and fixes, require testing</title>
<updated>2026-04-07T02:19:14+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-04-07T02:19:11+00:00</published>
<link rel='alternate' type='text/html' href='https://www.amissah.org/projects/sisudoc-spine/commit/?id=47d3a00c05728521c4af109266c073ae1b764768'/>
<id>47d3a00c05728521c4af109266c073ae1b764768</id>
<content type='text'>
- FIXES issue with .tex files and xetex finding image paths when run
  within latex/ output directory
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- FIXES issue with .tex files and xetex finding image paths when run
  within latex/ output directory
</pre>
</div>
</content>
</entry>
<entry>
<title>2026</title>
<updated>2026-01-10T02:04:10+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2026-01-10T02:04:10+00:00</published>
<link rel='alternate' type='text/html' href='https://www.amissah.org/projects/sisudoc-spine/commit/?id=457b4a09b580ad991873638cb8fbbfce23753961'/>
<id>457b4a09b580ad991873638cb8fbbfce23753961</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>text output, improve various (including no-ocn)</title>
<updated>2025-10-14T14:54:55+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2025-10-14T13:02:41+00:00</published>
<link rel='alternate' type='text/html' href='https://www.amissah.org/projects/sisudoc-spine/commit/?id=7864505c3d3030c7a32d0eee360528d0d504f747'/>
<id>7864505c3d3030c7a32d0eee360528d0d504f747</id>
<content type='text'>
- revisit links (fix later)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- revisit links (fix later)
</pre>
</div>
</content>
</entry>
<entry>
<title>abstraction metainfo, provide endnote parent ocn</title>
<updated>2025-10-13T19:25:41+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2025-10-13T19:25:37+00:00</published>
<link rel='alternate' type='text/html' href='https://www.amissah.org/projects/sisudoc-spine/commit/?id=95f359689c5dfe3983ac6934c5c8299473f512e7'/>
<id>95f359689c5dfe3983ac6934c5c8299473f512e7</id>
<content type='text'>
- preferable, endnote parent object number
  available for use (as here in text output,
  compare "endnotes, add caller ocn" commit)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- preferable, endnote parent object number
  available for use (as here in text output,
  compare "endnotes, add caller ocn" commit)
</pre>
</div>
</content>
</entry>
<entry>
<title>latex quote object, quick fix</title>
<updated>2025-10-08T23:25:35+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2025-10-08T23:25:35+00:00</published>
<link rel='alternate' type='text/html' href='https://www.amissah.org/projects/sisudoc-spine/commit/?id=e15ce8410bc0ce25bbb6140d3e16f4cff35cae5e'/>
<id>e15ce8410bc0ce25bbb6140d3e16f4cff35cae5e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>text output, endnotes, add caller ocn (&amp; some cleaning)</title>
<updated>2025-10-08T23:14:34+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2025-10-08T23:14:19+00:00</published>
<link rel='alternate' type='text/html' href='https://www.amissah.org/projects/sisudoc-spine/commit/?id=748c9e60ae65433f225f7ac49de7b596cc1148d3'/>
<id>748c9e60ae65433f225f7ac49de7b596cc1148d3</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>a text output (and skel an outline)</title>
<updated>2025-10-03T16:27:26+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2025-10-03T16:15:42+00:00</published>
<link rel='alternate' type='text/html' href='https://www.amissah.org/projects/sisudoc-spine/commit/?id=297410fc013135e992842b8347c2e0bbec042d20'/>
<id>297410fc013135e992842b8347c2e0bbec042d20</id>
<content type='text'>
- spine --text [--output=output path] [markup source]
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- spine --text [--output=output path] [markup source]
</pre>
</div>
</content>
</entry>
<entry>
<title>terminal output verbosity levels, minor rework</title>
<updated>2025-09-25T15:58:17+00:00</updated>
<author>
<name>Ralph Amissah</name>
<email>ralph.amissah@gmail.com</email>
</author>
<published>2025-09-25T03:55:49+00:00</published>
<link rel='alternate' type='text/html' href='https://www.amissah.org/projects/sisudoc-spine/commit/?id=710bb22a76d6dcd33395984726cf0cc08f894122'/>
<id>710bb22a76d6dcd33395984726cf0cc08f894122</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
