# Tombstone: source-file managed-section API
**Superseded by:**
[`docs/decisions/source-files-are-user-owned.md`](../decisions/source-files-are-user-owned.md).
**Date:** 2026-05-16
**Decision:**
[`docs/decisions/source-files-are-user-owned.md`](../decisions/source-files-are-user-owned.md)
## What was removed
The public `lifeloop::source_files` managed-section renderer was removed,
including `RenderedSourceFile`, `ApplyOutcome`, `ApplyError`,
`SourceFileAdapter`, `TEMPLATE_VERSION`, `render_for`, and `apply`.
The removed API rendered Lifeloop sentinel blocks for model instruction
source files such as `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, `HERMES.md`,
and `OPENCLAW.md`, then applied those blocks to an in-memory file body.
## Why
The API did not perform filesystem IO, but it still returned replacement
bodies intended for user-owned instruction files. That shape encouraged
callers to persist generated managed sections inside user prose, which the
source-file ownership decision now forbids.
Lifeloop normalizes lifecycle reach. It does not own the user's
instruction text, sentinel regions inside it, or source-file rewrite
policy.
## Migration
There is no replacement managed-section API.
Callers should keep lifecycle wiring in host integration assets or
tool-owned configuration. If a caller needs to compare instruction files,
it may read them and emit diagnostics or suggested patches as separate
artifacts, but it must not write managed sections through Lifeloop.
## Removal criterion
This tombstone may be deleted once all of the following hold:
- Lifeloop v0.2 has shipped with the API removed;
- `git grep -n "source_files\|RenderedSourceFile\|ApplyOutcome\|SourceFileAdapter" -- .`
has no hits outside this tombstone, the source-file ownership decision,
and changelog/release-note entries that describe the removal;
- the source-file ownership decision has not been reopened in favor of a
Lifeloop-owned write or managed-section renderer.