Operating Guide
Weekly: Freshness Review
Section titled “Weekly: Freshness Review”- Run the portfolio generator:
node tools/portfolio/generate.js - Check
reports/dogfood-portfolio.json— inspect thestalearray - Repos with
freshness_days > 14get a warning flag - Repos with
freshness_days > 30are in violation — re-run the scenario or document the block
Monthly: Policy Calibration
Section titled “Monthly: Policy Calibration”- Review all
warn-onlyandexemptrepos for promotion torequired - Check
review_afterdates — past-due repos must be evaluated - Promotion criteria: repo has passed dogfood at least twice on required-equivalent scenarios
- If a repo can’t promote, document why and set a new
review_afterdate
On Failure
Section titled “On Failure”- Investigate root cause — is it the scenario, the repo, or the infrastructure?
- Fix the scenario or repo, not the governance system
- Update rollout doctrine only if the failure reveals a genuinely new seam
- Never weaken enforcement to make a failure go away
New Repo Onboarding
Section titled “New Repo Onboarding”- Create a policy YAML in
policies/repos/mcp-tool-shop-org/<repo>.yamlwithenforcement.mode: required - Identify the correct surface type from the 8 defined surfaces: cli, desktop, web, api, mcp-server, npm-package, plugin, library
- Define required scenarios and freshness thresholds in the policy under
surfaces.<surface> - In the source repo, create
dogfood/scenarios/<scenario-id>.yamlfollowing the scenario contract - Create a dogfood workflow in the source repo (
.github/workflows/dogfood.yml) that builds a submission and dispatches to dogfood-labs - The source workflow should use the submission builder (
tools/report/build-submission.js) to produce a canonical submission - Run the workflow, verify ingestion produces an accepted record, confirm the repo appears in
indexes/latest-by-repo.json - Run
npx @mcptoolshop/shipcheck auditon the source repo to confirm Gate F passes
Running Ingestion Locally
Section titled “Running Ingestion Locally”The ingestion CLI (tools/ingest/run.js) requires an explicit --provenance flag:
# Production (in CI) -- verifies source runs via GitHub APInode tools/ingest/run.js --file submission.json --provenance=github
# Local development / testing -- uses a stub that always confirmsnode tools/ingest/run.js --file submission.json --provenance=stubThe --provenance=stub flag is blocked in CI environments (CI=true or GITHUB_ACTIONS=true) as a safety measure. In CI without an explicit flag, the ingestion pipeline defaults to GitHub provenance and requires GITHUB_TOKEN.
CDN Cache Timing
Section titled “CDN Cache Timing”raw.githubusercontent.com caches for 3-5 minutes. After a fresh ingestion, Gate F may read stale data. This is operational, not a product defect. Wait 3-5 minutes and retry.
Rollout Doctrine
Section titled “Rollout Doctrine”10 rules learned from real failures during expansion:
- Surface truth — the scenario must match the real product surface
- Build output truth — verify the actual build artifact, not just source
- Protocol truth — use the real protocol the product exposes
- Runtime truth — exercise in the real runtime environment
- Process truth — test the actual process lifecycle
- Dispatch truth — verify the dispatch mechanism works end-to-end
- Concurrency truth — handle concurrent ingestion gracefully
- Verdict truth — source proposes, verifier confirms or downgrades
- Evidence truth — evidence must be machine-verifiable
- Entrypoint truth — use the real CLI interface, not assumed flags