Reproducible branch-per-release repository packager and canonical preservation catalog
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-17 13:00:09 +02:00
evidence Add reproducible preservation repository packager 2026-07-16 19:36:06 +02:00
tests Track canonical releases with stable branch aliases 2026-07-17 13:00:09 +02:00
.gitignore Add reproducible preservation repository packager 2026-07-16 19:36:06 +02:00
catalog.json Track canonical releases with stable branch aliases 2026-07-17 13:00:09 +02:00
install.py Recognize complete Twin Saga InstallShield media 2026-07-17 12:53:28 +02:00
LICENSE.md Add reproducible preservation repository packager 2026-07-16 19:36:06 +02:00
package_repositories.py Track canonical releases with stable branch aliases 2026-07-17 13:00:09 +02:00
README.md Recognize complete Twin Saga InstallShield media 2026-07-17 12:53:28 +02:00
update_decompilation_queue.py Track decompilation candidates in release manifests 2026-07-16 19:43:46 +02:00

MMO Preservation Repository Packager

This repository contains the canonical import catalog and deterministic tooling used to turn the files in ToBeProcessed into one Forgejo repository per game or tool family.

The packager source is licensed under AGPL-3.0-only. That license does not apply to preserved third-party artifacts, whose rights remain with their respective owners.

The builder never moves or modifies source material. It verifies each source SHA-256, records duplicate source names, chunks large artifacts, stores release payloads through Git LFS, and creates release/<version> branches. Generated installers validate the original archive before extracting it and never execute bundled installers or server binaries.

InstallShield media releases can map preserved download names back to the cabinet names required by their own media manifest. The generated installer verifies every chunk and whole-artifact hash, validates control-archive paths and declared byte counts, and can either materialize the original media or extract it with Unshield. Large-cabinet releases may also define an extraction probe and hashes for required outputs.

python package_repositories.py `
  --source-root ..\ToBeProcessed `
  --output-root .. `
  --repository server-aura-kingdom

Run python -m unittest discover -s tests to validate the catalog and installer path-safety rules.

Run python package_repositories.py --source-root ..\ToBeProcessed --output-root .. --audit to hash the complete staging area, verify duplicate aliases, and fail if any source file is unassigned.

Server and client release manifests are registered as decompilation candidates. Binary-only tool releases are explicitly queued. update_decompilation_queue.py applies that classification to repositories produced with an older catalog revision without changing any artifacts.

Direct Forgejo LFS on the preservation LAN

Forgejo's canonical public URL is routed through Cloudflare, which imposes an upload-size limit. Local maintenance clones can keep their normal public identity while rewriting LFS action URLs to the LAN service:

git config lfs.transfer.enablehrefrewrite true
git config 'url.http://192.168.1.37:3000/.insteadOf' 'https://gitty.ryuum3gum1n.de/'

This is local Git configuration only. It is never committed to generated repositories, so external clones continue to use the public URL.