WordPress Community & Adoption Health

Refresh runbook

This page records the safest next steps for refreshing the WordPress relevance report. It is intentionally operational: what to run, what to import next, and how to avoid another low-disk failure.

Current DB

community_health.sqlite, rebuilt from local exports plus cached public sources.

Published report

wordpress-community-health/index.html on GitHub Pages.

Disk rule

Free at least 500 MB before pulling a new source or rebuilding the compressed DB export.

Safe Refresh Order

1. Check space first.
df -h /Users/admin. Stop if free space is under 500 MB.
2. Validate the current DB and HTML.
sqlite3 community_health.sqlite "PRAGMA integrity_check; PRAGMA journal_mode;". Expected: ok and delete. Then run python3 refresh_report_artifacts.py --validate-only to check generated HTML structure, required sections, local-link leaks, and missing local targets or fragments.
3. Refresh one source family at a time.
Import or fetch a single partial signal, verify row counts, then regenerate with --skip-network.
4. Rebuild artifacts.
python3 refresh_report_artifacts.py. This runs make_community_health_report.py --skip-network, the focused companion generators, make_decision_brief.py, make_progress_summary.py, make_source_gap_plan.py, and make_data_inventory.py in order, then validates the generated HTML. Gzip the DB only after the HTML succeeds.
5. Publish Pages artifacts.
Copy final_report.html, decision_brief.html, progress_summary.html, goal_audit.html, data_inventory.html, project_load.html, market_position.html, new_site_choice.html, search_interest.html, developer_interest.html, job_demand.html, support_load.html, contributor_depth.html, ecosystem_activity.html, source_gap_plan.html, make_community_health_report.py, refresh_report_artifacts.py, make_decision_brief.py, make_progress_summary.py, make_goal_audit.py, make_data_inventory.py, make_project_load_report.py, make_market_position_report.py, make_new_site_choice_report.py, make_search_interest_report.py, make_developer_interest_report.py, make_job_demand_report.py, make_support_load_report.py, make_contributor_depth_report.py, make_ecosystem_activity_report.py, make_source_gap_plan.py, and community_health.sqlite.gz into the Pages workspace, commit, push, and verify the public URL.

Next Source Imports

PrioritySignalSourceTarget tableSuccess check
1New-site share historyPaid BuiltWith trends export or HTTP Archive cohort query by first-seen month.new_site_share_quarterlyQuarterly WordPress, Shopify, Wix, Squarespace, Webflow rows across multiple years.
2Search interestGoogle Trends CSV export for WordPress, WordPress developer, WordPress alternatives, and peer builders.search_interest_quarterlyQuarterly normalized search series replacing the Wikimedia-only proxy.
3Broad job demandLightcast, Indeed/Hiring Lab, LinkedIn, or equivalent labor-market export.job_demand_quarterlyWordPress and peer demand by quarter, not just HN or jobs.wordpress.net snapshots.
4Support historyWordPress.org support forum export or recurring snapshots of all, unresolved, resolved, and no-reply views.support_forum_quarterlyHistorical topics opened/resolved/unanswered trend instead of current queue only.
5Developer interestKeep Stack Overflow, Wikimedia, npm package downloads, and GitHub PR activity; add another developer-community source if available.developer_interest_quarterlyDeveloper attention signal that is not only help-question volume.

Do Not Re-Discover

The existing SQLite database already stores source_files, source_gaps, imported ticket exports, generated category summaries, public-source snapshots, and the derived HTTP Archive tracked-share table. Add new sources as separate tables, update source_gaps only when the new evidence materially improves a partial signal, and rerun make_data_inventory.py so the public inventory stays synchronized with SQLite.

Run python3 refresh_report_artifacts.py whenever goal coverage, project-load data, market-position data, search-interest data, developer-interest data, job-demand data, support-load data, contributor-depth counts, ecosystem snapshots, source counts, or partial-source labels change so goal_audit.html, project_load.html, market_position.html, search_interest.html, developer_interest.html, job_demand.html, support_load.html, contributor_depth.html, ecosystem_activity.html, data_inventory.html, and source_gap_plan.html stay synchronized with SQLite.