refactor(structex): delete dead shadowed duplicate modules aragora/types.py and aragora/receipts.py#8633
Conversation
…pes.py and aragora/receipts.py Both modules are dead/unreachable: same-named packages aragora/types/ and aragora/receipts/ shadow them and take import precedence, so `import aragora.types`/`import aragora.receipts` already resolve to the packages (types/__init__.py, receipts/__init__.py). receipts.py was only a re-export of aragora.gauntlet.receipt + aragora.export.decision_receipt, both of which the receipts/ package already re-exports (strict superset); types.py's aliases were unreachable behind the package. No shim is needed (the packages take over). ODR conflict check clean: zero open PRs touch either file (the 3 open ODR PRs #8608/#8389/#8289 are aragora/gauntlet/-only). Fulfills VAL-P4A-007. Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Aragora Code ReviewAdvisory-only review. No issues found. |
Grok independent model reviewReviewer: grok (xai) — independent adversarial model review via Grok Build CLI harness, grounded on the exact PR head. Verdict: PASS No findings. Review notes (non-blocking): Both deleted modules were shadowed by existing packages ( dogfood: yes |
Summary
Delete the two dead, shadowed duplicate modules
aragora/types.pyandaragora/receipts.py(P4a layering foundation; architecture §6 module consolidation map; featurep4a-dead-files).Both
.pyfiles are unreachable because same-named packages shadow them and take import precedence:import aragora.typesresolves toaragora/types/__init__.py(not the.py)import aragora.receiptsresolves toaragora/receipts/__init__.py(not the.py)So deleting the
.pyfiles is semantically inert and needs no shim (the packages already take over). Specifically:aragora/receipts.pyonly re-exportedDecisionReceipt(fromaragora.gauntlet.receipt) andLegacyDecisionReceipt(fromaragora.export.decision_receipt). Thearagora/receipts/package already re-exports both (strict superset, plusLaneCompletionReceipt/emit_lane_receipt/etc.).aragora/types.py's aliases (AgentName/DebateId/Score) were unreachable behind thearagora/types/package (which exports the event protocols). No external module imported those aliases (only the deleted file's own docstring referenced them).ODR conflict check (MANDATORY FIRST STEP) — CLEAN
Re-ran
gh pr diff --name-onlyacross all 233 open PRs and explicitly on the 3 open ODR PRs:aragora/types.pyoraragora/receipts.pythemselves.aragora/gauntlet/(+ aragora-verify/pyproject/tests) — zero file overlap with this deletion. Pre-cleared perlibrary/operator-approvals.md(orchestrator ODR-gate authorization 2026-06-25); adjacent gauntlet/ activity is explicitly non-blocking.Validation (fulfills VAL-P4A-007)
Local gates (all green):
make lint✓ ·ruff format --check✓ · differential typecheck (new=64 ≤ env-drift 66) ✓ ·pytest tests/types tests/receipts tests/export671 passed ✓ ·make test-smokeimport canary ✓ · smoke tier 138 passed ✓.Notes for reviewers
aragora.types,aragora.receipts) keep working because the packages shadow the deleted files (verified above).aragora/module_tiers.yamlis intentionally NOT regenerated in this PR. Deletingtypes.pyrecomputes thetypesmodule tier (integrated→experimental), butaragora/module_tiers.yamlis path-frozen by open PRs chore(deps): update audit-vulnerable Python locks #8460/fix(ci): clear base security and smoke blockers #8461/feat(tier4): settle_tier4_pr.py — one-command --settle-apply + receipt-backed preapproval gate #8382. The Module Tier Drift workflow is non-required and is already red on main for an unrelated ambient reason (NEW module: missions). Per the documenteddocs/METRICS.mdpath-freeze precedent, this drift is left for an orchestrator-coordinated regen that absorbs both items (does not affect the 6 required checks;docs/METRICS.mditself stays within the 0.5% drift tolerance, so it is unchanged)..github/CODEOWNERSglob/aragora/types.py @an0miumis left untouched: CODEOWNERS is a@scarmani-pinned Tier-4 merge-authority surface; a dangling glob is harmless (GitHub ignores entries for non-existent paths). Flagged for an operator-owned follow-up.Risk
Minimal. Deletion of unreachable dead code; import behavior is unchanged (proven by the companion import check + import canary + 671 consumer tests).