Skip to content

feat(feedback): move to the 0.11.3 survey and send on skip - #382

Merged
theCodeDrift merged 1 commit into
mainfrom
feat/feedback-survey-0-11-3
Sep 22, 2026
Merged

theCodeDrift merged 1 commit into
mainfrom
feat/feedback-survey-0-11-3

Conversation

@theCodeDrift

@theCodeDrift theCodeDrift commented Sep 22, 2026 •

Copy link
Copy Markdown
Member

The PostHog feedback survey is replaced for 0.11.3 (01a0b1a0-… → 01a0c7b9-…). Seven questions, only the first required, every question id new, so the key-to-id map is rebuilt rather than edited.

Contract. ruleKind (required) replaces goal; verbatim and completed become optional; agents and mostValuableRule are new optional keys. The map in survey/constants.ts stays the only place ids live and buildSurveyResponse is unchanged.

Behaviour. The invite asks for one thing, the user's own words, and offers two replies: words or skip. Either way the agent fetches agent feedback and sends its own account of the session; skip just leaves verbatim out. Six of the seven answers are the agent's observations, which are telemetry the user already opted into by leaving it enabled, so no reply the invite offers produces nothing. feedback dismiss stays as the explicit opt-out for a user who volunteers "don't send anything", and the invite tells the agent to point them at DO_NOT_TRACK / TASKLESS_TELEMETRY_DISABLED for the rest.

Recipes. feedback-invite v2 and feedback v2. The old one-permitted follow-up (to fill completed) is gone; completed is optional and Unknown exists.

The cadence store is keyed by survey id, so every install is invited once more. patch; the change is archived on this PR (dry-run: 19 → 23 scenarios, none dropped).

@theCodeDrift

Copy link
Copy Markdown
Member Author

@claude /review

@claude

claude Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

Claude finished @theCodeDrift's task in 2m 5s —— View job


Review mode: incremental — read 0 prior review thread(s) before reviewing.

.prior-review.json contains no reviewThreads and no reviews, only the single top-level comment that triggered this run (@claude /review). There is nothing previously raised to classify as addressed or still-open, so this is the first review of this PR: the whole diff below is assessed fresh.

  • Read .prior-review.json
  • Gather PR diff and metadata via gh pr diff / gh pr view
  • Review schema changes (packages/cli/src/schemas/feedback.ts)
  • Review survey constants (packages/cli/src/survey/constants.ts)
  • Review agent recipes (feedback-invite.md, feedback.md)
  • Review OpenSpec spec deltas / archive
  • Review tests
  • Post final findings

Summary

This is a well-scoped, internally consistent change: SURVEY_ID, the FeedbackKey map, the Zod schema, both recipes, the spec, and the tests all agree with each other and with the design/proposal docs. buildSurveyResponse stays a generic loop over SURVEY_QUESTIONS, so it needed no change and got none. The archived spec delta (openspec/changes/archive/2026-09-21-feedback-survey-0-11-3/specs/cli-feedback-survey/spec.md) restates both MODIFIED Requirements blocks in full under their original titles, matching what landed in openspec/specs/cli-feedback-survey/spec.md — no scenario silently dropped, no requirement silently renamed (the trap called out in this repo's CLAUDE.md). I did not find any correctness bugs in the schema, cadence, or command logic.

[New] Stale doc comment referencing a removed key
packages/cli/src/survey/constants.ts:6
The module docblock still reads:

"it writes verbatim, goal, and so on, and feedback send translates"

goal was removed from FeedbackKey/inputSchema by this PR and replaced with ruleKind (required). This comment is the one place in src/ that wasn't updated — a goal/FeedbackKey grep confirms no other stale reference exists. Low severity (comment only, no runtime effect), but it now describes a key that no longer exists, which is exactly the kind of drift this same docblock warns about two paragraphs later ("A question's id is PostHog's and changes whenever the question does").

No other findings survived review. In particular, I checked and found no issues in:

  • The optional-key/non-blank enforcement (.trim().min(1).optional() ordering in schemas/feedback.ts) — correctly rejects whitespace-only optional answers while allowing omission, and is covered by feedback-schema.test.ts.
  • The cadence gate (survey/invite.ts, survey/cadence.ts) — unchanged by this PR, and correctly keyed by SURVEY_ID so the new survey id naturally re-invites every install, as the proposal claims.
  • The invite/recipe branching (skip/silence/unrelated → send with verbatim omitted; explicit refusal → feedback dismiss + telemetry opt-out line) — the prose in both .md files, the spec requirement, and feedback-recipes.test.ts all agree.
  • Numbered steps in feedback.md were correctly renumbered after the follow-up-question step was removed (no dangling "step 2" references elsewhere).
  • The changeset's patch bump is correct under this repo's 0.y.z rule (surface addition/removal pre-1.0).

@theCodeDrift
theCodeDrift merged commit 5047148 into main Sep 22, 2026
12 checks passed
@theCodeDrift
theCodeDrift deleted the feat/feedback-survey-0-11-3 branch September 22, 2026 07:58
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