Skip to content

fix: address the 0.7.0 pre-release review findings - #65

Merged
backnotprop merged 5 commits into
mainfrom
fix/pre-release-review
Sep 8, 2026
Merged

fix: address the 0.7.0 pre-release review findings#65
backnotprop merged 5 commits into
mainfrom
fix/pre-release-review

Conversation

@backnotprop

Copy link
Copy Markdown
Contributor

Fixes the four actionable findings from the 0.7.0 pre-release compatibility review, all in code that landed since v0.6.0.

  1. Archive session id (feat: archive submitted feedback to the shared plannotator index #56 follow-up). The reply-review provenance carried the transcript path in its session field, so archive records had the path in both target.agent.session and target.agent.transcript, against the frozen contract. Located now carries a real session id: an explicit --session-id or Herdr's PLANNOTATOR_TUI_SESSION_ID wins, else the id derived from a uuid-shaped transcript name (Claude Code, Droid, Codex rollouts, Copilot session dirs), else absent. Paths are never written to session.
  2. README persistence promise. "Reply reviews are never written to disk" was false once the archive landed. The sentence now says annotations stay in memory but submitted feedback is archived, and a new "Feedback archive" subsection documents what, where, when, the shared format, and both opt-outs with env-over-config precedence.
  3. Footer discovery hint (fix(last): say when the folder fallback picked the transcript #64 follow-up). The Claude and Copilot resolvers now report which rung matched. A pid-registered session is Exact and gets no hint; cwd and folder rungs say "newest transcript for this folder"; Copilot's unscoped rungs say "newest session".
  4. Test isolation. UI tests pointed at the real data directory and archived a synthetic record on every cargo test. Every App under test now uses a scratch data dir; verified by checksumming the real feedback/ tree before and after a full run with no env override (120 files, identical).

Gate: cargo fmt --all --check, cargo clippy --locked --workspace --all-targets -- -D warnings, cargo test --locked --workspace (195 passed). Production behavior changes are limited to items 1 and 3.

The app tests opened App against the developer's own Plannotator data
directory, and the send test's Discard delivery succeeds, so every run
appended a record to the real feedback archive. Point each app under
test at a fresh temp data dir and assert the send lands there.
The Claude Code and Copilot resolvers walk a ladder whose first rung is
the session registered for the agent's pid, yet every result was labelled
a folder guess, so the footer said "showing the newest transcript for this
folder" even when the pid had identified the session. The resolvers now
report which rung matched; a pid-registered session is exact, cwd and
folder rungs stay the folder's newest transcript, and Copilot's unscoped
rungs read as the newest session.
message_source put the transcript path into Provenance::AgentMessage's
session, so an archived message review carried the path in both
target.agent.session and target.agent.transcript, where the shared
feedback-archive contract wants the host-assigned session id in session.
Carry the real id instead: the one Herdr or --session-id gave, else the
one a uuid-named Claude Code, Droid, Codex or Copilot transcript carries
in its name, else nothing. The transcript path stays in the app's own
field for the archive's transcript.
The README said reply reviews are never written to disk, which stopped
being true when the feedback archive landed: a successful send or copy
appends the submitted feedback to the shared archive for every review
kind. Say what is written, where, when, and how to turn it off.
A session id given next to a transcript path is validated before any reader
runs, and it is recorded only for hosts whose transcript names carry no id of
their own. A uuid-named transcript is the authority for its own id, so a
contradicting id can no longer be archived as the reviewed message's session.
@backnotprop
backnotprop added this pull request to the merge queue Sep 8, 2026
Merged via the queue into main with commit 2a0b044 Sep 8, 2026
2 checks passed
@backnotprop
backnotprop deleted the fix/pre-release-review branch September 8, 2026 15:42
@backnotprop backnotprop mentioned this pull request Sep 8, 2026
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