> For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.

# 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](/reference/docs/decisions/0043-themelio-compat-service.md).

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](/reference/docs/decisions/0034-fresh-skeleton.md) 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](/reference/docs/decisions/0043-themelio-compat-service.md).

## 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 <a href="/source/services/beto/docs/party-project/authentication-transition.md.txt">authentication guide</a>
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
<a href="/source/compat/themelio/services/web/api-spec/project-repositories.md.txt">compatibility migration</a>.

## 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.

<details class="page-source"><summary>Page source</summary>

<a href="/source/docs/decisions/0042-legacy-source-relocation.md.txt">Source snapshot</a> · Revision `f928834c8`.

</details>
