engineering-platform 2.3.74__tar.gz → 2.3.76__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/PKG-INFO +1 -1
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/pyproject.toml +1 -1
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/ENGINEERING_PLATFORM_CONFIG.json +1 -1
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/ENGINEERING_PLATFORM_VERSION.json +4 -4
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/platform_version.py +1 -1
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/server.py +69 -15
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/templates/workspace-config.json +1 -1
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform.egg-info/PKG-INFO +1 -1
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/README.md +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/setup.cfg +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/__init__.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/__main__.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/agent_state.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/agent_trust.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/assets/dashboard.css +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/assets/dashboard.js +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/assets/dashboard_locales.mjs +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/assets/dashboard_status_store.mjs +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/assets/dashboard_translation.mjs +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/assets/operations-console/apple-touch-icon-dark.png +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/assets/operations-console/apple-touch-icon-light.png +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/assets/operations-console/icon-dark.png +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/assets/operations-console/icon-light.png +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/assets/operations-console/icon-transparent.png +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/assets/operations-console/manifest.webmanifest +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/capability_preflight.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/capability_review.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/central_data_transfer.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/central_database.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/central_store_migration.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/codex_capacity.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/codex_chat.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/codex_observability.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/component_lock.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/component_logging.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/console_presentation.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/console_route_ownership.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/contracts/__init__.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/contracts/ep_consumer.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/contracts/models.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/contracts/projection.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/dashboard_browser_validation.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/dashboard_state.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/dashboard_supervisor.swift +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/dashboard_translation.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/dependabot_producer.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/development_profile.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/drift_diagnostics.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/emergency_recovery.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/engineering_memory.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/ep_consumer_credentials.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/evidence_projection.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/execution_activity.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/execution_context.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/execution_errors.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/execution_evidence.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/execution_executor.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/execution_finalization.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/execution_host.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/execution_host_evidence.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/execution_lease.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/execution_lifecycle.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/execution_models.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/execution_readiness.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/execution_reporting.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/execution_repository.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/execution_timeout_policy.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/execution_timing.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/execution_transaction.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/external_producer_binding.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/file_inbox.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/forensic_attribution.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/forensic_attribution_v2.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/forensic_delta.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/golden_scenario.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/historical_dashboard_configuration.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/host_admin.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/host_preflight.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/installation_relocation.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/installation_update_activation.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/installation_update_admission.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/installation_update_backup.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/installation_update_composition.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/installation_update_executor.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/installation_update_migration.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/installation_update_operation.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/installation_update_plan.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/installation_update_preparation.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/investigation_ledger.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/legacy_inbox_migration.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/legacy_installation_adoption.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/lifecycle_worker.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/live_status.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/local_api.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/local_api_keychain.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/local_repository_binding.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/managed_autonomy.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/managed_codex_runtime.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/operational_installation.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/operational_installation_lock.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/operational_installation_record.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/owner_credential_recovery.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/parity_context.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/parity_lifecycle_dispatcher.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/platform_admin.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/platform_api.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/platform_bootstrap.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/platform_components.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/pr_check_repair.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/pr_evidence_backfill.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/producer.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/product_installation_readback.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/project_agent.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/project_agent_service.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/project_topology.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/prompt_history.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/provider_context.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/provider_context_benchmark.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/provider_context_scope.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/provider_interruption.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/provider_process_identity.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/provider_readiness.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/provider_recovery.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/provider_usage.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/providers.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/qualification.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/qualification_runtime.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/recommendation_handoff.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/reconciliation_adoption.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/release_operation.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/report_analysis.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/repository_attachment.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/repository_handoff.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/resources.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/reviewer_evidence.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/revision_binding.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/schemas/producer-readback-v1.2.schema.json +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/schemas/producer-readback-v1.schema.json +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/schemas/repository-attachment.schema.json +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/server_console_services.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/server_relay.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/server_service.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/status_model.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/status_reconciliation.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/storage.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/submission_cli.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/submission_intake.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/submission_service.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/system_installation_topology.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/system_server_service.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/telemetry.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/terminal_evidence_reconciliation.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/validation_identity.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/validation_profile.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/version_preparation_delivery.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/workspace_preflight.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/worktree_provenance.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/worktree_tooling.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform.egg-info/SOURCES.txt +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform.egg-info/dependency_links.txt +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform.egg-info/entry_points.txt +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform.egg-info/top_level.txt +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/tests/test_adaptive_action_sizing_design.py +0 -0
- {engineering_platform-2.3.74 → engineering_platform-2.3.76}/tests/test_role_task_model_policy_design.py +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bootstrap_contract": "2026.12",
|
|
3
3
|
"checkpoint_format": 1,
|
|
4
|
-
"dashboard_version": "2.3.
|
|
4
|
+
"dashboard_version": "2.3.76",
|
|
5
5
|
"handoff_protocol": 1,
|
|
6
6
|
"memory_format": 2,
|
|
7
7
|
"minimum_codex_cli": "0.146.0",
|
|
8
8
|
"inbox_protocol": 1,
|
|
9
|
-
"platform_version": "2.3.
|
|
9
|
+
"platform_version": "2.3.76",
|
|
10
10
|
"report_format": 2,
|
|
11
|
-
"runner_version": "2.3.
|
|
11
|
+
"runner_version": "2.3.76",
|
|
12
12
|
"status_model": 1,
|
|
13
13
|
"storage_schema": 45,
|
|
14
|
-
"watcher_version": "2.3.
|
|
14
|
+
"watcher_version": "2.3.76"
|
|
15
15
|
}
|
|
@@ -12,7 +12,7 @@ from .storage import ENGINEERING_STORAGE_SCHEMA_VERSION
|
|
|
12
12
|
|
|
13
13
|
SEMVER = re.compile(r"^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$")
|
|
14
14
|
CONTRACT = re.compile(r"^(\d{4})\.(0[1-9]|1[0-2])$")
|
|
15
|
-
CURRENT_PLATFORM_VERSION = "2.3.
|
|
15
|
+
CURRENT_PLATFORM_VERSION = "2.3.76"
|
|
16
16
|
MANIFEST_FIELDS = frozenset(
|
|
17
17
|
{
|
|
18
18
|
"platform_version",
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/server.py
RENAMED
|
@@ -87,7 +87,11 @@ from .component_logging import (
|
|
|
87
87
|
component_logger,
|
|
88
88
|
log_event,
|
|
89
89
|
)
|
|
90
|
-
from .agent_state import
|
|
90
|
+
from .agent_state import (
|
|
91
|
+
MAX_COMMIT_EVIDENCE_RECORDS,
|
|
92
|
+
is_valid_commit_evidence_record,
|
|
93
|
+
redact_diagnostic,
|
|
94
|
+
)
|
|
91
95
|
from .codex_chat import (
|
|
92
96
|
CHAT_RETENTION_DAYS,
|
|
93
97
|
MAX_HISTORY_ITEMS,
|
|
@@ -3429,15 +3433,58 @@ def _central_console_validation_evidence(
|
|
|
3429
3433
|
return projected
|
|
3430
3434
|
|
|
3431
3435
|
|
|
3436
|
+
def _central_console_checkpoint_commit_timeline(
|
|
3437
|
+
data_root: Path, project_id: str, submission_id: str, run_id: str, outcome: str,
|
|
3438
|
+
) -> list[dict[str, str]]:
|
|
3439
|
+
"""Project strict phase commits from one exactly bound terminal checkpoint."""
|
|
3440
|
+
try:
|
|
3441
|
+
with storage.sqlite_connection(data_root / SERVER_DATABASE_FILENAME) as connection:
|
|
3442
|
+
row = connection.execute(
|
|
3443
|
+
"""SELECT t.payload,t.phase,d.state
|
|
3444
|
+
FROM engineering_transactions AS t
|
|
3445
|
+
JOIN ep_parity_lifecycle_dispatches AS d ON d.run_id=t.run_id
|
|
3446
|
+
WHERE d.project_id=? AND d.submission_id=? AND d.run_id=?""",
|
|
3447
|
+
(project_id, submission_id, run_id),
|
|
3448
|
+
).fetchone()
|
|
3449
|
+
except sqlite3.Error:
|
|
3450
|
+
return []
|
|
3451
|
+
if row is None or row[1] != outcome or row[2] != outcome:
|
|
3452
|
+
return []
|
|
3453
|
+
try:
|
|
3454
|
+
checkpoint = json.loads(str(row[0]))
|
|
3455
|
+
except (TypeError, ValueError, json.JSONDecodeError):
|
|
3456
|
+
return []
|
|
3457
|
+
if (
|
|
3458
|
+
not isinstance(checkpoint, Mapping)
|
|
3459
|
+
or checkpoint.get("run_id") != run_id
|
|
3460
|
+
or checkpoint.get("phase") != outcome
|
|
3461
|
+
or checkpoint.get("terminal") is not True
|
|
3462
|
+
):
|
|
3463
|
+
return []
|
|
3464
|
+
raw = checkpoint.get("commit_evidence")
|
|
3465
|
+
if (
|
|
3466
|
+
not isinstance(raw, list)
|
|
3467
|
+
or len(raw) > MAX_COMMIT_EVIDENCE_RECORDS
|
|
3468
|
+
or any(not is_valid_commit_evidence_record(item) for item in raw)
|
|
3469
|
+
):
|
|
3470
|
+
return []
|
|
3471
|
+
events = [dict(item) for item in raw]
|
|
3472
|
+
identities = {(item["phase"], item["commit_sha"]) for item in events}
|
|
3473
|
+
if len(identities) != len(events):
|
|
3474
|
+
return []
|
|
3475
|
+
return sorted(events, key=lambda item: item["observed_at"])
|
|
3476
|
+
|
|
3477
|
+
|
|
3432
3478
|
def _central_console_terminal_revision_timeline(
|
|
3433
3479
|
data_root: Path, project_id: str, run_id: str,
|
|
3434
3480
|
) -> list[dict[str, str]]:
|
|
3435
|
-
"""Project an exact terminal
|
|
3481
|
+
"""Project verified phase commits plus an exact terminal revision fallback.
|
|
3436
3482
|
|
|
3437
|
-
|
|
3438
|
-
|
|
3439
|
-
|
|
3440
|
-
|
|
3483
|
+
The immutable terminal artifact first proves the project/submission/run
|
|
3484
|
+
binding. The terminal CENTRAL checkpoint then supplies the append-only
|
|
3485
|
+
phase commit records that the execution host actually verified. A
|
|
3486
|
+
successful no-change run has no phase commit, so its artifact revision is
|
|
3487
|
+
retained as a distinct fallback rather than being called a phase commit.
|
|
3441
3488
|
"""
|
|
3442
3489
|
try:
|
|
3443
3490
|
with storage.sqlite_connection(data_root / SERVER_DATABASE_FILENAME) as connection:
|
|
@@ -3449,6 +3496,7 @@ def _central_console_terminal_revision_timeline(
|
|
|
3449
3496
|
WHERE d.project_id=? AND d.run_id=?
|
|
3450
3497
|
AND a.artifact_type='EP_TERMINAL_EVIDENCE'
|
|
3451
3498
|
AND a.integrity_status='VERIFIED'
|
|
3499
|
+
AND a.projection_status='AVAILABLE'
|
|
3452
3500
|
ORDER BY a.created_at DESC,a.artifact_id DESC LIMIT 1""",
|
|
3453
3501
|
(project_id, run_id),
|
|
3454
3502
|
).fetchone()
|
|
@@ -3472,25 +3520,31 @@ def _central_console_terminal_revision_timeline(
|
|
|
3472
3520
|
repository = evidence.get("repository")
|
|
3473
3521
|
if not all(isinstance(value, Mapping) for value in (submission, terminal_run, repository)):
|
|
3474
3522
|
return []
|
|
3523
|
+
submission_id = submission.get("id")
|
|
3475
3524
|
revision = repository.get("revision")
|
|
3476
3525
|
outcome = terminal_run.get("outcome")
|
|
3477
3526
|
if (
|
|
3478
3527
|
submission.get("project_id") != project_id
|
|
3528
|
+
or not isinstance(submission_id, str)
|
|
3479
3529
|
or terminal_run.get("id") != run_id
|
|
3480
3530
|
or outcome not in {"COMPLETE", "BLOCKED", "FAILED"}
|
|
3481
|
-
or not isinstance(revision, str)
|
|
3482
|
-
or re.fullmatch(r"[0-9a-f]{40}", revision) is None
|
|
3483
3531
|
):
|
|
3484
3532
|
return []
|
|
3485
3533
|
observed_at = row[1]
|
|
3486
3534
|
if not isinstance(observed_at, str) or not observed_at.strip():
|
|
3487
3535
|
return []
|
|
3488
|
-
|
|
3489
|
-
|
|
3490
|
-
|
|
3491
|
-
|
|
3492
|
-
"
|
|
3493
|
-
|
|
3536
|
+
events = _central_console_checkpoint_commit_timeline(
|
|
3537
|
+
data_root, project_id, submission_id, run_id, str(outcome),
|
|
3538
|
+
)
|
|
3539
|
+
if isinstance(revision, str) and re.fullmatch(r"[0-9a-f]{40}", revision):
|
|
3540
|
+
if not any(item["commit_sha"] == revision for item in events):
|
|
3541
|
+
events.append({
|
|
3542
|
+
"phase": "TERMINAL",
|
|
3543
|
+
"observed_at": observed_at,
|
|
3544
|
+
"commit_sha": revision,
|
|
3545
|
+
"description": "terminal_repository_revision_verified",
|
|
3546
|
+
})
|
|
3547
|
+
return sorted(events, key=lambda item: item["observed_at"])
|
|
3494
3548
|
|
|
3495
3549
|
|
|
3496
3550
|
def _central_console_current_execution_diagnostic(data_root: Path, project_id: str) -> str | None:
|
|
@@ -6199,7 +6253,7 @@ class _HealthHandler(http.server.BaseHTTPRequestHandler):
|
|
|
6199
6253
|
self._send(503, {"error": "CENTRAL_UNAVAILABLE"})
|
|
6200
6254
|
return
|
|
6201
6255
|
artifact = re.fullmatch(
|
|
6202
|
-
r"/v1/projects/([^/]+)/artifacts/((?:terminal-evidence
|
|
6256
|
+
r"/v1/projects/([^/]+)/artifacts/((?:terminal-evidence(?:-reconciled)?|assurance-findings):[^/]+)",
|
|
6203
6257
|
unquote(request.path),
|
|
6204
6258
|
)
|
|
6205
6259
|
if artifact:
|
|
File without changes
|
|
File without changes
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/__init__.py
RENAMED
|
File without changes
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/__main__.py
RENAMED
|
File without changes
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/agent_state.py
RENAMED
|
File without changes
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/agent_trust.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/codex_chat.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/file_inbox.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/host_admin.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/live_status.py
RENAMED
|
File without changes
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/local_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/platform_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/producer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/providers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/resources.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/server_relay.py
RENAMED
|
File without changes
|
|
File without changes
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/status_model.py
RENAMED
|
File without changes
|
|
File without changes
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/storage.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{engineering_platform-2.3.74 → engineering_platform-2.3.76}/src/engineering_platform/telemetry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|