main
md 7 KB

SquadScope QA Report

⚠️ Archived / Partially Stale (as of 2026-06-13): Some claims in this report (e.g., deploy workflow not building Pagefind, reskill being a placeholder) no longer reflect the current implementation. Refer to the live workflows and docs/pipeline-validation.md for canonical operational truth.

Date: 2026-05-18
Issue: #24 — Final QA readiness review and reskill-cycle simulation
Agent: Fry

Test results summary

  • PYTHONPATH=. pytest -q38 passed in 0.50s.
  • python3 -m py_compile succeeded for the pipeline scripts, including scripts/reskill.py and scripts/track_quality.py.
  • python3 scripts/track_quality.py produced a valid markdown trend report.
  • Reskill cycle simulation: Prompt rendering tested (--print-prompt flag validates placeholder resolution), but full reskill cycle execution (calling GitHub Models API and generating .squad/reskill/2026-W21.md report) remains incomplete. This is required for #24 acceptance criterion "A dry-run or simulation of the first reskill cycle is completed and reviewed."

Hugo build verification

  • Verified Hugo v0.161.1 using .tools/hugo-0.161.1/hugo.
  • hugo --minify completed successfully.
  • Build emitted two theme/template deprecation warnings from PaperMod/Hugo integration:
    • .Language.LanguageDirection → use .Language.Direction
    • .Language.LanguageCode → use .Language.Locale

Workflow audit findings

.github/workflows/crawl-and-publish.yml

  • Job dependency chain is coherent: crawlanalyzegeneratedeploy, with notify depending on published artifacts and reskill-check gating reskill.
  • Top-level permissions are broadly sufficient, and job-level overrides for analysis/deploy are present.
  • Concurrency control exists (weekly-crawl at workflow level, pages in deploy).
  • Secrets/vars references look valid for the intended design (COPILOT_GH_TOKEN, GITHUB_TOKEN, optional WEBHOOK_URL).

Blocking finding: the deploy job only runs hugo --minify. On a clean build, that produces public/search/index.html and RSS output, but does not produce public/pagefind/ assets. The search page template expects pagefind/pagefind-ui.js, so scheduled/manual publish runs can ship a broken search experience unless Pagefind is built explicitly in this workflow.

Readiness note: the reskill job is still a placeholder logger. It does not invoke scripts/reskill.py, does not write .squad/reskill/YYYY-WNN.md, and does not use the quality trend/reskill prompt path that the repository now contains.

.github/workflows/deploy-site.yml

  • builddeploy dependency is correct.
  • Permissions and Pages deployment setup are sufficient.
  • Concurrency control is present (pages).
  • This workflow does build Pagefind after Hugo, which matches the search page contract.

Pipeline contract verification

Crawl → Analyze

  • data/raw/2026-W21.json is valid JSON and matches the expected top-level contract: week, crawled_at, new_repos, trending_repos, signals, metadata.
  • Sample counts: 209 new repos, 215 trending repos.
  • docs/analysis-spec.md and prompts/analyze-weekly.md are aligned on:
    • required frontmatter keys,
    • required section order,
    • required Signal / Noise / Gaps subsections,
    • the rule that missing stars_gained must be called out explicitly.
  • data/analyzed/2026-W21-summary.md satisfies the documented structure and includes quality_score: 76.

Analyze → Generate

  • scripts/generate_content.py successfully reads the analyzed summary and can regenerate the weekly page.
  • Content drift finding: the committed content/weekly/2026/W21.md is still the older manual dry-run page, not the current generator output from data/analyzed/2026-W21-summary.md.

Rollups

  • scripts/generate_rollups.py runs successfully and can regenerate monthly/yearly pages.
  • Metric mismatch finding: regenerated monthly frontmatter computed total_repos_featured: 15, while the weekly summary reports repos_featured: 424. The current implementation is effectively counting unique linked repos, not the editorial pass size implied by the field name.
  • Current committed monthly/yearly content exists and builds, but future rollup generations need review before production use.

Reskill readiness

  • scripts/reskill.py, scripts/track_quality.py, and prompts/reskill.md all exist and are syntactically valid.
  • Reskill prompt rendering successfully reads squad wisdom/skills/history-derived state and resolves placeholders.
  • .squad/run-counter.txt is currently 0, so automatic reskill will not trigger until successful crawl runs increment the counter and reach a positive multiple of 5.

Content verification results

  • Weekly page exists: content/weekly/2026/W21.md
  • Monthly rollup exists: content/monthly/2026/05.md
  • Yearly rollup exists: content/yearly/2026.md
  • Search page exists and is configured: content/search/_index.md + layouts/search/list.html
  • RSS feed is generated by Hugo (public/index.xml observed after build)
  • Current committed rollup content uses Hugo-aware relref links.

Forward-looking note: scripts/generate_rollups.py currently constructs literal /weekly/... and /monthly/... paths for new entries, so future generated rollup entries can regress away from Hugo-aware links even though the committed content currently uses relref.

Known issues / limitations

Blocking issues (must resolve before release)

  1. Search asset pipeline incomplete (Owner: Fry)
    crawl-and-publish.yml deploys search pages without building fresh Pagefind assets on a clean runner. The search page template expects pagefind/pagefind-ui.js, so scheduled/manual publish runs can ship a broken search experience.

  2. Reskill workflow not integrated (Owner: Fry)
    The reskill job in crawl-and-publish.yml is still a placeholder logger. It does not invoke scripts/reskill.py, does not write .squad/reskill/YYYY-WNN.md, and does not use the quality trend/reskill prompt path. Additionally, the first reskill-cycle simulation (required for #24 acceptance criterion) has not been run and reviewed.

  3. Generated content drift (Owner: Fry)
    The committed content/weekly/2026/W21.md is stale relative to the current generator output from data/analyzed/2026-W21-summary.md. Future pipeline runs may produce inconsistencies.

Non-blocking follow-ups (post-launch)

  1. Rollup generation currently undercounts total_repos_featured and may emit hardcoded internal paths on new entries.
  2. Hugo build passes, but theme deprecation warnings should be cleaned up before a future Hugo upgrade removes those APIs.

Readiness verdict

FAIL

The codebase is close: tests are green, the analyzer contract is well defined, and the core scripts/builds run. But the production pipeline still has blocking readiness gaps in search deployment, reskill automation wiring, and generated-content consistency. I would not call v1 release-ready until those are fixed and re-verified.