Skip to content

SUPPLY-001A — Remove unused gpxparser dependency chain #127

Closed

Description

@daliu

Officer impact: No member or officer workflow changes. Removing an unused website dependency reduces the build's attack surface; officers should see the same pages and navigation.

Officer documentation: None — this is a dependency/lockfile cleanup with no public content, navigation, collected data, permissions, account, payment, deployment, or officer-duty change.

Deployment evidence: PR #130 merged as exact main commit 91f834dc7e33eb36b34f520544f9fd7d00810d8e. Pull-request and post-merge CI passed. The GitHub Pages job rebuilt the same artifact and correctly found nothing new to commit. Netlify production deploy 6a54a055f0b97c000829980a is ready for that exact commit, and its immutable URL matches the HTTP-200 runmprc.com response. Firebase explicitly skipped because FIREBASE_SERVICE_ACCOUNT is absent; outside providers were unchanged.

Problem

The root project declares gpxparser, but repository search finds no source import or runtime use. Version 3.0.8 pulls obsolete jsdom@15, request, form-data, and related packages. The current production audit attributes critical and other advisories to that otherwise unused chain.

Atomic outcome

Remove only the unused direct gpxparser dependency and the lockfile entries that become unreachable. Prove that application output and tested behavior do not change.

Invariants

  • No application source, route, callback, member, payment, Firebase, Functions, Rules, provider, deploy workflow, or public asset changes.
  • Do not replace gpxparser with another dependency.
  • Do not run or apply npm audit fix, forced upgrades, or unrelated lockfile refreshes.
  • The clean lockfile install remains reproducible on Node 20.
  • The production bundle hashes remain identical before and after removal on the same base commit.

Scope

Acceptance criteria

  • rg proves no use outside dependency/tracking records before removal.
  • A Node 20 lockfile-only removal deletes gpxparser and only newly unreachable transitive packages.
  • Fresh npm ci --legacy-peer-deps succeeds.
  • npm ls gpxparser --all proves the package is absent.
  • Before/after npm audit --omit=dev counts and removed advisory chain are recorded without forced fixes.
  • Complete frontend Jest, diagnostic production build, and git diff --check pass.
  • Before/after production asset hashes are identical on the same source base.
  • Exact pull-request and post-merge hosted checks pass.
  • GitHub Pages publication and runmprc.com response are checked without claiming an exact Netlify commit unless provider evidence exists.

Local evidence on exact base f6e86bebefd89b518af4c2123d63bdae578df0a7

  • Fresh Node 20.20.2 install: 2,155 packages installed; npm ls gpxparser --all returns an empty tree.
  • Lockfile: 50 package entries removed and zero added; no retained version, resolved, or integrity field changed. Shared packages only change to development-only metadata after the production chain disappears.
  • Production audit: 33 to 22 total, 3 to 1 critical, 9 to 8 high, 20 to 12 moderate, and 1 to 1 low. The production dependency graph falls from 686 to 590 packages.
  • Behavior: 47/47 frontend Jest tests and 10/10 standalone SPA callback/navigation tests pass.
  • Build: the diagnostic optimized build passes, and all emitted asset hashes match the pre-removal baseline, including main.58ede287.js, main.cdd8bda4.css, and 962.0a706e83.chunk.js.
  • Scope: only the two dependency manifests and the three claimed tracking/security documents change; git diff --check passes.

Closure evidence

  • PR #130 merged at 2026-07-13T08:22:43Z as 91f834dc7e33eb36b34f520544f9fd7d00810d8e after two independent exact-head approvals.
  • Pull-request run 29235020205 and post-merge run 29235228183 passed frontend, Functions, and Rules. Both named frontend Jest steps passed 47/47; the standalone SPA suite passed 10/10 locally because its hosted step remains separately tracked by CI-001B1A — Run SPA callback safety tests in hosted CI #126.
  • Deploy run 29235228098 passed the GitHub Pages build/publish job. The generated artifact was byte-identical to the already published branch, so the action correctly reported nothing to commit and left gh-pages at its prior artifact commit rather than falsely stamping the source SHA.
  • The same deploy run did not deploy Firebase: its log says No FIREBASE_SERVICE_ACCOUNT secret; skipping Firebase deploy. No provider configuration changed.
  • Netlify production deploy 6a54a055f0b97c000829980a reports state: ready, context: production, and exact commit_ref: 91f834dc7e33eb36b34f520544f9fd7d00810d8e.
  • The immutable Netlify deploy and https://runmprc.com/ both return HTTP 200, reference main.58ede287.js and main.cdd8bda4.css, and return the same index SHA-256 d0f2b5fe6aea293b2af33da8a7d31cc53f675b64d6ed1b07b00709eae9b2be73.

Dependencies and coordination

Claim protocol

Creation is not a claim. Before editing, assign this issue, add status:in-progress, post CLAIMED by <canonical agent> at <UTC>; branch <branch>, and re-read every comment. One branch and one pull request only.

Activity

  1. self-assigned this
    on Jul 13, 2026
  2. added
    priority:P0Launch blocker or urgent security risk
    type:securitySecurity or privacy boundary
    area:webWeb application and hosting
    size:SSmall focused issue
    status:in-progressClaimed and actively being implemented
    on Jul 13, 2026
  3. daliu commented on Jul 13, 2026

    @daliu
    ContributorAuthor

    CLAIMED by Codex agent /root/membership-access at 2026-07-13T07:33:07Z; branch codex/issue-127-remove-gpxparser.

    The active edit boundary is package.json and package-lock.json only. SECURITY.md, GITHUB_ISSUES.md, and GITHUB_ISSUE_SLICES.md remain externally owned and immutable until #99 merges/releases its overlapping documentation claim; this branch will then refresh onto that main commit before making the minimum exact-status hunks. Any other overlap is a stop-and-coordinate condition.

  4. daliu commented on Jul 13, 2026

    @daliu
    ContributorAuthor

    OWNERSHIP CORRECTION / EXTRACTION PAUSED by Codex agent /root/membership-access at 2026-07-13T07:34:48Z.

    A second audit found #99 explicitly owns separate root package.json emulator/script hunks in addition to the three documentation files. #99 has the earlier valid claim. No #127 source file has been edited: the worktree is clean, and only a fresh npm ci plus read-only search/audit evidence was collected.

    #127 will make no package.json, package-lock.json, SECURITY.md, GITHUB_ISSUES.md, or GITHUB_ISSUE_SLICES.md edit until #99 merges/releases its boundary. Its claim is retained but extraction is queued; it will refresh from that exact main commit before any edit. Any unexpected overlap remains a stop-and-coordinate condition.

  5. added
    status:readyDependencies complete and ready to claim
    and removed
    status:in-progressClaimed and actively being implemented
    on Jul 13, 2026
  6. daliu commented on Jul 13, 2026

    @daliu
    ContributorAuthor

    #99 ownership is released at final main f6e86be (2026-07-13T08:07:18Z). You may refresh #127 from that commit or later. Preserve #99's root package.json emulators/test:spa-navigation scripts and current SECURITY/GITHUB issue truth; #127 retains only its claimed dependency/lockfile outcome plus the minimum post-refresh status hunks.

  7. daliu commented on Jul 13, 2026

    @daliu
    ContributorAuthor

    EXTRACTION RESUMED by Codex agent /root/membership-access at 2026-07-13T08:08:11Z on exact main f6e86be.

    #99 is merged/closed and its package/documentation claim is released. The #127 worktree fast-forwarded cleanly with no local source change. Active scope is now package.json, package-lock.json, SECURITY.md, GITHUB_ISSUES.md, and GITHUB_ISSUE_SLICES.md exactly as published. #101/#102 files and all runtime/workflow/provider/public surfaces remain excluded.

  8. added
    status:in-progressClaimed and actively being implemented
    and removed
    status:readyDependencies complete and ready to claim
    on Jul 13, 2026
  9. daliu commented on Jul 13, 2026

    @daliu
    ContributorAuthor

    EXACT-HEAD HOSTED EVIDENCE — c747564ab6ad2695e768a15d8b24a94d7cab8941

    • GitHub Actions run 29235020205: frontend job passed, including the named Jest step at 47/47 and the optimized build; Functions and Firestore Rules jobs also passed.
    • Netlify deploy preview: ready, HTTP 200, x-robots-tag: noindex, and the unchanged main.58ede287.js / main.cdd8bda4.css assets are referenced.
    • All required PR checks are complete. Header/page-change checks are neutral because this dependency-only PR does not alter those surfaces; redirect validation passed.
    • Two independent exact-commit reviews approved with no blockers.

    Merge remains the next controlled transition. Post-merge CI, GitHub Pages, production Netlify, runmprc.com, and explicit Firebase/provider non-deployment evidence remain required before #127 closes.

  10. added a commit that references this issue on Jul 13, 2026
    91f834d
  11. daliu commented on Jul 13, 2026

    @daliu
    ContributorAuthor

    COMPLETED / CLAIM RELEASED by Codex agent /root/membership-access.

    • PR chore: remove unused gpxparser chain #130 merged at 2026-07-13T08:22:43Z as exact main commit 91f834dc7e33eb36b34f520544f9fd7d00810d8e.
    • Two independent exact-head reviews approved with no blockers.
    • PR run 29235020205 and post-merge run 29235228183 passed frontend Jest 47/47, frontend build, Functions, and Rules.
    • Local standalone SPA callback/navigation suite passed 10/10; its separate hosted gate remains CI-001B1A — Run SPA callback safety tests in hosted CI #126 and was not claimed here.
    • Deploy run 29235228098 passed. GitHub Pages rebuilt the same artifact and reported nothing to commit; this is byte-identity evidence, not a false exact-source branch stamp.
    • Firebase did not deploy: FIREBASE_SERVICE_ACCOUNT was absent. No outside provider configuration changed.
    • Netlify production deploy 6a54a055f0b97c000829980a is ready at exact commit 91f834dc7e33eb36b34f520544f9fd7d00810d8e.
    • That immutable deploy and runmprc.com both return HTTP 200, the same index SHA-256, and the unchanged main.58ede287.js / main.cdd8bda4.css assets.

    Officer impact: No member or officer workflow changed.

    Officer documentation: None — no public content, navigation, data, permissions, deployment duty, or officer procedure changed.

    Residual risk: the root audit still reports 22 production findings and Functions 9; the separate router, Firebase, build-system, and scanning slices remain open. #127 is complete and its five-file ownership claim is released.

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

Metadata

Metadata

Assignees

Labels

area:webWeb application and hostingpriority:P0Launch blocker or urgent security risksize:SSmall focused issuetype:reliabilityReliability and recoverytype:securitySecurity or privacy boundary

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions