Parent Issue
Part of #31 — v0.3 Repo Restructure
Context
The current codebase keeps engine logic spread across app/, src/, config/, and storage/. According to the v0.3 roadmap, all shared engine code that is used by both the local app and the web demo must live in pulseengine/core/.
This is the first and most critical step of the repo split — it establishes the foundation that local/ and web/ will import from.
Modules to Move
| Current Path |
Target Path |
app/analysis.py / src/engine.py |
pulseengine/core/app.py |
config/settings.py |
pulseengine/core/config.py |
storage/storage.py |
pulseengine/core/storage.py |
app/backtest.py |
pulseengine/core/backtest.py |
src/price.py |
pulseengine/core/price.py |
src/news.py |
pulseengine/core/news.py |
src/signals.py |
pulseengine/core/signals.py |
src/context.py |
pulseengine/core/context.py |
src/explanation.py |
pulseengine/core/explanation.py |
src/sentiment.py |
pulseengine/core/sentiment.py |
Rules for core/
- No surface-specific imports —
core/ must not import anything from local/ or web/
- No file I/O assumptions — storage paths should be configurable, not hardcoded to any surface's working directory
- No Streamlit imports —
core/ is headless; the dashboard lives in local/
- Well-tested: all existing
tests/test_core.py and tests/test_pipeline.py must pass against the new layout
Acceptance Criteria
Notes
Do not touch local/ or web/ in this PR. This issue is purely about establishing core/. The other surfaces are handled in separate sub-issues of #31.
Parent Issue
Part of #31 — v0.3 Repo Restructure
Context
The current codebase keeps engine logic spread across
app/,src/,config/, andstorage/. According to the v0.3 roadmap, all shared engine code that is used by both the local app and the web demo must live inpulseengine/core/.This is the first and most critical step of the repo split — it establishes the foundation that
local/andweb/will import from.Modules to Move
app/analysis.py/src/engine.pypulseengine/core/app.pyconfig/settings.pypulseengine/core/config.pystorage/storage.pypulseengine/core/storage.pyapp/backtest.pypulseengine/core/backtest.pysrc/price.pypulseengine/core/price.pysrc/news.pypulseengine/core/news.pysrc/signals.pypulseengine/core/signals.pysrc/context.pypulseengine/core/context.pysrc/explanation.pypulseengine/core/explanation.pysrc/sentiment.pypulseengine/core/sentiment.pyRules for
core/core/must not import anything fromlocal/orweb/core/is headless; the dashboard lives inlocal/tests/test_core.pyandtests/test_pipeline.pymust pass against the new layoutAcceptance Criteria
pulseengine/core/pulseengine/core/__init__.pyexposes the public API cleanlypytest tests/)core/and any other directoryrequirements.txtstill resolves — no new dependencies introducedNotes
Do not touch
local/orweb/in this PR. This issue is purely about establishingcore/. The other surfaces are handled in separate sub-issues of #31.