Skip to content

test(artifact-registry-coverage): Phase 4 PR 5 — ae-research producer-side CI guard#243

Merged
cipher813 merged 2 commits into
mainfrom
feat/artifact-registry-coverage-ci-guard
May 27, 2026
Merged

test(artifact-registry-coverage): Phase 4 PR 5 — ae-research producer-side CI guard#243
cipher813 merged 2 commits into
mainfrom
feat/artifact-registry-coverage-ci-guard

Conversation

@cipher813
Copy link
Copy Markdown
Owner

Summary

Phase 4 PR 5 of the artifact-freshness-monitor arc (plan doc at ~/Development/alpha-engine-docs/private/artifact-freshness-monitor-260527.md; ROADMAP P1 entry in alpha-engine-config #342 / #344). Mirrors alpha-engine-data PR 4 #336 (merged 2026-05-27) across the ae-research repo. The cascade closes producer-side coverage of the registry across all 4 producing repos.

Sibling PRs ship same-session: ae-predictor PR 6, ae-backtester PR 7.

What this catches

A new s3.put_object(...) or s3.upload_file(...) in ae-research production code that hasn't been registered in alpha-engine-config/private-docs/ARTIFACT_REGISTRY.yaml (or explicitly grandfathered). Forces operator attention at every new producer addition — the silent absence-of-artifact bug class (e.g., 2026-05-17→27 pit_parity.json, 2026-05-23 missing signals.json — which originates in this repo's graph/research_graph.pylambda/handler.py) can't slip past PR review without an explicit register-or-grandfather decision.

Initial pin

30 PUT sites across 20 files in ae-research production code (excludes tests/, infrastructure/lambdas/, .claude/). Notable concentrations:

  • archive/manager.py: 5 (per-thesis archive + db backup)
  • evals/*.py: 8 across 6 files (orchestrator, judge, manifest, scorecard, rolling_mean, clustering)
  • data/fetchers/*.py: 3 (analyst, insider, revision daily snapshotters)
  • scoring/factor_scoring.py: 2 (per-date + latest pointer)

Test plan

  • pytest tests/test_artifact_registry_coverage.py -v — 3 passing
  • Post-merge: stress-test by adding a synthetic s3.put_object(...) line to any existing producer file → test fails with the operator-resolution message

🤖 Generated with Claude Code

…-side CI guard

Phase 4 PR 5 of the artifact-freshness-monitor arc (plan doc:
~/Development/alpha-engine-docs/private/artifact-freshness-monitor-260527.md).
Mirrors alpha-engine-data PR 4 (#336, merged 2026-05-27) across the
ae-research repo. The cascade closes producer-side coverage of the
registry across all 4 producing repos (ae-data done; this is PR 5).

What this catches: new s3.put_object(...) / s3.upload_file(...) in
ae-research production code without a matching ARTIFACT_REGISTRY.yaml
entry. Forces operator attention at every new producer addition.

Initial pin: 30 PUT sites across 20 files in ae-research production
code (excluding tests/, infrastructure/lambdas/, .claude/, .venv/,
build/).

Design choice — per-file count over per-key-template extraction. See
ae-data PR 4 commit message for the full rationale.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@cipher813 cipher813 merged commit 5889d9e into main May 27, 2026
1 check passed
@cipher813 cipher813 deleted the feat/artifact-registry-coverage-ci-guard branch May 27, 2026 22:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant