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