Skip to content

SCRIP-COMPARE-004: reader-side local-only comparison with Python contract parity #280

Closed

Description

@andy-zen-dev

User outcome

Provide a working browser-based local JSON comparison reachable from the canonical Reader without uploads, using the same versioned contract as #279. Do not fork a second incompatible analyzer.

Reusable pending artifacts

Scriptorium-Reader-Private-Browser-Compare-20261021.zip, Scriptorium-Browser-Number-Fidelity-20261021.zip, Scriptorium-Reader-Consolidated-RC-20261021.zip, Scriptorium-Private-Browser-Comparison-20261018.zip. These are local handoffs; prior local test counts are not canonical CI.

Acceptance

  • Explicit upload controls for two local Reader JSON files; no remote network requests/telemetry or source prose retention; imports remain in-page.
  • Reject oversized, duplicate-key, non-finite, impossible-count and algorithm/unit/status-tampered JSON, including lexical 3.0/3e0 on integer counters when canonical Python requires exact integers.
  • Exact table with 29 metric IDs, readable labels, units and missing/incomparable states; accessible keyboard/focus/mobile flows and defensible errors/empty states.
  • JSON/CSV export with formula-neutralized untrusted text; 234-case differential fixture re-run against installed Python CLI and explicit cross-runtime equality.
  • Build actual Reader and test with real Analyzer-produced JSON; browser visual screenshots if permitted, else explicit VISUAL_NOT_VERIFIED. Depends on SCRIP-COMPARE-003: integrate strict private report comparison in installed Python CLI #279's canonical contract rather than duplicating it.

Reconciled local browser handoff — 2026-10-23

The existing branch scrip-compare-004-browser currently has no browser-comparator implementation: it matches the 3-commit Reader 0.4 content of PR #288. Do not treat the branch name as delivery evidence.

Local handoff: Scriptorium_Browser_Compare_Decimal_Parity_Fix_20261022.zip (SHA-256 472bb4f7f9f3724820e5ec2b1f55c13b81d4310097856ccde13378db9a662297), incorporating the earlier async race and strict numeric-lexeme fixes. Previous local JS checks reported 24/24 PASS; these are not canonical installed-Reader contract parity or 234-case differential acceptance. Revalidate all files against the current 29-metric Python contract and current head before integration.

Still required: reject lexical integer spoofs and invalid metrics, verify exact cross-runtime exports on real Analyzer-produced JSON with installed Reader, real desktop/mobile/keyboard flow, no network/cookies, canonical site build and CI. Direct browser route remains VISUAL_NOT_VERIFIED. Do not close #280 on preview-only evidence; FantLab M2 stays 0/5.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions