For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt, and this page is available as Markdown at /reference/docs/decisions/0042-legacy-source-relocation.md.

0042 — preserve authorship when reactivating legacy source

Status: Accepted in #626 (6 October 2026) as its decision 0007; renumbered 0042 when the Themelio relocation was carried into the platform stack (14 October 2026). The relocation is commit 77bfeecfe; its deployment is decision 0043.

The maintained compatibility application will use files moved from legacy/ into compat/themelio/ with git mv. Preserve their contents, executable modes and relative package structure in the relocation commit. Existing implementation continues its history at the new paths. Git remains the record of line authorship.

Git detects renames from snapshots. Keeping relocation separate from subsequent edits makes that detection straightforward for blame, log and review tools. Inspect the staged diff for exact renames and verify representative files with git blame and git log --follow. The relocation commit records who performed the move; unchanged source lines retain their earlier attribution. Do not squash the move together with source rewrites or regenerate files during relocation.

This amends decision 0034 only where it requires every original file to remain under legacy/. The original complete tree remains in Git at the recorded archive baseline, described by docs/legacy-manifest.json. Files remaining under legacy/ retain exact blob/mode verification and remain excluded from builds. Maintained files receive ordinary source checks at their new locations.

Before relocation, extend verification to recognise an explicit mapping of original path, destination, original blob and mode. Preserve the original manifest. Require each original file to be accounted for either at its unchanged archive location or by a verified relocation. Reject unrecorded disappearance, duplicate mappings and unexpected archive edits. Verify the original relocation against Git history; subsequent compatibility edits are reviewed through normal commits. Record later retirements explicitly without removing their historical provenance.

The mechanical move may update relocation and large-file-review metadata. Source, lockfile and build changes follow in separate commits. Prepare the checker and its negative fixtures first so the move can pass verification without weakening the archive checks.

This decision settles source movement and history preservation. Building and deploying the retained Themelio are in decision 0043.

Retiring NextAuth — 30 October 2026

The retained web now delegates browser authentication exclusively to the Go API. Retire its relocated NextAuth catch-all route and SessionExpired component; the API session adaptor handles expiry. Existing NextAuth sessions require a fresh AAI login. The authentication guide records the runtime boundary and cutover checks.

Record these paths and this decision in compat/themelio/retirements.json. The provenance ledger remains immutable, and verification still proves the exact historical relocation. A retirement must name an existing relocation and a section of an existing decision; the retired path must be absent. Missing unrecorded files, unknown paths, missing decisions and reintroduced retired files fail verification.

Moving maintained outputs — 30 October 2026

Later moves of maintained files keep the original provenance ledger unchanged. Record their current locations in compat/themelio/current-paths.json, keyed by the original relocation destination. Each target must be a distinct existing file within the compatibility owner, and its previous path must be absent. Unknown sources, retired sources, duplicate targets and paths outside the owner fail verification. Historical blob and authorship checks still use the original ledger and the exact relocation commit.

Move generated GraphQL outputs mechanically into src/adaptors/generated/graphql before updating generator configuration or regenerating them. This preserves rename detection and keeps the original source attribution available in Git.

Retiring legacy Run launchers — 2 November 2026

The retained repository action, job and deployment routes now delegate to the Go API's Execution Core contract. Retire action-executor.ts, which minted a GitLab PAT and sent the URL namespace to the Kubernetes root actor, and ModelActions.tsx, whose superseded deployment button used an obsolete route. The repository Actions component uses the new command contract. Record both retirements in the existing ledger; preserve their historical provenance.

The old direct inference launch and pod notification routes return Gone. They cannot mutate the new Runs. Existing actor-managed workloads require an explicit operational migration; their numeric IDs are not canonical Run IDs. Qualification and the global deferral of legacy pages remain separate deployment gates. See the compatibility migration.

Documentation relocation — 29 October 2026

The documentation site is maintained under root docs/. Its archived package files move with git mv; its page tree moves from legacy/docs/docs/ to docs/content/. Existing root decisions and operational guides remain in place. docs/provenance.json records each original path, exact blob, mode and destination against the unchanged archive baseline. The checker applies the same staged and historical verification as the application and deployment relocations, with cross-ledger duplicate detection.

Commit the mechanical relocation separately from site configuration, content and dependency changes. Preserve that commit through merge; a squash containing rewritten pages cannot prove an exact relocation. The site presents compatibility material with an explicit scope notice and links to current authoritative guides.

Retiring shadow blob routes — 4 November 2026

Retire the relocated blob/[rev]/[path]/route.ts files in the models, recipes and upskillings APIs. These unavailable handlers shadow the maintained blob/[...path] route for files one folder below the repository root. All six repository categories now read nested files through their catch-all route, with the revision supplied by ref. No historical content or authorship is removed from the provenance ledger.

Retiring RecentJobs — 8 November 2026

Retire the relocated components/jobs/RecentJobs.tsx. Nothing renders it, and it sent a GitLab username to the Project Run listing, which accepts only canonical Project IDs, so it could only show nothing. The Project page's Active Runs panel lists a Project's Runs. Record the retirement in the existing ledger; its historical provenance remains.

Page source

Source snapshot · Revision f928834c8.