Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
9672e34
chore(codex): bootstrap PR for issue #3879
github-actions[bot] Nov 29, 2025
21bab4e
Handle infinite cadence intervals without deprecated pandas option
stranske Nov 29, 2025
9aef2a7
Handle infinite cadence intervals without deprecated pandas option (#…
stranske Nov 29, 2025
d51bdc1
chore(autofix): formatting/lint
github-actions[bot] Nov 29, 2025
015011e
fix: replace missing reusable workflow with inline rate limit check
stranske Nov 29, 2025
193be1b
fix: keepalive dispatch payload overflow and add rate limit retry
stranske Nov 29, 2025
885251d
fix: make script logging optional for CI environments
stranske Nov 29, 2025
3ba4d96
Fix infinite cadence test and format bootstrap file (#3890)
stranske Nov 29, 2025
22e5427
Handle infinite cadence intervals without deprecated pandas options (…
stranske Nov 29, 2025
f0755a0
fix(health): remove redundant 'const core' declarations
stranske Nov 29, 2025
c24cb64
fix: preserve checklist progress when updating PR status summary
stranske Nov 29, 2025
6874326
feat(workflows): add rate limit resilience improvements
stranske Nov 29, 2025
62e0644
refactor: consolidate root folder and add directory index
stranske Nov 30, 2025
c58f0e4
Merge branch 'phase-2-dev' into chore/root-folder-cleanup
stranske Nov 30, 2025
3a2f5d0
chore: archive agent files for closed issues
stranske Nov 30, 2025
64ed6a1
docs: update directory index for agent archival
stranske Nov 30, 2025
66911a2
chore: archive unused GitHub actions
stranske Nov 30, 2025
43559a8
docs: update WORKFLOW_GUIDE.md with 16 missing workflows
stranske Nov 30, 2025
7565e3c
Merge branch 'phase-2-dev' into chore/root-folder-cleanup
stranske Nov 30, 2025
06649f2
chore: clean up analysis and assets folders
stranske Nov 30, 2025
8890d98
chore: clean up .github root files
stranske Nov 30, 2025
bb6d379
docs: update INDEX.md with repository structure overview
stranske Nov 30, 2025
ced7fce
docs: update INDEX.md with 2025-11-30 cleanup details
stranske Nov 30, 2025
6d921fb
docs: update INDEX.md with config, examples, notebooks review
stranske Nov 30, 2025
3ccf089
chore: clean up perf and reports folders
stranske Nov 30, 2025
11d542f
chore: review scripts folder and archive one-off fix
stranske Nov 30, 2025
8289027
chore: review streamlit_app and fix old path references
stranske Nov 30, 2025
db4264e
test: reorganize workflow tests into tests/workflows/
stranske Nov 30, 2025
a3c0a80
test: fix 3 failing tests with outdated expectations
stranske Nov 30, 2025
a11f20a
test: fix pandas FutureWarning by using 'ME' instead of 'M' frequency
stranske Nov 30, 2025
809ea0f
chore: review tools/ directory and remove stale workflow catalog
stranske Nov 30, 2025
6db82cc
chore: remove tracked src/trend_analysis.egg-info/ build artifact
stranske Nov 30, 2025
db9facd
chore: remove stale app.py.backup from source tree
stranske Nov 30, 2025
42a62fe
docs: archive 45 completed implementation plans and issue docs
stranske Nov 30, 2025
6046442
docs: consolidate and update documentation for consistency
stranske Nov 30, 2025
c82d15b
docs: replace vendored actionlint docs with project-specific content
stranske Nov 30, 2025
31bed5e
docs: update INDEX.md with documentation consolidation details
stranske Nov 30, 2025
1970ac5
docs: streamline Agents.md and update phase-2 spec
stranske Nov 30, 2025
b8ae042
docs: rewrite README.md for novice users and fix broken link
stranske Nov 30, 2025
2da0140
Merge remote-tracking branch 'origin/phase-2-dev' into chore/root-fol…
stranske Nov 30, 2025
5d0ebce
fix(ci): correct path to github_scripts tests
stranske Nov 30, 2025
974c46a
fix(ci): add missing test fixtures and update workflow docs
stranske Nov 30, 2025
055d47d
fix(ci): add agents-pr-meta-v3.yml to workflow allowlists
stranske Nov 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 1 addition & 3 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,14 @@

# Documentation and notebooks
/docs/** @stranske
/Old/** @stranske
/notebooks/** @stranske
/*.ipynb @stranske

# CI/CD and container files
/.github/workflows/** @stranske

# Critical agent workflows require owner approval
/.github/workflows/agents-63-chatgpt-issue-sync.yml @stranske
/.github/workflows/agents-63-codex-issue-bridge.yml @stranske
/.github/workflows/agents-63-issue-intake.yml @stranske
/.github/workflows/agents-70-orchestrator.yml @stranske
/Dockerfile @stranske
/docker-compose.yml @stranske
1 change: 0 additions & 1 deletion .github/workflows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ Core layers:
- Governance & Health: `health-40-repo-selfcheck.yml`, `health-41-repo-health.yml`, `health-42-actionlint.yml`, `health-43-ci-signature-guard.yml`, `health-44-gate-branch-protection.yml`, labelers, dependency review, CodeQL.
- Keepalive heartbeat (`maint-keepalive.yml`): twice-daily cron + dispatch workflow that posts a timestamped comment (with run link) to the Ops heartbeat issue using `ACTIONS_BOT_PAT` and fails fast if either the issue variable or PAT is missing.
- Coverage guard (`maint-coverage-guard.yml`): daily cron + dispatch workflow that fetches the latest Gate coverage artifacts, compares them to the configured baseline, and maintains the rolling `[coverage] baseline breach` issue.
- Path Labeling: `pr-path-labeler.yml` auto-categorizes PRs.

### 1.1 Current CI Topology (Issue #2439)
The CI stack now routes every pull request through a single Gate workflow that orchestrates the reusable CI and Docker checks:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr-00-gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ jobs:
with:
python-version: '3.11'
- run: python -m pip install --upgrade pip pytest requests
- run: pytest tests/github_scripts
- run: pytest tests/workflows/github_scripts

docker-smoke:
name: docker smoke
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,10 @@ results/
!tests/fixtures/keepalive_post_work/*.json
!tests/fixtures/agents_pr_meta/*.json
!tests/fixtures/orchestrator/*.json
!tests/workflows/fixtures/keepalive/*.json
!tests/workflows/fixtures/keepalive_post_work/*.json
!tests/workflows/fixtures/agents_pr_meta/*.json
!tests/workflows/fixtures/orchestrator/*.json
!tests/data/*.csv
# generated tear sheets
reports/*.png
Expand Down
6 changes: 0 additions & 6 deletions AGENTS_APP.md

This file was deleted.

825 changes: 121 additions & 704 deletions Agents.md

Large diffs are not rendered by default.

401 changes: 153 additions & 248 deletions README.md

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions README_DATA.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Demo dataset provenance

This repository bundles a few small CSV files (for example `hedge_fund_returns_with_indexes.csv`, `Trend Universe Data.csv`, and other samples under `demo/`). They exist solely to support tests, docs, and interactive demos.
This repository bundles a few small CSV files in the `data/` folder (for example `data/hedge_fund_returns_with_indexes.csv`, `data/Trend Universe Data.csv`, and other samples under `demo/`). They exist solely to support tests, docs, and interactive demos.

- **Provenance:** All bundled data is synthetic or derived from public benchmark series. No confidential client information or proprietary hedge fund records are present.
- **Intended use:** The files allow contributors to exercise the Trend Model demos, verify export pipelines, and run automated tests without reaching out to live data providers.
Expand Down Expand Up @@ -42,7 +42,7 @@ not meant to inform live investment decisions.

## Risk-free columns in sample data

- The long backtest sample (`hedge_fund_returns_with_indexes.csv`) includes a
- The long backtest sample (`data/hedge_fund_returns_with_indexes.csv`) includes a
**"Risk-Free Rate"** column. Configs such as `config/long_backtest.yml`
specify `data.risk_free_column: "Risk-Free Rate"` and set
`allow_risk_free_fallback: false` to ensure the cash proxy is used and
Expand Down
3 changes: 0 additions & 3 deletions ROBUSTNESS_GUIDE.md

This file was deleted.

28 changes: 23 additions & 5 deletions agents/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,27 @@
# Agents instruction index

The files in this directory house the active Codex/agent guidance tied to in-flight issues. Historical bootstraps that referenced retired workflows now live in `../archives/agents/`.
This directory contains **active** Codex/agent guidance tied to **open** issues only.
Files for closed issues are archived to `archives/agents/` with a date prefix.

Use the following canonical sources when adding or updating instructions:
- `.github/workflows/README.md` — current workflow inventory and naming rules.
- `docs/ci/AGENTS_POLICY.md` — protection contract and verification steps for the agents workflows.
## Current active files

If an issue-specific instruction file no longer matches the live workflow names or policy versions, move it to `archives/agents/` with a date prefix and note the replacement source.
| File | Issue | Status |
|------|-------|--------|
| `codex-3572.md` | [#3572](https://github.com/stranske/Trend_Model_Project/issues/3572) | OPEN |

## Maintenance

See `MAINTENANCE.md` for archival criteria. When an issue closes:

1. Run `scripts/archive_agents.sh` to auto-archive closed-issue files
2. Or manually: `mv codex-NNNN.md ../archives/agents/$(date +%Y-%m-%d)-codex-NNNN.md`

## Canonical sources

- `.github/workflows/README.md` — workflow inventory and naming rules
- `docs/ci/AGENTS_POLICY.md` — protection contract and verification steps

## Archive history

- **2025-11-30**: Bulk archived 415 codex files and 18 ledger files (all closed issues)
- **2025-11-22**: Archived 4 files referencing retired workflow names
4 changes: 2 additions & 2 deletions analysis/results.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
__all__ = ["Results", "build_metadata", "compute_universe_fingerprint"]

_ROOT = Path(__file__).resolve().parents[1]
_DEFAULT_DATA_PATH = _ROOT / "Trend Universe Data.csv"
_DEFAULT_MEMBERSHIP_PATH = _ROOT / "Trend Universe Membership.csv"
_DEFAULT_DATA_PATH = _ROOT / "data" / "Trend Universe Data.csv"
_DEFAULT_MEMBERSHIP_PATH = _ROOT / "data" / "Trend Universe Membership.csv"


def _coerce_series(obj: Any) -> pd.Series:
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loading
Loading