docs+code: rename tool labels everywhere

Sweep follow-up to 93e43fc. Display labels now consistent across docs,
landing pages, CLI output, code comments, docstrings, and test prose.
Five parallel surfaces touched:

- docs (EN + ES): README, USER-GUIDE, CLI-REFERENCE, and 11 internal
  design/planning docs
- landing pages: index + bookkeeper/revops/shopify-pet
- src: CLI module docstrings, _TOOL_DISPLAY dicts in cli_analyze.py
  and gui/components/_legacy.py, core module headers, every tool
  page's module docstring
- tests: class/method/module docstrings and section-header comments
- test-cases READMEs

Page slugs (1_Deduplicator etc.), tool_id strings (01_deduplicator
etc.), Python class names (TestDeduplicatorWorkflow, FeatureFlag.*),
URL paths, anchor IDs, CSS classes, and asset filenames were left
intact since they're code identifiers / structural references.

All 2033 tests pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-16 19:50:09 +00:00
parent 93e43fc0d9
commit db5ec084da
57 changed files with 205 additions and 205 deletions

View File

@@ -3,7 +3,7 @@
These exercise the chrome-level gate that ``hide_streamlit_chrome``
installs: when no valid license is on disk, every page renders the
activation form instead of the page body, and tool widgets do NOT
appear. We test against the Deduplicator page since it's the smallest
appear. We test against the Find Duplicates page since it's the smallest
real-world tool that depends on chrome.
The autouse fixture in ``tests/conftest.py`` sets

View File

@@ -5,7 +5,7 @@ expander that houses every per-column / per-strategy knob. It's the
densest single widget surface in the GUI, so a session-state key drift
in there cascades into every dedup session.
We exercise it via the Deduplicator page (rendering ``config_panel``
We exercise it via the Find Duplicates page (rendering ``config_panel``
in isolation requires a fake Streamlit context). The page provides
the surrounding state; we poke widgets and verify their effects.
"""

View File

@@ -2,7 +2,7 @@
``match_group_card`` from ``src.gui.components`` has two modes (decided
/ undecided) and a Confirm/Undo flow keyed by session_state. We test
each state by exercising the parent Deduplicator page end to end and
each state by exercising the parent Find Duplicates page end to end and
then poking at ``review_decisions`` directly.
Why not unit-test ``match_group_card`` in isolation? AppTest needs a

View File

@@ -21,7 +21,7 @@ from .conftest import collected_text, stash_upload
# ---------------------------------------------------------------------------
class TestMalformedUploadErrors:
"""Bytes that look like a CSV but aren't parseable. The Deduplicator
"""Bytes that look like a CSV but aren't parseable. The Find Duplicates
page wraps ``read_file`` failures in an ``st.error`` with the file
name and the structured ``format_for_user`` output."""

View File

@@ -11,7 +11,7 @@ exist, each pinned here:
3. **Upload + matching passed normalization** — gate is a no-op; the
page proceeds.
We exercise the gate via the Deduplicator page (any tool page would
We exercise the gate via the Find Duplicates page (any tool page would
work; dedup is the smallest one that doesn't depend on heavy widgets).
"""
@@ -27,7 +27,7 @@ from .conftest import (
)
# Deduplicator is our canary — it calls ``require_normalization_gate``
# Find Duplicates is our canary — it calls ``require_normalization_gate``
# on the second line of the module. If the gate blocks, the dedup-
# specific title shouldn't even render.
GATED_PAGE = "1_Deduplicator"

View File

@@ -1,9 +1,9 @@
"""GUI tests for the Lite tier.
A Lite license unlocks Deduplicator, Text Cleaner, Format
Standardizer. Opening any other tool page (Missing Values, Column
Mapper, Pipeline Runner, etc.) must render an upgrade prompt and
short-circuit the page body.
A Lite license unlocks Find Duplicates, Clean Text, Standardize
Formats. Opening any other tool page (Fix Missing Values, Map
Columns, Automated Workflows, etc.) must render an upgrade prompt
and short-circuit the page body.
The home grid shows a 🔒 Locked badge on the cards for tools the
user's tier doesn't unlock.
@@ -104,7 +104,7 @@ class TestLiteHomeGridBadges:
):
home_app.run()
text = collected_text(home_app)
# Missing Value Handler is locked under Lite — its card should
# Fix Missing Values is locked under Lite — its card should
# have a 🔒 Locked badge.
# We assert the lock glyph appears alongside the locked tool's
# display name. Streamlit renders the markdown verbatim so the

View File

@@ -19,7 +19,7 @@ from .conftest import collected_text, stash_upload
# ---------------------------------------------------------------------------
# Deduplicator
# Find Duplicates
# ---------------------------------------------------------------------------
class TestDeduplicatorWorkflow:
@@ -64,7 +64,7 @@ class TestDeduplicatorWorkflow:
# ---------------------------------------------------------------------------
# Text Cleaner
# Clean Text
# ---------------------------------------------------------------------------
class TestTextCleanerWorkflow:
@@ -96,7 +96,7 @@ class TestTextCleanerWorkflow:
# ---------------------------------------------------------------------------
# Format Standardizer
# Standardize Formats
# ---------------------------------------------------------------------------
class TestFormatStandardizerWorkflow:
@@ -110,7 +110,7 @@ class TestFormatStandardizerWorkflow:
# ---------------------------------------------------------------------------
# Missing Value Handler
# Fix Missing Values
# ---------------------------------------------------------------------------
class TestMissingValuesWorkflow:
@@ -124,7 +124,7 @@ class TestMissingValuesWorkflow:
# ---------------------------------------------------------------------------
# Column Mapper
# Map Columns
# ---------------------------------------------------------------------------
class TestColumnMapperWorkflow:
@@ -138,7 +138,7 @@ class TestColumnMapperWorkflow:
# ---------------------------------------------------------------------------
# Pipeline Runner
# Automated Workflows
# ---------------------------------------------------------------------------
class TestPipelineRunnerWorkflow: