3.2 KiB
Brief: the human deletes a creative instance (REQ-COS-3, after row 194)
Sage, 2026-10-21, for mos-1214 item 5 and mos-1215 item 3. Owner Honker, reviewer Webby, gate owner Sage.
Chained after row 194: deleteRefusal and the delete path land in 194, so this row builds on 194's
landing. The row has to land before the v1 tag for 10-27. If it slips past that date, Sage tells Mos before
194's v1 tag (mos-1215).
Why
REQ-COS-3 (docs/prd/mosaic-stack.md:342) says "Only the user deletes an instance." Creative entries are
instances: they sit in the business file's instances, and only the human's instances.set adds or changes
one (C2-08 M10, row 213). Row 213 made every creative definition END_PROTECTED (vocabulary.mjs:195,
END_PROTECTED = THREAD_DEFINITIONS). In row 194, deleteRefusal refuses END_PROTECTED for every actor
(organization-definition-refused), so nobody can delete a creative instance. The human can only delist one
with launch: false. This row lets the human delete one, which matches END_PROTECTED's intent: a protected
end goes to the human (sage-0525).
What this row does
- Human-only delete of a creative instance. Pass the actor into
deleteRefusal, and through every caller: the broker's check at the verb, the launcher pass'sset op delete, the CLI and the Console.- A creative definition (
CREATIVE_DEFINITIONS) whose actor is the business file'shumanpasses this check and goes on to the remaining checks (references, kept, credentials). - Any other actor still gets a refusal. Use the code
creativeHumanOnlygives (organization-creative-human-only), so the refusal says why. - Every other END_PROTECTED definition (the thread definitions that aren't creative, such as the chief
of staff) still refuses
organization-definition-refusedfor every actor, the human included.
- A creative definition (
- Fire stays as it is.
role.fireandinstance.firekeep refusing END_PROTECTED for every actor. REQ-COS-3's fire is the chief's action, and the chief can never hire a creative instance. - Agents page. Row 194 hides Delete on
endProtected. Offer Delete on a creative instance only on the human's page, from the same server predicate, and never on the tester listener. Add one browser test for each side. - Persona file. Say in BUILD.md what happens to
<configDir>/personas/<business>/<instance>.mdon delete. The smallest choice is to leave it in place and record that. If you remove it, open it withO_NOFOLLOWas row 213 reads it, and add a test. - DEFERRED. Close row 194's DEFERRED entry for human delete of a creative entry, and name this row in it.
Boundaries
- No change to who may add or change a creative instance (M10), or to
role.hire's bounds. - No change to fire, veto or
launch.keep. - No test touches
~/.mosaic-dev,~/.config/mosaic-dev, the live units, a slot file, .53 or .54.
Gate
Webby approves the manifest. On Sage's slot, every touched test file passes whole, along with the
business, bus, cli and webui suites whole and every scripts/test-*.sh. Two mutants must be killed: one
that lets a non-human actor delete a creative instance, and one that lets the human delete a non-creative
END_PROTECTED instance.