commit e4887f7609cc1a5d86d41b86bda8ce7bc26f391a Author: TSYS Group COO Date: Mon Sep 7 16:33:54 2026 -0500 KNELPDF v1: pandoc 3.11 + texlive xetex/luatex on pinned bookworm Fleet document-generation image. DejaVu/Noto fonts for unicode + box-drawing. Remote push + cross-links queued (gitea incident #937). diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eeaa4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*.pdf +*.aux +*.log +*.out +*.toc diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..98ea0a8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,30 @@ +# KNELPDF - TSYS Group fleet document-generation image. +# pandoc + texlive (xetex/luatex) + DejaVu/Noto fonts (box-drawing + wide unicode). +# Rebuild = bump the version pins, never float. + +FROM debian:bookworm-slim@sha256:88200866dfff7ea7f5cbcb6ec7c8a701889efe6fe859fe64d6990e4b07ea4171 + +ARG PANDOC_VERSION=3.11 +ARG PANDOC_DEB=pandoc-3.11-1-amd64.deb + +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + ca-certificates \ + curl \ + texlive-latex-base \ + texlive-latex-recommended \ + texlive-latex-extra \ + texlive-xetex \ + texlive-luatex \ + texlive-fonts-recommended \ + lmodern \ + fonts-dejavu \ + fonts-noto-core \ + && curl -fsSL -o /tmp/pandoc.deb \ + "https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/${PANDOC_DEB}" \ + && dpkg -i /tmp/pandoc.deb \ + && rm -f /tmp/pandoc.deb \ + && rm -rf /var/lib/apt/lists/* + +# Fleet rule: NO ENTRYPOINT - keeps `sh -c` composition working. +CMD ["pandoc", "--version"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..514f63a --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ +# KNELPDF + +Fleet document-generation image: **pandoc + texlive (xetex/luatex) + DejaVu +and Noto fonts**, built for the TSYS Group agent fleet. Runs markdown → PDF +with full unicode support (box-drawing org charts, tables, code blocks). + +## Status + +- Built locally as `knelpdf:v1` on the COO workstation (2026-09-07). +- **Remote not yet created** — Gitea pushes are blocked by the + 2026-09-07 box incident (gitea receive-pack 500s, see Redmine #937). + When infra recovers: create repo `KNEL/KNELPDF` on + git.knownelement.com, push, and cross-link the Redmine ticket + + Discourse doc here (links land at birth per house rules). + +## Usage + +```sh +# markdown -> PDF (xelatex engine, landscape, DejaVu mono keeps box-drawing) +docker run --rm -v "$PWD:/data" knelpdf:v1 \ + pandoc /data/input.md -o /data/output.pdf \ + --pdf-engine=xelatex \ + -V geometry:landscape -V geometry:margin=2cm \ + -V mainfont="DejaVu Sans" -V monofont="DejaVu Sans Mono" +``` + +The image has NO entrypoint (fleet rule) — invoke tools directly: +`pandoc`, `xelatex`, `lualatex`. + +## Version policy (bump on rebuild, never float) + +| Component | Pinned at | +|---|---| +| Base | `debian:bookworm-slim@sha256:88200866…` (digest in Dockerfile) | +| pandoc | 3.11 (`pandoc-3.11-1-amd64.deb` from GitHub releases) | +| texlive | Debian bookworm archive (pulled at build time, pinned by base digest) | +| Image tag | `knelpdf:vN` — `:latest` is forbidden by house rules | + +## Contents + +- texlive-latex-base / recommended / extra +- texlive-xetex, texlive-luatex, texlive-fonts-recommended, lmodern +- fonts-dejavu (mono has box-drawing glyphs), fonts-noto-core +- curl + ca-certificates diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..eb55e91 --- /dev/null +++ b/build.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# Build the KNELPDF image. Usage: ./build.sh [tag] (default tag: v1) +set -eu +TAG="${1:-v1}" +docker build -t "knelpdf:${TAG}" . +echo "built knelpdf:${TAG}"