๐ Resource Cycle Runbook
๐ Resource Cycle Runbook
Use this runbook when you want a repeatable, safe update process for Pashto resources.
๐ค Daily Automation (Already Enabled)
- Workflow: ../.github/workflows/resource_sync.yml
- Schedule: every day at 04:00 UTC
- Automation output:
- reviews existing resources for stale or low-signal entries
- updates ../resources/catalog/pending_candidates.json
- auto-promotes valid non-duplicate entries into ../resources/catalog/resources.json
- regenerates views and search payloads
- opens a review PR
๐งญ Manual Run (One Command)
Run from repository root:
python scripts/run_resource_cycle.py --limit 25
This executes:
python scripts/review_existing_resources.pypython scripts/sync_resources.py --limit 25python scripts/promote_candidates.pypython scripts/validate_resource_catalog.pypython scripts/generate_resource_views.pypython scripts/check_links.pypython -m pytest -q
๐ Discovery-Only Mode
Use this when you want candidates without immediate promotion:
python scripts/run_resource_cycle.py --discover-only --limit 25- Review ../resources/catalog/pending_candidates.json
- Promote selected entries with:
python scripts/promote_candidates.py --max-promotions <N>
- Regenerate and validate:
python scripts/run_resource_cycle.py --skip-pytest
- Commit and push.
โ Guardrails
- Auto-promotion requires dedupe + URL availability + catalog validation.
- Existing entries are removed only for strong reasons, logged in
resources/catalog/removal_log.json. - Keep only Pashto-centric resources.
- Generated files must always be committed after catalog changes.
๐งพ Versioning Reminder
- Version format:
vMAJOR.CODE.RESOURCE - Daily bot sync updates are resource updates.
- Code or implementation changes increment the middle figure.
- Example:
v1.1.1(code release) ->v1.1.2(resource release)