engineering-platform 2.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. engineering_platform/ENGINEERING_PLATFORM_CONFIG.json +32 -0
  2. engineering_platform/ENGINEERING_PLATFORM_VERSION.json +15 -0
  3. engineering_platform/__init__.py +1 -0
  4. engineering_platform/__main__.py +7 -0
  5. engineering_platform/agent_state.py +530 -0
  6. engineering_platform/agent_trust.py +174 -0
  7. engineering_platform/assets/dashboard.css +1317 -0
  8. engineering_platform/assets/dashboard.js +8534 -0
  9. engineering_platform/assets/dashboard_locales.mjs +4049 -0
  10. engineering_platform/assets/dashboard_status_store.mjs +41 -0
  11. engineering_platform/assets/operations-console/apple-touch-icon-dark.png +0 -0
  12. engineering_platform/assets/operations-console/apple-touch-icon-light.png +0 -0
  13. engineering_platform/assets/operations-console/icon-dark.png +0 -0
  14. engineering_platform/assets/operations-console/icon-light.png +0 -0
  15. engineering_platform/assets/operations-console/icon-transparent.png +0 -0
  16. engineering_platform/assets/operations-console/manifest.webmanifest +11 -0
  17. engineering_platform/capability_preflight.py +285 -0
  18. engineering_platform/capability_review.py +261 -0
  19. engineering_platform/central_data_transfer.py +195 -0
  20. engineering_platform/central_database.py +245 -0
  21. engineering_platform/central_store_migration.py +1672 -0
  22. engineering_platform/codex_capacity.py +81 -0
  23. engineering_platform/codex_chat.py +226 -0
  24. engineering_platform/codex_observability.py +153 -0
  25. engineering_platform/component_lock.py +40 -0
  26. engineering_platform/component_logging.py +420 -0
  27. engineering_platform/console_presentation.py +14 -0
  28. engineering_platform/console_route_ownership.py +83 -0
  29. engineering_platform/contracts/__init__.py +38 -0
  30. engineering_platform/contracts/ep_consumer.py +391 -0
  31. engineering_platform/contracts/models.py +105 -0
  32. engineering_platform/contracts/projection.py +401 -0
  33. engineering_platform/dashboard_browser_validation.py +206 -0
  34. engineering_platform/dashboard_state.py +630 -0
  35. engineering_platform/dashboard_supervisor.swift +105 -0
  36. engineering_platform/dashboard_translation.py +129 -0
  37. engineering_platform/dependabot_producer.py +349 -0
  38. engineering_platform/drift_diagnostics.py +144 -0
  39. engineering_platform/emergency_recovery.py +268 -0
  40. engineering_platform/engineering_memory.py +139 -0
  41. engineering_platform/ep_consumer_credentials.py +473 -0
  42. engineering_platform/evidence_projection.py +213 -0
  43. engineering_platform/execution_activity.py +218 -0
  44. engineering_platform/execution_context.py +132 -0
  45. engineering_platform/execution_errors.py +42 -0
  46. engineering_platform/execution_evidence.py +24 -0
  47. engineering_platform/execution_executor.py +730 -0
  48. engineering_platform/execution_finalization.py +44 -0
  49. engineering_platform/execution_host.py +3306 -0
  50. engineering_platform/execution_lease.py +365 -0
  51. engineering_platform/execution_lifecycle.py +447 -0
  52. engineering_platform/execution_models.py +43 -0
  53. engineering_platform/execution_readiness.py +166 -0
  54. engineering_platform/execution_reporting.py +1607 -0
  55. engineering_platform/execution_repository.py +253 -0
  56. engineering_platform/execution_timeout_policy.py +56 -0
  57. engineering_platform/execution_timing.py +440 -0
  58. engineering_platform/execution_transaction.py +28 -0
  59. engineering_platform/external_producer_binding.py +235 -0
  60. engineering_platform/file_inbox.py +249 -0
  61. engineering_platform/forensic_attribution.py +338 -0
  62. engineering_platform/forensic_attribution_v2.py +134 -0
  63. engineering_platform/forensic_delta.py +299 -0
  64. engineering_platform/golden_scenario.py +63 -0
  65. engineering_platform/historical_dashboard_configuration.py +171 -0
  66. engineering_platform/host_admin.py +199 -0
  67. engineering_platform/host_preflight.py +231 -0
  68. engineering_platform/installation_relocation.py +122 -0
  69. engineering_platform/investigation_ledger.py +89 -0
  70. engineering_platform/legacy_inbox_migration.py +79 -0
  71. engineering_platform/lifecycle_worker.py +223 -0
  72. engineering_platform/live_status.py +267 -0
  73. engineering_platform/local_api.py +209 -0
  74. engineering_platform/local_api_keychain.py +51 -0
  75. engineering_platform/local_repository_binding.py +138 -0
  76. engineering_platform/managed_autonomy.py +509 -0
  77. engineering_platform/managed_codex_runtime.py +105 -0
  78. engineering_platform/parity_context.py +203 -0
  79. engineering_platform/parity_lifecycle_dispatcher.py +488 -0
  80. engineering_platform/platform_admin.py +13 -0
  81. engineering_platform/platform_api.py +428 -0
  82. engineering_platform/platform_bootstrap.py +385 -0
  83. engineering_platform/platform_components.py +65 -0
  84. engineering_platform/platform_version.py +171 -0
  85. engineering_platform/pr_check_repair.py +276 -0
  86. engineering_platform/pr_evidence_backfill.py +278 -0
  87. engineering_platform/producer.py +209 -0
  88. engineering_platform/project_agent.py +366 -0
  89. engineering_platform/project_agent_service.py +244 -0
  90. engineering_platform/project_topology.py +126 -0
  91. engineering_platform/prompt_history.py +591 -0
  92. engineering_platform/provider_context.py +136 -0
  93. engineering_platform/provider_context_benchmark.py +41 -0
  94. engineering_platform/provider_context_scope.py +90 -0
  95. engineering_platform/provider_interruption.py +168 -0
  96. engineering_platform/provider_process_identity.py +80 -0
  97. engineering_platform/provider_readiness.py +138 -0
  98. engineering_platform/provider_recovery.py +647 -0
  99. engineering_platform/provider_usage.py +497 -0
  100. engineering_platform/providers.py +471 -0
  101. engineering_platform/qualification.py +220 -0
  102. engineering_platform/recommendation_handoff.py +238 -0
  103. engineering_platform/report_analysis.py +193 -0
  104. engineering_platform/repository_attachment.py +171 -0
  105. engineering_platform/repository_handoff.py +95 -0
  106. engineering_platform/resources.py +38 -0
  107. engineering_platform/reviewer_evidence.py +70 -0
  108. engineering_platform/schemas/repository-attachment.schema.json +61 -0
  109. engineering_platform/server.py +3679 -0
  110. engineering_platform/server_console_services.py +2024 -0
  111. engineering_platform/server_relay.py +172 -0
  112. engineering_platform/server_service.py +122 -0
  113. engineering_platform/status_model.py +135 -0
  114. engineering_platform/status_reconciliation.py +34 -0
  115. engineering_platform/storage.py +2440 -0
  116. engineering_platform/submission_cli.py +77 -0
  117. engineering_platform/submission_intake.py +45 -0
  118. engineering_platform/submission_service.py +317 -0
  119. engineering_platform/telemetry.py +951 -0
  120. engineering_platform/templates/workspace-config.json +25 -0
  121. engineering_platform/validation_identity.py +50 -0
  122. engineering_platform/validation_profile.py +211 -0
  123. engineering_platform/workspace_preflight.py +263 -0
  124. engineering_platform/worktree_provenance.py +147 -0
  125. engineering_platform/worktree_tooling.py +18 -0
  126. engineering_platform-2.2.0.dist-info/METADATA +18 -0
  127. engineering_platform-2.2.0.dist-info/RECORD +130 -0
  128. engineering_platform-2.2.0.dist-info/WHEEL +5 -0
  129. engineering_platform-2.2.0.dist-info/entry_points.txt +6 -0
  130. engineering_platform-2.2.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,147 @@
