# DISCIPLINE-BRIEF — autonomous work-discipline directive for spt-hosted agents

Operator sprint (2026-07-10): bake a standing directive into SessionStart for spt-hosted
agents — keep context under ~50%, checkpoint-commune on substantial headway (next steps +
broad project status/end goal), background work carries across the clear boundary, keep
going until the goal is met.

## Design

- **Delivery**: new file-backed brief `[strings.briefs].work-discipline`
  (`adapter/strings/briefs/work-discipline.md`), composed into the perched SessionStart
  brief — same machinery as live-ops (REQ-DIST-SESSIONSTART-BRIEF). Prose rides
  `spt adapter update`; the hook composes, never authors (single-source throughline).
- **Gate: spt-hosted only** (`$SPT_ENDPOINT_ID` present at SessionStart). The directive
  leans on the checkpoint clear+wake machinery, which is spt-hosted-only (translation
  binary). A harness-hosted live agent (bind-less boundary) does NOT get it. `bind` is
  spt-hosted by construction; `boundary` passes the env-presence bit through.
- **Boundary included**: the brief rides bind AND boundary, so the post-clear reborn agent
  re-reads the discipline every cycle — that is what makes "keep going until the goal is
  met" a loop instead of a one-shot.
- **Open verify**: "background tasks and subagents carry across the clear boundary" —
  claude-code-guide verdict pending. Prose ships only what is true; adjust the line to the
  verdict BEFORE the release cut.

## Tasks

1. REQ-BRIEF-WORK-DISCIPLINE minted in traceable-reqs.toml (doc/impl/unit).
2. Author `adapter/strings/briefs/work-discipline.md` (live-ops voice; checkpoint marker
   mechanics NOT duplicated — point at the live-ops block above it).
3. Manifest: `[strings.briefs].work-discipline` entry + version-history note; version →
   0.19.0 (binary + manifest + strings).
4. hook.rs: `perch_brief(env, id, spt_hosted)` composes the discipline block after
   live-ops when `spt_hosted`; bind/boundary callsite passes `endpoint_id.is_some()`.
5. Unit tests: spt-hosted brief contains the block; harness-hosted boundary omits it;
   absent string no-ops.
6. CHANGELOG (UX-only per RELEASE-RUNBOOK step 2) + build + traceable-reqs check + gates.

## Gate

Build green, `traceable-reqs check` green, run-gates green, background-carry claim
verified-or-reworded, then cut v0.19.0.
