feat(phrases): render an invocation before anything can emit one #590
No reviewers
Labels
No labels
move-to-repo
coilyco-bridge-deploy
move-to-repo
coilyco-flight-deck-agent-compose
move-to-repo
coilyco-gaming-eco-app
move-to-repo
coilysiren-inbox
move-to-repo
unknown
🔒⚠️📦⚠️🔒 SANDBOXED 🔒⚠️📦⚠️🔒
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
c#
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-gaming/sirens-echo!590
Loading…
Reference in a new issue
No description provided.
Delete branch "coilyco-ops/render-a-phrase-before-anything-invokes-one"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
closes #588 render half - the registry was built, CI-validated and never loaded, so RenderPhrases had no callers and a marker would have reached a member verbatim.
The phrase registry was fully built and entirely inert. LoadPhraseRegistry had one caller and it was the build-time policy check. RenderPhrases and Keys had none at all. Config had no field for it and NewAgent never read one. So the only thing that substitutes {{phrase:key}} never ran, and the moment anyone added the prompt half a reply would have reached Discord carrying the literal marker. That is the raw-markup defect on sirens-echo#301 arriving by a different door, and the prompt half is the easier half to write. This lands the render half and deliberately not the prompt half, so the dangerous ordering is closed off before it can happen: no invocation returned untouched, which is every reply today no registry the turn fails rather than a marker reaching a member not the whole reply refused, per 176: an invocation is terminal unknown key the turn fails known key rendered in the harness form Nothing tells the model the syntax exists, so none of it fires. The feature stays off and stops being able to fail open. Two things I said needed deciding and did not. 176 states the terminal rule outright, so that was a specification I mistook for a question. And an unknown key returning an error does satisfy 176's "fail closed to a canned phrase, never to prose", because on the reply path an error reaches failTurn and the member gets a harness notice. I had not traced that route before calling it a contradiction. The capability line from sirens-echo#539 now reports the registry, since there is finally something to report about it. Still open on 588: the prompt half, which changes every turn's system block and wants the evaluation cadence run against it. closes #588 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: Kai Siren <coilysiren@gmail.com> Co-authored-by: Claude <noreply@anthropic.com>