Skip to content

Follow-up: deferred review findings from PR #522 #535

Description

@philcunliffe

Triage record for PR #522 (fix/issue-460, head de7cbc6), after two
neutral-review rounds. Both rounds found real validation/overclaim holes and
fixed them in-branch (mirror-image unignore receipt in round 1; the
isinstance(True, int) bool hole in three SKILL.md verifiers in round 1;
the hypaware-unignore skill's total absence of response validation in
round 2). Nothing was left as a deferred fix — triage independently
re-verified each fix landed and re-swept for anything a third round would
have caught. Recording the disposition here since the PR is going straight
to ready-hold without a formal round-3 review.

Independent verification performed (not taken on trust)

  • Full-tree sweep for callers of POST/DELETE /_hypaware/ignore/session,
    with no file-extension filter (round 2's own sweep only checked outside
    test/, llp/, and the smoke flow with a .md/.js lens). Grepping the
    literal route string and separately ANTHROPIC_BASE_URL/8787 across the
    whole tree turns up exactly the same four non-server call sites round 2
    found: claude/skills/hypaware-ignore/SKILL.md (POST),
    claude/skills/hypaware-unignore/SKILL.md (DELETE),
    claude/skills/hypaware-privacy/SKILL.md (POST), and
    codex/skills/hypaware-privacy/SKILL.md (POST). All four apply the full
    three-part check (ignored a real boolean for the verb's direction, total
    a real number with bool excluded, session_id echoed byte-exact). No
    fifth caller exists. claude-desktop/src/consent.js and
    codex/src/backfill.js matched the broad grep on unrelated ANTHROPIC_BASE_URL
    / "ignore" mentions (a doc comment and an unrelated stdio: 'ignore'); ruled
    out by reading both in full. There is no codex/skills/hypaware-unignore
    skill at all (asymmetric by design — codex's privacy skill has no reverse
    path today), so there is no unswept mirror on that side either.
  • Ran the new test file directly: test/plugins/ai-gateway-session-ignore-receipt.test.js
    — 9/9 pass at de7cbc6.
  • Ran the full suite: 3087 pass / 8 fail / 1 skipped. The 8 failures are
    exactly test/core/leave-command.test.js (not ok 892-900 minus 895),
    matching the tracked pre-existing baseline from issue test/core/leave-command.test.js: 8 of 11 tests fail on master (exit 1 from hyp leave), red since the tests were introduced #512 (fix held in PR
    hyp leave: the daemon status query must answer, not throw #527), not a regression from this PR.
  • npm run typecheck: clean.
  • Read the full round-1 and round-2 review comments and the LLP 0066/0067
    diffs; the fixes described are present in the committed tree at de7cbc6,
    not just claimed in prose (R14, MEMBERSHIP_NOTE, MEMBERSHIP_GUARANTEE,
    the unignore skill's rewritten verifier block).

Residual 1 — cross-PR overlap with #520 (not a new finding, no action here)

PR #520 mints LLP 0166 §membership-not-grain, which states the same #460
contract in prose; this PR states it as LLP 0066 §receipt-is-membership +
R14. Both PRs also edit llp/0067-session-opt-out.design.md in different
hunks. Already surfaced to the maintainer on both PR threads
(neutral-cross-ref comment on #522, posted before round 1) with three
options for which document should be normative. Explicitly the maintainer's
call, not a defect, and not re-litigated here. No new issue filed for it —
tracked on the existing thread.

Residual 2 — anything else found still open

Nothing. Every finding from both review rounds was fixed in-branch and
independently re-verified above. The fifth-caller sweep came back empty.

Disposition

No true blocker. PR #522 is safe to ship at de7cbc6.

Backlink: #522

Metadata

Metadata

Assignees

No one assigned

    Labels

    neutral:fixDelegate this issue to neutral for an autonomous fix attempt (reproduce -> fix -> PR)neutral:stuckneutral attempted this but cannot complete it autonomously — needs a human

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions