Files

5.6 KiB

phase, plan, type, wave, depends_on, files_modified, autonomous, requirements, must_haves
phase plan type wave depends_on files_modified autonomous requirements must_haves
01-cleanup-fixes 01 execute 1
public/sitemap.xml
package.json
app/data/site.ts
true
FIX-01
FIX-04
FIX-05
truths artifacts key_links
public/sitemap.xml no longer exists so @nuxtjs/sitemap serves the dynamic sitemap
package.json has no 'latest' or '*' version specs
reviewCount in site.ts matches totalReviews in testimonials.ts (both 10)
Fiverr placeholder URLs '#' are replaced with the profile URL
path provides contains
package.json Pinned vue and vue-router versions "vue": "^3.5.0"
path provides contains
app/data/site.ts Consistent review data and valid Fiverr URLs reviewCount: '10'
from to via pattern
app/data/site.ts app/data/testimonials.ts reviewCount must equal totalReviews reviewCount.*10
Fix static sitemap conflict, pin dangerous dependency versions, and correct data inconsistencies.

Purpose: Eliminate config conflicts and data integrity issues that affect SEO and build reproducibility. Output: Clean package.json, no static sitemap, consistent site data.

<execution_context> @$HOME/.claude/get-shit-done/workflows/execute-plan.md @$HOME/.claude/get-shit-done/templates/summary.md </execution_context>

@.planning/ROADMAP.md @.planning/STATE.md @.planning/research/PITFALLS.md Task 1: Delete static sitemap and pin dependency versions public/sitemap.xml, package.json public/sitemap.xml, package.json 1. Delete `public/sitemap.xml` entirely. This static file overrides the `@nuxtjs/sitemap` module dynamic route. Nitro serves `public/` files before server routes, so the module handler at `/sitemap.xml` is never reached while this file exists.
  1. In package.json, replace the two dangerous "latest" specs:
    • Change "vue": "latest" to "vue": "^3.5.0"
    • Change "vue-router": "latest" to "vue-router": "^4.5.0"

Do NOT run pnpm install -- just update the version specs. The lockfile already has correct resolved versions. bash -c "test ! -f public/sitemap.xml && echo 'sitemap deleted' || echo 'FAIL: sitemap exists'" && grep -c '"latest"' package.json | grep -q '^0$' && echo "no latest found" || echo "FAIL: latest still in package.json" <acceptance_criteria>

  • public/sitemap.xml does not exist
  • grep '"latest"' package.json returns zero matches
  • grep '"vue": "\\^3.5.0"' package.json returns a match
  • grep '"vue-router": "\\^4.5.0"' package.json returns a match </acceptance_criteria> Static sitemap removed, vue and vue-router pinned to caret ranges
Task 2: Fix data inconsistencies in site.ts app/data/site.ts, app/data/testimonials.ts app/data/site.ts In `app/data/site.ts`, fix these inconsistencies:
  1. reviewCount mismatch: On line ~99, change reviewCount: '50' to reviewCount: '10'. The testimonials.ts file has totalReviews: 10 -- these must match. Google penalises inflated aggregateRating claims in structured data.

  2. Fiverr placeholder URLs: On lines ~61 and ~67, two services have url: '#':

    • id: 'telegram-bot' (line ~61): change url: '#' to url: 'https://www.fiverr.com/users/mr_kayjaydee' (link to profile since no dedicated gig page exists)
    • id: 'website-development' (line ~67): change url: '#' to url: 'https://www.fiverr.com/users/mr_kayjaydee' (same fallback)

These are the Fiverr profile URL already defined at fiverr.profileUrl in the same file. bash -c "grep -q "reviewCount: '10'" app/data/site.ts && echo 'reviewCount OK' || echo 'FAIL: reviewCount'" && bash -c "grep -c "url: '#'" app/data/site.ts | grep -q '^0$' && echo 'no placeholder URLs' || echo 'FAIL: placeholder URLs remain'" <acceptance_criteria>

  • grep "reviewCount: '10'" app/data/site.ts returns a match
  • grep "reviewCount: '50'" app/data/site.ts returns zero matches
  • grep "url: '#'" app/data/site.ts returns zero matches
  • Both telegram-bot and website-development services have url: 'https://www.fiverr.com/users/mr_kayjaydee' </acceptance_criteria> reviewCount matches totalReviews (10), Fiverr placeholder URLs replaced with profile URL

<threat_model>

Trust Boundaries

Boundary Description
Static assets vs server routes public/ files override Nitro server handlers

STRIDE Threat Register

Threat ID Category Component Disposition Mitigation Plan
T-01-01 Information Disclosure aggregateRating JSON-LD mitigate Set reviewCount to actual value (10) to avoid Google penalty for inflated claims
T-01-02 Tampering package.json "latest" mitigate Pin to caret ranges to prevent unvetted major version upgrades
</threat_model>
- `ls public/sitemap.xml` fails (file deleted) - `grep '"latest"' package.json` returns 0 matches - `grep "reviewCount: '10'" app/data/site.ts` returns 1 match - `grep "url: '#'" app/data/site.ts` returns 0 matches

<success_criteria> Static sitemap removed, deps pinned, site data consistent with testimonials data. </success_criteria>

After completion, create `.planning/phases/01-cleanup-fixes/01-01-SUMMARY.md`