@publisle/research 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE.md +31 -0
- package/README.md +14 -2
- package/compiler/Dockerfile +18 -0
- package/compiler/README.md +80 -0
- package/compiler/cacert.pem +2950 -0
- package/compiler/install-texlive.sh +38 -0
- package/compiler/release.json +13 -0
- package/dist/article.d.ts +10 -0
- package/dist/article.d.ts.map +1 -0
- package/dist/article.js +425 -0
- package/dist/article.js.map +1 -0
- package/dist/bibtex.d.ts +2 -0
- package/dist/bibtex.d.ts.map +1 -0
- package/dist/bibtex.js +2 -0
- package/dist/bibtex.js.map +1 -0
- package/dist/citeproc.d.ts +28 -0
- package/dist/csl.d.ts +35 -0
- package/dist/csl.d.ts.map +1 -0
- package/dist/csl.js +315 -0
- package/dist/csl.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/jats.d.ts +14 -0
- package/dist/jats.d.ts.map +1 -0
- package/dist/jats.js +197 -0
- package/dist/jats.js.map +1 -0
- package/dist/latex.d.ts +5 -0
- package/dist/latex.d.ts.map +1 -0
- package/dist/latex.js +19 -0
- package/dist/latex.js.map +1 -0
- package/dist/locales.d.ts +2 -0
- package/dist/locales.d.ts.map +1 -0
- package/dist/locales.js +67 -0
- package/dist/locales.js.map +1 -0
- package/dist/node.d.ts +66 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +542 -0
- package/dist/node.js.map +1 -0
- package/dist/package.d.ts +19 -0
- package/dist/package.d.ts.map +1 -0
- package/dist/package.js +48 -0
- package/dist/package.js.map +1 -0
- package/dist/pdf.d.ts +10 -0
- package/dist/pdf.d.ts.map +1 -0
- package/dist/pdf.js +207 -0
- package/dist/pdf.js.map +1 -0
- package/dist/portable-citations.d.ts +27 -0
- package/dist/portable-citations.d.ts.map +1 -0
- package/dist/portable-citations.js +185 -0
- package/dist/portable-citations.js.map +1 -0
- package/dist/profiles.d.ts +10 -0
- package/dist/profiles.d.ts.map +1 -0
- package/dist/profiles.js +166 -0
- package/dist/profiles.js.map +1 -0
- package/dist/remote.d.ts +24 -0
- package/dist/remote.d.ts.map +1 -0
- package/dist/remote.js +139 -0
- package/dist/remote.js.map +1 -0
- package/dist/resolve.d.ts +10 -0
- package/dist/resolve.d.ts.map +1 -0
- package/dist/resolve.js +62 -0
- package/dist/resolve.js.map +1 -0
- package/package.json +53 -3
- package/src/article.ts +478 -0
- package/src/bibtex.ts +1 -0
- package/src/citeproc.d.ts +28 -0
- package/src/csl.ts +367 -0
- package/src/index.ts +29 -0
- package/src/jats.ts +242 -0
- package/src/latex.ts +21 -0
- package/src/locales.ts +126 -0
- package/src/node.ts +752 -0
- package/src/package.ts +83 -0
- package/src/pdf.ts +225 -0
- package/src/portable-citations.ts +250 -0
- package/src/profiles.ts +188 -0
- package/src/remote.ts +163 -0
- package/src/resolve.ts +91 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/BITS-embedded-index2.ent +308 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/BITS-question-answer2.ent +531 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-XHTMLtablesetup1-3.ent +629 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-ali-namespace1-3.ent +293 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-archivearticle1-3.dtd +1085 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-archivecustom-classes1-3.ent +409 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-archivecustom-mixes1-3.ent +601 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-archivecustom-models1-3.ent +1613 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-archivecustom-modules1-3.ent +404 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-articlemeta1-3.ent +2552 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-backmatter1-3.ent +540 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-chars1-3.ent +664 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-common-atts1-3.ent +360 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-common1-3.ent +4659 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-default-classes1-3.ent +1595 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-default-mixes1-3.ent +630 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-display1-3.ent +1299 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-format1-3.ent +997 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-funding1-3.ent +1100 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-journalmeta1-3.ent +593 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-link1-3.ent +604 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-list1-3.ent +663 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-math1-3.ent +563 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-mathmlsetup1-3.ent +491 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-modules1-3.ent +769 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-nlmcitation1-3.ent +428 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-notat1-3.ent +412 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-para1-3.ent +648 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-phrase1-3.ent +664 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-references1-3.ent +1428 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-related-object1-3.ent +435 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-section1-3.ent +463 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/JATS-xmlspecchars1-3.ent +528 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/catalog-jats-v1-3-no-base.xml +999 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/catalog-jats-v1-3-with-base.xml +986 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso8879/isobox.ent +61 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso8879/isocyr1.ent +88 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso8879/isocyr2.ent +47 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso8879/isodia.ent +35 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso8879/isolat1.ent +83 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso8879/isolat2.ent +142 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso8879/isonum.ent +97 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso8879/isopub.ent +105 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isoamsa.ent +167 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isoamsb.ent +143 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isoamsc.ent +43 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isoamsn.ent +114 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isoamso.ent +73 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isoamsr.ent +204 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isogrk3.ent +64 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isomfrk.ent +75 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isomopf.ent +49 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isomscr.ent +75 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/iso9573-13/isotech.ent +182 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/mathml/mmlalias.ent +564 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/mathml/mmlextra.ent +122 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/mathml2-qname-1.mod +286 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/mathml2.dtd +2206 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/xhtml-inlstyle-1.mod +34 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/xhtml-table-1.mod +333 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/xmlchars/isogrk1.ent +70 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/xmlchars/isogrk2.ent +41 -0
- package/vendor/jats/JATS-Archiving-1-3-MathML2-DTD/xmlchars/isogrk4.ent +66 -0
- package/vendor/jats/PROVENANCE.json +6 -0
- package/vendor/locales/PROVENANCE.json +5 -0
- package/vendor/locales/README.md +23 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 VoidReg
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/NOTICE.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Third-party resources
|
|
2
|
+
|
|
3
|
+
Citation formatting uses citeproc-js (`citeproc` 2.4.63), by Frank Bennett and
|
|
4
|
+
contributors, https://github.com/Juris-M/citeproc-js. Its original LICENSE is
|
|
5
|
+
included by the dependency. That file offers CPAL 1.0 or AGPL 3-or-later;
|
|
6
|
+
upstream npm SPDX metadata reads `CPAL-1.0 OR AGPL-1.0`. Publisle's own source
|
|
7
|
+
license does not replace dependency licenses.
|
|
8
|
+
|
|
9
|
+
The bundled locale data comes from the Citation Style Language project,
|
|
10
|
+
https://CitationStyles.org/, under CC BY-SA 3.0. Translator metadata is preserved
|
|
11
|
+
in every locale. The exact upstream revision and notices are retained under
|
|
12
|
+
`vendor/locales`.
|
|
13
|
+
|
|
14
|
+
The reviewed citation corpus under `packages/contracts/fixtures/citations.json`
|
|
15
|
+
is generated with this pinned processor and those locale resources. The
|
|
16
|
+
independent Python implementation is authored in-repository and vendors no CSL
|
|
17
|
+
processor or locale XML; its dependency evaluation is recorded in
|
|
18
|
+
`tools/python/NOTICE.md`. Both implementations expose a limited portable role,
|
|
19
|
+
not a general CSL parity claim.
|
|
20
|
+
|
|
21
|
+
JATS Archiving 1.3 schema files retain their original NLM/W3C/ISO notices under
|
|
22
|
+
`vendor/jats`; download provenance is recorded there. Springer class/style
|
|
23
|
+
assets belong to the separate template package and retain their original LPPL
|
|
24
|
+
notices and unmodified source bytes. The compiler's Mozilla CA bundle retains
|
|
25
|
+
its notices; see `compiler/README.md`.
|
|
26
|
+
|
|
27
|
+
The optional PDF accessibility gate downloads veraPDF Greenfield 1.28.2 from
|
|
28
|
+
https://software.verapdf.org/releases/1.28/ with a pinned SHA-256 digest. Its
|
|
29
|
+
installed notices describe GPL v3 and MPL v2-or-later licensing. No veraPDF
|
|
30
|
+
binaries are vendored in this repository. Upstream TeX Live packages retain
|
|
31
|
+
their individual license notices in the explicitly installed compiler image.
|
package/README.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @publisle/research
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Citation resolution and BibTeX, CSL, LaTeX, JATS, and PDF export. Tooling only; readers must not import it.
|
|
4
|
+
|
|
5
|
+
Requires Node.js 24 or later. Framework adapters also require their declared peer dependencies.
|
|
6
|
+
This package is part of Publisle, independently versioned at `0.1.1` and published under the npm `beta` tag.
|
|
7
|
+
Frozen contract version integers are independent of npm package versions.
|
|
8
|
+
|
|
9
|
+
- [Core standard](https://github.com/VoidReg/publisle/blob/main/docs/standards/README.md)
|
|
10
|
+
- [Quickstart and package usage](https://github.com/VoidReg/publisle#readme)
|
|
11
|
+
- [Distribution and release checklist](https://github.com/VoidReg/publisle/blob/main/docs/guides/releases.md)
|
|
12
|
+
- [Research export guide](https://github.com/VoidReg/publisle/blob/main/docs/guides/journal-export.md)
|
|
13
|
+
|
|
14
|
+
Research tooling is optional and is excluded from Core-only installations. Read any
|
|
15
|
+
included `NOTICE.md` for third-party licensing obligations.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Base and OS packages are frozen independently of the upstream TeX distribution.
|
|
2
|
+
FROM ubuntu@sha256:72297848456d5d37d1262630108ab308d3e9ec7ed1c3286a32fe09856619a782
|
|
3
|
+
ARG TARGETARCH
|
|
4
|
+
COPY cacert.pem /etc/ssl/certs/ca-certificates.crt
|
|
5
|
+
RUN set -eu; \
|
|
6
|
+
case "$TARGETARCH" in amd64) archive=ubuntu ;; arm64) archive=ubuntu ;; *) exit 1 ;; esac; \
|
|
7
|
+
rm -f /etc/apt/sources.list.d/ubuntu.sources; \
|
|
8
|
+
printf 'deb https://snapshot.ubuntu.com/%s/20250301T000000Z noble main universe\ndeb https://snapshot.ubuntu.com/%s/20250301T000000Z noble-updates main universe\ndeb https://snapshot.ubuntu.com/%s/20250301T000000Z noble-security main universe\n' "$archive" "$archive" "$archive" > /etc/apt/sources.list; \
|
|
9
|
+
apt-get update; \
|
|
10
|
+
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ca-certificates curl perl xz-utils fontconfig fonts-paktype; \
|
|
11
|
+
rm -rf /var/lib/apt/lists/*
|
|
12
|
+
COPY install-texlive.sh /tmp/install-texlive.sh
|
|
13
|
+
RUN sh /tmp/install-texlive.sh "$TARGETARCH" && rm /tmp/install-texlive.sh
|
|
14
|
+
ENV PATH="/opt/texlive/bin/platform:${PATH}"
|
|
15
|
+
RUN tlmgr install latexmk tex-gyre tex-gyre-math fandol luahbtex luaotfload luatexbase lualibs luamml unicode-math tagpdf latex-lab pdfmanagement-testphase ulem natbib cite ieeetran elsarticle acmart xstring totpages environ trimspaces framed hyperxmp draftwatermark ncctools comment preprint pbalance libertine newtx inconsolata sttools threeparttable appendix breakurl wrapfig vruler && \
|
|
16
|
+
fc-cache -f /opt/texlive/texmf-dist/fonts/opentype && luaotfload-tool --update
|
|
17
|
+
RUN tlmgr install ifmtarg lualatex-math luacode upquote
|
|
18
|
+
WORKDIR /work
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Compiler recipe
|
|
2
|
+
|
|
3
|
+
Recipe 2 retains the Ubuntu noble-20250127 OCI index digest and the Ubuntu apt
|
|
4
|
+
snapshot at 2025-03-01 for OS dependencies. TeX comes from the upstream frozen
|
|
5
|
+
[TeX Live 2025 final repository](https://ftp.math.utah.edu/pub/tex/historic/systems/texlive/2025/tlnet-final/),
|
|
6
|
+
frozen on 2026-03-01, rather than noble's older TeX packages. The installer and
|
|
7
|
+
package database are pinned by SHA-512 in `install-texlive.sh`. TeX Live verifies
|
|
8
|
+
package archive checksums from that database. The original database is retained
|
|
9
|
+
as `/opt/texlive/tlpkg/frozen-source.tlpdb` in the image. Documentation and source
|
|
10
|
+
packages are omitted. See [TUG's historic release policy](https://tug.org/texlive/acquire.html).
|
|
11
|
+
|
|
12
|
+
The recipe maps Docker `amd64` to `x86_64-linux` and `arm64` to `aarch64-linux`,
|
|
13
|
+
using the same frozen package database and its platform-specific archive
|
|
14
|
+
checksums. Both architectures use the snapshot service's `ubuntu` archive,
|
|
15
|
+
which includes arm64 package indices; the ordinary `ubuntu-ports` path is not
|
|
16
|
+
a snapshot-service archive.
|
|
17
|
+
|
|
18
|
+
`release.json` stores the reviewed multi-architecture registry reference. It is
|
|
19
|
+
currently `null`: registry publication and a native arm64 CI run remain pending.
|
|
20
|
+
Both platforms are locally verified against this recipe: the amd64 image passes
|
|
21
|
+
the publisher smoke and PDF/UA fixture gates natively, and the arm64 image —
|
|
22
|
+
confirmed `linux/arm64` by `docker image inspect` — passed the five-publisher
|
|
23
|
+
smoke gate and all three PDF/UA fixtures (English UA-2, Arabic UA-2, English
|
|
24
|
+
UA-1) with veraPDF 1.28.2 under QEMU emulation on 2026-10-10. Until a release is
|
|
25
|
+
recorded, default setup builds locally.
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
docker build --tag publisle-compiler:2 packages/research/compiler
|
|
29
|
+
pnpm cli setup compiler
|
|
30
|
+
# Explicitly use the bundled local recipe, even after registry publication:
|
|
31
|
+
pnpm cli setup compiler --build
|
|
32
|
+
# Install a reviewed immutable registry reference:
|
|
33
|
+
pnpm cli setup compiler --image ghcr.io/voidreg/publisle-compiler@sha256:<index-digest>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Setup prefers the digest-pinned published image when `release.json` contains a
|
|
37
|
+
reference. It verifies the pulled repository digest and records the selected
|
|
38
|
+
platform's immutable local `sha256` ID, recipe version, platform, and published
|
|
39
|
+
index reference. Pull failures report the explicit `--build` fallback. The local
|
|
40
|
+
build uses the same frozen recipe. `publisle doctor` reports native compiler
|
|
41
|
+
readiness, container runtime readiness, installed image ID, platform and registry
|
|
42
|
+
reference separately. Runtime exports never pull or build; they use
|
|
43
|
+
`--pull=never`, a read-only container, a temporary cache, and no network. The
|
|
44
|
+
container uses `openin_any=r` so LuaTeX can read absolute paths to Unicode data
|
|
45
|
+
within its own compiler filesystem; its only host mount is the isolated source
|
|
46
|
+
package. Native execution retains `openin_any=p`. Both disable shell escape and
|
|
47
|
+
restrict output paths. Selection checks the LaTeX format before using a tagged
|
|
48
|
+
compiler.
|
|
49
|
+
Native tools remain supported; tagged output requires LaTeX 2025-11-01 or later.
|
|
50
|
+
See the [accessibility guide](https://github.com/VoidReg/publisle/blob/main/docs/guides/accessibility.md) for the UA-2 fixture
|
|
51
|
+
gate and checksum-pinned veraPDF installation.
|
|
52
|
+
|
|
53
|
+
`cacert.pem` is the Mozilla CA bundle distributed by https://curl.se/ca/cacert.pem,
|
|
54
|
+
retained to bootstrap HTTPS apt on the minimal base. Its SHA-256 is
|
|
55
|
+
`a41b5d356aea97a529fe27e0f7316d2f9d946d75927476cf9cf1b90637d00505`.
|
|
56
|
+
Original certificate notices are retained; Mozilla CA data is under MPL 2.0.
|
|
57
|
+
TeX Live and installed packages retain their own license notices in the image.
|
|
58
|
+
|
|
59
|
+
## Release workflow
|
|
60
|
+
|
|
61
|
+
Run `.github/workflows/compiler-release.yml` manually with a new immutable
|
|
62
|
+
`recipe-X.Y.Z` version after reviewing the recipe. It uses native GitHub amd64
|
|
63
|
+
and arm64 runners, avoiding emulation. Each platform first builds the frozen
|
|
64
|
+
recipe, compiles all five shipped publisher profiles, and passes both standard
|
|
65
|
+
article profiles through the checksum-pinned veraPDF 1.28.2 PDF/UA-2 gate plus
|
|
66
|
+
the English PDF/UA-1 fixture. It
|
|
67
|
+
retains fixture PDFs and validation reports, then pushes that verified platform
|
|
68
|
+
image to `ghcr.io/<repository-owner>/publisle-compiler`. The repository's
|
|
69
|
+
`GITHUB_TOKEN` needs package write access and permission to create or update that
|
|
70
|
+
package. Existing release tags are refused.
|
|
71
|
+
|
|
72
|
+
The final job combines the two platform digests into an OCI index, checks that
|
|
73
|
+
it contains exactly `linux/amd64` and `linux/arm64` with the expected digests,
|
|
74
|
+
and uploads `compiler-release.json` plus the raw manifest. That record includes
|
|
75
|
+
the index digest, both platform digests, recipe version, and veraPDF pin. Review
|
|
76
|
+
and copy the generated record into `release.json` in the package release change;
|
|
77
|
+
setup then pulls that immutable index. The workflow does not edit the repository
|
|
78
|
+
or automatically change the default compiler. Recipe 2 release `recipe-2.0.0` passed this workflow on both native architectures.
|
|
79
|
+
Its published index, platform digests and validator pin are recorded in
|
|
80
|
+
[`release.json`](release.json).
|