Repository navigation
v1.40.0 — standardized roster operations
1.40.0 — 2026-08-06
Standardize roster operations. "What is the current agent roster?" had no single answer: three CLI
surfaces produced three different tables, two independent stores held membership, and the table
reported a MODEL the launcher never passed.
Measured across 40 decks: nine distinct rosters, 17 with no roster at all, 17 still naming an
agent retired months earlier, and one deck missing a participant entirely — which is why the same
agent worked in some sessions and not others.
Fixed
- A configured model never reached the process. The model lived in two places —
Spec.Model
AND a literal baked intoHeadlessArgs— and config layers set the field without rewriting the
args. Pinning a model changed only what was displayed:claudelaunched Opus 4.8 while every
config layer said Opus 5, and six of seven adapters passed no effort flag at all. Built-in
args now carry{model}/{effort}placeholders that the runner substitutes, so one value lives
in one place.codex,kimiandopencodegained-m. An unbindable placeholder drops its
introducing flag rather than leaving a value-taking flag dangling, which would abort the CLI. AUTOis computed from the resolved argv, not the raw one.- Retired agents rendered as full members.
resolveRosterdiscarded the inactive set, so
marking a row inactive did nothing.STATEis now wired. rosterwas dispatched but absent fromparley --helpand the docs — the command the skill
tells agents to run was undiscoverable.
Added
- A frozen 11-column roster contract, identical in text and
--json, carrying
schema_versionand the ordered column list so consumers can detect a contract change:
AGENT ADAPTER STATE INSTALLED MODEL MODEL-FAMILY MODEL-COMPANY EFFORT SPEED AUTO STATUS.
MODELandEFFORThold what the launch actually passes, orunknown— never a declaration
wearing the effective cell. Divergence surfaces asSTATUS=model-drift/effort-unknown. modelmeta, a CLI-owned derivation of model family and company. Gateway prefixes are peeled
first, solitellm/xai/grok-4.5is xAI via LiteLLM, and an adapter never implies a company.parley roster set AGENT --scope deck|machine— change one member in one file. Preview by
default.--scope deckwrites the committedparley-deck/agents.toml, never the gitignored
local file.--state inactivemarks; rows are never deleted.parley roster sync— the single defined machine → deck reconciliation, with rebase
semantics: redundant deck overrides are removed so the deck inherits, and a deliberate pin is
never dropped silently — it is enumerated with the exact--keep AGENT.FIELDthat retains it.- An immutable per-run roster snapshot plus
roster_revision. Runs previously recorded
participant IDs and nothing else, andcontinuere-discovers configuration — so changing a
machine default mid-run could silently continue it on a different model.
Changed — protocol
COOPERATION.md§2 is now a generated, non-authoritative view;parley-deck/agents.toml
owns the roster. Decks with only the old hand-written table keep working and report
legacy-rosteruntilparley roster syncmoves them across. See
parley-deck/meta/protocol-changelog.mdfor the recorded, user-authorized one-off venue
deviation from §7.
Designed and reviewed through a full Parley Deck run (roster-operations-standard, track
deliberation, four participants, two rounds, three consensus revisions). codex-1 blocked twice;
both blocks were upheld and discharged. Fifteen drafter position changes are recorded.
v1.39.0 - 2026-08-06
kimi and opencode are full adapters, and a silent auto-approve defect is fixed.
Both agents existed only as one-line entries in the ACP catalog. specFromACPBackend() never sets
AutonomousWrite, so agents list reported AUTO=no for them — not a statement about the CLIs,
which both write unattended, but about parley not knowing which flag enables it.
- Full built-in specs.
kimilaunches askimi -p <prompt>,opencodeas
opencode run --auto <prompt>. Both keepkimi acp/opencode acpas an alternative launch
mode. Every field was probed live before being written:kimi --auto -p …exits 1 with
"Cannot combine --prompt with --auto", so-pis the only autonomous headless shape kimi has. Scopestays empty for both. Onlycodex --sandbox workspace-writeenforces a real sandbox;
the type forbids claiming confinement that is not enforced.
The defect, found in review by codex-1 and wider than the change that exposed it. A config
layer replaces HeadlessArgs wholesale without touching AutonomousWrite, so parley could declare
an autonomous mode whose enabling flag the launched command never passed — and still print
AUTO=yes. hermes was already in that state: its override had dropped --yolo.
AUTOnow fails closed: a declared mode whose enabling args are absent from the effective
launch reportsno, with a warning naming the missing args.- The
headless:line inagents listnow shows the resolved binary and effective argv
instead of the built-in label. The label is what hid the defect.
Also: kimi's notes now record that its installer does not add the binary to PATH, so command
must be set; opencode's telemetry description no longer understates its streamed output.
v1.38.0 - 2026-08-04
Protocol: new §15 Verification integrity. Ratified by idea
meta-protocol-change-verification-integrity (two design rounds, four consensus revisions, four
signoff rounds, two review rounds, two fix-up cycles).
The protocol had strong rules about who writes which artifact and no rules about what makes a
verification valid. A participant could stamp CONFIRMED on any claim — including its own —
with no stated basis, and two contradictory verdicts had nowhere to live and no resolution rule.
- §15.1 — scope, ownership, location. A claim enters the regime only when someone verdicts it,
someone challenges it, or §15 requires it. Every participant that asserts a claim as true where
it first appears canonically is an owner, and an owner MUST NOT verdict a claim it owns.
Material transcribed and explicitly marked as unverified testimony is not owned by the
transcriber — without that branch a facilitator could never verify anything it put in a brief. - §15.2 — provenance.
PRIMARY(source located and quoted, or a check the verifier executed
with command, inputs and output quoted) /SECONDARY(a named participant's non-RECALL
verdict, chain acyclic and terminating inPRIMARY) /RECALL(caps atUNVERIFIED).
An untagged verdict is treated asRECALL— the scheme fails closed. - §15.3 — conflicting verdicts. Resolved by reviewable evidence and argument, never by
counting participants, including where the count is unanimous. Provenance controls
admissibility; it does not select the winner. Unresolved →DISPUTED, which may not support any
acceptance criterion. No new file. - §15.4 — exemption-claim admissibility. A claim to avoid a named obstacle needs a witness
logically sufficient for the scoped claim. Adjectives are not witnesses. - §15.5 — role concentration. Facilitator procedural calls are provisional until the signoff
gate passes. A facilitator-drafter must publish## Drafter position changeswith an exact prior
quotation and source path per change. - §15.6 — correlated agreement. On unanimous judgment-shaped ideas, consensus may not close
without a steelman of the strongest alternative; a null result recording the search scope is a
finding, not non-compliance.deliberationtakes an assigned round artifact,standarda
section inside an existing round-02 file.
Two text fixes. §4.0 listed round-1 independence among invariants "never dropped for speed"
while §11.A said "there is no enforcement beyond agent discipline" — the qualifier reconciles them.
§6 rule 4 now applies explicitly to scoping.
Applied to both COOPERATION.md copies (live deck and the embedded parley init template),
per the drift guard.
Recorded finding about §15.5 itself. Across four consensus revisions the drafter's own
disclosure went 8 → 13 → 21 → 23 of 23 material changes; every increment came from other
participants re-running the source comparison. §15.5 is not self-enforcing, and FINAL.md carries
that as an open follow-up rather than pretending otherwise.
v1.37.0 - 2026-07-30
Roster: agy is a participant again, on Gemini 3.6 Flash (High).
antigravity-1wasinactivefrom 2026-07-18, whenkimi-1took the fourth roster slot. It
returns as a fifth participant alongsidekimi-1, not as a replacement.- The built-in
agyspec is pinned toGemini 3.6 Flash (High)— a generation newer than
the3.5 Flash (High)it replaces.agy modelsrefuses to list in a headless context
(Please sign in); passing an invalid--modelprints the valid list instead, which is how
the current set was read: 3.6/3.5 Flash Low/Med/High and 3.1 Pro Low/High. - The headless regression that had kept
agyout of headless rounds — no artifact emitted for
non-trivial--printprompts on 1.0.4 — is gone on 1.1.8, verified with a read-then-write
prompt that produced an accurate description of code it had to open to describe.
The pin lives in four places and they must not drift: ~/.parley/agents.toml, the deck's
parley-deck/agents.toml, the machine-local headless-agents.local.json, and the built-in Go
spec. TestDefaultSpecsPreferAntigravityAndStrongVerifiedDefaults catches the last one.
Known capacity limit. agy returned Individual quota reached … Resets in 158h59m after
two full review rounds on a large repository. It is an account quota, not a per-model limit — a
one-word prompt fails identically once it trips — so there is no cheaper fallback and no point
retrying. Budget it as a scarce reviewer, and record its absence from a round as an outage
rather than as an accept.
v1.36.0 - 2026-07-18
composite-agent-naming-and-roster-reinit — designed + implemented + reviewed via a real 5-agent Parley Deck run (claude/codex/hermes/kimi active, agy quota-out; unanimous ACCEPT, then a refutation-default code review + two fix-up cycles).
- Self-documenting agent display names
family_model_effort(e.g.codex_gpt-5.6-sol_xHigh,claude_opus-4.8-1m_max,agy_gemini-3.5-flash_high) —_separates the three meanings,-separates words,.keeps versions; camelCase effort (xHigh/cliDefault). Derived at render from config, never an identity, path-safe & fail-closed to parse. - Two-namespace schism fixed:
agents.Spec.IDsplit into a stable roster identity + anAdapterIDfamily for launch/vendor dispatch; a fail-closed participant resolver (exact spec-ID → explicit[roster.*]mapping → hard error, no prefix heuristic, participant-id grammar validated against path traversal). The roster ID is now the identity used for artifact paths/signoffs; the driver + every app path (run selection, preflight, consensus/FINAL drafter, request-signoffs, TUI steer) resolves a[claude-1, …]roster. parley roster show|init:showrenders the resolved roster with composite names;initproposes + writes the roster-ID→family[roster.*]mapping (idempotent against the target file,--scope session|machine,--dry-run/--yes/--json, atomic write, fail-closed on an unresolved/typoed adapter).- Autonomous write is first-class (
AutonomousWrite{Mode,Args,Scope},AUTOcolumn) and the built-in defaults are now actually autonomous. Posture change: built-inclaudemoved--permission-mode acceptEdits→bypassPermissions(workspace-scoped via--add-dir {root});codexapproval_policy="on-failure"→"never"(still--sandbox workspace-write);hermesgained--yolo. fastis the standard speed on a separate axis — same model + same effort, faster output (never a downgrade); central template defaultsspeed = "fast"; a guard test locks speed↛model/effort.- Skill (
parley-deck-skill): an Autonomous Execution (required) section with the per-CLI yolo mapping (incl. kimi's-p) + the display-name /parley roster initconvention.
v1.35.0 - 2026-07-04
Five features inspired by Hermes Agent v0.18.0, each designed + implemented + reviewed via a real multi-agent Parley Deck run (claude/codex/hermes/antigravity):
- completion-contracts-evidence-ledger (protocol):
checks:in 00-prompt.md now accepts an optional named list of{name, command}criteria (a completion contract). The driver runs each criterion, writes a secret-scrubbed/truncated per-criterion table into IMPLEMENTATION.md's## Validation evidencesection (committed each cycle), and vetoesstatus: completewhile any criterion fails at HEAD (fail-closed, independent of strict_gate). Scalar/absentchecks:unchanged. Protocol: LE-4 + Phase-5 + Phase-8. - named-roster-presets:
[rosters.<name>]+[defaults.track_rosters]in agents.toml;parley run --preset NAME --track Texpands a preset into the canonical participants (validated against the §2 roster, fail-closed);parley preset listshows presets, source layer, and stale-member warnings. - tui-round-summary: the driver emits an idempotent
round.digestevent when a round completes; the TUI Home tab renders a bounded position-map digest (per-agent one-liners, keyword mention-flags, next action) that never pushes Recent runs off-screen. - tui-editor-composer:
/editor+ ctrl+e open $VISUAL/$EDITOR/vi on a 0600 temp file and drop the (multi-line) result into the composer; the existing Enter path keeps steer/answer semantics. - parley-learn-playbooks (protocol):
parley learn <closed-idea-slug>distills a COMPLETED idea into an advisory playbook underparley-deck/playbooks/(fail-closed write boundary: parent-symlink refusal + O_EXCL). Protocol: §13.5 (advisory, beside consults).
Protocol changed (contracts + §13.5) — both COOPERATION.md copies + the skill fallback are in sync (drift guard green).
v1.34.0 - 2026-07-03
Protocol progressive-disclosure layout (pure reorder). COOPERATION.md now reads
core-first, reference-last: §9 (session-start checklist) was relocated to sit after §10 (TL;DR),
so the reference sections (§9, §11, §12, §13, §14 + Appendix A) all follow the core (§0–§8, §10).
A provably content-preserving move — every section keeps its number (all §N cross-references
resolve), no rule text was added, removed, or changed (the sorted-line diff is empty). Designed +
reviewed by a real multi-agent Parley (ideas/protocol-restructure-appendices, deliberation
track, unanimous ✅ ×3). No core ≤200 lines compression (that needs a separate §4 phase-split);
no ## Appendices banner (kept the change a zero-addition move).
v1.33.0 - 2026-07-03
Track-aware driver — deterministic §4.0 enforcement. The follow-up to v1.32.0's
conditional-rigor protocol text: the CLI/driver now actually routes and gates by the declared
track:. Designed + reviewed by a real multi-agent Parley (ideas/track-aware-driver,
deliberation track, unanimous ✅ ×3 review over three rounds).
parley classify [--files N --loc N --security …] [--declared T] [--json]— a pure,
script-checkable §4.0 classifier (deliberation-first, fail-safe: unknown/negative size is never
fast);--declaredexits 4 on an under-tier so CI can gate.track:enforcement in the driver (newinternal/trackpackage +driver.ReadTrack):
fastruns with 1 model-diverse-required reviewer, no cross-review rounds, and a 1-cycle
fix-up cap; explicitstandardcaps reviewers at 2, cross-review at 2, and fix-up at 2;
deliberationand an absenttrack:behave exactly as before (backward-compatible).- Hard-rejects (escalate, never silently proceed):
fast+auto_implement,fast+
strict_gate, and any non-solo config (0 independent reviewers) on an explicit track — the
contradiction check reads idea-level intent, not the--no-implement-masked runtime flag. - Refutation-default review stays structural and non-optional on every track.
- Also fixes a pre-existing driver-lock TOCTOU in
acquireLock(surfaced during review): an
empty/just-created lock file is now treated as held, closing a two-concurrent-holders race. - Deferred to follow-ups: per-track timeouts, fast §9.0 ping-skip, collapsed fast consensus/FINAL,
per-phase human gates, mid-idea upgrade.
v1.32.0 - 2026-07-03
Conditional-rigor tracks + developer Quickstart (DevX & speed). Designed and reviewed by a
real multi-agent Parley deliberation (ideas/meta-protocol-change-devx-speed, deliberation
track, unanimous ✅ ×4 design + ✅ ×3 review) to make the protocol usable without reading 1000
lines and much faster for ordinary work — without touching the safety core.
track: fast | standard | deliberationin00-prompt.md(defaultstandard), chosen by
an objective, fail-safe classifier (§4.0): deliberation-first, then fast, else standard;
on any doubt/boundary → the stricter track.deliberationis forced by protocol change,
security/secrets/production, data migration/irreversible,strict_gate,auto_implement,
pipeline/action, or public-API/schema break.- Per-track ceremony (§4.0 table = the single authoritative gate, overriding the
full-lifecycle defaults in §4/§5/§9.0/§11):fast= cross-review skipped, collapsed
consensus/FINAL, 1 model-diverse reviewer, ≤1 fix-up, ~5-min timeouts;standard= 2
reviewers, cross-review capped at 2, ~15-min;deliberation= today's full lifecycle, unchanged. - Invariants preserved on every track: non-solo, refutation-default review, round-1
independence, append-only signoffs, audit trail, §14 human brake, English-only, no-secrets. - DevX: a top-of-doc Quickstart (5-minute start), a "Who are you?" role table, a
core-vs-appendix reading guide, an off-ramp ("trivial reversible work needs no Parley"), and a
consolidated plain-EnglishLE-Nglossary (§4.0.1). - Additive change; both protocol copies stay byte-identical (drift guard green) and the skill
fallback is re-synced. Deferred to ratified follow-ups: deterministic CLI/driver enforcement
(track-aware-driver) and the physical appendix relocation (protocol-restructure-appendices).
v1.31.0 - 2026-06-24
Loop engineering (LE-1..11). A four-tier program — designed by a real multi-agent
Parley deliberation (ideas/loop-engineering-research) and implemented tier-by-tier with
full refutation review — that turns Parley Deck into a loop-engineering substrate with a
human-gated consensus brake.
- Tier 1 — verification honesty (LE-1/2/3/4). Phase 6 review is refutation-default
(reviewers assume the change is wrong until they fail to break it) and gains a
## Refutation attemptssection;strict_gatelets the driver block a close on a
not-certified-clean round (deterministic finding-scan veto, bounded byMaxFixupCycles);
optional reviewer model-diversity signal (require_model_diversity); achecks:
frontmatter command the driver runs before an auto-implement close (fail-closed for a
code-writing idea with nothing to check). - Tier 2 — loop budgets (LE-5/6/10). The driver enforces a per-run loop budget
(--max-driver-steps,--max-wall-clock,MaxCostUSD; central[defaults.loop]in
~/.parley/agents.toml) and escalates on breach; cost telemetry per tick; the §12.11
monitoring watcher opensstatus: candidateremediation ideas (no auto-staffed quorum). - Tier 3 — close-decision integrity (LE-7/11). Under
auto_implement, an
ACCEPT-WITH-RESERVATIONStriage or fewer than two independent reviewers escalates instead
of auto-completing; a fresh non-implementer goal-done check (advisory, fail-open, 2-min
bounded) runs before close. - Tier 4 — the outer loop (LE-8/9). New COOPERATION.md §14 human brake: any
automated/scheduled loop may discover-and-draft Phase 0/1 candidates only — never promote,
run, implement, land/merge, finalize, edit the roster, or override consensus without a
recorded human or full-quorum gate. Newparley loop tickcommand (internal/loop):
one-shot, scheduler-friendly, disabled-by-default; it draftsstatus: candidateidea
prompts from a signals file and dedupes them, and never runs/pushes/merges/finalizes/staffs
a quorum. Hardened against frontmatter injection, dedupe-digest collision, poisoned-dir
liveness, symlink escape (at any ancestor depth), and line-break separator tricks.
v1.30.6 - 2026-06-20
- Seeded
[defaults]tuning. The~/.parley/agents.tomltemplate now
defaultspreferred_transport = "local-dir"(local files) and trims the
default timeouts tosignoff_ms = 600000(10 min) andround_ms/
review_ms/deep_reasoning_ms = 1200000(20 min). Existing central files
are untouched (the template only seeds a fresh~/.parley/agents.toml).
v1.30.5 - 2026-06-20
- Central
[defaults]policy block in~/.parley/agents.toml. Beyond the
per-agent catalog, the central config (and a deck'sparley-deck/agents.toml)
now carries a[defaults]block, merged with the same low→high precedence:speed— applied as the global default speed for every agent spec
(config.LoadAgentSpecs); a per-agent override still wins.ping_tier—none/offopts out of the §9.0 hosted-PONG round-trip in
parley preflight/parley run(explicit--no-pingstill forces skip).preferred_transport—parley initseeds the fresh deck's transport from
it (local-dir/github-pr/gitlab-mr; unknown →local-dir).roster_change_policy,timeouts— exposed viaconfig.LoadDefaultsand
honored by the facilitator/skill.
Newconfig.LoadDefaults,protocol.InitWorkspaceWithTransport. The seeded
~/.parley/agents.tomltemplate includes a commented[defaults]block.
v1.30.4 - 2026-06-20
- Central per-user agent defaults (
~/.parley/agents.toml). A new
user-global config lists each agent's command, model, and reasoning/effort
level, inherited by every project. Wired intoconfig.LoadAgentSpecsas the
lowest config-override layer: built-in defaults →~/.parley/agents.toml
(central) →parley-deck/agents.toml/agents.local.toml(per-project
override) →$PARLEY_HEADLESS_AGENT_CONFIG. A deck overrides the central
default; fields the deck leaves unset fall through to the central value.
parley initseeds a starter~/.parley/agents.toml(never clobbering an
existing one) and prints where to override per-project.PARLEY_HOME
overrides the central dir (used for hermetic tests). - Reasoning/effort is now part of the deck-bootstrap confirmation. §0 and
the skill's deck-bootstrap step confirm the roster, each agent's model and
each agent's reasoning/effort level; the default reasoning/effort is the
strongest (highest) level the agent supports, falling back to
cli-defaultonly when it cannot be discovered. Protocol stays model- and
reasoning-agnostic.
v1.30.3 - 2026-06-19
- Fix: roster & model confirmation is a deck-BOOTSTRAP gate, not per-idea/per-session.
Corrects 1.30.2, which placed the mandatory roster + per-agent model confirmation in
the per-idea §9.0 readiness check. It now lives in §0 (deck bootstrap): the
confirmation fires once, whenparley-deck/is first created (parley init) —
not per idea, not per later session; an already-bootstrapped deck reuses the saved
selection. §9.0 keeps only the per-idea agent liveness ping (it no longer
re-selects models). Both COOPERATION.md copies; drift-guard lockstep; protocol stays
model-agnostic. (Skill side:parley-deck-skill1.3.3 moves the interactive flow to
"Transport Selection / deck bootstrap".)
v1.30.2 - 2026-06-19
- Mandatory session-start roster & model confirmation. §9.0 now states that at a
session's first readiness check the facilitator MUST confirm the active roster and
each agent's selected model with the user before the first idea; the user's
persistent per-agent model choice is recorded inmeta/headless-agents.local.json
and reused until changed (later sessions show the saved picks for explicit
confirmation). The protocol stays model-agnostic — it mandates the confirmation, not
any specific model. (Both COOPERATION.md copies; drift-guard lockstep. The detailed
interactive list-roster → confirm → list-models → pick flow lives in the
parley-deck-skillSKILL.md Startup Flow / Selection Checkpoint.)
v1.30.1 - 2026-06-19
- Pin the
claudeparticipant to Opus 4.8 (1M context). The built-inclaude
agent spec launched with--model opus— an alias theclaudeCLI resolves to
"the latest opus", which on some installs/accounts landed on an older Opus (e.g.
4.6). The spec now pins the exact model IDclaude-opus-4-8[1m](verified the
CLI accepts it) soparley runalways launches Opus 4.8 with the 1M-context window,
not whatever the alias happens to resolve to. (Tradeoff: a future Opus bump must be
re-pinned; the alias would auto-track but mis-resolved here.) The local
headless-agents.local.jsonroster was pinned to match.
v1.30.0 - 2026-06-19
Pre-idea readiness check (idea meta-protocol-change-preflight-readiness; 4-agent
deliberation, signoffs claude-1/codex-1/hermes-1, agy waived; Phase-6 review caught a
CRITICAL §1-bypass + 5 MAJORs, all fixed in fix-up cycle 1).
- Protocol §9.0 "Pre-idea readiness check" (both COOPERATION.md copies, drift-guard
lockstep): at idea start the facilitator (a) checks protocol freshness —
source=advisory/no-write,consumeradditive bump=auto-sync (zone-preserving),
breaking/unknown-role=confirm — and (b) hosted-PONG-pings the roster, gating per-idea
exclude / re-include behind explicit user confirmation. Plus a §5 quorum-locks-at-
Phase-0 sentence and a §7 carve-out (an upstream version sync is not a protocol change). - New
parley preflightcommand[--dir][--json][--yes][--ping-timeout][--no-ping]:
freshness classifier + zone-preserving merge + bounded concurrent hosted-PONG probe
(process-group-killed on timeout) + report/JSON + exit codes 0/1/2/3. Shared with the
parley runpre-check, which runs before idea creation, defaults to hosted PONG
(--no-ping/--no-preflightopt out), never auto-answers the new gates, and
hard-stops unattended without reading stdin. The §1 non-solo hard-stop is evaluated on
the exact--participantsset; confirmed exclusions are recorded in00-prompt.md. meta/version.jsongainsprotocolRole(source/consumer, fail-closed);parley initnow writesprotocolRole: consumer.- Also bundles a 4-participant roster update (§2 tables →
claude-1/codex-1/hermes-1/
antigravity-1; backend map). - Known follow-ups (deferred): roster-ID↔runtime-ID
-1reconciliation in reports;
preflight freshness-probe perf for source/--no-ping.
v1.29.0 - 2026-06-19
Protocol: Fusion + ExecPlans inspiration (idea
meta-protocol-change-fusion-execplans; 4-agent deliberation, signoffs
claude/codex/hermes, agy waived on a tooling hang). Additive, conditional-rigor
guidance applied byte-identically to both COOPERATION.md copies (drift-guard
lockstep); no Go logic changed; embedded parley init default stays genericized.
FINAL.mdgains static, self-contained design-time sections (Phase 4): Purpose
/ user-visible outcome, Context & orientation, Observable acceptance criteria,
Idempotence & recovery, Known risks / de-risking.FINAL.mdstays immutable.IMPLEMENTATION.mdbecomes a living execution doc (Phase 5): Progress
(timestamped), Decision Log, Surprises & Discoveries, Validation evidence, Outcomes
& Retrospective — so a fresh headless agent or the auto-drive driver can resume
from the artifact alone, and §13parley retrogets richer evidence.- Advisory "Comparison & blind spots" lens in
consensus.mdand
review/consensus.md(Phase 3/7) — surfaces what no participant addressed. Not a
gate; append-only signoffs remain the only gate. - Phase 6 reviewers may check observable acceptance criteria; severities
(CRITICAL/MAJOR/MINOR/NIT) unchanged. - §13 gains a confident-error retro evidence signal (diagnostic only — never a
new severity, blame label, or merge gate). - Full living/static sections are required only for complex /
auto_implement/
driver-managed / pipeline ideas; trivial or design-only ideas may useN/A. - Explicitly rejected (inspiration we did not adopt): confidence-by-breadth
gates, a single-model judge with authority, hiding raw rounds behind a summary, the
Fusion panel/recursion/cost/web-search machinery, collapsing the deck into one file,
proceed-without-prompting autonomy across gates, and the anti-list prose maximalism.
v1.28.1 - 2026-06-16
parley retroprecision fix. The deterministic scanner matched signal
patterns in free text, so it false-positived on prose that merely discussed
them — e.g. it flaggedrho-retro-toolingas "blocked-or-abandoned" because its
own review consensus quotedVerdict: BLOCK. Blocker detection is now
anchored to structure: a realStatus: ❌signoff line, or a## Verdict
heading whose leading token isBLOCK/BLOCKER(or contains ❌) — not the
substring "block" in prose, and not aREQUEST-CHANGES/"no blocking issues"
explanation. NOT-FIXED is counted only in review round files, dismissed-findings
only in consensus files. Regression test included
(TestBlockerDetectionIgnoresProse). Surfaced by dogfoodingparley retroon
this repo right after the 1.28.0 ship.
v1.28.0 - 2026-06-16
Retrospective optimization (RHO adoption — two reviewed ideas,
meta-protocol-change-rho-retrospective-optimization + rho-retro-tooling):
- Protocol §13 "Retrospective optimization" added to both COOPERATION.md
copies (drift-guard lockstep). A retrospective pass mines the deck's own history
to propose improvements but applies nothing: proposals enter as a normal
idea (protocol-text changes via a meta-protocol-change idea + human approval),
acceptance is the normal multi-agent gate (consensus + all-participant signoff +
no-regression), and RHO-style self-preference is a diagnostic note only. Defines
the layered harness (protocol / runtime "Repository Instruction Files" / local
"Agent Local Memory" / evidence corpus) and the guardrails (audit,
adversarial-trajectory hygiene, reversibility, multi-agent diagnosis). - New
parley retrocommand — read-only mining of the deck's structured
artifacts:scan(failure-density signals per idea),select(type-diverse
"hard cases" coreset),diagnose(grouped report), andpropose --slug(which
scaffolds only a single newideas/<slug>/00-prompt.md, fail-closed). No
raw session transcripts and no DPP/embeddings/re-rollout in v1; deterministic.
Inspired by RHO (arXiv:2606.05922) but replacing its single-model self-preference
with the deck's multi-agent quorum.
v1.27.0 - 2026-06-15
- Auto-drive now works on every transport. The driver's auto-advance was
hard-gated tolocal-dir, so agithub-pr/gitlab-mrrun stalled at
round-01 even with auto-drive on. The gate is now transport-independent: the
canonical artifacts (rounds, consensus, FINAL, …) are the source of truth under
every transport, so auto-drive advances them everywhere. Only--auto/
--no-autogates it now. The driver still does NOT create PR/MR branches — that
mirroring stays a manual, ergonomic step.
v1.26.0 - 2026-06-13
- New TUI
/runcommand. Advance the protocol on demand from inside the live
TUI — it kicks the auto-driver (cross-review → consensus → finalize → opted-in
implementation) for the current run. Most useful with--no-autoruns; under
the default auto-drive it is a no-op once driving has started (idempotent). The
command appears in/helpand slash autocomplete.
v1.25.0 - 2026-06-13
Auto-drive is now the default.
parley runauto-drives by default. After round-01 the protocol now
advances automatically — cross-review rounds, consensus draft, signoff
requests, and finalize — without you running the next step. Pass--no-auto
to opt out (stop after round-01 and advance manually). The flipped flag also
governs the launch prompt: a default run launches and drives unattended, while
--no-auto(without--yes) restores the pre-launch confirmation.- Auto-drive now runs inside the TUI. Previously the driver only ran on the
--no-tuipath, so a TUI run stalled at round-01. The driver now runs in the
background while the live TUI shows it advancing (its output is discarded so it
never corrupts the render; quitting the TUI stops it). - Code-mutation stays gated. The implementation/fix-up phases (Phase 5–8) are
still only auto-driven when the idea opts in viaauto_implement; flipping the
auto default does not auto-write code.--no-implementstill stops the driver
atFINAL.md. parley continueis unchanged: it still prints the next action by default and
executes it only with--auto.
v1.24.1 - 2026-06-13
Maintenance (idea embedded-default-protocol-resync, PR #47):
- Embedded default protocol resynced with the live deck. The
parley init
bootstrap template (internal/protocol/defaults/COOPERATION.md) gained the
missing## 12. Pipeline blocks & action stagessection (byte-identical to the
live deck) and was genericized: headerWorkspace/Createdare now
placeholders and both §2 tables ship empty bodies, so a freshlyparley init-ed
project no longer inherits this repo's roster/workspace. - Anti-drift guard: a fail-closed Go test (
TestEmbeddedDefaultMatchesLiveDeck)
asserts the embedded default stays in sync withparley-deck/COOPERATION.md
(modulo five documented, anchored project-specific zones) and that the embedded
bootstrap shape holds — so a protocol edit landing in only one copy now breaks
the build. PlusTestDefaultCooperationForInitfor the init output. - Synced the project deck to
parley-deck-skill1.3.1 (§12 was already present).
v1.24.0 - 2026-06-12
Adopted from the MIT-licensed "kindly" skill (ideas runner-hardening-kindly +
meta-protocol-change-review-gate-honesty):
- Agent supervision: first-output watchdog (120s, one retry), stall guard
(30m, output-growth based), persistedagent.heartbeatevents (60s; excluded
from transcripts/triggers); counting writers — zero healthy-path I/O; typed
agent.no_first_output/agent.stalledevents appended BEFORE the kill.
Config:first_event_timeout_ms,stall_timeout_ms,heartbeat_ms. - Failure classification:
agent.failednow carriesfailure_class+
recovery_hint(rate-limit/auth/billing/overloaded/…); surfaced in the TUI
narrator and agent headers. - Artifact beats exit code: a validated artifact with an ordinary nonzero
exit finishes withagent_exitinstead of failing (removes the agy
wrote-then-exit-1 flake); ACP validation now respects the run phase; fix-ups
validate IMPLEMENTATION.md instead of trusting exit 0;Result.Success(). - Review snapshots: Phase 6 reviewers read a disposable shared-clone
checkout on local tmp (dirty trees become temp-index snapshot commits);
artifacts move back via copy+fsync+rename; loud fallback events. - parley consult +
parley consults list: advisory cross-agent questions
with durable artifacts under parley-deck/consults/ (never quorum evidence). - Hardening: claude participants shed nested host markers; read-only git probes
set GIT_OPTIONAL_LOCKS=0;fsutil.AppendLine; docs/agent-cli-mechanics.md. - Protocol: Phase 6 "Review briefs and dispositions" (no-suppression),
Phase 8 opt-instrict_gate+ "Stopping judgment", §8 "Consults" standing;
mirrored to the embedded default protocol.
v1.23.0 - 2026-06-12
- Protocol visibility in the live TUI (idea
tui-protocol-visibility):
collapsible protocol ribbon on every tab (Ctrl+P), tab activity glyphs
(spinner/silent/delivered/failed/STALE), woven narrator lines, a Protocol
tab with pipeline/delivery/signoff/next panes, and a Home phase column. - New
run.phaseevent emitted by the driver after every phase-changing
cursor commit; cursor save errors are no longer discarded. driver.RebuildDetailexports the phase evidence (review round, review
consensus, implementation status) in one disk pass.- Declared
buffers_stdoutagent flag (TOML + run.created runtime payload);
silent buffered agents get a structured placeholder instead of a blank tab. - Status line shows
ph=N:<phase> wait=<agents>instead ofround=<status>.
v1.5.4 - 2026-05-27
- Treat ACP as a selectable launch mode on an existing agent instead of
exposing duplicate*-acpagent IDs for Codex, Claude, and Hermes. - Add the TUI
akey for session-only ACP launch overrides and show ACP
command details in the selected-agent panel. - Add
acp_argsruntime configuration so local installs can enable ACP for
CLIs when their concrete ACP launch args are known. - Apply TUI launch-mode overrides to newly started runs and record effective
launch metadata in run runtime events.
v1.5.3 - 2026-05-27
- Add Antigravity CLI
agyas a first-class headless agent and default
replacement for Gemini. - Mark Gemini as legacy compatibility while keeping existing overrides working.
- Prefer verified stronger defaults for Claude (
opus/max) and Hermes
(xai/grok-4.3) while keeping Antigravity model/thinking fields at
cli-defaultuntil the CLI exposes flags. - Update project and embedded protocol rosters, docs, examples, and runtime
configuration defaults for the Antigravity migration.
v1.5.2 - 2026-05-26
- Add TUI planner action execution and focus-aware action controls.
- Refresh dashboard and live TUI layouts with height-aware compact modes,
two-column normal views, semantic badges, and short-terminal tests. - Embed the full default
COOPERATION.mdprotocol for workspace initialization
while preserving local-dir bootstrap transport. - Record concrete project roster metadata and ignore machine-local headless
agent launch config. - Improve
parley version --allproject status probing timeouts and fallback
behavior.
v1.5.1 - 2026-05-25
- Complete Parley review cycles for the continuous-run TUI planner slice and
version-awareness project sync. - Unify planner and manifest next-action serialization through a shared
internal/runactiontype. - Make continuation planning round-aware and remove hardcoded
codexownership
from generated continuation commands. - Add
parley version --dir DIR --allproject targeting, indented JSON output,