feat(brief): ceremony by size, one question round, logged and committed approvals
P1 (order 2, wave 1). /trekbrief puts the task in a size class (ceremony: small|bounded|architectural, K1; heaviest in doubt, said aloud, overridable, only moved up) that sets the question budget and the review cap, and asks one round of questions: facts looked up, never asked; recommendation first; ranked by impact x uncertainty with a visible Deferred list; stop when the next three answers can be predicted. "høres bra ut", "gjør som du vil" and an empty answer are not approval. K2: lib/util/approval-log.mjs, an append-only hash-chained log in the target repo (.claude/voyage/approvals.jsonl) bound to the approved content's sha256; append/verify (0/1/2), answer, digest. Committed by lib/util/artifact-commit.mjs: the log always, the brief and plan only with artifact_store: git (operator decision 2026-10-06). /trekplan Phase 1 halts on a broken, diverged, missing or mismatched log entry; Phase 11 logs and commits an explicit plan approval before any handoff. Both new brief fields are optional: no brief_version bump. The main-module guard in intent-approval.mjs and brief-validator.mjs now compares real paths. Borrowings credited in the prose and module headers. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
2c89a6b580
commit
5244d2e8e8
16 changed files with 1527 additions and 85 deletions
|
|
@ -16,6 +16,14 @@ source: {interview | manual}
|
|||
# written — the first layer of the framing-alignment defense (guards against the
|
||||
# plan polishing a wrong premise after a rejected iteration).
|
||||
framing: {preserve | refine | replace | new-direction}
|
||||
# Size class (ceremony by size), said aloud in the /trekbrief question round and
|
||||
# overridable by the operator; it only ever moves up mid-task. Optional: absent
|
||||
# reads as architectural (the heaviest). One of: small | bounded | architectural.
|
||||
ceremony: {small | bounded | architectural}
|
||||
# Where the brief and plan live: git (committed) or local (kept out of git via
|
||||
# .git/info/exclude). The approval log is committed either way. Optional: absent
|
||||
# reads as local. Asked once per task in the /trekbrief question round.
|
||||
artifact_store: {git | local}
|
||||
# v5.1 — per-phase effort + model signal (Phase 3.5).
|
||||
# `effort` ∈ {low, standard, high}; `model` ∈ {sonnet, opus, fable} (v5.9).
|
||||
# Omit `model:` for `standard` so composition falls through to profile
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue