You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sprint: Wednesday, May 6 — Claude-code Refactor + Exclusion Consolidation (8 pt total; this item = 3 pt, task 2 of 2) Repo:cppalliance/claude-code-chat-browser Audit:claude-cursor.mdCCC8 + claude-code-browser-eval.md §5.2 (incl. footnote 9 on _slugify). (Both audit docs are internal; not on GitHub.) (After opening on GitHub, paste the issue URL here.)
Background — what CCC8 actually asks for
CCC8’s Fix column in claude-cursor.md consolidates two helpers plus the call-site duplication:
Single _session_text_for_exclusion in utils/.
Single _slugify in utils/ (currently two divergent implementations — eval §5.2 + footnote 9).
Replace the ~6 repeatedif rules: build_searchable_text(...) → is_excluded_by_rules(...) → skip blocks with one shared call.
Pieces (1) and (3) shipped in Issue #23 · PR #24. Piece (2) — _slugify consolidation — was not part of that PR’s description and is the only remaining CCC8 work.
CCC8 piece
Status
Where
(1) _session_text_for_exclusion single source in utils/
Per eval §5.2 (footnote 9), _slugify is implemented differently in two files. Two implementations of the same function — used to derive on-disk and URL-safe identifiers — risks subtle export and path bugs (different normalization, different character class handling, drift over time).
PR #24 refactored exclusion plumbing but did not unify _slugify. That residual divergence is what closes CCC8.
Goal
One implementation of _slugify in utils/, imported by every former call site. Behavior chosen deliberately (one of the existing implementations, or a clearly documented merge of the two).
Scope (in)
Locate the two existing _slugify implementations in the repo (per eval §5.2 footnote 9).
Replace both call sites with the shared import; delete the old local copies.
If the two implementations differ in behavior on any input, document the choice in the PR (one-paragraph rationale + before/after table for the diverging cases).
Add a small regression test covering the inputs where the two old implementations diverged (so behavior cannot silently regress).
After this PR ships, the Fix column of CCC8 is fully satisfied for claude-code-chat-browser. Sibling CCB3 (in cursor-chat-browser-python) remains a separate ticket.
Issue —
claude-code-chat-browser— Exclusion rule consolidation: residual_slugifydivergence (CCC8) (3 pt)Sprint: Wednesday, May 6 — Claude-code Refactor + Exclusion Consolidation (8 pt total; this item = 3 pt, task 2 of 2)
Repo: cppalliance/claude-code-chat-browser
Audit:
claude-cursor.mdCCC8 +claude-code-browser-eval.md§5.2 (incl. footnote 9 on_slugify). (Both audit docs are internal; not on GitHub.)(After opening on GitHub, paste the issue URL here.)
Background — what CCC8 actually asks for
CCC8’s Fix column in
claude-cursor.mdconsolidates two helpers plus the call-site duplication:_session_text_for_exclusioninutils/._slugifyinutils/(currently two divergent implementations — eval §5.2 + footnote 9).if rules: build_searchable_text(...) → is_excluded_by_rules(...) → skipblocks with one shared call.Pieces (1) and (3) shipped in Issue #23 · PR #24. Piece (2) —
_slugifyconsolidation — was not part of that PR’s description and is the only remaining CCC8 work._session_text_for_exclusionsingle source inutils/_slugifyconsolidationProblem
Per eval §5.2 (footnote 9),
_slugifyis implemented differently in two files. Two implementations of the same function — used to derive on-disk and URL-safe identifiers — risks subtle export and path bugs (different normalization, different character class handling, drift over time).PR #24 refactored exclusion plumbing but did not unify
_slugify. That residual divergence is what closes CCC8.Goal
One implementation of
_slugifyinutils/, imported by every former call site. Behavior chosen deliberately (one of the existing implementations, or a clearly documented merge of the two).Scope (in)
_slugifyimplementations in the repo (per eval §5.2 footnote 9).utils/exclusion_rules.py(already created by PR refactor(exclusion): consolidate duplicate session-text helper + 6 repeated call patterns (closes #23) #24) or a smallutils/slugify.pyif exclusion-rules is the wrong neighborhood.Verification (also in scope)
mainand no new copy of_session_text_for_exclusionor new copy-pastedif rules:exclusion blocks were reintroduced after refactor(exclusion): consolidate duplicate session-text helper + 6 repeated call patterns (closes #23) #24 merged. If any did, fold them into this PR or a tiny follow-up.Scope (out)
app.jswork.cursor-chat-browser-python) CCB3 changes — out of scope for this repo’s PR.Acceptance criteria
_slugify(or public-named equivalent) inutils/; zero other definitions in the repo.pytestgreen; manual smoke check that exported filenames / URL slugs still resolve.Coverage map (CCC8 closure)
_session_text_for_exclusionsingle source_slugifysingle source (eval §5.2 footnote 9)After this PR ships, the Fix column of CCC8 is fully satisfied for
claude-code-chat-browser. Sibling CCB3 (incursor-chat-browser-python) remains a separate ticket.