v2.0.0 to v2.0.0

29 added, 32 removed. Audit A to A.

---
name: lingtai-manual
description: |
- Read before changing character/identity in `system/lingtai.md`, choosing forced versus self-evolve mode, or applying durable identity edits.
+ Read before changing character/identity in `system/lingtai.md`, choosing forced
+ versus self-evolve mode, or applying durable identity edits.
version: 2.0.0
- last_changed_at: 2026-07-28T00:00:00-07:00
+ last_changed_at: 2026-09-09T00:00:00Z
related_files:
- src/lingtai/tools/lingtai/__init__.py
- src/lingtai/tools/lingtai/_lingtai.py
- src/lingtai/tools/lingtai/CONTRACT.md
- src/lingtai/tools/psyche/CONTRACT.md
- src/lingtai/intrinsic_skills/psyche-manual/SKILL.md
- src/lingtai/tools/context/manual/SKILL.md
maintenance: |
- Keep the manual-only public route through psyche, generic file ownership, the no-hot-load rule, identity modes, and the context reconstruction route synchronized with code.
+ Keep the manual-only Psyche route, generic file ownership, no-hot-load rule,
+ identity modes, and context reconstruction route aligned with code.
---
# LingTai Manual
- Your 灵台 is the character that distinguishes you from every other agent. Its
- durable source is `system/lingtai.md`; canonical reconstruction renders it into
- the protected `character` system-prompt section.
+ LingTai (`灵台`) is the character that distinguishes this agent from others.
+ Its durable source is `system/lingtai.md`; reconstruction renders it into the
+ protected `character` prompt section.
## Public call
```text
- psyche(action="lingtai", input={}, reasoning="load identity guidance", summarize=false)
+ psyche(action="lingtai", input={}, reasoning="load identity guidance")
```
- That is the **only** public LingTai call, and it just returns this manual. It
- performs no disk or prompt mutation. There is no update, load, or reload action
- and no compatibility alias.
-
- ## Change durable identity with file
-
- Your durable identity is an ordinary file. Rewrite it with
- `file(action="write", input={"file_path": "system/lingtai.md", ...})` — carrying
- forward everything you intend to keep — or make a bounded, unambiguous change
- with `file(action="edit", ...)` on the same path. Neither hot-loads the prompt;
- apply with one `context(action="rebuild", ...)`. The full model is
- `psyche-manual` → "The one mutation model".
+ This is the only public LingTai call and only returns this manual. It performs no
+ disk or prompt mutation; there is no update, load, or reload action or alias.
- ## Identity modes
+ ## Change durable identity
- - **Self-evolve:** configured `lingtai`/`lingtai_file` is absent or empty.
- Reconstruction preserves and composes your self-authored
- `system/lingtai.md`.
- - **Forced:** configuration resolves to a nonempty identity. Every
- reconstruction materializes that configured value into `system/lingtai.md`
- before composing it, so a file change is replaced at the next rebuild,
- refresh, or molt.
+ Rewrite with
+ `file(action="write", input={"file_path": "system/lingtai.md", "content": "..."}, reasoning="rewrite identity")`
+ or make a bounded exact change with
+ `file(action="edit", input={"file_path": "system/lingtai.md", "old_string": "...", "new_string": "...", "replace_all": null}, reasoning="edit identity")`.
+ Preserve all character content you intend to keep when rewriting.
+ Neither hot-loads the prompt; use one
+ `context(action="rebuild", input={}, reasoning="apply identity change")`.
- Keep character separate from operator `covenant`, third-party `base_prompt`,
- and mechanical name/manifest `identity`. Names remain
- `system(action="name_set"|"name_nickname")`.
+ - **Self-evolve:** an absent or empty **resolved** `lingtai` value (inline or
+ from `lingtai_file`) preserves and composes the self-authored file. These
+ inputs belong to top-level `init.json`, not `settings/psyche.json`.
+ - **Forced:** a nonempty configured identity materializes into the file on every
+ reconstruction, so a file edit is replaced at the next rebuild, refresh, or
+ molt.
- Before molt, tend identity once when the task's lessons genuinely changed who
- you are; use `context-manual` for the journal/summary/molt procedure.
+ Keep character separate from operator `covenant`, third-party `base_prompt`, and
+ mechanical `identity`; names remain `system(action="name_set"|"name_nickname")`.
+ Before molt, update identity only when the task's lessons genuinely changed who
+ you are, then use `context-manual` for the journal/summary/molt procedure.