Skip to content

docs: truth up README, changelog, security notes, and tool descriptions#23

Merged
dkships merged 9 commits into
mainfrom
quality/docs-truthup
Jul 2, 2026
Merged

docs: truth up README, changelog, security notes, and tool descriptions#23
dkships merged 9 commits into
mainfrom
quality/docs-truthup

Conversation

@dkships

@dkships dkships commented Jul 2, 2026

Copy link
Copy Markdown
Owner

Stacked on #22; merge that first. Aligns every public claim with what the code actually does, following the audit. No behavior changes except tool description strings and the methodology resource text (bumped to v2.1).

  • README: themes.config.json ships 11 categories, not 9 (16 themes was already correct). The example output now shows real category values (core, billing) and the actual evidence_summary format. Size estimates match the tool schema text. The methodology paragraph no longer claims Claude reads the resource automatically; responses link to it and instruct use when kpi_context is present, but reading depends on the client. top_voted_limit is documented as per portal with recent requests always included. Added the score-normalization caveat (scores are relative to one call; compare rankings, not raw scores) and the commenter-name exclusion row.
  • CHANGELOG: records the qs 6.15.0 → 6.15.2 advisory patch that landed in chore: patch qs advisory + add example output #16 without an entry, and corrects the omission that v1.2.0 removed the bin/npx pm-copilot path added in 1.1.0.
  • SECURITY.md: documents greedy-pattern over-redaction (order numbers, tracking IDs, and timestamps can be masked as phone/SSN) as a deliberate trade-off, and covers commenter names.
  • Tool descriptions: each of the two analysis tools now says when to use the other; synthesize_feedback points at the methodology resource and notes per-call score normalization.
  • Methodology v2.1: thread count clarified as the total including agent replies (matching what the severity formula actually consumes after fix: restore dead severity signal, per-portal resilience, PII audit correctness #21), plus the normalization caveat.

Verification: build and 64 tests green; description strings render correctly in npm run tool -- --list.

🤖 Generated with Claude Code

dkships and others added 8 commits July 1, 2026 19:59
The severity formula's thread-depth term was dead in production: thread
bodies were never fetched, so thread_count was always 0 and min(0*10, 50)
contributed nothing. Use the list API's threads count field instead (no
extra API calls) and treat 0/missing as the baseline 1.

Also:
- Clamp recency so an unparseable created_at can't produce NaN scores
  and future-dated tickets can't pin severity to 100
- Strip PII-redaction placeholders before n-gram tokenization so
  'email redacted' can't surface as an emerging theme
- Delete the unreachable thread-body fetch path (includeThreads was
  never set by any caller; last present at d5f985f)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- One failing ProductLift portal no longer drops every portal's data;
  failures surface as named-portal warnings in the response
- Total fetch failure (all sources) returns isError instead of an empty
  analysis that reads as success, and is never cached
- Replace the module-global PII category log with an explicit
  per-request sink; concurrent tool calls no longer interleave audit
  metadata
- get_feature_requests reports pii_scrubbing_applied and
  pii_categories_redacted, and stops sending commenter names (role only)
- A malformed PRODUCTLIFT_PORTALS degrades to zero portals with the
  error surfaced in tool descriptions instead of killing the server
- Label feature requests with their actual source portal
- Guard themes.config.json loading with an actionable error
- Scrub upstream error text in warnings; collapse whitespace in quotes
- preview_only now describes exactly what is fetched and sent

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…exes

Pure move plus dedup; no behavior change. analyzeFeedback output
verified byte-for-byte identical on a fixed dataset across this change.

- New src/format.ts holds the PII-scrubbing formatters, quote
  extraction, agent-response detection, and detail trimming (index.ts
  is untestable by import: it exits without env and connects a
  transport at load)
- New helpers replace duplicated blocks in index.ts: toErrorResult (4
  identical catch bodies), buildLookupMaps, signalTypeOf, capTitles;
  get_feature_requests reuses filterClientsByPortal
- Theme keyword regexes compile once per analyzeFeedback run instead of
  per data point x theme x keyword; matchesTheme keeps its signature
  and semantics (multi-word substring, word-boundary singles, escaping,
  no g flag)
- New guardrail tests for parsePortalConfigs env parsing and the format
  layer (24 new tests; 64 total)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- README: 11 categories (was 9), example output matches actual category
  values and evidence_summary format, size estimates match the tool
  schema, methodology claim no longer implies automatic reading,
  top_voted_limit semantics documented (per portal, plus recent),
  score-normalization caveat added, commenter-name exclusion listed
- CHANGELOG: record the qs 6.15.2 advisory patch (#16) and the 1.2.0
  bin/npx removal the release notes omitted
- SECURITY: document over-redaction of long digit runs as a known
  limitation; commenter names covered
- Tool descriptions: synthesize vs plan selection guidance, methodology
  pointer on synthesize_feedback, per-portal top_voted_limit wording
- methodology v2.1: thread count clarified as total including agent
  replies; normalization caveat added

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Transitive dep of @modelcontextprotocol/sdk; npm audit flagged the
4.12.x line high (GHSA-xrhx-7g5j-rcj5 and related). Lockfile-only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@dkships dkships changed the base branch from quality/refactor-format to main July 2, 2026 03:27
@dkships dkships merged commit f0212f5 into main Jul 2, 2026
2 checks passed
@dkships dkships deleted the quality/docs-truthup branch July 2, 2026 03:28
@dkships dkships mentioned this pull request Jul 2, 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