Standardize durable platform jobs and make app publishing async - #533
Open
jackmusick wants to merge 2 commits into
Open
Standardize durable platform jobs and make app publishing async#533jackmusick wants to merge 2 commits into
jackmusick wants to merge 2 commits into
Conversation
…orm-jobs # Conflicts: # api/tests/unit/test_mcp_thin_wrapper.py
| publish_platform_job_update, | ||
| ) | ||
|
|
||
| logger = logging.getLogger(__name__) |
| except TimeoutError: | ||
| try: | ||
| os.killpg(process.pid, signal.SIGKILL) | ||
| except ProcessLookupError: |
| timeout=HEARTBEAT_INTERVAL_SECONDS, | ||
| ) | ||
| break | ||
| except TimeoutError: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Introduces the first reusable durable platform-job kernel and migrates application publishing onto it, fixing the production failure mode where the initiating HTTP request timed out while publish continued invisibly.
202 PlatformJobAccepted, rebuilds current source before promotion, promotes only manifest-declared bundle outputs with bounded concurrency, and writes the live manifest lastbifrost apps publish <ref>with short-request polling and clear terminal errors; genericbifrost apinow explains that a timed-out request may still be processingPlatformJobPubliccontract over the existing notification WebSocket and projects progress into the existing Notification Center; the UI does not poll409instead of an inaccessible/misleading job IDCompatibility
This is intentionally a breaking REST/CLI contract change.
POST /api/applications/{id}/publishchanges from synchronous200 ApplicationPublicto asynchronous202 PlatformJobAccepted, followed byGET /api/platform-jobs/{id}.CONTRACT_VERSIONis bumped from 7 to 8 in both the server and baked CLI. That hard contract gate is the repository's current effective minimum-CLI-version mechanism; the older semvermin_cli_versionfield was retired because prerelease/build rollout ordering made it unsafe.No new container is introduced. Platform jobs run from the existing scheduler pod/container; workflow and agent executions remain on the existing worker path. Existing specialized job implementations (Solution deploy/export, reindexing, etc.) are deliberately unchanged in PR 1 and can migrate incrementally onto this kernel in follow-up PRs.
Verification
git diff --check: passedThe monolithic backend
allrun was not used as the final evidence because its session token expired during the long Solution segment while the API and scheduler remained healthy. All backend coverage was then rerun successfully in fresh-token partitions.No production deployment or production data mutation was performed.
Refs #532