alpha-engine-lib 0.41.0__tar.gz → 0.42.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/PKG-INFO +1 -1
  2. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/pyproject.toml +1 -1
  3. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/__init__.py +1 -1
  4. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/agent_schemas.py +11 -2
  5. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib.egg-info/PKG-INFO +1 -1
  6. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_agent_schemas.py +27 -0
  7. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/README.md +0 -0
  8. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/setup.cfg +0 -0
  9. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/alerts.py +0 -0
  10. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/anthropic_payload.py +0 -0
  11. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/arcticdb.py +0 -0
  12. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/artifact_freshness.py +0 -0
  13. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/collector_results.py +0 -0
  14. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/cost.py +0 -0
  15. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/dates.py +0 -0
  16. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/decision_capture.py +0 -0
  17. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/ec2_spot.py +0 -0
  18. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/email_sender.py +0 -0
  19. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/eval_artifacts.py +0 -0
  20. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/locks.py +0 -0
  21. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/logging.py +0 -0
  22. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/model_pricing.yaml +0 -0
  23. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/pillars.py +0 -0
  24. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/pipeline_status/__init__.py +0 -0
  25. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/pipeline_status/read.py +0 -0
  26. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/pipeline_status/registry.py +0 -0
  27. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/pipeline_status/templates.py +0 -0
  28. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/preflight.py +0 -0
  29. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/rag/__init__.py +0 -0
  30. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/rag/db.py +0 -0
  31. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/rag/embeddings.py +0 -0
  32. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/rag/migrations/0001_content_tsv.sql +0 -0
  33. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/rag/rerank.py +0 -0
  34. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/rag/retrieval.py +0 -0
  35. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/rag/schema.sql +0 -0
  36. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/reconcile.py +0 -0
  37. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/secrets.py +0 -0
  38. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/sources/__init__.py +0 -0
  39. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/sources/protocols.py +0 -0
  40. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/ssm_dispatcher.py +0 -0
  41. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/ssm_log_capture.py +0 -0
  42. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/telegram.py +0 -0
  43. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/trading_calendar.py +0 -0
  44. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/transparency.py +0 -0
  45. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/transparency_inventory.yaml +0 -0
  46. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib/universe.py +0 -0
  47. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib.egg-info/SOURCES.txt +0 -0
  48. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib.egg-info/dependency_links.txt +0 -0
  49. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib.egg-info/requires.txt +0 -0
  50. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/src/alpha_engine_lib.egg-info/top_level.txt +0 -0
  51. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_alerts.py +0 -0
  52. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_anthropic_payload.py +0 -0
  53. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_arcticdb.py +0 -0
  54. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_artifact_freshness.py +0 -0
  55. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_collector_results.py +0 -0
  56. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_cost.py +0 -0
  57. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_dates.py +0 -0
  58. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_decision_capture.py +0 -0
  59. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_ec2_spot.py +0 -0
  60. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_email_sender.py +0 -0
  61. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_eval_artifacts.py +0 -0
  62. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_locks.py +0 -0
  63. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_logging.py +0 -0
  64. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_pillars.py +0 -0
  65. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_pipeline_status_read.py +0 -0
  66. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_pipeline_status_registry.py +0 -0
  67. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_pipeline_status_templates.py +0 -0
  68. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_preflight.py +0 -0
  69. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_rag.py +0 -0
  70. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_rag_rerank.py +0 -0
  71. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_rag_retrieval_hybrid.py +0 -0
  72. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_reconcile.py +0 -0
  73. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_secrets.py +0 -0
  74. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_sources_protocols.py +0 -0
  75. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_ssm_dispatcher.py +0 -0
  76. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_ssm_log_capture.py +0 -0
  77. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_telegram.py +0 -0
  78. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_trading_calendar.py +0 -0
  79. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_transparency.py +0 -0
  80. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_universe.py +0 -0
  81. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_version_bump_workflow.py +0 -0
  82. {alpha_engine_lib-0.41.0 → alpha_engine_lib-0.42.0}/tests/test_version_pin.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alpha-engine-lib
3
- Version: 0.41.0
3
+ Version: 0.42.0
4
4
  Summary: Shared utilities for the Alpha Engine modules: preflight, logging, ArcticDB, dates, decision capture, cost telemetry, Anthropic payload chokepoint, artifact freshness, RAG, agent schemas, SSM secrets, Telegram + SNS alerts, EC2 spot resilience, SSM log-capture, SSM dispatcher, Step-Functions execution-state projection, and S3-conditional-PUT writer locks. Full surface documented in README.
5
5
  Author: Brian McMahon
