Political Economy Eval-Ready Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Move political economy from a deferred candidate shell to eval_ready with a subject-owned fixture pack, manifest-backed signals, and gate coverage, while keeping it unavailable for default runtime activation.
Architecture: Reuse the existing runtime subject contract, manifest-backed subject router, and eval-ready gate. Political economy becomes measurable only when the evaluation runner passes evaluation_subjects=["political-economy"]; default runtime suggestions still require a later runtime_enabled promotion.
Tech Stack: Python 3, unittest, PyYAML runtime manifests, JSON subject router fixtures, Qiongli bridge modules, local subject router evaluation script.
File Map
- Modify:
tests/test_subject_router_eval.py- Add a real political-economy eval-ready gate test.
- Keep runtime-enabled blocked while the subject is only
eval_ready. - Remove political economy from the deferred-shell blocker loop.
- Modify:
content/subjects/political-economy/runtime-subject.yaml- Set
activation_status: eval_ready. - Add subject-owned
subject_skill. - Add method, data/outcome, venue, and theory/construct signal groups.
- Add method lenses and a subject-specific
evaluation_pack.
- Set
- Create:
tests/fixtures/subject_router_eval/political-economy/*.json- Add clear positive, method-only borrow, confirmed-subject, mixed-adjacent, and near-miss fixtures.
- Modify:
docs/superpowers/roadmaps/2026-07-01-adaptive-subject-runtime-roadmap.md- Record political economy as the current eval-ready Stage 4 subject.
- Keep geoeconomics and economics-accounting as deferred candidates.
Execution Notes
- Do not promote political economy to
runtime_enabled. - Do not change finance, economics, accounting, or business routing behavior.
- Do not change provider configuration, local-agent execution, release automation, or plugin packaging.
- Group commits by content:
test(subject-router): cover political economy eval readinessfeat(subjects): mark political economy eval readydocs(roadmap): record political economy eval readiness
Task 1: Add Political Economy Gate Tests
Files:
Modify:
tests/test_subject_router_eval.py[ ] Step 1: Write the failing eval-ready gate test
Add this test next to the existing accounting, business, and economics real fixture pack gate tests:
def test_political_economy_eval_ready_gate_passes_real_fixture_pack(self) -> None:
cases = load_eval_cases(FIXTURE_DIR)
report = subject_gate_report("political-economy", cases, gate="eval-ready")
self.assertEqual(report["subject"], "political-economy")
self.assertEqual(report["activation_status"], "eval_ready")
self.assertTrue(report["eligible_for_eval_ready"])
self.assertFalse(report["eligible_for_runtime_enabled"])
self.assertEqual(report["blocking_failures"], [])
self.assertEqual(report["metrics"]["decision_accuracy"], 1.0)
self.assertEqual(report["metrics"]["primary_subject_accuracy"], 1.0)
self.assertEqual(report["metrics"]["suggest_subject_precision"], 1.0)
self.assertEqual(report["metrics"]["forbidden_subject_accuracy"], 1.0)
self.assertEqual(report["metrics"]["method_lens_accuracy"], 1.0)
self.assertEqual(report["metrics"]["all_case_checks_passed"], 1.0)
self.assertEqual(report["metrics"]["near_miss_false_positives"], 0)- [ ] Step 2: Write the failing runtime guard test
Add this test near the business eval-ready/runtime blocking tests:
def test_political_economy_runtime_enabled_gate_blocks_eval_ready_manifest(self) -> None:
cases = load_eval_cases(FIXTURE_DIR)
report = subject_gate_report(
"political-economy",
cases,
gate="runtime-enabled",
)
self.assertEqual(report["activation_status"], "eval_ready")
self.assertFalse(report["eligible_for_eval_ready"])
self.assertFalse(report["eligible_for_runtime_enabled"])
self.assertIn("activation_status is eval_ready", report["blocking_failures"])- [ ] Step 3: Keep only true deferred shells in the candidate blocker test
Change the deferred_subjects tuple in test_candidate_subject_eval_ready_gate_reports_deferred_shell_reasons to:
deferred_subjects = (
"geoeconomics",
"economics-accounting",
)- [ ] Step 4: Run the targeted RED check
Run:
.venv/bin/python -m unittest tests.test_subject_router_eval.SubjectRouterEvalTests.test_political_economy_eval_ready_gate_passes_real_fixture_pack -qExpected before implementation:
FAIL: activation_status is candidateTask 2: Add Political Economy Runtime Manifest Resources
Files:
Modify:
content/subjects/political-economy/runtime-subject.yaml[ ] Step 1: Promote only to eval-ready
Set:
activation_status: eval_ready
subject_skill: content/subjects/political-economy/skills/political-economy-mechanism-auditor.md
evaluation_pack: tests/fixtures/subject_router_eval/political-economy- [ ] Step 2: Add method-only signals and lenses
Add method signals whose activation is method_only:
method:
- id: political-economy.method.process-tracing
value: process-tracing
activation: method_only
method_lenses:
- political-mechanism-audit
- id: political-economy.method.comparative-case
value: comparative-case
activation: method_only
method_lenses:
- comparative-institutional-designAdd method lenses:
method_lenses:
political-mechanism-audit:
resource: content/subjects/political-economy/skills/political-economy-mechanism-auditor.md
activation: method_only
comparative-institutional-design:
resource: content/subjects/political-economy/overlays/skills/study-designer.md
activation: method_only
political-economy-positioning:
resource: content/subjects/political-economy/overlays/skills/manuscript-architect.md
activation: method_only- [ ] Step 3: Add subject-level signals
Add at least one subject signal in data_or_outcome and at least one in theory_or_construct, plus venue context_only signals. Positive fixtures must hit at least two dimensions and one subject-level dimension.
- [ ] Step 4: Keep runtime disabled
Do not set activation_status: runtime_enabled.
Task 3: Add Subject-Owned Fixtures
Files:
Create:
tests/fixtures/subject_router_eval/political-economy/clear_actor_institution_outcome.jsonCreate:
tests/fixtures/subject_router_eval/political-economy/method_only_process_tracing_borrow.jsonCreate:
tests/fixtures/subject_router_eval/political-economy/confirmed_political_economy_mechanism_audit.jsonCreate:
tests/fixtures/subject_router_eval/political-economy/mixed_finance_distributional_conflict.jsonCreate:
tests/fixtures/subject_router_eval/political-economy/near_miss_policy_brief.jsonCreate:
tests/fixtures/subject_router_eval/political-economy/near_miss_campaign_strategy.json[ ] Step 1: Add clear positive fixture
Expected:
{
"decision": "recommend",
"primary_subject": "political-economy",
"suggest_subjects": ["political-economy"],
"forbidden_subjects": [],
"method_lenses": ["political-mechanism-audit", "political-economy-positioning"]
}- [ ] Step 2: Add method-only borrow fixture
Expected:
{
"decision": "recommend",
"primary_subject": "auto",
"suggest_subjects": [],
"forbidden_subjects": ["political-economy"],
"method_lenses": ["political-mechanism-audit"]
}- [ ] Step 3: Add confirmed-subject fixture
Use active_subject: "political-economy" and subject_mode: "confirmed".
Expected:
{
"decision": "confirm_subject",
"primary_subject": "political-economy",
"suggest_subjects": [],
"forbidden_subjects": [],
"method_lenses": []
}- [ ] Step 4: Add adjacent and near-miss guards
Near misses must stay core_only with forbidden_subjects: ["political-economy"]. The mixed finance case may mention market returns, but it must still include enough political economy subject-level signal to keep the expected primary subject as political-economy under the eval-ready gate.
Task 4: Verify Gate And Update Roadmap
Files:
Modify:
docs/superpowers/roadmaps/2026-07-01-adaptive-subject-runtime-roadmap.md[ ] Step 1: Run targeted GREEN checks
Run:
.venv/bin/python -m unittest tests.test_subject_router_eval.SubjectRouterEvalTests.test_political_economy_eval_ready_gate_passes_real_fixture_pack -q
.venv/bin/python tooling/scripts/evaluate_subject_router.py --subject political-economy --gate eval-ready --jsonExpected:
eligible_for_eval_ready: true
blocking_failures: []
near_miss_false_positives: 0- [ ] Step 2: Run related regression checks
Run:
.venv/bin/python -m unittest tests.test_subject_router_eval tests.test_subject_contracts -q
git diff --checkExpected: all commands exit 0.
- [ ] Step 3: Update Stage 4 roadmap
Record:
political economy is now
eval_ready.runtime activation remains a later promotion-ready/runtime-enabled follow-up.
geoeconomics and economics-accounting remain deferred candidate shells.
[ ] Step 4: Commit by content
Run:
git add tests/test_subject_router_eval.py tests/fixtures/subject_router_eval/political-economy
git commit -m "test(subject-router): cover political economy eval readiness"
git add content/subjects/political-economy/runtime-subject.yaml
git commit -m "feat(subjects): mark political economy eval ready"
git add docs/superpowers/plans/2026-07-06-political-economy-eval-ready.md docs/superpowers/roadmaps/2026-07-01-adaptive-subject-runtime-roadmap.md
git commit -m "docs(roadmap): record political economy eval readiness"