Skip to content

Build pass on UI content-accuracy audit selections (PR #56 items 1-10, 12) - #64

Merged
WilfordGrimley merged 1 commit into
masterfrom
claude/audit-build-pass
Jul 18, 2026
Merged

Build pass on UI content-accuracy audit selections (PR #56 items 1-10, 12)#64
WilfordGrimley merged 1 commit into
masterfrom
claude/audit-build-pass

Conversation

@WilfordGrimley

Copy link
Copy Markdown

entry

Description

Builds the selected findings from the UI content-accuracy audit (docs/audits/ui-content-audit.md, PR #56). Covers items 1-10 and 12; item 11 got a process fix instead of a code fix.

  • 1, 6-9 (upstream-links family): frontend/src/features/export/FinishedMyProject.tsx and Navbar.tsx now link to chilli-axe/mpc-autofill's real GitHub Releases/wiki/source via new UpstreamDesktopTool* constants (frontend/src/common/constants.ts), with copy that honestly says it's the upstream tool, not a ProxyPrints build. The broken per-platform asset-fetch mechanism (download.mpcautofill.com, a domain not owned by this fork whose deploy job always fails) is removed in favor of linking straight to the Releases page; the now-redundant fallback <Alert> is removed too. Divergence check: no ProxyPrints-specific strings anywhere under desktop-tool/, and the tool never talks to a backend API at all, so it's safe to keep pointing upstream.
  • 2, 3: one-line on-screen hedges added to the PringlePrints and NotMPC ordering steps ("Steps and pricing current as of July 2026 — confirm at pringleprints.ca before ordering" / "Steps current as of July 2026 — confirm at NotMPC.com before ordering"). A full walkthrough verification of those flows is still owner work (see checklist below).
  • 4: QuestionFeed.tsx's subline drops "fresh" entirely ({total} in catalog · {contested} contested) since it isn't additive with the other two counts. total === fresh on a non-legacy response now fires a console.warn as an internal version-skew signal instead of ever being displayed.
  • 5: Footer.tsx now credits ProxyPrints alongside (not replacing) the existing "chilli_axe" line.
  • 10 (severity 5): AttributeChipPanel.tsx gets a lean tooltip on untouched chips with a real vote lean ("Community + machine votes lean yes/no (N%) - not confirmed") plus a one-time legend line above the ring, so a strong chip fill can't be misread as a system-confirmed fact.
  • 12: the Level 0 deckbuilder confirm badge (DeckbuilderConfirmAffordance.tsx) now shows a visible "Confirm?" label instead of a bare "?" (the aria-label was already there; this adds sighted-user affordance).
  • 11: not selected for a code fix — added a line to CLAUDE.md's tooling rules instead ("policy text changes update the Last-updated date").

docs/audits/ui-content-audit.md (on PR #56's own branch) was updated separately with a Disposition column marking what shipped for every row.

Checklist

Merge-time checklist

  • Owner eyeballs the new export-page desktop-tool/wiki/source links live.
  • Owner answers Promote PringlePrints to a full ordering tab #2: a real walkthrough verification of the PringlePrints ordering flow (steps, pricing, batch sizes, service area) — the hedge is a stopgap, not a substitute.

Generated by Claude Code

Fixes upstream-links honesty (1,6-9): desktop-tool download/wiki/source
links now use shared UpstreamDesktopTool* constants with copy that says
they're upstream's, not this fork's - confirmed not diverged (no
ProxyPrints strings in desktop-tool/, no backend-API coupling). The
broken per-platform asset-fetch mechanism is gone in favor of linking
straight to GitHub Releases.

Adds one-line "confirm before ordering" hedges to the PringlePrints and
NotMPC steps (2,3) - real verification of those flows is still owner
work, tracked separately.

Drops "fresh" from the questionFeed subline (4) since it's not additive
with total/contested; total===fresh on a real response now only fires a
console.warn as a version-skew signal, never renders.

Adds ProxyPrints credit alongside (not replacing) the chilli_axe footer
line (5).

Adds a lean-tooltip and a one-time legend to attribute chips (10) so a
strong fill can't read as a confirmed fact - "community + machine votes
lean yes/no (N%) - not confirmed".

Gives the deckbuilder confirm badge a visible "Confirm?" label (12)
instead of a bare "?" with only a screen-reader aria-label.

#11 (privacy-policy date) wasn't selected for a code fix - CLAUDE.md
gets a process line instead ("policy text changes update the Last-updated
date").

docs/audits/ui-content-audit.md on PR #56's branch got its own commit
marking every row's disposition.
@WilfordGrimley
WilfordGrimley merged commit facca42 into master Jul 18, 2026
6 checks passed
@WilfordGrimley
WilfordGrimley deleted the claude/audit-build-pass branch July 18, 2026 17:00
WilfordGrimley added a commit that referenced this pull request Jul 18, 2026
* Terminology fix: "AI" -> "machine" for OCR/phash/deduction votes

Owner-directed accuracy fix: the machine votes are OCR, perceptual-hash
clustering, and deductive backfill - classical algorithms, no AI/ML
involved anywhere. "AI" was a fossil of the pre-2026-07-15 VoteSource.AI
name (split into DEDUCTION/OCR that day). "Machine evidence/machine votes"
is the house term (already established by the #64 chip-tooltip copy,
"Community + machine votes lean...").

docs/theory.md: SS4's "AI weight 0.5 by default" -> "machine weight 0.5 by
default"; the Dawid-Skene paragraph keeps the literal PRINTING_TAG_AI_WEIGHT
name where it's citing code, glossed per spec, plus a note on the rename
below.

Frontend (grepped frontend/src for user-facing "AI" strings): whatsthat.tsx's
intro copy ("AI-suggested cards come first" -> "machine-suggested cards come
first") is the one real user-facing occurrence - visible on the live
/whatsthat page. Also fixed QuestionFeed.tsx's adjacent code comment for
consistency (not user-facing, but describes the same headline logic).
Checked and left alone: mocks/handlers.ts's ["ai-art", "AI art"] and
reason_tags.py's "AI-Generated" tag - a real AI-GENERATED-ARTWORK card
attribute, a completely different meaning of "AI" than the vote-source
terminology this task is about.

Backend hygiene (own commit-worthy piece, folded in since it's small):
renamed PRINTING_TAG_AI_WEIGHT -> PRINTING_TAG_MACHINE_WEIGHT in settings.py,
with the old name kept as a backward-compatible env-var fallback (read new
name, fall back to old, one-line deprecation comment) so an existing
deployment's config can't silently regress - resolves the rebinding caution
behind the original no-rename decision without carrying its risk. Updated
the two _SOURCE_WEIGHTS usages in vote_consensus.py and every comment
elsewhere that cited the setting name as a live value (purge_machine_votes.py,
deductive_backfill.py, local_residual_classify.py, test_purge_machine_votes.py).
Added TestMachineWeightRename (test_vote_consensus.py) asserting DEDUCTION
and OCR still resolve to the same 0.5 weight post-rename - direct proof the
rename changed no actual behavior. Verified the fallback logic's three
scenarios (only old set, only new set, both set) via a standalone
simulation, since Django isn't installed in this sandbox.

Left untouched, deliberately: every VoteSource.AI citation describing the
actual historical 2026-07-15 enum-split event (printing-tags.md, federation-v1.md,
vote_consensus.py's own docstring) - these are accurate historical code
citations, not a live terminology choice, and the surrounding prose already
explains the split. Also untouched: the broader backend comment/docstring
"AI" usage across deductive_backfill.py, question_feed.py, test files, and
immutable Django migrations (0050/0053/0054) - a much larger, unrequested
sweep outside this task's scope (docs/theory.md, frontend, docs/ sweep, and
the one setting rename), flagged in the relay report as a possible future
cleanup rather than done unilaterally here.

docs/ sweep beyond theory.md: printing-tags.md (5 prose spots -> "machine",
2 VoteSource.AI historical citations kept literal, 1 real ai-art tag mention
kept), catalog-completion-plan.md (1 prose spot). federation-v1.md and
infrastructure.md needed no change (already correct / different AI meaning
respectively - infrastructure.md's "AI" mentions are about AI-assisted PR
authorship disclosure, unrelated).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Eq8f8QqQ5UKadBW6yHUmxq

* Report relay: AI-to-machine terminology fix

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Eq8f8QqQ5UKadBW6yHUmxq

* Report relay: fix PR number reference (#76)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Eq8f8QqQ5UKadBW6yHUmxq

---------

Co-authored-by: Claude <noreply@anthropic.com>
WilfordGrimley added a commit that referenced this pull request Jul 18, 2026
…staleness mini-pass (#79)

* publish_wiki.py: fix link rewriting for parent-relative paths and slug casing

GitHub wiki's native [[...]] auto-linking reinterprets our own docs/
[[file.md]] convention: [[../troubleshooting.md]] became a dead literal
slug, and [[printing-tags.md]] linked the raw filename casing instead of
the published page name "Printing-Tags" (both visible live on
Catalog-Completion-Plan). Every internal link is now resolved against
its source file's real repo path and mapped through
wiki-publish-map.json: a published target becomes a same-wiki link using
its real page name, an unpublished-but-real target becomes an absolute
GitHub blob URL, and a target resolving to neither is a hard publish
error. docs_lint.py can't catch this class of bug since it only checks
links within docs/ itself, not the wiki-transform's own reinterpretation
downstream - the script now self-checks at publish time instead.

Also adds two docs/ pages that were listed in docs/README.md's index
but missing from the mapping entirely (found via the new validation):
documentation-process.md and upstream-wiki-drift.md.

* Docs staleness pass: Part 3 write-pass status + proposal B/C/E-1/E-2 markers

catalog-completion-plan.md: Part 3 heading and Status section updated to
reflect the completed write pass (run_id 20260718T145157-a12b1387, 13,275
votes, all hard bounds passed, 0/7,124 zero-resolution violations at full
population), pointing to docs/reports/2026-07-18-part3-write-pass-complete.md.
Filled the dangling "see the follow-up entry below" reference and replaced
the now-stale "HOLD #P3 stands" language. Part 4's heading now notes it's
confirmed unstarted with HOLD #B prep queued.

proposal-b-bleed-normalization.md: top summary no longer lists the
prior-resolution batch fetch as remaining work - it shipped as PR-1 (#72).

proposal-g-user-accounts-saved-decks.md: noted the build-order queue
(E-1 #61, E-2 #62, Level-2 grid fix #63, audit pass #64, GIS error UX #65,
Proposal B #66/#72, Proposal C part (a) #67) has fully cleared.

docs/README.md: added proposal-b and proposal-c to the "Plans & proposals"
table - both have dedicated docs but were missing from the index entirely,
despite the section's own stated policy that any proposal with a dedicated
doc gets a row.

printing-tags.md and vote-system.md checked per the mini-pass's minimum
list; no changes needed - printing-tags.md already defers Stage 8+ status
to catalog-completion-plan.md, and vote-system.md has no AI-terminology or
merged-PR staleness.

* Report relay: wiki review findings (publish-script fix, Part 3 status, staleness mini-pass)

* CI: black-format publish_wiki.py, prettier-format cache-transition-resilience.md

black reformatting for publish_wiki.py (never run locally - only
py_compile was checked, missing the repo's black rev 22.8.0 pinned in
.pre-commit-config.yaml). cache-transition-resilience.md's prettier
drift predates this PR (introduced by #75) and is unrelated to its
content - swept here since the "Formatting and static type checking"
check runs pre-commit against all files, not just the diff, and this
PR's own CI needs to go green.

---------

Co-authored-by: Claude <noreply@anthropic.com>
WilfordGrimley added a commit that referenced this pull request Jul 19, 2026
…3 stale branches (#193)

* Seed repo-wide extractable-primitives ledger with a mechanical tether

Audits frontend, PDF/export, backend, and docs/federation tooling for
code with no dependency on this fork's vote system/CanonicalPrinting-
consensus/auth that an outside consumer (upstream, proxies-at-home,
federation peers) could lift wholesale. HOLD pending owner review.

Every CLEAN claim is checked by docs_lint.py's new
check_extractable_primitives_tether(), which greps each CLEAN row's
file(s) for imports from a hardcoded fork-only-module allowlist so
entanglement drift fails CI at the commit that causes it.

Adds the CLAUDE.md convention line for future sessions to add/remove
a row when an extraction or refactor changes a primitive's status.

* Add session report for the extractable-primitives ledger

Per CLAUDE.md's reporting convention (reports >10 lines get relayed via
docs/reports/ instead of chat) — the task summary for this branch's work.

* Follow-up: MANIFEST row + fix stale audits/ cross-references

MANIFEST.md gets a row for the newly-landed
docs/upstreaming/extractable-primitives.md (binding rule: new docs/*.md
file, same PR). Separately, docs/MANIFEST.md's and docs/README.md's
audits/ entries still described ui-content-audit.md as unmerged/no
disposition column - stale since PR #56 merged and #64's build pass
filled in the Disposition column (found while classifying the
now-superseded claude/ui-content-audit-docs duplicate branch for #144).
Also states the wiki-publish-map.json exclusion for
extractable-primitives.md as an explicit HOLD-based decision rather
than a silent gap.

* Fix formatting: black/prettier reformat on cherry-picked ledger files

---------

Co-authored-by: Claude <noreply@anthropic.com>
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.

2 participants