diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2ce9901..8bf6842 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,9 @@ jobs: python -m pip install --upgrade pip pip install -c requirements.lock -e ".[dev,secrets,cloud]" # Headless Linux runners have no OS keyring; vault tests need a backend. - pip install ruff keyrings.alt + # pytest-timeout turns any pathological hang into a fast, named failure + # instead of silently consuming the whole job budget. + pip install ruff keyrings.alt pytest-timeout - name: Syntax check (compileall) run: python -m compileall -q aethos_core aethos_sdk - name: Lint (real errors only) @@ -47,7 +49,7 @@ jobs: env: USE_REAL_LLM: "false" ACTIVE_PROVIDER: "none" - run: python -m pytest tests/test_beta_smoke_harness.py -q -p no:cacheprovider + run: python -m pytest tests/test_beta_smoke_harness.py -q -p no:cacheprovider --timeout=120 --timeout-method=signal - name: Behavioral corpus (masterpiece gates) env: USE_REAL_LLM: "false" @@ -57,12 +59,15 @@ jobs: env: USE_REAL_LLM: "false" ACTIVE_PROVIDER: "none" - run: python -m pytest tests/test_chat_20_turn.py -q -p no:cacheprovider + run: python -m pytest tests/test_chat_20_turn.py -q -p no:cacheprovider --timeout=120 --timeout-method=signal - name: Pytest (full suite) env: USE_REAL_LLM: "false" ACTIVE_PROVIDER: "none" - run: python -m pytest tests -q -p no:cacheprovider + # Per-test timeout is a safety net: no single test may hang the job. A test + # exceeding the limit fails with a stack trace naming it, rather than the + # whole suite silently timing out at the job level. + run: python -m pytest tests -q -p no:cacheprovider --timeout=120 --timeout-method=signal web: name: Web typecheck + tests diff --git a/aethos_core/mission_control/agent_execution_quality_throughput_metrics/agent_execution_quality_throughput_metrics_service.py b/aethos_core/mission_control/agent_execution_quality_throughput_metrics/agent_execution_quality_throughput_metrics_service.py index 3812c2d..9755608 100644 --- a/aethos_core/mission_control/agent_execution_quality_throughput_metrics/agent_execution_quality_throughput_metrics_service.py +++ b/aethos_core/mission_control/agent_execution_quality_throughput_metrics/agent_execution_quality_throughput_metrics_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -289,6 +291,7 @@ def _end_to_end_throughput_score( } +@scoped_build def build_agent_execution_quality_throughput_metrics( *, session_id: str ) -> AgentExecutionQualityThroughputMetricsResult: diff --git a/aethos_core/mission_control/approval_inbox/approval_inbox_service.py b/aethos_core/mission_control/approval_inbox/approval_inbox_service.py index 4fc3df0..2ad3362 100644 --- a/aethos_core/mission_control/approval_inbox/approval_inbox_service.py +++ b/aethos_core/mission_control/approval_inbox/approval_inbox_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from typing import Any @@ -616,6 +618,7 @@ def _collect_operational_deployment_approvals() -> list[dict[str, Any]]: return items +@scoped_build def build_approval_inbox(*, session_id: str) -> ApprovalInboxResult: from aethos_core.mission_control.cross_lane.snapshot_service import load_mission_control_config @@ -657,6 +660,7 @@ def build_approval_inbox(*, session_id: str) -> ApprovalInboxResult: ) +@scoped_build def approval_inbox_payload(*, session_id: str) -> dict[str, Any]: result = build_approval_inbox(session_id=session_id) if not result.ok: diff --git a/aethos_core/mission_control/atlas_trader_pilot_arc_orchestrator/atlas_trader_pilot_arc_orchestrator_service.py b/aethos_core/mission_control/atlas_trader_pilot_arc_orchestrator/atlas_trader_pilot_arc_orchestrator_service.py index abf392c..1d428d8 100644 --- a/aethos_core/mission_control/atlas_trader_pilot_arc_orchestrator/atlas_trader_pilot_arc_orchestrator_service.py +++ b/aethos_core/mission_control/atlas_trader_pilot_arc_orchestrator/atlas_trader_pilot_arc_orchestrator_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from pathlib import Path @@ -269,6 +271,7 @@ def _pilot_readiness_summary(*, gates: dict[str, Any], arc_state: str) -> dict[s } +@scoped_build def build_atlas_trader_pilot_arc_orchestrator(*, session_id: str) -> AtlasTraderPilotArcOrchestratorResult: sid = (session_id or "default").strip()[:64] or "default" exported_at = _exported_at() diff --git a/aethos_core/mission_control/atlas_trader_trust_report_freeze/atlas_trader_trust_report_freeze_service.py b/aethos_core/mission_control/atlas_trader_trust_report_freeze/atlas_trader_trust_report_freeze_service.py index 987c833..e7fa409 100644 --- a/aethos_core/mission_control/atlas_trader_trust_report_freeze/atlas_trader_trust_report_freeze_service.py +++ b/aethos_core/mission_control/atlas_trader_trust_report_freeze/atlas_trader_trust_report_freeze_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -402,6 +404,7 @@ def _evidence_index( return entries +@scoped_build def build_atlas_trader_trust_report_freeze(*, session_id: str) -> AtlasTraderTrustReportFreezeResult: sid = (session_id or "default").strip()[:64] or "default" exported_at = _exported_at() diff --git a/aethos_core/mission_control/autonomous_application_lifecycle_management/autonomous_application_lifecycle_management_service.py b/aethos_core/mission_control/autonomous_application_lifecycle_management/autonomous_application_lifecycle_management_service.py index bfc73b8..272a6d3 100644 --- a/aethos_core/mission_control/autonomous_application_lifecycle_management/autonomous_application_lifecycle_management_service.py +++ b/aethos_core/mission_control/autonomous_application_lifecycle_management/autonomous_application_lifecycle_management_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -414,6 +416,7 @@ def _lifecycle_memory( ] +@scoped_build def build_autonomous_application_lifecycle_management( *, session_id: str ) -> AutonomousApplicationLifecycleManagementResult: diff --git a/aethos_core/mission_control/autonomous_business_operating_system/autonomous_business_operating_system_service.py b/aethos_core/mission_control/autonomous_business_operating_system/autonomous_business_operating_system_service.py index 836cede..a101377 100644 --- a/aethos_core/mission_control/autonomous_business_operating_system/autonomous_business_operating_system_service.py +++ b/aethos_core/mission_control/autonomous_business_operating_system/autonomous_business_operating_system_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -512,6 +514,7 @@ def _business_operating_memory( ] +@scoped_build def build_autonomous_business_operating_system(*, session_id: str) -> AutonomousBusinessOperatingSystemResult: sid = (session_id or "default").strip()[:64] or "default" business_records = list_autonomous_business_operating_system_records() diff --git a/aethos_core/mission_control/autonomous_capability_registry/autonomous_capability_registry_service.py b/aethos_core/mission_control/autonomous_capability_registry/autonomous_capability_registry_service.py index e44a5be..d25b556 100644 --- a/aethos_core/mission_control/autonomous_capability_registry/autonomous_capability_registry_service.py +++ b/aethos_core/mission_control/autonomous_capability_registry/autonomous_capability_registry_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + import inspect import re import shutil @@ -495,6 +497,7 @@ def _self_awareness_report( ] +@scoped_build def build_autonomous_capability_registry(*, session_id: str) -> AutonomousCapabilityRegistryResult: sid = (session_id or "default").strip()[:64] or "default" capability_records = list_autonomous_capability_registry_records() diff --git a/aethos_core/mission_control/autonomous_product_stewardship/autonomous_product_stewardship_service.py b/aethos_core/mission_control/autonomous_product_stewardship/autonomous_product_stewardship_service.py index 0e23ad1..dafa6e6 100644 --- a/aethos_core/mission_control/autonomous_product_stewardship/autonomous_product_stewardship_service.py +++ b/aethos_core/mission_control/autonomous_product_stewardship/autonomous_product_stewardship_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -305,6 +307,7 @@ def _stewardship_memory( ] +@scoped_build def build_autonomous_product_stewardship(*, session_id: str) -> AutonomousProductStewardshipResult: sid = (session_id or "default").strip()[:64] or "default" stewardship_records = list_autonomous_product_stewardship_records() diff --git a/aethos_core/mission_control/billing_entitlements_foundation/billing_entitlements_foundation_service.py b/aethos_core/mission_control/billing_entitlements_foundation/billing_entitlements_foundation_service.py index 7be7bb9..a753e5c 100644 --- a/aethos_core/mission_control/billing_entitlements_foundation/billing_entitlements_foundation_service.py +++ b/aethos_core/mission_control/billing_entitlements_foundation/billing_entitlements_foundation_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -81,6 +83,7 @@ def _usage_snapshot(*, org_id: str) -> dict[str, int]: } +@scoped_build def build_billing_entitlements_foundation(*, session_id: str) -> BillingEntitlementsFoundationResult: sid = (session_id or "default").strip()[:64] or "default" records = list_billing_entitlements_foundation_records() diff --git a/aethos_core/mission_control/bounded_execution_participation/bounded_execution_participation_service.py b/aethos_core/mission_control/bounded_execution_participation/bounded_execution_participation_service.py index 4bedf9c..29bdec2 100644 --- a/aethos_core/mission_control/bounded_execution_participation/bounded_execution_participation_service.py +++ b/aethos_core/mission_control/bounded_execution_participation/bounded_execution_participation_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -304,6 +306,7 @@ def _participation_integrity_scoring( ] +@scoped_build def build_bounded_execution_participation(*, session_id: str) -> BoundedExecutionParticipationResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/bounded_multi_agent_delivery_execution/bounded_multi_agent_delivery_execution_service.py b/aethos_core/mission_control/bounded_multi_agent_delivery_execution/bounded_multi_agent_delivery_execution_service.py index 1f46163..1fb82bc 100644 --- a/aethos_core/mission_control/bounded_multi_agent_delivery_execution/bounded_multi_agent_delivery_execution_service.py +++ b/aethos_core/mission_control/bounded_multi_agent_delivery_execution/bounded_multi_agent_delivery_execution_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -195,6 +197,7 @@ def _execution_readiness(*, pipeline_state: str, gates: dict[str, Any]) -> dict[ } +@scoped_build def build_bounded_multi_agent_delivery_execution( *, session_id: str ) -> BoundedMultiAgentDeliveryExecutionResult: diff --git a/aethos_core/mission_control/bounded_multi_agent_delivery_work_packages/bounded_multi_agent_delivery_work_packages_service.py b/aethos_core/mission_control/bounded_multi_agent_delivery_work_packages/bounded_multi_agent_delivery_work_packages_service.py index 7f4dfbc..2343924 100644 --- a/aethos_core/mission_control/bounded_multi_agent_delivery_work_packages/bounded_multi_agent_delivery_work_packages_service.py +++ b/aethos_core/mission_control/bounded_multi_agent_delivery_work_packages/bounded_multi_agent_delivery_work_packages_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -281,6 +283,7 @@ def _delivery_integrity_scoring( ] +@scoped_build def build_bounded_delivery_work_packages(*, session_id: str) -> BoundedDeliveryWorkPackagesResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/build_memoization.py b/aethos_core/mission_control/build_memoization.py new file mode 100644 index 0000000..e3d6c39 --- /dev/null +++ b/aethos_core/mission_control/build_memoization.py @@ -0,0 +1,99 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Request-scoped memoization for the Mission Control build_* cascade. + +Many Mission Control ``build_*`` services form a diamond dependency: a top-level +builder transitively invokes shared lower builders many times, each of which +re-runs the entire stack beneath it. With no caching this is exponential — a +single top-level build (e.g. the pilot-arc orchestrator) can take minutes, which +in turn pushes the full test suite past the CI time budget. + +These builders are pure, read-only compositions: for a given ``session_id`` (and +the persisted state on disk, which does not change during a single logical build) +they return an equivalent value every time. This module provides a +context-scoped cache so that within one logical build each ``(builder, args)`` is +computed once. Nested re-requests return a ``deepcopy`` of the cached value, so +every caller still receives an independent object — behavior is identical to the +un-memoized version, only without the exponential recomputation. The cache lives +only for the duration of the outermost decorated call and is discarded on return, +so no state leaks across calls, requests, or tests. +""" + +from __future__ import annotations + +import contextvars +import copy +import functools +from typing import Any, Callable, TypeVar + +_CACHE: contextvars.ContextVar[dict[Any, Any] | None] = contextvars.ContextVar( + "mission_control_build_cache", default=None +) + +# Sentinel: key is currently being computed. Prevents infinite recursion if a +# builder re-enters itself (directly or via a cycle) before the first result is stored. +_IN_PROGRESS: object = object() + +F = TypeVar("F", bound=Callable[..., Any]) + +_SCALAR = (str, int, float, bool) + + +def _cache_key(fn: Callable[..., Any], kwargs: dict[str, Any]) -> tuple[Any, ...]: + scalar_kwargs = tuple( + sorted((k, v) for k, v in kwargs.items() if v is None or isinstance(v, _SCALAR)) + ) + return (fn.__module__, fn.__qualname__, scalar_kwargs) + + +def _clone(value: Any) -> Any: + try: + return copy.deepcopy(value) + except (RecursionError, TypeError): + # Circular / un-copyable graphs: prefer sharing the cached object over failing. + return value + + +def scoped_build(fn: F) -> F: + """Memoize a pure ``build_*`` service within one logical build tree. + + Only the canonical keyword-only call shape (no positional args) is cached; any + other call shape falls through to the wrapped function unchanged, so this can + never silently mis-key a call. + """ + + @functools.wraps(fn) + def wrapper(*args: Any, **kwargs: Any) -> Any: + if args: + return fn(*args, **kwargs) + key = _cache_key(fn, kwargs) + store = _CACHE.get() + if store is not None: + if key in store: + cached = store[key] + if cached is _IN_PROGRESS: + # Re-entrant / cyclic call while computing — run uncached. + return fn(**kwargs) + return _clone(cached) + store[key] = _IN_PROGRESS + try: + result = fn(**kwargs) + except BaseException: + store.pop(key, None) + raise + store[key] = result + return _clone(result) + store = {} + token = _CACHE.set(store) + try: + store[key] = _IN_PROGRESS + try: + result = fn(**kwargs) + except BaseException: + store.pop(key, None) + raise + store[key] = result + return result + finally: + _CACHE.reset(token) + + return wrapper # type: ignore[return-value] diff --git a/aethos_core/mission_control/capability_registry_runtime_integration/capability_registry_runtime_integration_service.py b/aethos_core/mission_control/capability_registry_runtime_integration/capability_registry_runtime_integration_service.py index a777561..93a2c37 100644 --- a/aethos_core/mission_control/capability_registry_runtime_integration/capability_registry_runtime_integration_service.py +++ b/aethos_core/mission_control/capability_registry_runtime_integration/capability_registry_runtime_integration_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -112,6 +114,7 @@ def _names(*cap_ids: str) -> list[str]: } +@scoped_build def build_capability_registry_runtime_integration( *, session_id: str ) -> CapabilityRegistryRuntimeIntegrationResult: diff --git a/aethos_core/mission_control/channel_integration_foundation/channel_integration_foundation_service.py b/aethos_core/mission_control/channel_integration_foundation/channel_integration_foundation_service.py index e8e9796..0aca5b5 100644 --- a/aethos_core/mission_control/channel_integration_foundation/channel_integration_foundation_service.py +++ b/aethos_core/mission_control/channel_integration_foundation/channel_integration_foundation_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -110,6 +112,7 @@ def _supported_actions(channel: str) -> list[str]: return [] +@scoped_build def build_channel_integration_foundation(*, session_id: str) -> ChannelIntegrationFoundationResult: sid = (session_id or "default").strip()[:64] or "default" user_id = _resolve_user(session_id=sid) diff --git a/aethos_core/mission_control/constitutional_audit/constitutional_audit_service.py b/aethos_core/mission_control/constitutional_audit/constitutional_audit_service.py index 6e146d3..9fdfa48 100644 --- a/aethos_core/mission_control/constitutional_audit/constitutional_audit_service.py +++ b/aethos_core/mission_control/constitutional_audit/constitutional_audit_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -215,6 +217,7 @@ def _audit_trail_integrity_checks(*, records: list[dict[str, Any]]) -> list[dict ] +@scoped_build def build_constitutional_audit(*, session_id: str) -> ConstitutionalAuditResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/constitutional_ethics/constitutional_ethics_service.py b/aethos_core/mission_control/constitutional_ethics/constitutional_ethics_service.py index c45dd48..9bb6def 100644 --- a/aethos_core/mission_control/constitutional_ethics/constitutional_ethics_service.py +++ b/aethos_core/mission_control/constitutional_ethics/constitutional_ethics_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -228,6 +230,7 @@ def _ethical_coherence_scoring(*, records: list[dict[str, Any]], existential_ris ] +@scoped_build def build_constitutional_ethics(*, session_id: str) -> ConstitutionalEthicsResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/constitutional_legitimacy/constitutional_legitimacy_service.py b/aethos_core/mission_control/constitutional_legitimacy/constitutional_legitimacy_service.py index fcb41a2..87b2ae9 100644 --- a/aethos_core/mission_control/constitutional_legitimacy/constitutional_legitimacy_service.py +++ b/aethos_core/mission_control/constitutional_legitimacy/constitutional_legitimacy_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -215,6 +217,7 @@ def _institutional_credibility_reconstruction(*, records: list[dict[str, Any]], ] +@scoped_build def build_constitutional_legitimacy(*, session_id: str) -> ConstitutionalLegitimacyResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/constitutional_pluralism/constitutional_pluralism_service.py b/aethos_core/mission_control/constitutional_pluralism/constitutional_pluralism_service.py index 18b9a04..2a4fdde 100644 --- a/aethos_core/mission_control/constitutional_pluralism/constitutional_pluralism_service.py +++ b/aethos_core/mission_control/constitutional_pluralism/constitutional_pluralism_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -214,6 +216,7 @@ def _pluralistic_coherence_scoring(*, records: list[dict[str, Any]], constitutio ] +@scoped_build def build_constitutional_pluralism(*, session_id: str) -> ConstitutionalPluralismResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/constitutional_synthesis/constitutional_synthesis_service.py b/aethos_core/mission_control/constitutional_synthesis/constitutional_synthesis_service.py index 5611ce9..6042c72 100644 --- a/aethos_core/mission_control/constitutional_synthesis/constitutional_synthesis_service.py +++ b/aethos_core/mission_control/constitutional_synthesis/constitutional_synthesis_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -248,6 +250,7 @@ def _institutional_wisdom_continuity(*, records: list[dict[str, Any]]) -> list[d ] +@scoped_build def build_constitutional_synthesis(*, session_id: str) -> ConstitutionalSynthesisResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/continuous_product_improvement/continuous_product_improvement_service.py b/aethos_core/mission_control/continuous_product_improvement/continuous_product_improvement_service.py index a5b9dd8..ea323df 100644 --- a/aethos_core/mission_control/continuous_product_improvement/continuous_product_improvement_service.py +++ b/aethos_core/mission_control/continuous_product_improvement/continuous_product_improvement_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -56,6 +58,7 @@ def _exported_at() -> str: return datetime.now(UTC).isoformat() +@scoped_build def build_continuous_product_improvement(*, session_id: str = "default") -> ContinuousProductImprovementResult: sid = (session_id or "default").strip()[:64] or "default" evidence = collect_improvement_evidence(session_id=sid) diff --git a/aethos_core/mission_control/cross_lane/lane_drilldown_service.py b/aethos_core/mission_control/cross_lane/lane_drilldown_service.py index 051912e..dcf0c72 100644 --- a/aethos_core/mission_control/cross_lane/lane_drilldown_service.py +++ b/aethos_core/mission_control/cross_lane/lane_drilldown_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from typing import Any @@ -91,6 +93,7 @@ def _receipt_files(relative_dir: str, *, limit: int = 6) -> list[dict[str, Any]] return receipts +@scoped_build def build_lane_drilldown(*, session_id: str, lane: str) -> LaneDrilldownResult: lane_key = (lane or "").strip() if lane_key not in OBSERVED_LANES: diff --git a/aethos_core/mission_control/cross_lane/snapshot_service.py b/aethos_core/mission_control/cross_lane/snapshot_service.py index fc7fb4c..b675e8e 100644 --- a/aethos_core/mission_control/cross_lane/snapshot_service.py +++ b/aethos_core/mission_control/cross_lane/snapshot_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + import re import uuid from dataclasses import dataclass, field @@ -66,6 +68,7 @@ def load_mission_control_config() -> dict[str, Any]: } +@scoped_build def build_mission_control_snapshot(*, session_id: str) -> MissionControlSnapshotResult: cfg = load_mission_control_config() if not cfg["enabled"]: diff --git a/aethos_core/mission_control/cross_repository_multi_agent_delivery_validation/cross_repository_multi_agent_delivery_validation_service.py b/aethos_core/mission_control/cross_repository_multi_agent_delivery_validation/cross_repository_multi_agent_delivery_validation_service.py index 705e42e..a6a4762 100644 --- a/aethos_core/mission_control/cross_repository_multi_agent_delivery_validation/cross_repository_multi_agent_delivery_validation_service.py +++ b/aethos_core/mission_control/cross_repository_multi_agent_delivery_validation/cross_repository_multi_agent_delivery_validation_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from pathlib import Path @@ -701,6 +703,7 @@ def _delivery_generalization_assessment(*, validation_rows: list[dict[str, Any]] } +@scoped_build def build_cross_repository_multi_agent_delivery_validation( *, session_id: str ) -> CrossRepositoryMultiAgentDeliveryValidationResult: diff --git a/aethos_core/mission_control/cross_repository_product_evolution_intelligence/cross_repository_product_evolution_intelligence_service.py b/aethos_core/mission_control/cross_repository_product_evolution_intelligence/cross_repository_product_evolution_intelligence_service.py index 218e3c0..a3dd180 100644 --- a/aethos_core/mission_control/cross_repository_product_evolution_intelligence/cross_repository_product_evolution_intelligence_service.py +++ b/aethos_core/mission_control/cross_repository_product_evolution_intelligence/cross_repository_product_evolution_intelligence_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -432,6 +434,7 @@ def _operator_opportunities(records: list[dict[str, Any]]) -> list[dict[str, Any return out +@scoped_build def build_cross_repository_product_evolution_intelligence( *, session_id: str ) -> CrossRepositoryProductEvolutionIntelligenceResult: diff --git a/aethos_core/mission_control/customer_administration_console/customer_administration_console_service.py b/aethos_core/mission_control/customer_administration_console/customer_administration_console_service.py index c786b6b..e57c83c 100644 --- a/aethos_core/mission_control/customer_administration_console/customer_administration_console_service.py +++ b/aethos_core/mission_control/customer_administration_console/customer_administration_console_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -77,6 +79,7 @@ def _resolve_user(*, session_id: str) -> str: return sid if sid != "default" else "default" +@scoped_build def build_customer_administration_console(*, session_id: str) -> CustomerAdministrationConsoleResult: sid = (session_id or "default").strip()[:64] or "default" user_id = _resolve_user(session_id=sid) diff --git a/aethos_core/mission_control/customer_feedback_intelligence/customer_feedback_intelligence_service.py b/aethos_core/mission_control/customer_feedback_intelligence/customer_feedback_intelligence_service.py index 075d66d..5660112 100644 --- a/aethos_core/mission_control/customer_feedback_intelligence/customer_feedback_intelligence_service.py +++ b/aethos_core/mission_control/customer_feedback_intelligence/customer_feedback_intelligence_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -58,6 +60,7 @@ def _exported_at() -> str: return datetime.now(UTC).isoformat() +@scoped_build def build_customer_feedback_intelligence(*, session_id: str = "default") -> CustomerFeedbackIntelligenceResult: sid = (session_id or "default").strip()[:64] or "default" evidence = collect_feedback_evidence(session_id=sid) diff --git a/aethos_core/mission_control/customer_journey_intelligence/customer_journey_intelligence_service.py b/aethos_core/mission_control/customer_journey_intelligence/customer_journey_intelligence_service.py index 7ccc24a..3ef0cc2 100644 --- a/aethos_core/mission_control/customer_journey_intelligence/customer_journey_intelligence_service.py +++ b/aethos_core/mission_control/customer_journey_intelligence/customer_journey_intelligence_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -59,6 +61,7 @@ def _exported_at() -> str: return datetime.now(UTC).isoformat() +@scoped_build def build_customer_journey_intelligence(*, session_id: str = "default") -> CustomerJourneyIntelligenceResult: sid = (session_id or "default").strip()[:64] or "default" evidence = collect_journey_evidence(session_id=sid) diff --git a/aethos_core/mission_control/customer_support_success_foundation/customer_support_success_foundation_service.py b/aethos_core/mission_control/customer_support_success_foundation/customer_support_success_foundation_service.py index b9313d7..8010ea2 100644 --- a/aethos_core/mission_control/customer_support_success_foundation/customer_support_success_foundation_service.py +++ b/aethos_core/mission_control/customer_support_success_foundation/customer_support_success_foundation_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -93,6 +95,7 @@ def _safe_build(name: str, builder, *, session_id: str) -> tuple[Any, bool]: return None, False +@scoped_build def build_customer_support_success_foundation( *, session_id: str, diff --git a/aethos_core/mission_control/customer_usage_audit_portal/customer_usage_audit_portal_service.py b/aethos_core/mission_control/customer_usage_audit_portal/customer_usage_audit_portal_service.py index 057b99d..4c45f4b 100644 --- a/aethos_core/mission_control/customer_usage_audit_portal/customer_usage_audit_portal_service.py +++ b/aethos_core/mission_control/customer_usage_audit_portal/customer_usage_audit_portal_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -112,6 +114,7 @@ def _collect_audit_entries(*, org_id: str, session_id: str) -> list[dict[str, An return entries +@scoped_build def build_customer_usage_audit_portal(*, session_id: str) -> CustomerUsageAuditPortalResult: sid = (session_id or "default").strip()[:64] or "default" user_id = _resolve_user(session_id=sid) diff --git a/aethos_core/mission_control/customer_value_realization_intelligence/customer_value_realization_intelligence_service.py b/aethos_core/mission_control/customer_value_realization_intelligence/customer_value_realization_intelligence_service.py index 7312e06..a8e1193 100644 --- a/aethos_core/mission_control/customer_value_realization_intelligence/customer_value_realization_intelligence_service.py +++ b/aethos_core/mission_control/customer_value_realization_intelligence/customer_value_realization_intelligence_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -60,6 +62,7 @@ def _exported_at() -> str: return datetime.now(UTC).isoformat() +@scoped_build def build_customer_value_realization_intelligence( *, session_id: str = "default" ) -> CustomerValueRealizationIntelligenceResult: diff --git a/aethos_core/mission_control/dogfood_pilot_gate_closure/dogfood_pilot_gate_closure_service.py b/aethos_core/mission_control/dogfood_pilot_gate_closure/dogfood_pilot_gate_closure_service.py index df4bf2c..f9c6c55 100644 --- a/aethos_core/mission_control/dogfood_pilot_gate_closure/dogfood_pilot_gate_closure_service.py +++ b/aethos_core/mission_control/dogfood_pilot_gate_closure/dogfood_pilot_gate_closure_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + import time from dataclasses import dataclass, field from datetime import UTC, datetime @@ -307,6 +309,7 @@ def _build_result(*, ctx: _GateClosureContext) -> DogfoodPilotGateClosureResult: ) +@scoped_build def build_dogfood_pilot_gate_closure(*, session_id: str) -> DogfoodPilotGateClosureResult: sid = (session_id or "default").strip()[:64] or "default" now = time.monotonic() diff --git a/aethos_core/mission_control/dogfood_pilot_trust_report_freeze/dogfood_pilot_trust_report_freeze_service.py b/aethos_core/mission_control/dogfood_pilot_trust_report_freeze/dogfood_pilot_trust_report_freeze_service.py index c7d502d..4e88cf1 100644 --- a/aethos_core/mission_control/dogfood_pilot_trust_report_freeze/dogfood_pilot_trust_report_freeze_service.py +++ b/aethos_core/mission_control/dogfood_pilot_trust_report_freeze/dogfood_pilot_trust_report_freeze_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from pathlib import Path @@ -328,6 +330,7 @@ def _evidence_index( return entries +@scoped_build def build_dogfood_pilot_trust_report_freeze(*, session_id: str) -> DogfoodPilotTrustReportFreezeResult: sid = (session_id or "default").strip()[:64] or "default" exported_at = _exported_at() diff --git a/aethos_core/mission_control/end_to_end_repo_development_pilot_harness/end_to_end_repo_development_pilot_harness_service.py b/aethos_core/mission_control/end_to_end_repo_development_pilot_harness/end_to_end_repo_development_pilot_harness_service.py index b5c9244..3e4e745 100644 --- a/aethos_core/mission_control/end_to_end_repo_development_pilot_harness/end_to_end_repo_development_pilot_harness_service.py +++ b/aethos_core/mission_control/end_to_end_repo_development_pilot_harness/end_to_end_repo_development_pilot_harness_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -603,6 +605,7 @@ def build_pilot_report( } +@scoped_build def build_end_to_end_repo_development_pilot_harness( *, session_id: str ) -> EndToEndRepoDevelopmentPilotHarnessResult: diff --git a/aethos_core/mission_control/enterprise_operating_review_intelligence/enterprise_operating_review_intelligence_service.py b/aethos_core/mission_control/enterprise_operating_review_intelligence/enterprise_operating_review_intelligence_service.py index e7158f3..b220802 100644 --- a/aethos_core/mission_control/enterprise_operating_review_intelligence/enterprise_operating_review_intelligence_service.py +++ b/aethos_core/mission_control/enterprise_operating_review_intelligence/enterprise_operating_review_intelligence_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -60,6 +62,7 @@ def _exported_at() -> str: return datetime.now(UTC).isoformat() +@scoped_build def build_enterprise_operating_review_intelligence( *, session_id: str = "default" ) -> EnterpriseOperatingReviewIntelligenceResult: diff --git a/aethos_core/mission_control/enterprise_program_intelligence/enterprise_program_intelligence_service.py b/aethos_core/mission_control/enterprise_program_intelligence/enterprise_program_intelligence_service.py index 7173734..02fdfd8 100644 --- a/aethos_core/mission_control/enterprise_program_intelligence/enterprise_program_intelligence_service.py +++ b/aethos_core/mission_control/enterprise_program_intelligence/enterprise_program_intelligence_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -60,6 +62,7 @@ def _exported_at() -> str: return datetime.now(UTC).isoformat() +@scoped_build def build_enterprise_program_intelligence(*, session_id: str = "default") -> EnterpriseProgramIntelligenceResult: sid = (session_id or "default").strip()[:64] or "default" evidence = collect_enterprise_program_evidence(session_id=sid) diff --git a/aethos_core/mission_control/evidence_bundle/evidence_bundle_service.py b/aethos_core/mission_control/evidence_bundle/evidence_bundle_service.py index 5410155..a7775f9 100644 --- a/aethos_core/mission_control/evidence_bundle/evidence_bundle_service.py +++ b/aethos_core/mission_control/evidence_bundle/evidence_bundle_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -142,6 +144,7 @@ def _collect_blockers( return blockers +@scoped_build def build_evidence_bundle(*, session_id: str, job_id: str | None = None) -> EvidenceBundleResult: sid = (session_id or "default").strip()[:64] or "default" focus_job = (job_id or "").strip() or None diff --git a/aethos_core/mission_control/execution_handoff_coordination/execution_handoff_coordination_service.py b/aethos_core/mission_control/execution_handoff_coordination/execution_handoff_coordination_service.py index 2f6ee34..7dcbc0d 100644 --- a/aethos_core/mission_control/execution_handoff_coordination/execution_handoff_coordination_service.py +++ b/aethos_core/mission_control/execution_handoff_coordination/execution_handoff_coordination_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -369,6 +371,7 @@ def _handoff_integrity_scoring(*, records: list[dict[str, Any]], handoff_ready: ] +@scoped_build def build_execution_handoff_coordination(*, session_id: str) -> ExecutionHandoffCoordinationResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/executive_decision_intelligence/executive_decision_intelligence_service.py b/aethos_core/mission_control/executive_decision_intelligence/executive_decision_intelligence_service.py index 2c274f8..af63505 100644 --- a/aethos_core/mission_control/executive_decision_intelligence/executive_decision_intelligence_service.py +++ b/aethos_core/mission_control/executive_decision_intelligence/executive_decision_intelligence_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -60,6 +62,7 @@ def _exported_at() -> str: return datetime.now(UTC).isoformat() +@scoped_build def build_executive_decision_intelligence(*, session_id: str = "default") -> ExecutiveDecisionIntelligenceResult: sid = (session_id or "default").strip()[:64] or "default" evidence = collect_executive_decision_evidence(session_id=sid) diff --git a/aethos_core/mission_control/executive_operating_system_dashboard/executive_operating_system_dashboard_service.py b/aethos_core/mission_control/executive_operating_system_dashboard/executive_operating_system_dashboard_service.py index 9f14ab5..1df841f 100644 --- a/aethos_core/mission_control/executive_operating_system_dashboard/executive_operating_system_dashboard_service.py +++ b/aethos_core/mission_control/executive_operating_system_dashboard/executive_operating_system_dashboard_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -60,6 +62,7 @@ def _exported_at() -> str: return datetime.now(UTC).isoformat() +@scoped_build def build_executive_operating_system_dashboard_board(*, session_id: str = "default") -> ExecutiveOperatingSystemDashboardResult: sid = (session_id or "default").strip()[:64] or "default" evidence = collect_executive_operating_system_dashboard_evidence(session_id=sid) diff --git a/aethos_core/mission_control/frozen_gate_execution_request_adapter/frozen_gate_execution_request_adapter_service.py b/aethos_core/mission_control/frozen_gate_execution_request_adapter/frozen_gate_execution_request_adapter_service.py index 543d478..92f79f2 100644 --- a/aethos_core/mission_control/frozen_gate_execution_request_adapter/frozen_gate_execution_request_adapter_service.py +++ b/aethos_core/mission_control/frozen_gate_execution_request_adapter/frozen_gate_execution_request_adapter_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -353,6 +355,7 @@ def _request_integrity_scoring( ] +@scoped_build def build_frozen_gate_execution_request_adapter( *, session_id: str ) -> FrozenGateExecutionRequestAdapterResult: diff --git a/aethos_core/mission_control/frozen_gate_intake_preview/frozen_gate_intake_preview_service.py b/aethos_core/mission_control/frozen_gate_intake_preview/frozen_gate_intake_preview_service.py index 7eae24b..2d1b348 100644 --- a/aethos_core/mission_control/frozen_gate_intake_preview/frozen_gate_intake_preview_service.py +++ b/aethos_core/mission_control/frozen_gate_intake_preview/frozen_gate_intake_preview_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any, Callable @@ -420,6 +422,7 @@ def _intake_integrity_scoring( ] +@scoped_build def build_frozen_gate_intake_preview(*, session_id: str) -> FrozenGateIntakePreviewResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/gate_routed_lane_entry_handoff/gate_routed_lane_entry_handoff_service.py b/aethos_core/mission_control/gate_routed_lane_entry_handoff/gate_routed_lane_entry_handoff_service.py index 6b74b1e..7f09371 100644 --- a/aethos_core/mission_control/gate_routed_lane_entry_handoff/gate_routed_lane_entry_handoff_service.py +++ b/aethos_core/mission_control/gate_routed_lane_entry_handoff/gate_routed_lane_entry_handoff_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -353,6 +355,7 @@ def _handoff_integrity_scoring( ] +@scoped_build def build_gate_routed_lane_entry_handoff(*, session_id: str) -> GateRoutedLaneEntryHandoffResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/gate_routed_package_outcome_review/gate_routed_package_outcome_review_service.py b/aethos_core/mission_control/gate_routed_package_outcome_review/gate_routed_package_outcome_review_service.py index cce33c9..af88408 100644 --- a/aethos_core/mission_control/gate_routed_package_outcome_review/gate_routed_package_outcome_review_service.py +++ b/aethos_core/mission_control/gate_routed_package_outcome_review/gate_routed_package_outcome_review_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -407,6 +409,7 @@ def _gate_review_integrity_scoring( ] +@scoped_build def build_gate_routed_package_outcome_review(*, session_id: str) -> GateRoutedPackageOutcomeReviewResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/governance_coherence/governance_coherence_service.py b/aethos_core/mission_control/governance_coherence/governance_coherence_service.py index f9b18bd..e7912dd 100644 --- a/aethos_core/mission_control/governance_coherence/governance_coherence_service.py +++ b/aethos_core/mission_control/governance_coherence/governance_coherence_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from collections import defaultdict from dataclasses import dataclass, field from datetime import UTC, datetime @@ -386,6 +388,7 @@ def _governance_stability_indicators( return indicators +@scoped_build def build_governance_coherence(*, session_id: str) -> GovernanceCoherenceResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/governance_collaboration/governance_collaboration_service.py b/aethos_core/mission_control/governance_collaboration/governance_collaboration_service.py index 3fb32b0..0ca3e63 100644 --- a/aethos_core/mission_control/governance_collaboration/governance_collaboration_service.py +++ b/aethos_core/mission_control/governance_collaboration/governance_collaboration_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -190,6 +192,7 @@ def _decision_participation_graph(*, records: list[dict[str, Any]], deliberation } +@scoped_build def build_governance_collaboration_workspace(*, session_id: str) -> GovernanceCollaborationResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/governance_deliberation/governance_deliberation_service.py b/aethos_core/mission_control/governance_deliberation/governance_deliberation_service.py index 0333aa7..61ad154 100644 --- a/aethos_core/mission_control/governance_deliberation/governance_deliberation_service.py +++ b/aethos_core/mission_control/governance_deliberation/governance_deliberation_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -111,6 +113,7 @@ def _governance_discussion_timeline(records: list[dict[str, Any]]) -> list[dict[ return timeline +@scoped_build def build_governance_deliberation_workspace(*, session_id: str) -> GovernanceDeliberationResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/governance_doctrine/governance_doctrine_service.py b/aethos_core/mission_control/governance_doctrine/governance_doctrine_service.py index 034645e..8e21329 100644 --- a/aethos_core/mission_control/governance_doctrine/governance_doctrine_service.py +++ b/aethos_core/mission_control/governance_doctrine/governance_doctrine_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -212,6 +214,7 @@ def _constitutional_governance_references(*, records: list[dict[str, Any]]) -> l return refs +@scoped_build def build_governance_doctrine(*, session_id: str) -> GovernanceDoctrineResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/governance_evolution/governance_evolution_service.py b/aethos_core/mission_control/governance_evolution/governance_evolution_service.py index c5716c4..5f0b20a 100644 --- a/aethos_core/mission_control/governance_evolution/governance_evolution_service.py +++ b/aethos_core/mission_control/governance_evolution/governance_evolution_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -288,6 +290,7 @@ def _historical_governance_narrative_reconstruction(*, records: list[dict[str, A ] +@scoped_build def build_governance_evolution(*, session_id: str) -> GovernanceEvolutionResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/governance_insights/governance_insights_service.py b/aethos_core/mission_control/governance_insights/governance_insights_service.py index e44126d..6a38fb2 100644 --- a/aethos_core/mission_control/governance_insights/governance_insights_service.py +++ b/aethos_core/mission_control/governance_insights/governance_insights_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from collections import Counter from dataclasses import dataclass, field from datetime import UTC, datetime @@ -337,6 +339,7 @@ def _meta_recommendations(insights: dict[str, Any]) -> list[dict[str, Any]]: return recs +@scoped_build def build_governance_insights(*, session_id: str) -> GovernanceInsightsResult: sid = (session_id or "default").strip()[:64] or "default" signals = collect_governance_signals(session_id=sid) diff --git a/aethos_core/mission_control/governance_policy_interpretation/governance_policy_interpretation_service.py b/aethos_core/mission_control/governance_policy_interpretation/governance_policy_interpretation_service.py index f5aeab4..f7844c2 100644 --- a/aethos_core/mission_control/governance_policy_interpretation/governance_policy_interpretation_service.py +++ b/aethos_core/mission_control/governance_policy_interpretation/governance_policy_interpretation_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -331,6 +333,7 @@ def _constitutional_consistency_checks(*, records: list[dict[str, Any]], doctrin return checks +@scoped_build def build_governance_policy_interpretation(*, session_id: str) -> GovernancePolicyInterpretationResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/governance_resilience/governance_resilience_service.py b/aethos_core/mission_control/governance_resilience/governance_resilience_service.py index 152fec8..84f5580 100644 --- a/aethos_core/mission_control/governance_resilience/governance_resilience_service.py +++ b/aethos_core/mission_control/governance_resilience/governance_resilience_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -284,6 +286,7 @@ def _institutional_resilience_scoring(*, coherence: dict[str, Any]) -> dict[str, } +@scoped_build def build_governance_resilience(*, session_id: str) -> GovernanceResilienceResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/governance_role_architecture/governance_role_architecture_service.py b/aethos_core/mission_control/governance_role_architecture/governance_role_architecture_service.py index a8f432f..2b93d46 100644 --- a/aethos_core/mission_control/governance_role_architecture/governance_role_architecture_service.py +++ b/aethos_core/mission_control/governance_role_architecture/governance_role_architecture_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -292,6 +294,7 @@ def _institutional_responsibility_maps(*, collaboration: dict[str, Any]) -> list return maps +@scoped_build def build_governance_role_architecture(*, session_id: str) -> GovernanceRoleArchitectureResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/governed_application_generation/governed_application_generation_service.py b/aethos_core/mission_control/governed_application_generation/governed_application_generation_service.py index 7ffbfa1..7b9676d 100644 --- a/aethos_core/mission_control/governed_application_generation/governed_application_generation_service.py +++ b/aethos_core/mission_control/governed_application_generation/governed_application_generation_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -344,6 +346,7 @@ def _generation_memory(*, records: list[dict[str, Any]]) -> dict[str, Any]: } +@scoped_build def build_governed_application_generation(*, session_id: str) -> GovernedApplicationGenerationResult: sid = (session_id or "default").strip()[:64] or "default" plan = load_issue_plan_for_session(session_id=sid) diff --git a/aethos_core/mission_control/governed_chat_command_invocation_from_handoff/governed_chat_command_invocation_from_handoff_service.py b/aethos_core/mission_control/governed_chat_command_invocation_from_handoff/governed_chat_command_invocation_from_handoff_service.py index 2bdecd4..0f9a2b4 100644 --- a/aethos_core/mission_control/governed_chat_command_invocation_from_handoff/governed_chat_command_invocation_from_handoff_service.py +++ b/aethos_core/mission_control/governed_chat_command_invocation_from_handoff/governed_chat_command_invocation_from_handoff_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -337,6 +339,7 @@ def _invocation_integrity_scoring( ] +@scoped_build def build_governed_chat_command_invocation_from_handoff( *, session_id: str ) -> GovernedChatCommandInvocationFromHandoffResult: diff --git a/aethos_core/mission_control/governed_deploy_lifecycle/governed_deploy_lifecycle_service.py b/aethos_core/mission_control/governed_deploy_lifecycle/governed_deploy_lifecycle_service.py index 8df8950..b82bd8b 100644 --- a/aethos_core/mission_control/governed_deploy_lifecycle/governed_deploy_lifecycle_service.py +++ b/aethos_core/mission_control/governed_deploy_lifecycle/governed_deploy_lifecycle_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -424,6 +426,7 @@ def _deploy_handoff_artifact( } +@scoped_build def build_governed_deploy_lifecycle(*, session_id: str) -> GovernedDeployLifecycleResult: sid = (session_id or "default").strip()[:64] or "default" plan = load_issue_plan_for_session(session_id=sid) diff --git a/aethos_core/mission_control/governed_lane_entry_recommendation/governed_lane_entry_recommendation_service.py b/aethos_core/mission_control/governed_lane_entry_recommendation/governed_lane_entry_recommendation_service.py index 1ba8693..1f9559e 100644 --- a/aethos_core/mission_control/governed_lane_entry_recommendation/governed_lane_entry_recommendation_service.py +++ b/aethos_core/mission_control/governed_lane_entry_recommendation/governed_lane_entry_recommendation_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -419,6 +421,7 @@ def _lane_recommendation_integrity_scoring( ] +@scoped_build def build_governed_lane_entry_recommendation(*, session_id: str) -> GovernedLaneEntryRecommendationResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/governed_lane_readiness_board/governed_lane_readiness_board_service.py b/aethos_core/mission_control/governed_lane_readiness_board/governed_lane_readiness_board_service.py index b2d00a3..eef62e2 100644 --- a/aethos_core/mission_control/governed_lane_readiness_board/governed_lane_readiness_board_service.py +++ b/aethos_core/mission_control/governed_lane_readiness_board/governed_lane_readiness_board_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -352,6 +354,7 @@ def _lane_readiness_board_integrity_scoring( ] +@scoped_build def build_governed_lane_readiness_board(*, session_id: str) -> GovernedLaneReadinessBoardResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/governed_merge_lifecycle/governed_merge_lifecycle_service.py b/aethos_core/mission_control/governed_merge_lifecycle/governed_merge_lifecycle_service.py index 90bb3bf..4efb3bb 100644 --- a/aethos_core/mission_control/governed_merge_lifecycle/governed_merge_lifecycle_service.py +++ b/aethos_core/mission_control/governed_merge_lifecycle/governed_merge_lifecycle_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -380,6 +382,7 @@ def _merge_handoff_artifact( } +@scoped_build def build_governed_merge_lifecycle(*, session_id: str) -> GovernedMergeLifecycleResult: sid = (session_id or "default").strip()[:64] or "default" plan = load_issue_plan_for_session(session_id=sid) diff --git a/aethos_core/mission_control/governed_monitoring_lifecycle/governed_monitoring_lifecycle_service.py b/aethos_core/mission_control/governed_monitoring_lifecycle/governed_monitoring_lifecycle_service.py index ebb6716..d685ab6 100644 --- a/aethos_core/mission_control/governed_monitoring_lifecycle/governed_monitoring_lifecycle_service.py +++ b/aethos_core/mission_control/governed_monitoring_lifecycle/governed_monitoring_lifecycle_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -445,6 +447,7 @@ def _incident_escalation_artifact( } +@scoped_build def build_governed_monitoring_lifecycle(*, session_id: str) -> GovernedMonitoringLifecycleResult: sid = (session_id or "default").strip()[:64] or "default" plan = load_issue_plan_for_session(session_id=sid) diff --git a/aethos_core/mission_control/governed_rollback_lifecycle/governed_rollback_lifecycle_service.py b/aethos_core/mission_control/governed_rollback_lifecycle/governed_rollback_lifecycle_service.py index 6ad90c9..2436be6 100644 --- a/aethos_core/mission_control/governed_rollback_lifecycle/governed_rollback_lifecycle_service.py +++ b/aethos_core/mission_control/governed_rollback_lifecycle/governed_rollback_lifecycle_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -498,6 +500,7 @@ def _recovery_timeline( return events +@scoped_build def build_governed_rollback_lifecycle(*, session_id: str) -> GovernedRollbackLifecycleResult: sid = (session_id or "default").strip()[:64] or "default" plan = load_issue_plan_for_session(session_id=sid) diff --git a/aethos_core/mission_control/growth_adoption_intelligence/growth_adoption_intelligence_service.py b/aethos_core/mission_control/growth_adoption_intelligence/growth_adoption_intelligence_service.py index 059aae5..eea0510 100644 --- a/aethos_core/mission_control/growth_adoption_intelligence/growth_adoption_intelligence_service.py +++ b/aethos_core/mission_control/growth_adoption_intelligence/growth_adoption_intelligence_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -59,6 +61,7 @@ def _exported_at() -> str: return datetime.now(UTC).isoformat() +@scoped_build def build_growth_adoption_intelligence(*, session_id: str = "default") -> GrowthAdoptionIntelligenceResult: sid = (session_id or "default").strip()[:64] or "default" evidence = collect_growth_evidence(session_id=sid) diff --git a/aethos_core/mission_control/human_decision_board/human_decision_board_service.py b/aethos_core/mission_control/human_decision_board/human_decision_board_service.py index 2729302..b2a3934 100644 --- a/aethos_core/mission_control/human_decision_board/human_decision_board_service.py +++ b/aethos_core/mission_control/human_decision_board/human_decision_board_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -253,6 +255,7 @@ def _decision_integrity_scoring(*, records: list[dict[str, Any]]) -> list[dict[s ] +@scoped_build def build_human_decision_board(*, session_id: str) -> HumanDecisionBoardResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/human_lane_admission_decision/human_lane_admission_decision_service.py b/aethos_core/mission_control/human_lane_admission_decision/human_lane_admission_decision_service.py index 06a0703..d5d4abb 100644 --- a/aethos_core/mission_control/human_lane_admission_decision/human_lane_admission_decision_service.py +++ b/aethos_core/mission_control/human_lane_admission_decision/human_lane_admission_decision_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -296,6 +298,7 @@ def _decision_integrity_scoring( ] +@scoped_build def build_human_lane_admission_decision(*, session_id: str) -> HumanLaneAdmissionDecisionResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/identity_access_hardening/identity_access_hardening_service.py b/aethos_core/mission_control/identity_access_hardening/identity_access_hardening_service.py index 46e9566..31788b3 100644 --- a/aethos_core/mission_control/identity_access_hardening/identity_access_hardening_service.py +++ b/aethos_core/mission_control/identity_access_hardening/identity_access_hardening_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -387,6 +389,7 @@ def _session_trust_report(*, session_id: str, user_id: str) -> list[dict[str, An ] +@scoped_build def build_identity_access_hardening(*, session_id: str) -> IdentityAccessHardeningResult: sid = (session_id or "default").strip()[:64] or "default" user_id = _resolve_session_user(session_id=sid) diff --git a/aethos_core/mission_control/independent_repository_trust_expansion/independent_repository_trust_expansion_service.py b/aethos_core/mission_control/independent_repository_trust_expansion/independent_repository_trust_expansion_service.py index aa8e220..0f54d74 100644 --- a/aethos_core/mission_control/independent_repository_trust_expansion/independent_repository_trust_expansion_service.py +++ b/aethos_core/mission_control/independent_repository_trust_expansion/independent_repository_trust_expansion_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + import time from dataclasses import dataclass, field from datetime import UTC, datetime @@ -377,6 +379,7 @@ def _readiness_ok_fast(*, session_id: str) -> bool: return load_issue_plan_for_session(session_id=session_id) is not None +@scoped_build def build_independent_repository_trust_expansion( *, session_id: str, fast_path: bool = True ) -> IndependentRepositoryTrustExpansionResult: diff --git a/aethos_core/mission_control/institutional_existential_risk/institutional_existential_risk_service.py b/aethos_core/mission_control/institutional_existential_risk/institutional_existential_risk_service.py index 7c8b244..331bf60 100644 --- a/aethos_core/mission_control/institutional_existential_risk/institutional_existential_risk_service.py +++ b/aethos_core/mission_control/institutional_existential_risk/institutional_existential_risk_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -265,6 +267,7 @@ def _institutional_preservation_scoring(*, external_relations: dict[str, Any], r ] +@scoped_build def build_institutional_existential_risk(*, session_id: str) -> InstitutionalExistentialRiskResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/institutional_external_relations/institutional_external_relations_service.py b/aethos_core/mission_control/institutional_external_relations/institutional_external_relations_service.py index bf9525d..93e0eae 100644 --- a/aethos_core/mission_control/institutional_external_relations/institutional_external_relations_service.py +++ b/aethos_core/mission_control/institutional_external_relations/institutional_external_relations_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -229,6 +231,7 @@ def _cross_system_trust_continuity(*, records: list[dict[str, Any]]) -> list[dic ] +@scoped_build def build_institutional_external_relations(*, session_id: str) -> InstitutionalExternalRelationsResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/institutional_identity/institutional_identity_service.py b/aethos_core/mission_control/institutional_identity/institutional_identity_service.py index 158116a..ebb140a 100644 --- a/aethos_core/mission_control/institutional_identity/institutional_identity_service.py +++ b/aethos_core/mission_control/institutional_identity/institutional_identity_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -239,6 +241,7 @@ def _institutional_narrative_continuity(*, records: list[dict[str, Any]], evolut ] +@scoped_build def build_institutional_identity(*, session_id: str) -> InstitutionalIdentityResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/issue_intent_alignment/issue_intent_alignment_service.py b/aethos_core/mission_control/issue_intent_alignment/issue_intent_alignment_service.py index 8c97bf8..42ea155 100644 --- a/aethos_core/mission_control/issue_intent_alignment/issue_intent_alignment_service.py +++ b/aethos_core/mission_control/issue_intent_alignment/issue_intent_alignment_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + import re from dataclasses import dataclass, field from datetime import UTC, datetime @@ -328,6 +330,7 @@ def intent_alignment_gate_satisfied(*, session_id: str, timeline: dict[str, Any] ) +@scoped_build def build_issue_intent_alignment(*, session_id: str) -> IssueIntentAlignmentResult: sid = (session_id or "default").strip()[:64] or "default" exported_at = _exported_at() diff --git a/aethos_core/mission_control/job_replay/job_replay_service.py b/aethos_core/mission_control/job_replay/job_replay_service.py index 709efb6..1b6e415 100644 --- a/aethos_core/mission_control/job_replay/job_replay_service.py +++ b/aethos_core/mission_control/job_replay/job_replay_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + import copy from dataclasses import dataclass, field from datetime import UTC, datetime @@ -281,6 +283,7 @@ def _build_replay_steps(bundle: dict[str, Any]) -> list[dict[str, Any]]: return steps +@scoped_build def build_job_replay(*, session_id: str, job_id: str | None = None) -> JobReplayResult: sid = (session_id or "default").strip()[:64] or "default" focus = (job_id or "").strip() or None diff --git a/aethos_core/mission_control/knowledge_spaces/knowledge_index.py b/aethos_core/mission_control/knowledge_spaces/knowledge_index.py index e456012..4008192 100644 --- a/aethos_core/mission_control/knowledge_spaces/knowledge_index.py +++ b/aethos_core/mission_control/knowledge_spaces/knowledge_index.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from pathlib import Path from typing import Any @@ -304,6 +306,7 @@ def documents_from_global_sources() -> list[dict[str, Any]]: return docs +@scoped_build def build_knowledge_corpus(*, session_id: str, include_live: bool = True) -> tuple[list[dict[str, Any]], list[dict[str, Any]]]: """Return (documents, knowledge_spaces index).""" records = list_operational_memory_records(limit=200) diff --git a/aethos_core/mission_control/launch_decision_package/launch_decision_package_service.py b/aethos_core/mission_control/launch_decision_package/launch_decision_package_service.py index ff75edd..a12cf18 100644 --- a/aethos_core/mission_control/launch_decision_package/launch_decision_package_service.py +++ b/aethos_core/mission_control/launch_decision_package/launch_decision_package_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -61,6 +63,7 @@ def _section(freeze: dict[str, Any], key: str) -> dict[str, Any]: return rows[0] if rows else {} +@scoped_build def build_launch_decision_package(*, session_id: str) -> LaunchDecisionPackageResult: sid = (session_id or "default").strip()[:64] or "default" records = list_launch_decision_package_records() diff --git a/aethos_core/mission_control/launch_operations_center/launch_operations_center_service.py b/aethos_core/mission_control/launch_operations_center/launch_operations_center_service.py index eced27f..5d0b755 100644 --- a/aethos_core/mission_control/launch_operations_center/launch_operations_center_service.py +++ b/aethos_core/mission_control/launch_operations_center/launch_operations_center_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -92,6 +94,7 @@ def _payload(result: Any, attr: str) -> dict[str, Any]: return value if isinstance(value, dict) else {} +@scoped_build def build_launch_operations_center(*, session_id: str) -> LaunchOperationsCenterResult: sid = (session_id or "default").strip()[:64] or "default" records = list_launch_operations_center_records() diff --git a/aethos_core/mission_control/limited_beta_launch_program/limited_beta_launch_program_service.py b/aethos_core/mission_control/limited_beta_launch_program/limited_beta_launch_program_service.py index bbac85a..bcae4e8 100644 --- a/aethos_core/mission_control/limited_beta_launch_program/limited_beta_launch_program_service.py +++ b/aethos_core/mission_control/limited_beta_launch_program/limited_beta_launch_program_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -76,6 +78,7 @@ def _payload(result: Any, attr: str) -> dict[str, Any]: return value if isinstance(value, dict) else {} +@scoped_build def build_limited_beta_launch_program(*, session_id: str) -> LimitedBetaLaunchProgramResult: sid = (session_id or "default").strip()[:64] or "default" records = list_limited_beta_launch_program_records() diff --git a/aethos_core/mission_control/mission_authorization/mission_authorization_service.py b/aethos_core/mission_control/mission_authorization/mission_authorization_service.py index 00c5e09..8917e04 100644 --- a/aethos_core/mission_control/mission_authorization/mission_authorization_service.py +++ b/aethos_core/mission_control/mission_authorization/mission_authorization_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -340,6 +342,7 @@ def _authorization_integrity_scoring( ] +@scoped_build def build_mission_authorization(*, session_id: str) -> MissionAuthorizationResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/mission_orchestration/mission_orchestration_service.py b/aethos_core/mission_control/mission_orchestration/mission_orchestration_service.py index b04123b..abb3b50 100644 --- a/aethos_core/mission_control/mission_orchestration/mission_orchestration_service.py +++ b/aethos_core/mission_control/mission_orchestration/mission_orchestration_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -444,6 +446,7 @@ def _cross_lane_mission_health(*, snapshot: dict[str, Any], lane_sync: list[dict } +@scoped_build def build_mission_orchestration(*, session_id: str) -> MissionOrchestrationResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/mission_planning/mission_planning_service.py b/aethos_core/mission_control/mission_planning/mission_planning_service.py index 303975c..9f41e84 100644 --- a/aethos_core/mission_control/mission_planning/mission_planning_service.py +++ b/aethos_core/mission_control/mission_planning/mission_planning_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -303,6 +305,7 @@ def _mission_action_plan_artifact( return stored + [artifact] +@scoped_build def build_mission_planning(*, session_id: str) -> MissionPlanningResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/mission_planning_deliberation/mission_planning_deliberation_service.py b/aethos_core/mission_control/mission_planning_deliberation/mission_planning_deliberation_service.py index f07bb6e..802f2c5 100644 --- a/aethos_core/mission_control/mission_planning_deliberation/mission_planning_deliberation_service.py +++ b/aethos_core/mission_control/mission_planning_deliberation/mission_planning_deliberation_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -156,6 +158,7 @@ def _deliberation_integrity_scoring(*, records: list[dict[str, Any]], agent_outp ] +@scoped_build def build_mission_planning_deliberation(*, session_id: str) -> MissionPlanningDeliberationResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/mission_readiness_review/mission_readiness_review_service.py b/aethos_core/mission_control/mission_readiness_review/mission_readiness_review_service.py index efeee3f..99bd2f0 100644 --- a/aethos_core/mission_control/mission_readiness_review/mission_readiness_review_service.py +++ b/aethos_core/mission_control/mission_readiness_review/mission_readiness_review_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -241,6 +243,7 @@ def _go_no_go_hold_recommendation( } +@scoped_build def build_mission_readiness_review(*, session_id: str) -> MissionReadinessReviewResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/mission_strategy/mission_strategy_service.py b/aethos_core/mission_control/mission_strategy/mission_strategy_service.py index 2ed41a2..ce84100 100644 --- a/aethos_core/mission_control/mission_strategy/mission_strategy_service.py +++ b/aethos_core/mission_control/mission_strategy/mission_strategy_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from collections import Counter from dataclasses import dataclass, field from datetime import UTC, datetime @@ -294,6 +296,7 @@ def _high_friction_archetypes(*, simulation: dict[str, Any], records: list[dict[ return archetypes +@scoped_build def build_mission_strategy(*, session_id: str) -> MissionStrategyResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/multi_tenant_platform_foundation/multi_tenant_platform_foundation_service.py b/aethos_core/mission_control/multi_tenant_platform_foundation/multi_tenant_platform_foundation_service.py index 6c0a0b6..a6d832b 100644 --- a/aethos_core/mission_control/multi_tenant_platform_foundation/multi_tenant_platform_foundation_service.py +++ b/aethos_core/mission_control/multi_tenant_platform_foundation/multi_tenant_platform_foundation_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -373,6 +375,7 @@ def _channel_registry() -> list[dict[str, Any]]: ] +@scoped_build def build_multi_tenant_platform_foundation(*, session_id: str) -> MultiTenantPlatformFoundationResult: sid = (session_id or "default").strip()[:64] or "default" tenant_records = list_multi_tenant_platform_foundation_records() diff --git a/aethos_core/mission_control/nexora_pilot_arc_orchestrator/nexora_pilot_arc_orchestrator_service.py b/aethos_core/mission_control/nexora_pilot_arc_orchestrator/nexora_pilot_arc_orchestrator_service.py index 46e72ab..698f8f5 100644 --- a/aethos_core/mission_control/nexora_pilot_arc_orchestrator/nexora_pilot_arc_orchestrator_service.py +++ b/aethos_core/mission_control/nexora_pilot_arc_orchestrator/nexora_pilot_arc_orchestrator_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from pathlib import Path @@ -318,6 +320,7 @@ def _trust_readiness_summary(*, gates: dict[str, Any], arc_state: str) -> dict[s } +@scoped_build def build_nexora_pilot_arc_orchestrator(*, session_id: str) -> NexoraPilotArcOrchestratorResult: sid = (session_id or "default").strip()[:64] or "default" exported_at = _exported_at() diff --git a/aethos_core/mission_control/nexora_trust_report_freeze/nexora_trust_report_freeze_service.py b/aethos_core/mission_control/nexora_trust_report_freeze/nexora_trust_report_freeze_service.py index 2d22b68..ada603e 100644 --- a/aethos_core/mission_control/nexora_trust_report_freeze/nexora_trust_report_freeze_service.py +++ b/aethos_core/mission_control/nexora_trust_report_freeze/nexora_trust_report_freeze_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -402,6 +404,7 @@ def _evidence_index( return entries +@scoped_build def build_nexora_trust_report_freeze(*, session_id: str) -> NexoraTrustReportFreezeResult: sid = (session_id or "default").strip()[:64] or "default" exported_at = _exported_at() diff --git a/aethos_core/mission_control/operational_memory/operational_memory_service.py b/aethos_core/mission_control/operational_memory/operational_memory_service.py index 7eab096..0d11558 100644 --- a/aethos_core/mission_control/operational_memory/operational_memory_service.py +++ b/aethos_core/mission_control/operational_memory/operational_memory_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from collections import Counter from dataclasses import dataclass, field from datetime import UTC, datetime @@ -484,6 +486,7 @@ def _learning_signals( return signals +@scoped_build def build_operational_memory_graph( *, session_id: str, diff --git a/aethos_core/mission_control/operator_guidance/operator_guidance_service.py b/aethos_core/mission_control/operator_guidance/operator_guidance_service.py index 16eb972..b803f1e 100644 --- a/aethos_core/mission_control/operator_guidance/operator_guidance_service.py +++ b/aethos_core/mission_control/operator_guidance/operator_guidance_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -378,6 +380,7 @@ def _replay_rerun_review_targets( return out +@scoped_build def build_operator_contextual_guidance( *, session_id: str, diff --git a/aethos_core/mission_control/organizational_effectiveness_intelligence/organizational_effectiveness_intelligence_service.py b/aethos_core/mission_control/organizational_effectiveness_intelligence/organizational_effectiveness_intelligence_service.py index e6bd1ce..b5c09d5 100644 --- a/aethos_core/mission_control/organizational_effectiveness_intelligence/organizational_effectiveness_intelligence_service.py +++ b/aethos_core/mission_control/organizational_effectiveness_intelligence/organizational_effectiveness_intelligence_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -60,6 +62,7 @@ def _exported_at() -> str: return datetime.now(UTC).isoformat() +@scoped_build def build_organizational_effectiveness_intelligence( *, session_id: str = "default" ) -> OrganizationalEffectivenessIntelligenceResult: diff --git a/aethos_core/mission_control/payment_integration_readiness/payment_integration_readiness_service.py b/aethos_core/mission_control/payment_integration_readiness/payment_integration_readiness_service.py index 621dff1..d8d9f58 100644 --- a/aethos_core/mission_control/payment_integration_readiness/payment_integration_readiness_service.py +++ b/aethos_core/mission_control/payment_integration_readiness/payment_integration_readiness_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -63,6 +65,7 @@ def _exported_at() -> str: return datetime.now(UTC).isoformat() +@scoped_build def build_payment_integration_readiness(*, session_id: str) -> PaymentIntegrationReadinessResult: sid = (session_id or "default").strip()[:64] or "default" records = list_payment_integration_readiness_records() diff --git a/aethos_core/mission_control/pilot_validation_trust_board/pilot_validation_trust_board_service.py b/aethos_core/mission_control/pilot_validation_trust_board/pilot_validation_trust_board_service.py index 92dc0df..a5decfc 100644 --- a/aethos_core/mission_control/pilot_validation_trust_board/pilot_validation_trust_board_service.py +++ b/aethos_core/mission_control/pilot_validation_trust_board/pilot_validation_trust_board_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -296,6 +298,7 @@ def _pilot_audit_composition(*, audits: list[dict[str, Any]], focus_audit: dict[ ] +@scoped_build def build_pilot_validation_trust_board(*, session_id: str) -> PilotValidationTrustBoardResult: sid = (session_id or "default").strip()[:64] or "default" exported_at = _exported_at() diff --git a/aethos_core/mission_control/pilotos_ui_pilot_arc_orchestrator/pilotos_ui_pilot_arc_orchestrator_service.py b/aethos_core/mission_control/pilotos_ui_pilot_arc_orchestrator/pilotos_ui_pilot_arc_orchestrator_service.py index 86bca1b..78f62c1 100644 --- a/aethos_core/mission_control/pilotos_ui_pilot_arc_orchestrator/pilotos_ui_pilot_arc_orchestrator_service.py +++ b/aethos_core/mission_control/pilotos_ui_pilot_arc_orchestrator/pilotos_ui_pilot_arc_orchestrator_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from pathlib import Path @@ -243,6 +245,7 @@ def _expansion_readiness(*, arc_state: str, gates: dict[str, Any]) -> dict[str, } +@scoped_build def build_pilotos_ui_pilot_arc_orchestrator(*, session_id: str) -> PilotosUiPilotArcOrchestratorResult: sid = (session_id or "default").strip()[:64] or "default" exported_at = _exported_at() diff --git a/aethos_core/mission_control/pilotos_ui_trust_report_freeze/pilotos_ui_trust_report_freeze_service.py b/aethos_core/mission_control/pilotos_ui_trust_report_freeze/pilotos_ui_trust_report_freeze_service.py index df1d283..9c8328c 100644 --- a/aethos_core/mission_control/pilotos_ui_trust_report_freeze/pilotos_ui_trust_report_freeze_service.py +++ b/aethos_core/mission_control/pilotos_ui_trust_report_freeze/pilotos_ui_trust_report_freeze_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -343,6 +345,7 @@ def _evidence_index( return entries +@scoped_build def build_pilotos_ui_trust_report_freeze(*, session_id: str) -> PilotosUiTrustReportFreezeResult: sid = (session_id or "default").strip()[:64] or "default" exported_at = _exported_at() diff --git a/aethos_core/mission_control/post_launch_operations_baseline/post_launch_operations_baseline_service.py b/aethos_core/mission_control/post_launch_operations_baseline/post_launch_operations_baseline_service.py index 2c8b313..a5f5f34 100644 --- a/aethos_core/mission_control/post_launch_operations_baseline/post_launch_operations_baseline_service.py +++ b/aethos_core/mission_control/post_launch_operations_baseline/post_launch_operations_baseline_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -129,6 +131,7 @@ def _section(board: dict[str, Any], key: str) -> dict[str, Any]: return rows[0] if rows else {} +@scoped_build def build_post_launch_operations_baseline(*, session_id: str) -> PostLaunchOperationsBaselineResult: sid = (session_id or "default").strip()[:64] or "default" records = list_post_launch_operations_baseline_records() diff --git a/aethos_core/mission_control/product_analytics_foundation/product_analytics_foundation_service.py b/aethos_core/mission_control/product_analytics_foundation/product_analytics_foundation_service.py index a2abf8f..69a071b 100644 --- a/aethos_core/mission_control/product_analytics_foundation/product_analytics_foundation_service.py +++ b/aethos_core/mission_control/product_analytics_foundation/product_analytics_foundation_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -58,6 +60,7 @@ def _exported_at() -> str: return datetime.now(UTC).isoformat() +@scoped_build def build_product_analytics_foundation(*, session_id: str = "default") -> ProductAnalyticsFoundationResult: sid = (session_id or "default").strip()[:64] or "default" evidence = collect_analytics_evidence(session_id=sid) diff --git a/aethos_core/mission_control/product_market_fit_intelligence/product_market_fit_intelligence_service.py b/aethos_core/mission_control/product_market_fit_intelligence/product_market_fit_intelligence_service.py index 6a236bd..3ea4ba9 100644 --- a/aethos_core/mission_control/product_market_fit_intelligence/product_market_fit_intelligence_service.py +++ b/aethos_core/mission_control/product_market_fit_intelligence/product_market_fit_intelligence_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -60,6 +62,7 @@ def _exported_at() -> str: return datetime.now(UTC).isoformat() +@scoped_build def build_product_market_fit_intelligence(*, session_id: str = "default") -> ProductMarketFitIntelligenceResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/provider_connection_experience/provider_connection_experience_service.py b/aethos_core/mission_control/provider_connection_experience/provider_connection_experience_service.py index 3342d7f..52c993c 100644 --- a/aethos_core/mission_control/provider_connection_experience/provider_connection_experience_service.py +++ b/aethos_core/mission_control/provider_connection_experience/provider_connection_experience_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -72,6 +74,7 @@ def _provider_matrix_rows(capability_payload: dict[str, Any]) -> dict[str, dict[ return by_name +@scoped_build def build_provider_connection_experience(*, session_id: str) -> ProviderConnectionExperienceResult: sid = (session_id or "default").strip()[:64] or "default" records = list_provider_connection_experience_records() diff --git a/aethos_core/mission_control/public_launch_readiness_freeze/public_launch_readiness_freeze_service.py b/aethos_core/mission_control/public_launch_readiness_freeze/public_launch_readiness_freeze_service.py index 1bd874c..6f51b04 100644 --- a/aethos_core/mission_control/public_launch_readiness_freeze/public_launch_readiness_freeze_service.py +++ b/aethos_core/mission_control/public_launch_readiness_freeze/public_launch_readiness_freeze_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -110,6 +112,7 @@ def _payload(result: Any, attr: str) -> dict[str, Any]: return value if isinstance(value, dict) else {} +@scoped_build def build_public_launch_readiness_freeze(*, session_id: str) -> PublicLaunchReadinessFreezeResult: sid = (session_id or "default").strip()[:64] or "default" records = list_public_launch_readiness_freeze_records() diff --git a/aethos_core/mission_control/public_product_experience/public_product_experience_service.py b/aethos_core/mission_control/public_product_experience/public_product_experience_service.py index 1834848..3a5a4d8 100644 --- a/aethos_core/mission_control/public_product_experience/public_product_experience_service.py +++ b/aethos_core/mission_control/public_product_experience/public_product_experience_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -96,6 +98,7 @@ def _payload(result: Any, attr: str) -> dict[str, Any]: return value if isinstance(value, dict) else {} +@scoped_build def build_public_product_experience(*, session_id: str) -> PublicProductExperienceResult: sid = (session_id or "default").strip()[:64] or "default" records = list_public_product_experience_records() diff --git a/aethos_core/mission_control/repo_pilot_readiness_dashboard/repo_pilot_readiness_dashboard_service.py b/aethos_core/mission_control/repo_pilot_readiness_dashboard/repo_pilot_readiness_dashboard_service.py index c80cf0e..5653c35 100644 --- a/aethos_core/mission_control/repo_pilot_readiness_dashboard/repo_pilot_readiness_dashboard_service.py +++ b/aethos_core/mission_control/repo_pilot_readiness_dashboard/repo_pilot_readiness_dashboard_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + import os import re from dataclasses import dataclass, field @@ -432,6 +434,7 @@ def _audit_replay_linkage_at_readiness( ] +@scoped_build def build_repo_pilot_readiness_dashboard(*, session_id: str) -> RepoPilotReadinessDashboardResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/repository_knowledge_graph/repository_knowledge_graph_service.py b/aethos_core/mission_control/repository_knowledge_graph/repository_knowledge_graph_service.py index b5f4d9a..7f0258a 100644 --- a/aethos_core/mission_control/repository_knowledge_graph/repository_knowledge_graph_service.py +++ b/aethos_core/mission_control/repository_knowledge_graph/repository_knowledge_graph_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -571,6 +573,7 @@ def _monitoring_classification(*, session_id: str, plan_id: str) -> str | None: return "WARNING" +@scoped_build def build_repository_knowledge_graph(*, session_id: str) -> RepositoryKnowledgeGraphResult: sid = (session_id or "default").strip()[:64] or "default" plan = load_issue_plan_for_session(session_id=sid) diff --git a/aethos_core/mission_control/rerun_planning/rerun_plan_service.py b/aethos_core/mission_control/rerun_planning/rerun_plan_service.py index fe32376..7e735bf 100644 --- a/aethos_core/mission_control/rerun_planning/rerun_plan_service.py +++ b/aethos_core/mission_control/rerun_planning/rerun_plan_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -302,6 +304,7 @@ def _eligibility( } +@scoped_build def build_governed_rerun_plan( *, session_id: str, diff --git a/aethos_core/mission_control/saas_launch_readiness_assessment/saas_launch_readiness_assessment_service.py b/aethos_core/mission_control/saas_launch_readiness_assessment/saas_launch_readiness_assessment_service.py index 1a9ffcc..e3457c9 100644 --- a/aethos_core/mission_control/saas_launch_readiness_assessment/saas_launch_readiness_assessment_service.py +++ b/aethos_core/mission_control/saas_launch_readiness_assessment/saas_launch_readiness_assessment_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -84,6 +86,7 @@ def _safe_build(name: str, builder, *, session_id: str) -> tuple[Any, bool]: return None, False +@scoped_build def build_saas_launch_readiness_assessment(*, session_id: str) -> SaasLaunchReadinessAssessmentResult: sid = (session_id or "default").strip()[:64] or "default" records = list_saas_launch_readiness_assessment_records() diff --git a/aethos_core/mission_control/strategic_planning_intelligence/strategic_planning_intelligence_service.py b/aethos_core/mission_control/strategic_planning_intelligence/strategic_planning_intelligence_service.py index f0874b1..0049f7f 100644 --- a/aethos_core/mission_control/strategic_planning_intelligence/strategic_planning_intelligence_service.py +++ b/aethos_core/mission_control/strategic_planning_intelligence/strategic_planning_intelligence_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -60,6 +62,7 @@ def _exported_at() -> str: return datetime.now(UTC).isoformat() +@scoped_build def build_strategic_planning_intelligence(*, session_id: str = "default") -> StrategicPlanningIntelligenceResult: sid = (session_id or "default").strip()[:64] or "default" evidence = collect_strategic_planning_evidence(session_id=sid) diff --git a/aethos_core/mission_control/strategic_portfolio_intelligence/strategic_portfolio_intelligence_service.py b/aethos_core/mission_control/strategic_portfolio_intelligence/strategic_portfolio_intelligence_service.py index d86d18e..a80c811 100644 --- a/aethos_core/mission_control/strategic_portfolio_intelligence/strategic_portfolio_intelligence_service.py +++ b/aethos_core/mission_control/strategic_portfolio_intelligence/strategic_portfolio_intelligence_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -60,6 +62,7 @@ def _exported_at() -> str: return datetime.now(UTC).isoformat() +@scoped_build def build_strategic_portfolio_intelligence(*, session_id: str = "default") -> StrategicPortfolioIntelligenceResult: sid = (session_id or "default").strip()[:64] or "default" evidence = collect_strategic_portfolio_evidence(session_id=sid) diff --git a/aethos_core/mission_control/tenant_onboarding_activation/tenant_onboarding_activation_service.py b/aethos_core/mission_control/tenant_onboarding_activation/tenant_onboarding_activation_service.py index ca43f7f..a9dfb88 100644 --- a/aethos_core/mission_control/tenant_onboarding_activation/tenant_onboarding_activation_service.py +++ b/aethos_core/mission_control/tenant_onboarding_activation/tenant_onboarding_activation_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -288,6 +290,7 @@ def _first_mission_control_activation_packet(*, session_id: str) -> list[dict[st ] +@scoped_build def build_tenant_onboarding_activation(*, session_id: str) -> TenantOnboardingActivationResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/aethos_core/mission_control/work_package_readiness_lane_admission/work_package_readiness_lane_admission_service.py b/aethos_core/mission_control/work_package_readiness_lane_admission/work_package_readiness_lane_admission_service.py index cda267d..2140bd1 100644 --- a/aethos_core/mission_control/work_package_readiness_lane_admission/work_package_readiness_lane_admission_service.py +++ b/aethos_core/mission_control/work_package_readiness_lane_admission/work_package_readiness_lane_admission_service.py @@ -3,6 +3,8 @@ from __future__ import annotations +from aethos_core.mission_control.build_memoization import scoped_build + from dataclasses import dataclass, field from datetime import UTC, datetime from typing import Any @@ -433,6 +435,7 @@ def _admission_integrity_scoring( ] +@scoped_build def build_work_package_readiness_lane_admission(*, session_id: str) -> WorkPackageReadinessLaneAdmissionResult: sid = (session_id or "default").strip()[:64] or "default" diff --git a/pyproject.toml b/pyproject.toml index 0c1aecf..5807237 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -49,6 +49,7 @@ secrets = [ dev = [ "pytest>=8.3.0", "pytest-asyncio>=0.24.0", + "pytest-timeout>=2.3.0", "httpx>=0.27.0", "ruff>=0.9.0", ] diff --git a/requirements.lock b/requirements.lock index 7c10c82..3c35314 100644 --- a/requirements.lock +++ b/requirements.lock @@ -10,7 +10,7 @@ certifi==2026.4.22 cffi==2.0.0 charset-normalizer==3.4.7 click==8.4.0 -cryptography==48.0.1 +cryptography==50.0.0 defusedxml==0.7.1 fastapi==0.136.1 filelock==3.29.1 diff --git a/web/package-lock.json b/web/package-lock.json index 33c1717..c14e985 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1676,9 +1676,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.16", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz", - "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==", + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", "funding": [ { "type": "github",