6
6
  License: Proprietary
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "alpha-engine-lib"
7
- version = "0.41.0"
7
+ version = "0.42.0"
8
8
  description = "Shared utilities for the Alpha Engine modules: preflight, logging, ArcticDB, dates, decision capture, cost telemetry, Anthropic payload chokepoint, artifact freshness, RAG, agent schemas, SSM secrets, Telegram + SNS alerts, EC2 spot resilience, SSM log-capture, SSM dispatcher, Step-Functions execution-state projection, and S3-conditional-PUT writer locks. Full surface documented in README."
9
9
  readme = "README.md"
10
10
  # EC2 still runs Python 3.9 on the always-on micro instance (boto3 drops
@@ -1,3 +1,3 @@
1
1
  """alpha-engine-lib — shared utilities for Alpha Engine modules."""
2
2
 
3
- __version__ = "0.41.0"
3
+ __version__ = "0.42.0"
@@ -50,10 +50,19 @@ from pydantic import BaseModel, ConfigDict, Field, field_validator, model_valida
50
50
  # ── Literals ─────────────────────────────────────────────────────────────
51
51
 
52
52
 
53
- RegimeLiteral = Literal["bull", "neutral", "bear", "caution"]
53
+ RegimeLiteral = Literal["bull", "neutral", "bear"]
54
54
  """Macro market regime — output of the macro_economist agent and the
55
55
  macro critic. Drives sector_modifiers downstream and the executor's
56
- graduated drawdown gate."""
56
+ graduated drawdown gate.
57
+
58
+ 3-class Ang-Bekaert taxonomy. The legacy 4th value ``"caution"`` was
59
+ retired in v0.42.0 (plan: caution-regime-retirement-260528.md): the
60
+ rule-based caution override at the macro-agent layer double-counted
61
+ signals already weighted into the continuous ``regime_intensity_z``
62
+ META_FEATURE. Portfolio-protective drawdown state is now a separate
63
+ axis (``drawdown_tier: Literal["risk_on","caution","risk_off"]``)
64
+ emitted by the predictor's drawdown leg; consumers compose the two
65
+ axes via most-protective override at decision time."""
57
66
 
58
67
 
59
68
  CIORawDecisionLiteral = Literal["ADVANCE", "REJECT", "NO_ADVANCE_DEADLOCK"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alpha-engine-lib
3
- Version: 0.41.0
3
+ Version: 0.42.0
4
4
  Summary: Shared utilities for the Alpha Engine modules: preflight, logging, ArcticDB, dates, decision capture, cost telemetry, Anthropic payload chokepoint, artifact freshness, RAG, agent schemas, SSM secrets, Telegram + SNS alerts, EC2 spot resilience, SSM log-capture, SSM dispatcher, Step-Functions execution-state projection, and S3-conditional-PUT writer locks. Full surface documented in README.
5
5
  Author: Brian McMahon
6
6
  License: Proprietary
@@ -325,6 +325,33 @@ class TestMacroEconomistRawOutput:
325
325
  with pytest.raises(ValidationError):
326
326
  MacroEconomistRawOutput(market_regime="exuberant")
327
327
 
328
+ def test_regime_literal_is_3class_caution_rejected(self):
329
+ # v0.42.0 retired "caution" from the macro market_regime taxonomy
330
+ # per caution-regime-retirement-260528.md. The 3-class Ang-Bekaert
331
+ # taxonomy (bull/neutral/bear) is the institutional baseline; the
332
+ # rule-based caution override at the macro-agent layer was double-
333
+ # counted by the continuous regime_intensity_z META_FEATURE.
334
+ # Portfolio-protective hysteresis (risk_on/caution/risk_off) is a
335
+ # separate axis emitted by the predictor drawdown leg.
336
+ from alpha_engine_lib.agent_schemas import (
337
+ MacroCriticOutput,
338
+ MacroEconomistRawOutput,
339
+ )
340
+
341
+ with pytest.raises(ValidationError):
342
+ MacroEconomistRawOutput(market_regime="caution")
343
+ with pytest.raises(ValidationError):
344
+ MacroCriticOutput(
345
+ action="revise", critique="elevated stress", suggested_regime="caution",
346
+ )
347
+
348
+ def test_regime_literal_accepts_all_3_classes(self):
349
+ from alpha_engine_lib.agent_schemas import MacroEconomistRawOutput
350
+
351
+ for regime in ("bull", "neutral", "bear"):
352
+ out = MacroEconomistRawOutput(market_regime=regime)
353
+ assert out.market_regime == regime
354
+
328
355
 
329
356
  class TestMacroCriticOutput:
330
357
  def test_accept_action(self):