Skip to content

v3.1 hardening: review fixes + from-zero onboarding (v0.4.0)#2

Merged
Hsi431 merged 6 commits into
mainfrom
v3.1-hardening
Jul 6, 2026
Merged

v3.1 hardening: review fixes + from-zero onboarding (v0.4.0)#2
Hsi431 merged 6 commits into
mainfrom
v3.1-hardening

Conversation

@Hsi431

@Hsi431 Hsi431 commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Follow-up hardening after an external static review, plus onboarding fixes.

  • U14: exec envelope leads with agent_river_contract: "exec-v1" + message_id
  • U15: codex/exec runner replies parse agent-dispatch blocks (parity with opus lane, still owner-approved)
  • U16: gate approval buttons bound to task content hash, fail-closed for stale/legacy buttons
  • U17: SECURITY.md repository trust model + state retention
  • U18: restore --direct-send-user-add/-remove (lost in v1 retirement; fresh installs could not become owner) + README from-zero onboarding (en/zh-Hant)
  • v0.4.0 bump + changelog

384 tests green. Breaking: pre-upgrade gate buttons stop working (by design).

🤖 Generated with Claude Code

Hsi431 and others added 6 commits July 6, 2026 09:29
…ility

Planned and written by Fable (docs-only slice). Adds explicit statement that
registering a repo means executing its code (tests, inherited config), and
that state-dir backup/encryption/retention is the operator's responsibility.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Spec by Fable, implemented by Codex, reviewed by Fable (ran npm test fail 0,
read full diff: minimal 2-file change, real dual assertions with unique token).
Envelope now leads with agent_river_contract: "exec-v1" and message_id so the
exec contract can evolve without breaking adapters.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Spec by Fable, implemented by Codex, reviewed by Fable (ran npm test fail 0,
read full diff). Codex and exec runner replies now run
parseDispatchProposal + createDispatchApproval like the opus exchange runner,
so any lane can propose cross-agent dispatch — still behind owner approval.
Ledger-backed tests cover both lanes plus the no-block negative case.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Spec by Fable, implemented by Codex, reviewed by Fable (ran npm test fail 0,
read full diff + all 5 new tests). Gate buttons carry taskApprovalHash
(sha256 of repo+mode+request, 8 hex chars); approve rejects legacy no-hash
buttons and stale hashes, reports already-approved idempotently. Reject path
stays fail-safe and accepts old buttons.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Written by Fable. U4 retirement accidentally dropped the only command that
manages the owner allowlist (direct_send_user_allowlist), leaving fresh
installs unable to become owner; restore --direct-send-user-add/-remove on
telegram-codex-policy-set (smoke-tested add+remove against a temp state).
README (en + zh-Hant): prerequisites section, owner/bot bootstrap steps in
Quickstart order that actually works, session transcript example, owner-list
management commands.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Hsi431
Hsi431 merged commit 5cbc0c4 into main Jul 6, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant