From 1e53a727838074d5ef7ad352e47606733101de63 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 29 Sep 2026 12:20:46 -0400 Subject: [PATCH 1/2] Require published numbers to come from model runs Co-Authored-By: Claude Opus 5.5 --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f067d12..77225e4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -74,6 +74,7 @@ Things that reliably break CI or cause silent data loss — don't do any of thes - **Don't** create new files with `_v2` / `_v3` / `_new` suffixes. Edit the original in place — git keeps the history. - **Don't** delete code without grepping for callers. Passing tests ≠ safe to delete (tests may bypass the code being removed). - **Don't** hardcode values to make a specific test pass. Fix the root cause. +- **Don't** publish a number the model didn't compute. Every fiscal, distributional, poverty or household figure in an analysis, dashboard or report comes from running the microsimulation for that scenario, never from scaling, interpolating or extrapolating other runs' outputs, or from a side model standing in for PolicyEngine. A macro or price scenario goes in as model inputs, so everything uprated by it moves too. If there are too many scenarios to run, run fewer and say how many runs stand behind each figure. Agent-facing details are in the `policyengine` skill in [policyengine-skills](https://github.com/PolicyEngine/policyengine-skills). - **Don't** use `# pragma: no cover` for code that simply lacks tests — write tests instead. ## Code-coverage exclusions From 9e9a6bdb50851c2a7e5e80be859dd84feb89569a Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 29 Sep 2026 13:13:01 -0400 Subject: [PATCH 2/2] Scope to PolicyEngine estimates; match the skill's uprating wording Co-Authored-By: Claude Opus 5.5 --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 77225e4..e6d3868 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -74,7 +74,7 @@ Things that reliably break CI or cause silent data loss — don't do any of thes - **Don't** create new files with `_v2` / `_v3` / `_new` suffixes. Edit the original in place — git keeps the history. - **Don't** delete code without grepping for callers. Passing tests ≠ safe to delete (tests may bypass the code being removed). - **Don't** hardcode values to make a specific test pass. Fix the root cause. -- **Don't** publish a number the model didn't compute. Every fiscal, distributional, poverty or household figure in an analysis, dashboard or report comes from running the microsimulation for that scenario, never from scaling, interpolating or extrapolating other runs' outputs, or from a side model standing in for PolicyEngine. A macro or price scenario goes in as model inputs, so everything uprated by it moves too. If there are too many scenarios to run, run fewer and say how many runs stand behind each figure. Agent-facing details are in the `policyengine` skill in [policyengine-skills](https://github.com/PolicyEngine/policyengine-skills). +- **Don't** publish a number the model didn't compute. Every fiscal, distributional, poverty or household figure presented as a PolicyEngine estimate in an analysis, dashboard or report comes from running the microsimulation for that scenario, never from scaling, interpolating or extrapolating other runs' outputs, or from a side model standing in for PolicyEngine. A macro or price scenario goes in as model inputs, so the model's uprating carries it through. If there are too many scenarios to run, run fewer and say how many runs stand behind each figure. Agent-facing details are in the `policyengine` skill in [policyengine-skills](https://github.com/PolicyEngine/policyengine-skills). - **Don't** use `# pragma: no cover` for code that simply lacks tests — write tests instead. ## Code-coverage exclusions