Text an agent reads resolves through the profile
- Context: a text fixed in Go can only be changed by a rebuild, and a user who wants the record step or the headless prompt in their own words has nowhere to write them.
- Decision: the turn partials live in
profiles/default/partials/and the prompts of wloop‘s own calls inprofiles/default/prompts/; a file of the user’s profile replaces the bundled file of its path. The descriptions of the MCP tools and their parameters, and what each tool answers, live inprofiles/default/tools.toml, a plugin’s tools in its profile layer’stools.toml, by tool, parameter path and answer name; Go hands an answer the fieldsbuiltin.ToolAnswerslists for it, and a user’stools.tomlreplaces the keys it sets. Go keeps the markers, the schemas and the limits around them, and checks that a record partial still states the record protocol. - Consequence: a broken partial or wrapper of the user’s falls back to the bundled one with a problem, so a profile edit never stops a turn from ending; the rendered turns of the bundled profile are unchanged.
- Enforced by:
TestProseIsEmbeddedOnlyFromProfiles,TestARecordPartialMissingTheProtocolLoadsTheBundledOne,TestTheBundledWrapperWritesTheOldPrompt,TestEveryToolIsDescribedByTheBundledProfile,TestAToolTextFailsAtLoad,TestAnswersComeFromTheProfile, the scenario goldens. See Profile first.