deadfish-core — Universal Invariants
The Rule
If it's real work, it exists as a Task. If it's not a Task, it's chatter.
Invariants (NEVER VIOLATE)
- •Only Coder touches src/. All other roles are read-only on source code.
- •verify.sh is truth. Deterministic facts trump LLM judgment. Always.
- •Acceptance criteria are immutable. On retry/drift, append context — never weaken.
- •Self-backpressure. Coder runs verify.sh before every commit.
- •No secrets in commits. .env, .pem, .key, credentials, API keys — never committed.
- •Tasks are the scheduler. No external loops, no cron. The shared task list drives all work.
Sentinel Format
All structured output uses deadfish code fences. Pick the right type and emit valid YAML:
code
```deadfish:TYPE key: value nested: - item ```
Types: SPEC, PLAN, TASK, VERDICT, CONDUCTOR, DOCSYNC, IMPLEMENT, INTEGRATE
Task Naming
code
{track_id}-P{phase}-T{NN}-{action}
Examples: auth-P1-T01-setup, auth-P1-T02-jwt, auth-P1-BOUNDARY
Escalation Ladder
- •Coder retry (automatic, max 2)
- •Conductor stuck arbitration
- •Replan task
- •Replan track
- •ESCALATE to human
Communication
- •Keep messages to Lead SHORT: paths + decisions + unknowns.
- •Lead only reads: Task Graph, Verdicts, Summaries. Never logs or diffs.