~bigbes/sr-ht-spec · parade

main · last commit 18 hours ago · 8tmadfpi

← Back to the parade

spec-by6.3.4 mcpsrv: spec_comment tool (read + reply, no resolve) Past Stand

status: closed P3 task
bd reopen spec-by6.3.4
Created byEugene Blikh
Ownerbigbes@gmail.com
Created2026-07-24T18:57:18Z
Updated2026-07-24T19:44:55Z
Closed2026-07-24T19:44:55Z
Description
The agent half of the loop. spec_comment lets an agent list the comments on a proposal it authored and reply to them; it must NOT resolve one, since an agent marking its own critique resolved defeats the auto-merge gate. Reuses the Phase 3 provenance path (agent + agent_session) for reply authorship, and the existing owner+agents read gate from spec-jjo. mcpsrv/mcpsrv.go:39 still documents spec_comment as deliberately absent — update that comment when it lands.
Notes
Implemented. Divergence from this issue's original text, accepted: reads are NOT narrowed to 'a proposal the agent authored'. Agent identity is self-declared (X-Agent/X-Agent-Session headers) and all agents share one token, so an authorship check would gate on a string the caller chooses — stricter on paper than the owner+agents read plane (spec-jjo) it sits in, while enforcing nothing. Revisit if/when per-agent token scoping lands (spec-by6 backlog).

No-resolve is enforced by TYPE: Commenter names only Threads/ReplyTo/GetProposal/ProposalDiff, so service.CommentOn and service.ResolveThread are unreachable from the handler however service/ grows. Writer is now Proposer+Commenter.

Extra beyond the issue: replying requires proposal+thread and checks membership, because a thread id is global and service.ReplyTo takes only the id — a mistyped id would otherwise reply on a stranger's proposal.

Depends on

  • spec-by6.3.2 — service: comment API + policy auto-merge gate blocks closed
  • spec-by6.3 — Phase 5b: inline comments on proposals parent-child closed

Depended on by

Nothing depends on this issue.

Prerequisite chain — everything this waits on, transitively

  • spec-by6.3.2 — service: comment API + policy auto-merge gate blocks closed
  • spec-by6.3 — Phase 5b: inline comments on proposals parent-child closed
  • spec-by6 — Phase 5: comments, webhooks, mutations, vector search parent-child open
  • spec-3vz — Phase 4: review plane — approve/reject in a browser blocks closed
  • spec-ejq — spec.sr.ht — reviewable document storage for humans and agents parent-child open
  • spec-zqb — Phase 3: write plane — agents propose blocks closed
  • spec-by6.3.1 — Comment anchors: core type + db schema blocks closed

No comments.

Close reason

spec_comment: list threads with anchor state + reply; no-resolve enforced by interface. 9 tests green, no DB needed. Committed f82d90a.
  • Eugene Blikh added under epic spec-by6.3 · 2026-07-24T21:57:17Z
  • Eugene Blikh created the issue · 2026-07-24T21:57:17Z
  • Eugene Blikh added dependency on spec-by6.3.2 · 2026-07-24T21:57:30Z
  • Eugene Blikh updated notes to Implemented. Divergence from this issue's original text, accepted: reads are NOT narrowed to 'a proposal the agent authored'. Agent identity is self-declared (X-Agent/X-Agent-Session headers) and all agents share one token, so an authorship check would gate on a string the caller chooses — stricter on paper than the owner+agents read plane (spec-jjo) it sits in, while enforcing nothing. Revisit if/when per-agent token scoping lands (spec-by6 backlog). No-resolve is enforced by TYPE: Commenter names only Threads/ReplyTo/GetProposal/ProposalDiff, so service.CommentOn and service.ResolveThread are unreachable from the handler however service/ grows. Writer is now Proposer+Commenter. Extra beyond the issue: replying requires proposal+thread and checks membership, because a thread id is global and service.ReplyTo takes only the id — a mistyped id would otherwise reply on a stranger's proposal. · 2026-07-24T22:44:53Z
  • Eugene Blikh closed the issue · 2026-07-24T22:44:55Z
    spec_comment: list threads with anchor state + reply; no-resolve enforced by interface. 9 tests green, no DB needed. Committed f82d90a.
