Skip to content

Make Room exhaust participate-safe - #72

Merged
vks-archastro merged 1 commit into
mainfrom
fix/evidence-publish-hardening
Aug 8, 2026
Merged

vks-archastro merged 1 commit into
mainfrom
fix/evidence-publish-hardening

Conversation

@vks-archastro

Copy link
Copy Markdown
Contributor

Review on ArchCode

Problem and author intent

Room participate routines now filter machine exhaust before granting an LLM turn, but the public kit only carried its classification in metadata.post_type. If the first-class message type was absent, ordinary session exhaust woke the resident agent. The PR-evidence attachment used a separate sender and had the same problem. Optional metadata enrichment could also fail soft by deleting post_type, recreating the bug on an error path.

This change stamps machine-generated Room activity as first-class type: exhaust at every kit-owned delivery boundary while leaving questions, handoffs, notifications, and approval requests conversational.

What changed

  • Classify non-conversational Room post types as exhaust in primary and mirror delivery.
  • Preserve minimal protocol metadata when optional Git/session enrichment fails.
  • Mark the existing single current PR-evidence artifact attachment as exhaust.
  • Bump the public package to 0.3.3 and the observable kit version to 2026.08.07.1.

Scope

Client kit only. No platform backend or Room UI behavior changes.

Risk

Low to medium. The payload gains one supported message field, but incorrect classification could either wake agents unnecessarily or suppress useful participation. The classification matrix and real outbound paths are covered directly.

User impact

Participate routines can remember continuous coding exhaust without spending a model call on it. Human conversational posts continue to wake resident agents. PR evidence remains one current artifact rather than accumulating stale trajectory cards.

Testing

  • Canonical end-to-end proof: tests/test_pr_evidence_publish.py, test_two_agent_sessions_publish_one_current_artifact_over_tcp_without_github. Two real CLI processes cross Git and TCP boundaries, publish and update one current artifact, and assert that its single attachment message is classified as exhaust.
  • python3 tests/test_message_type.py
  • python3 tests/test_pr_evidence_publish.py
  • python3 tests/test_primary_outbox.py
  • python3 tests/test_mirror_queue.py
  • python3 tests/test_pr_evidence_conflict.py
  • python3 tests/test_pr_evidence_performance.py
  • bash tests/installer_battery.sh
  • npm pack --dry-run --json
  • git diff --check

All listed checks pass locally.

Follow-ups and known issues

  • The final cross-system participate proof belongs in the firstlanding vendor-sync PR: developer message POST to persisted type to filtered participate turn/no-turn.
  • The older trajectory-card proposal is intentionally excluded. The current API cannot update message metadata/type, so immutable per-version cards would accumulate stale summaries. The existing PR artifact attachment remains the single current-version surface.

@vks-archastro
vks-archastro merged commit 2db9cd5 into main Aug 8, 2026
3 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