Skip to content

forward-test: use SEC_USER_AGENT secret, retry throttled GDELT names, bound run time - #3

Merged
zariffromlatif merged 2 commits into
mainfrom
claude/laughing-gates-gmc4fm
Oct 16, 2026
Merged

zariffromlatif merged 2 commits into
mainfrom
claude/laughing-gates-gmc4fm

Conversation

@zariffromlatif

@zariffromlatif zariffromlatif commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

Summary

What changed?

  1. Contact email from a secret. forward-test.yml reads SEC_USER_AGENT from secrets.SEC_USER_AGENT first, then the repository variable, then the default.
  2. GDELT throttling handling (run_forward_test.py):
    • Names that fail get one retry pass, after a 2-minute cooldown and with a 15-second pause between requests.
    • Once a 40-minute budget is spent, no new request starts and the skipped names are recorded as errors.
    • Progress is printed per name as the run goes.
  3. A 60-minute job timeout in the workflow, instead of GitHub's default of 6 hours.
  4. Report (summarize.py): every one of the 20 pre-registered names now gets a row, and a new News fetch failures column counts the runs with no GDELT coverage for each name.

Why was this needed?

  • The repo is public, and GitHub prints repository variables unmasked in Actions logs. Secrets are masked.
  • The first live run (2026-10-16) took 22 minutes. 6 of 20 names (NVDA, AMZN, BAC, BA, GM, COIN) got GDELT "429 Too Many Requests" after every retry, leaving coverage gaps that the report didn't show. Names with no activity also had no row at all, so "quiet" looked the same as "not tracked".

Validation

  • Relevant tests pass (pytest -q aetherius/tests): 121 passed (was 116). New tests cover:

    • a throttled name recovering in the retry pass;
    • a name that keeps failing being reported, not dropped;
    • the budget stopping new requests without a pointless cooldown;
    • the per-name failure count;
    • every pre-registered name being listed.

    Retry timing is tested with a fake clock, so no test sleeps.

  • SVB-2023 backtest still passes if scoring / mapping / ingestion changed: not applicable. The frozen scorer is untouched.

  • Lint passes (ruff check aetherius simulations scripts).

  • Docs updated: simulations/forward_test/README.md.

I regenerated the report from the real first-run log: all 20 names are listed, and the 6 throttled names show 1 failure each.

Scope

  • Ingestion, entity mapping, scoring, or signals (aetherius/app/services/...)
  • Delivery / templates / review workflow
  • Backtests (simulations/backtest/...)
  • Docs / governance / landing page only

Forward test only (simulations/forward_test/, .github/workflows/forward-test.yml).

Safety Checklist

  • No secrets committed (.env, API keys, tokens)
  • No generated artifacts committed (simulations/artifacts/, runtime logs)
  • No client-specific / private data included
  • Marketing / README claims still match implementation reality

Notes for Reviewers

  • The SEC_USER_AGENT secret is already set. Delete any repository variable with the same name.
  • The first run's single flag (TSLA, "Techs Slide On Anthropic Valuation Report; Tesla Reveals Flying Roadster") is a false positive from the documented substring class ("slide" and "slid"). It should be labeled not material in labels.json.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HTqzkhjyuhZZun8Az1tW6C

Repository variables are printed unmasked in public Actions logs; secrets
are masked. Falls back to the variable, then the default.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HTqzkhjyuhZZun8Az1tW6C
Copilot AI balanced review requested due to automatic review settings October 16, 2026 08:16

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

The first live run took 22 minutes and 6 of 20 names (NVDA, AMZN, BAC,
BA, GM, COIN) got GDELT 429s after every retry, leaving silent coverage
gaps. Failed names now get one retry pass after a cooldown with a longer
pause; a 40-minute budget stops new requests and records skipped names;
progress prints per name; the job has a 60-minute timeout. The report
lists all 20 pre-registered names and a per-name news-fetch-failure count.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HTqzkhjyuhZZun8Az1tW6C
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Deploying aetherius with  Cloudflare Pages  Cloudflare Pages

Latest commit: 0fe1c8e
Status: ✅  Deploy successful!
Preview URL: https://fa347027.aetherius-7cp.pages.dev
Branch Preview URL: https://claude-laughing-gates-gmc4fm.aetherius-7cp.pages.dev

View logs

@zariffromlatif zariffromlatif changed the title forward-test: read SEC_USER_AGENT from a secret first forward-test: use SEC_USER_AGENT secret, retry throttled GDELT names, bound run time Oct 16, 2026
@zariffromlatif
zariffromlatif merged commit 60f6694 into main Oct 16, 2026
2 checks passed
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.

3 participants