Stored rows — what this pane was built from, as read
issues 1 row
id spec-by6.3.4
content_hash 9a60d8cbdadc7a62b1b132d40e77bcd0d794e4d0a6a37c0c7120b2bc59085889
title mcpsrv: spec_comment tool (read + reply, no resolve)
description The agent half of the loop. spec_comment lets an agent list the comments on a proposal it authored and reply to them; it must NOT resolve one, since an agent marking its own critique resolved defeats the auto-merge gate. Reuses the Phase 3 provenance path (agent + agent_session) for reply authorship, and the existing owner+agents read gate from spec-jjo. mcpsrv/mcpsrv.go:39 still documents spec_comment as deliberately absent — update that comment when it lands.
design
acceptance_criteria
notes Implemented. Divergence from this issue's original text, accepted: reads are NOT narrowed to 'a proposal the agent authored'. Agent identity is self-declared (X-Agent/X-Agent-Session headers) and all agents share one token, so an authorship check would gate on a string the caller chooses — stricter on paper than the owner+agents read plane (spec-jjo) it sits in, while enforcing nothing. Revisit if/when per-agent token scoping lands (spec-by6 backlog). No-resolve is enforced by TYPE: Commenter names only Threads/ReplyTo/GetProposal/ProposalDiff, so service.CommentOn and service.ResolveThread are unreachable from the handler however service/ grows. Writer is now Proposer+Commenter. Extra beyond the issue: replying requires proposal+thread and checks membership, because a thread id is global and service.ReplyTo takes only the id — a mistyped id would otherwise reply on a stranger's proposal.
status closed
priority 3
issue_type task
assignee NULL
estimated_minutes NULL
created_at 2026-07-24T18:57:18Z
created_by Eugene Blikh
owner bigbes@gmail.com
updated_at 2026-07-24T19:44:55Z
closed_at 2026-07-24T19:44:55Z
closed_by_session
external_ref NULL
spec_id
compaction_level 0
compacted_at NULL
compacted_at_commit NULL
original_size NULL
sender
ephemeral 0
wisp_type
pinned 0
is_template 0
mol_type
work_type
source_system
metadata �{}
source_repo
close_reason spec_comment: list threads with anchor state + reply; no-resolve enforced by interface. 9 tests green, no DB needed. Committed f82d90a.
event_kind
actor
target
payload
await_type
await_id
timeout_ns 0
waiters
hook_bead
role_bead
agent_state
last_activity NULL
role_type
rig
due_at NULL
defer_until NULL
no_history 0
started_at NULL
is_blocked 0
dependencies 2 rows
id 0bcd2cb8-91ff-5495-af9b-118d58218cb0
issue_id spec-by6.3.4
type blocks
created_at 2026-07-24T21:57:30Z
created_by Eugene Blikh
metadata �{}
thread_id
depends_on_issue_id spec-by6.3.2
depends_on_wisp_id NULL
depends_on_external NULL
id 7e0d0f19-7eb9-5aae-ad63-b01c54c304ca
issue_id spec-by6.3.4
type parent-child
created_at 2026-07-24T21:57:17Z
created_by Eugene Blikh
metadata �{}
thread_id
depends_on_issue_id spec-by6.3
depends_on_wisp_id NULL
depends_on_external NULL
events 3 rows
id 019f957d-310a-7bbf-b9e0-a4a74e4eca7b
issue_id spec-by6.3.4
event_type created
actor Eugene Blikh
old_value
new_value
comment NULL
created_at 2026-07-24T21:57:17Z
id 019f95a8-c52f-776a-a83c-3e53ca1eda2b
issue_id spec-by6.3.4
event_type updated
actor Eugene Blikh
old_value {"id":"spec-by6.3.4","title":"mcpsrv: spec_comment tool (read + reply, no resolve)","description":"The agent half of the loop. spec_comment lets an agent list the comments on a proposal it authored and reply to them; it must NOT resolve one, since an agent marking its own critique resolved defeats the auto-merge gate. Reuses the Phase 3 provenance path (agent + agent_session) for reply authorship, and the existing owner+agents read gate from spec-jjo. mcpsrv/mcpsrv.go:39 still documents spec_comment as deliberately absent — update that comment when it lands.","status":"open","priority":3,"issue_type":"task","owner":"bigbes@gmail.com","created_at":"2026-07-24T18:57:18Z","created_by":"Eugene Blikh","updated_at":"2026-07-24T18:57:18Z"}
new_value {"notes":"Implemented. Divergence from this issue's original text, accepted: reads are NOT narrowed to 'a proposal the agent authored'. Agent identity is self-declared (X-Agent/X-Agent-Session headers) and all agents share one token, so an authorship check would gate on a string the caller chooses — stricter on paper than the owner+agents read plane (spec-jjo) it sits in, while enforcing nothing. Revisit if/when per-agent token scoping lands (spec-by6 backlog).\n\nNo-resolve is enforced by TYPE: Commenter names only Threads/ReplyTo/GetProposal/ProposalDiff, so service.CommentOn and service.ResolveThread are unreachable from the handler however service/ grows. Writer is now Proposer+Commenter.\n\nExtra beyond the issue: replying requires proposal+thread and checks membership, because a thread id is global and service.ReplyTo takes only the id — a mistyped id would otherwise reply on a stranger's proposal."}
comment NULL
created_at 2026-07-24T22:44:53Z
id 019f95a8-cbc7-7080-831a-ec34bf9de8cf
issue_id spec-by6.3.4
event_type closed
actor Eugene Blikh
old_value
new_value spec_comment: list threads with anchor state + reply; no-resolve enforced by interface. 9 tests green, no DB needed. Committed f82d90a.
comment NULL
created_at 2026-07-24T22:44:55Z