1
+ """Compact, content-free worktree provenance for same-run recovery."""
2
+ from __future__ import annotations
3
+
4
+ from datetime import datetime, timezone
5
+ import hashlib
6
+ import json
7
+ from pathlib import Path
8
+ import subprocess
9
+ import tempfile
10
+ import os
11
+
12
+ from .storage import record_artifact, verify_artifact_integrity, open_storage
13
+
14
+
15
+ def _git(root: Path, *args: str) -> str | None:
16
+ try:
17
+ completed = subprocess.run(("git", *args), cwd=root, capture_output=True, text=True, timeout=5)
18
+ except (OSError, subprocess.SubprocessError):
19
+ return None
20
+ return completed.stdout if completed.returncode == 0 else None
21
+
22
+
23
+ def _snapshot(
24
+ root: Path, *, run_id: str, phase: str, transaction_baseline_sha: str | None = None,
25
+ ) -> dict[str, object] | None:
26
+ status = _git(root, "status", "--porcelain=v1", "--untracked-files=all")
27
+ branch = _git(root, "branch", "--show-current")
28
+ head = _git(root, "rev-parse", "HEAD")
29
+ git_dir = _git(root, "rev-parse", "--git-dir")
30
+ repository = _git(root, "config", "--get", "remote.origin.url")
31
+ if None in {status, branch, head, git_dir}:
32
+ return None
33
+ # Engineering's own durable receipts are operational metadata, not source
34
+ # changes owned by the provider turn. They may be untracked in isolated
35
+ # qualification repositories, so exclude them from the source snapshot.
36
+ source_status = [
37
+ line.rstrip()
38
+ for line in str(status).splitlines()
39
+ if ".engineering/" not in line
40
+ ]
41
+ normalized = "\n".join(sorted(source_status))
42
+ counts = {"modified": 0, "added": 0, "deleted": 0}
43
+ for line in normalized.splitlines():
44
+ code = line[:2]
45
+ if "D" in code:
46
+ counts["deleted"] += 1
47
+ elif "A" in code or code == "??":
48
+ counts["added"] += 1
49
+ elif code.strip():
50
+ counts["modified"] += 1
51
+ return {
52
+ "kind": "RECOVERY_WORKTREE_PROVENANCE",
53
+ "run_id": run_id,
54
+ "phase": phase,
55
+ "repository_identity": (repository or "local").strip()[:512],
56
+ "worktree_identity": str((root / str(git_dir).strip()).resolve()),
57
+ "branch": str(branch).strip(), "head_sha": str(head).strip(),
58
+ # The execution checkpoint may already have a verified baseline. A
59
+ # freshly admitted run uses its current HEAD as the equivalent
60
+ # baseline. This is identity evidence only, never a delivery diff.
61
+ "transaction_baseline_sha": transaction_baseline_sha or str(head).strip(),
62
+ "status": counts,
63
+ "status_digest": hashlib.sha256(normalized.encode("utf-8")).hexdigest(),
64
+ "captured_at": datetime.now(timezone.utc).isoformat(),
65
+ }
66
+
67
+
68
+ def _write(root: Path, artifact_id: str, payload: dict[str, object]) -> bool:
69
+ directory = root / ".engineering" / "artifacts" / "worktree-provenance"
70
+ directory.mkdir(mode=0o700, parents=True, exist_ok=True)
71
+ path = directory / f"{hashlib.sha256(artifact_id.encode()).hexdigest()}.json"
72
+ descriptor, temporary = tempfile.mkstemp(prefix=".worktree-", suffix=".tmp", dir=directory)
73
+ try:
74
+ os.fchmod(descriptor, 0o600)
75
+ with os.fdopen(descriptor, "w", encoding="utf-8") as handle:
76
+ json.dump(payload, handle, sort_keys=True, separators=(",", ":"))
77
+ handle.write("\n")
78
+ handle.flush()
79
+ os.fsync(handle.fileno())
80
+ os.replace(temporary, path)
81
+ finally:
82
+ Path(temporary).unlink(missing_ok=True)
83
+ record_artifact(root, path, artifact_id=artifact_id, artifact_type="RECOVERY_WORKTREE_PROVENANCE",
84
+ content_type="application/json", created_at=str(payload["captured_at"]), run_id=str(payload["run_id"]))
85
+ return True
86
+
87
+
88
+ def capture(
89
+ root: Path, *, run_id: str, phase: str, stage: str,
90
+ transaction_baseline_sha: str | None = None,
91
+ ) -> bool:
92
+ """Persist only the first bounded receipt for a stage."""
93
+ artifact_id = f"recovery-worktree:{run_id}:{stage}"
94
+ if _load(root, artifact_id) is not None:
95
+ return True
96
+ payload = _snapshot(
97
+ root, run_id=run_id, phase=phase,
98
+ transaction_baseline_sha=transaction_baseline_sha,
99
+ )
100
+ if payload is None:
101
+ return False
102
+ return _write(root, artifact_id, payload)
103
+
104
+
105
+ def _load(root: Path, artifact_id: str) -> dict[str, object] | None:
106
+ if not verify_artifact_integrity(root, artifact_id):
107
+ return None
108
+ connection = open_storage(root)
109
+ try:
110
+ row = connection.execute("SELECT storage_location FROM execution_artifact_records WHERE artifact_id=?", (artifact_id,)).fetchone()
111
+ finally:
112
+ connection.close()
113
+ try:
114
+ payload = json.loads((root / ".engineering" / str(row[0])).read_text(encoding="utf-8")) if row else None
115
+ except (OSError, ValueError, json.JSONDecodeError):
116
+ return None
117
+ return payload if isinstance(payload, dict) else None
118
+
119
+
120
+ def verify_recovery(
121
+ root: Path, *, run_id: str, branch: str | None,
122
+ transaction_baseline_sha: str | None = None,
123
+ ) -> bool | None:
124
+ """Return True/False when evidence exists, or None before capture exists."""
125
+ baseline = _load(root, f"recovery-worktree:{run_id}:baseline")
126
+ progress = _load(root, f"recovery-worktree:{run_id}:interrupted")
127
+ if baseline is None and progress is None:
128
+ return None
129
+ expected = progress or baseline
130
+ current = _snapshot(
131
+ root, run_id=run_id, phase=str(expected.get("phase") or ""),
132
+ transaction_baseline_sha=transaction_baseline_sha,
133
+ )
134
+ if current is None or not isinstance(expected, dict):
135
+ return False
136
+ if branch and current.get("branch") != branch:
137
+ return False
138
+ for key in ("repository_identity", "worktree_identity", "branch"):
139
+ if current.get(key) != expected.get(key):
140
+ return False
141
+ if transaction_baseline_sha and expected.get("transaction_baseline_sha") != transaction_baseline_sha:
142
+ return False
143
+ # If the interruption receipt exists, exact status equivalence is the
144
+ # minimal non-content proof that no external dirty changes were adopted.
145
+ if progress is not None:
146
+ return current.get("head_sha") == expected.get("head_sha") and current.get("status_digest") == expected.get("status_digest")
147
+ return current.get("head_sha") == expected.get("head_sha")
@@ -0,0 +1,18 @@
1
+ """Deterministic local tooling preparation for isolated worktrees."""
2
+ from __future__ import annotations
3
+
4
+ from pathlib import Path
5
+ import subprocess # nosec B404 - fixed local package bootstrap
6
+
7
+
8
+ class WorktreeToolingError(RuntimeError):
9
+ """Raised when a declared browser runtime cannot be prepared."""
10
+
11
+
12
+ def prepare(worktree: Path) -> None:
13
+ """Install the locked Playwright package when this worktree declares it."""
14
+ if not (worktree / "package-lock.json").is_file() or not (worktree / "playwright.config.mjs").is_file():
15
+ return
16
+ completed = subprocess.run(("npm", "ci"), cwd=worktree, check=False, capture_output=True, text=True)
17
+ if completed.returncode or not (worktree / "node_modules" / "@playwright" / "test").is_dir():
18
+ raise WorktreeToolingError("worktree_playwright_tooling_unavailable")
@@ -0,0 +1,18 @@
1
+ Metadata-Version: 2.4
2
+ Name: engineering-platform
3
+ Version: 2.2.0
4
+ Summary: Local-first Engineering Platform execution operations runtime
5
+ Author: Peter van Tol
6
+ License: MIT
7
+ Requires-Python: >=3.11
8
+ Description-Content-Type: text/markdown
9
+
10
+ # Engineering Platform
11
+
12
+ Engineering Platform is the local-first execution operations runtime extracted
13
+ from DJConnect with preserved source-history provenance. This Phase 3 foundation
14
+ is package/import qualified only. It does not activate services, create a
15
+ production data store, or cut over any consumer.
16
+
17
+ See `docs/provenance/PHASE_3_INCREMENT_1_EXTRACTION_RECEIPT.md` for the
18
+ source, history-export and equivalence record.
@@ -0,0 +1,130 @@
1
+ engineering_platform/ENGINEERING_PLATFORM_CONFIG.json,sha256=QfZL7O8iSX7C9I0K76AVcVu10jKmDlJ4gH4LEeogyBY,948
2
+ engineering_platform/ENGINEERING_PLATFORM_VERSION.json,sha256=4rlaXQstz2WNylnR7tmSGWLLFA28aikjwVa0xdcjLZs,357
3
+ engineering_platform/__init__.py,sha256=nXpd4l9FAfJ_vhI_Zm_MgyAkkUhwQkZxtvQjqGXFgE8,70
4
+ engineering_platform/__main__.py,sha256=jVUDMzjHOp0ea3AMbQKIU8MydxU_o7HbJMJNJxnMZRE,170
5
+ engineering_platform/agent_state.py,sha256=_D2GBu2vZpkkCDUOP1QvQctTYHDaq7fMS7aMqAJIBK8,27484
6
+ engineering_platform/agent_trust.py,sha256=E_gup8pvWlSwt5XkQp2-RRFSNb-cSwI37PpWzn2291o,9697
7
+ engineering_platform/capability_preflight.py,sha256=Wad0xGWHpfttRZltPzQAg67b_-AaWCNOHUsL8L-WD3I,11002
8
+ engineering_platform/capability_review.py,sha256=lGbc_X9-_Hjaj8tmzUby4iV-UEEa9dU0JGSm3_V7KEc,12126
9
+ engineering_platform/central_data_transfer.py,sha256=XyJBFf0VV6rW6r--ppc0YWsB9vbcOPv-XiDbWIwNgsw,9371
10
+ engineering_platform/central_database.py,sha256=DOULIVFQLXAjO4iAHNAh9k6YKU-mL_97TdtDqrNzP8k,13720
11
+ engineering_platform/central_store_migration.py,sha256=THxrLJYQfBqtJ-UhmWYHUCUutwLSZIuOvXXUJ5JlkAU,93961
12
+ engineering_platform/codex_capacity.py,sha256=3SdXf_wRJJrnwXQbyeybw4B-K3wG7ugQmHrCx1YbPb8,3254
13
+ engineering_platform/codex_chat.py,sha256=kusMGcCGaoDCc5VyfiVyD2Cnhi50W1WWgYZZMYZXtPw,9219
14
+ engineering_platform/codex_observability.py,sha256=fxw7cnEHKP3sGwYRAbId8Q5YXMEDfBIQQxRUHmR14IA,5798
15
+ engineering_platform/component_lock.py,sha256=GkT0lizrWz-7bNDfFS_fGYhUt868XakXkwQHcI0UBXc,1337
16
+ engineering_platform/component_logging.py,sha256=AhqFBZam74koui3W5LTPWX5IGdUzE6FpTanL64UyoeQ,16764
17
+ engineering_platform/console_presentation.py,sha256=xTSrC1vLPNOmx9MBKFADmIBVJFbNK2DVZH64HaeiXwE,517
18
+ engineering_platform/console_route_ownership.py,sha256=dVeaHfyCnCGF-T29jAkiqHAF4Xc6324P4pIuXnEa5F0,6335
19
+ engineering_platform/dashboard_browser_validation.py,sha256=KK2lxBvSoXuUxanBkunVqLRJTnUt-VMshFoxED5-b6g,8551
20
+ engineering_platform/dashboard_state.py,sha256=ssF6Ognwq_MXrLZfFq9QPpGpfLubTHgTGfi_ZBW0ct8,30197
21
+ engineering_platform/dashboard_supervisor.swift,sha256=1lZhB0xN3YLQ_7DyDjcStfpqvQtqxj9MYtlvNZn0R2M,3777
22
+ engineering_platform/dashboard_translation.py,sha256=3W4lb_EjJzQDFw3H2rBglp2uMOcfcadEz7krUo7K4iI,5511
23
+ engineering_platform/dependabot_producer.py,sha256=6dhOIUhS318JLwLoFPZn4rAmSQ_8q65iCTQETu8JBEc,14997
24
+ engineering_platform/drift_diagnostics.py,sha256=Rfsafgt5CjFBqwJ_LdIBcPXECkKfZvJHHOE-iedJRo4,5921
25
+ engineering_platform/emergency_recovery.py,sha256=pmhJ-7gNhtqt_4GNAhPAOZs3bNRTHKt9AXup5IlageA,13264
26
+ engineering_platform/engineering_memory.py,sha256=SiYpip6WNP448Kvitm20DxeRWezLswxjLvU-yr1EPIw,5290
27
+ engineering_platform/ep_consumer_credentials.py,sha256=1jHuz_kZ-sU5wMnp9qREGJIqphqF549EhAl7l6n0KfU,20690
28
+ engineering_platform/evidence_projection.py,sha256=ZlZ457rn2SdH29kklJlU9oJSsKO-RCR5Ogb1uNDLzuk,9933
29
+ engineering_platform/execution_activity.py,sha256=h8R8pWTe5qbtJZ9pzMBh2vVfSB0jieLAEQ2jnfSAGW8,10002
30
+ engineering_platform/execution_context.py,sha256=lqPfZ9qM-3YwDQbi3wuszRvd2yFZCHdS-_b7V_TIxhc,6376
31
+ engineering_platform/execution_errors.py,sha256=MjXblg75yDG7SFJ5YpV8WNoUvm1ywUyzvpQ_aQkwSpc,1498
32
+ engineering_platform/execution_evidence.py,sha256=_5X76Dd_kU6anI24mTCXT_6_346Epi5BeFPWchgXts4,717
33
+ engineering_platform/execution_executor.py,sha256=K6wcU8o8C8sKODXd6uuiAvkh7-M6wqeiOOKxVFlXfDk,35626
34
+ engineering_platform/execution_finalization.py,sha256=2hSsJa8QpxTBEnM2NaeU0snwppS80IJ8YL6Iv45EdDU,1819
35
+ engineering_platform/execution_host.py,sha256=rR4O6GbHT-rqBKwFVNICFmQ6RSwLRcFgqKoeCPk-t9Q,186537
36
+ engineering_platform/execution_lease.py,sha256=I3eV7xKz-5-bLg6qPSnVNRlOOsFIDkaUey8KtK1wZdE,18004
37
+ engineering_platform/execution_lifecycle.py,sha256=TywAh7imvA_6LNuhKS2fyz2doO75W0bR6STOE_22hMY,23385
38
+ engineering_platform/execution_models.py,sha256=dOW0MC6Cndiu1BvFv1FpHo2d1dIp1EZhwE_6d4QDr68,1258
39
+ engineering_platform/execution_readiness.py,sha256=LXxf2NKlt-w68DN0I6UR4PEDgqYCfN-1Eh2fUD2h3Ec,7712
40
+ engineering_platform/execution_reporting.py,sha256=s7Jl7tj26OV-OGGieFR9EZhta3JRUR4yI2OyH4M_bsk,91023
41
+ engineering_platform/execution_repository.py,sha256=vVN12D7qfZzpEJ2aGFiFl--sA7r-iIlG4myDTDyF6hs,13158
42
+ engineering_platform/execution_timeout_policy.py,sha256=XFcAzH0Poa7JQ_CqpnWZYB5KQg2Mhsk_phZ3tQnjcjA,1786
43
+ engineering_platform/execution_timing.py,sha256=oJs6WCFsOYjoBNiOMA4MvFYozmFRqeB2qQU-_i3890E,21907
44
+ engineering_platform/execution_transaction.py,sha256=pG1gHhGT292qdH0rr9NWNOeNWaYNmNC8AL2L3H9SsTQ,812
45
+ engineering_platform/external_producer_binding.py,sha256=TNCIa8nLADb5-QQ8fOoUz1yirMbtgfWd83NoYI2pwok,9141
46
+ engineering_platform/file_inbox.py,sha256=a1ZwUTXYJqdLEaxcuaM11lONjTGZUV81PWqVENrYHEM,11632
47
+ engineering_platform/forensic_attribution.py,sha256=9eeo9OXOznJvDxmXocJ3HNIOVy8dc2uKONIA_ElgxuE,20407
48
+ engineering_platform/forensic_attribution_v2.py,sha256=nWr9kn7p147Tdi_dFqH20-Ig1OkTiRLwqTrC5UJ5VIM,6268
49
+ engineering_platform/forensic_delta.py,sha256=NuZsYt53m6tRoEySpb6J6NavoARJRJLp7iXiZbuUUOU,15047
50
+ engineering_platform/golden_scenario.py,sha256=v1xLCyzxlM-tYump3a8xdB6xHpY7sS7vZny-vJXX3To,3604
51
+ engineering_platform/historical_dashboard_configuration.py,sha256=r8xSJMSUw8G1TliNwd1zcVSZcocVYkQ7zo_9fEOwE-k,6301
52
+ engineering_platform/host_admin.py,sha256=x4ZzmPn9SJ3mTysJtoT1bxnETUY0HAEoHYc5GPsSjvQ,9637
53
+ engineering_platform/host_preflight.py,sha256=jbk5X87nNWUC08tTw_It_ZitMk6Oi8QWAzpZ-kwtD-8,10342
54
+ engineering_platform/installation_relocation.py,sha256=yslZiuV-mZ2vnW20SmteEgDI5vAIPF7EywtTIKinHZ0,5229
55
+ engineering_platform/investigation_ledger.py,sha256=A32XKvmXRsY9nzFosFPfkpuznwAejHkCYqyFO9TWBrc,3260
56
+ engineering_platform/legacy_inbox_migration.py,sha256=7gXGiP6l4nwk1wzgDvl_gqJ0EzH8EpGPeADZp8W_36E,2853
57
+ engineering_platform/lifecycle_worker.py,sha256=KmET1bG70NZkTHJnpWAq4Fgg0lpnupQ90LMl13y8yVM,9820
58
+ engineering_platform/live_status.py,sha256=NVlZeoOb0oUShl5nqaBRfUCMGmLrvYQeddYJ8RBS1kk,13702
59
+ engineering_platform/local_api.py,sha256=b062wQlxLuJa4pi2wvq_9ZOk6RoAvYRSEHeBfKDh_r0,7235
60
+ engineering_platform/local_api_keychain.py,sha256=PhYCs0Rp_SH42uH5srZDPmnzFxHVBvAboIw-JjBNLbU,2270
61
+ engineering_platform/local_repository_binding.py,sha256=M3lyVEIKah92uRhTjdBnka5A1SniWoGEniauew_wtBI,6563
62
+ engineering_platform/managed_autonomy.py,sha256=D5X_vI2gr0WFQTMMhVcNPJOV1QNkbhYNrDR0dGqam0o,22100
63
+ engineering_platform/managed_codex_runtime.py,sha256=yvGVmXi2fuk_iGBjdGwhlNQE_yFmDmF50eL44IF0dG0,4872
64
+ engineering_platform/parity_context.py,sha256=i2jhw8OoNgJBjbmgoyketGEbw1zS5QAuq2YZL7DP2eU,9239
65
+ engineering_platform/parity_lifecycle_dispatcher.py,sha256=zMMD2e-NiFZhGNUNSLqFwPCgLlWcE-SNOyD-U3_zDeo,25982
66
+ engineering_platform/platform_admin.py,sha256=ULDUoVesbHgFF-X7MlkgkDdAd_dHhJ2mlsUL08_P1Ew,425
67
+ engineering_platform/platform_api.py,sha256=abObOx0aiDnnYHgNIRYkwP03HcutezYMzW6-jFTmx8I,20290
68
+ engineering_platform/platform_bootstrap.py,sha256=y7DF8_-Zl76pWt9K8BdSdvRbuZR6iDHbUzcbsdnRIMc,17473
69
+ engineering_platform/platform_components.py,sha256=phUUbY96IvmvBKgWmp5fJafD52MS-U-J0xJnH-KrfhQ,3802
70
+ engineering_platform/platform_version.py,sha256=zxKbdmVQdTY4LipQgXVpGid-4DgdqlNWsBTJ9GNPNSw,7243
71
+ engineering_platform/pr_check_repair.py,sha256=d4zyAtODJBElcmiCfWHXQpSaf8YUZ2epqjRlVUGllYI,13002
72
+ engineering_platform/pr_evidence_backfill.py,sha256=8wJGXaSo18fB1h5836bwELh1EycZW8i2gXkmd8rAXpI,12810
73
+ engineering_platform/producer.py,sha256=g0XihF1DiDZFRC9LazDIoTq8oSwz5LMe8KGzQZy9UmU,10097
74
+ engineering_platform/project_agent.py,sha256=VoUKlWNGpKArBBI-PeTOLmkxlpT-oHzZoT2PWF7u3oE,16885
75
+ engineering_platform/project_agent_service.py,sha256=AqLsKZ3ifOFWkAvsvTuTcmxw1O8fJfMKscw8jP2beWg,11119
76
+ engineering_platform/project_topology.py,sha256=r4-l1Fdmrr4cI8rGJx8Mj2UjR1QOALI-yXs1NniKW7U,9562
77
+ engineering_platform/prompt_history.py,sha256=QSSrYsAvUuoRpjoRfoL5ewXkipApFrP7tkrM--fU2Zc,27134
78
+ engineering_platform/provider_context.py,sha256=gz233nKIZNqJfWhPGSMrIvU-udx0gfKB8jenAFyzo14,5268
79
+ engineering_platform/provider_context_benchmark.py,sha256=FnF36XDoGlBYmJ6KQFk5x0yFDG3YXMH91TXJRsq7NYQ,1457
80
+ engineering_platform/provider_context_scope.py,sha256=xP5lVJp8ZwxxKTSRxsp_9OhxHQvqxg9XWpgehj_c4W8,3791
81
+ engineering_platform/provider_interruption.py,sha256=cCsF71YyYG2Xietkq-QsdFiq_O0-04UAYQd3O17LmUA,7358
82
+ engineering_platform/provider_process_identity.py,sha256=CCyLqSXIzpyHiuP8NkodopU_ym1oAvNj5b8FICiSmpg,2904
83
+ engineering_platform/provider_readiness.py,sha256=wkzOY_VxbYygMWybefcWNAKkU8ejhRrZBMVHUegRcXQ,5444
84
+ engineering_platform/provider_recovery.py,sha256=Cg6gGMUC9w1bhhfc_xdA4Plz11BrqSEOvkUjzWj1eao,32029
85
+ engineering_platform/provider_usage.py,sha256=VOPqw92cAnI8vnqHotQXWDbzDeLaAvgyYls_YuVrkXA,21688
86
+ engineering_platform/providers.py,sha256=ZomF22lD2j9mOjm61I5Mu_ArkYX8rGrdiGnNPKE3_b8,20114
87
+ engineering_platform/qualification.py,sha256=03LAYuc38Lt3ItFR-5VN-Cr6k3yFra_tSCiQ1VNESeE,8531
88
+ engineering_platform/recommendation_handoff.py,sha256=3ooRYm-xPkSf_dBuS8qMocq472Rk_5Q1n200W3olRNE,15389
89
+ engineering_platform/report_analysis.py,sha256=vjwpxPQvdeSKkhCRlxrdfCTD6F1vn8YiwGT8dL5fPF8,8332
90
+ engineering_platform/repository_attachment.py,sha256=xsjO122bSU0ufI-J9asn6qckW3trfVYaA2ag3Z_e3EY,7713
91
+ engineering_platform/repository_handoff.py,sha256=DtKUsu4yTN_C0kXK_ORyBfEzFWu7uoK5qbAcVeEPoLo,3791
92
+ engineering_platform/resources.py,sha256=ZeENUrI4TyRV-c4w1LElqBY3bF5PmRt-ljH-2XRcsi0,1465
93
+ engineering_platform/reviewer_evidence.py,sha256=ZJLWqs_bVrxn7MZ1JD_sVI07mwOrnnmlR8jJ3ol22DI,2420
94
+ engineering_platform/server.py,sha256=ARPiCOVw_2M48DEe3l9igJ9mDBWGfxzgROd9s7Ar94I,219275
95
+ engineering_platform/server_console_services.py,sha256=6Cltswnz8Va2Rzj76VsjHkWJ_s2SBTNxDCOcvRHji1w,137127
96
+ engineering_platform/server_relay.py,sha256=85BxUAcVq0EtGv-2yNk2T5rRkfZidA0V5INOOmoWuns,7401
97
+ engineering_platform/server_service.py,sha256=qiBxKABnCuCrnE6SqGKAyGIFtoPoX2WTcThXIkul9Rg,5164
98
+ engineering_platform/status_model.py,sha256=WRnWZolzZkuCU-u5xlyTugIas1Zmir2znr80-r06GOU,5250
99
+ engineering_platform/status_reconciliation.py,sha256=_-DZjUzH_wEz2HXH-xSmi3QcGeHNVbLlt7XlZX8YtVk,1304
100
+ engineering_platform/storage.py,sha256=mu9VYoou4Ke3OkgUXO4rK4Jwsh3U409DEJpNGGUsgvU,121727
101
+ engineering_platform/submission_cli.py,sha256=TZ_H2zbRAkYzauiTY_Yj4fTn0QiFOZWsAEDkVWeXIPA,3342
102
+ engineering_platform/submission_intake.py,sha256=KddWVPynIsZuP1jUzXqfvYHXAim8JGC_ktUMS8daHXk,2198
103
+ engineering_platform/submission_service.py,sha256=_9GPoPMQYkIRMHyAZlH__hJO32ydHuQWB1JPkl8pOqs,15848
104
+ engineering_platform/telemetry.py,sha256=HoD7YnTt5RdXeiU9PEpWgjL3SNS7cDAQ6Zdl_hPiLJA,47565
105
+ engineering_platform/validation_identity.py,sha256=OU6biWUKZJLJjbMTpJxDOSwPXHuzg1fzIbmgjeVWS64,1899
106
+ engineering_platform/validation_profile.py,sha256=6mzww-eI27XHPvT6luFg2K5QnN_AGUgT4qarmBEBJrQ,10331
107
+ engineering_platform/workspace_preflight.py,sha256=9XgjuP432Zzy21GtxP6LUxbc36Zye0GN35larHMCWbE,14277
108
+ engineering_platform/worktree_provenance.py,sha256=P9h4vfTgx2Z-1_Cr9ljwy4zzy3JdAu38Olx74swdqhs,6268
109
+ engineering_platform/worktree_tooling.py,sha256=sr7i-MPJ068VHna67HiLoQxhxXb9pVqWStFy-QfS7KY,832
110
+ engineering_platform/assets/dashboard.css,sha256=Tc7qPTTTM1E2_jIjq0NEK6jbxc_CGnI5rJrVhnRz1qQ,235221
111
+ engineering_platform/assets/dashboard.js,sha256=tmsUhDmk8U2hjC-ZY7zwjjanAFVMLjwX-baqU-vKYzY,396417
112
+ engineering_platform/assets/dashboard_locales.mjs,sha256=2F4BrfqYDZtYNfR3NFWBi3FR5R3q1gOqRVQUF5tQBsQ,547623
113
+ engineering_platform/assets/dashboard_status_store.mjs,sha256=J6BBcW_UwNhCXgLkf8G7iAoFKRFyeK0GF7ZWBnwuIB8,1600
114
+ engineering_platform/assets/operations-console/apple-touch-icon-dark.png,sha256=Fz26iw9_6O8zu1vjWkYU9hBXvcGTFvzgpPqQmx2fPKI,26555
115
+ engineering_platform/assets/operations-console/apple-touch-icon-light.png,sha256=mzbimVOH1VHxTGlRf_oMWD3YxiWnnjaS7vQIwt_ijk8,11207
116
+ engineering_platform/assets/operations-console/icon-dark.png,sha256=F6uVtXdWhY2AgckjJX0uSYa9xb53dOa9KcHNsRkyWhI,903180
117
+ engineering_platform/assets/operations-console/icon-light.png,sha256=GkopKgPTSpUMpWI1l6fe3UgGtOEgeuy47x89aLmJR-U,281522
118
+ engineering_platform/assets/operations-console/icon-transparent.png,sha256=4_ev7flkf58vwWv6oyZm6IgxRc1YDNJnJWM0VaoTWHo,1131951
119
+ engineering_platform/assets/operations-console/manifest.webmanifest,sha256=3YfTHUmuBDf7Al_yJ02GKd4wnoaC8eIQ1D_RThDrPEA,405
120
+ engineering_platform/contracts/__init__.py,sha256=sXIY_qOWw6MBIo-AElptmraxCzZRUX_uKiC-pD-YMrQ,993
121
+ engineering_platform/contracts/ep_consumer.py,sha256=Gtab_4E98xC7TP2-8-gqiPDNPo6OM3vZhHaLHWos2Io,15137
122
+ engineering_platform/contracts/models.py,sha256=Dtfem_Vq-rnNp8hYWYeIxOiFah-UZCCyYXXtbIqVl90,3275
123
+ engineering_platform/contracts/projection.py,sha256=6ZcgUW7qOF04GOS6k4ja8Am6TPye35RFX1Vt5e-D2D4,28743
124
+ engineering_platform/schemas/repository-attachment.schema.json,sha256=RHj0bud74NpD-Y1nwt9f5mAzhfW-mFckrWhmjC8hsj4,2666
125
+ engineering_platform/templates/workspace-config.json,sha256=cp63wOzNeP7P7HGSTyY34EuY1v5iTQMOkxp74LTH2rE,934
126
+ engineering_platform-2.2.0.dist-info/METADATA,sha256=48PPofqlOct9lhiwNPQAPkwxXU4fW6VMT1FEFGu0ak8,662
127
+ engineering_platform-2.2.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
128
+ engineering_platform-2.2.0.dist-info/entry_points.txt,sha256=GDpiCgUcGw5pIdn0w5m9YmSleKZWWWMXFPEHC25SEm8,340
129
+ engineering_platform-2.2.0.dist-info/top_level.txt,sha256=AoSSMio094OIREhVkM2Q-fh6K9i-tKX76sQl7QzfgSw,21
130
+ engineering_platform-2.2.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,6 @@
1
+ [console_scripts]
2
+ engineering-execution-host = engineering_platform.__main__:main
3
+ engineering-platform = engineering_platform.submission_cli:main
4
+ engineering-platform-host = engineering_platform.__main__:main
5
+ engineering-platform-server = engineering_platform.server:main
6
+ engineering-project-agent = engineering_platform.project_agent:main
@@ -0,0 +1 @@
1
+ engineering_platform