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.