apiVersion: jenkins.io/v1 kind: PipelineActivity metadata: annotations: lighthouse.jenkins-x.io/cloneURI: https://github.com/greencapitaltrade/destiny.git lighthouse.jenkins-x.io/job: release pipeline.jenkins-x.io/traceID: bde938a1b263627d553f2051b2b320e4 creationTimestamp: "2026-06-15T12:26:20Z" generation: 6 labels: branch: main build: "58" context: release created-by-lighthouse: "true" event-GUID: 67682fc2-68b5-11f1-8ef5-916111633b9d lighthouse.jenkins-x.io/baseSHA: 5cb3c8e48f1fbba5b9085b3cfd113e1a77f186ec lighthouse.jenkins-x.io/branch: main lighthouse.jenkins-x.io/buildNum: "1781526379922" lighthouse.jenkins-x.io/context: release lighthouse.jenkins-x.io/id: apitaltrade-destiny-main-release-59c4z lighthouse.jenkins-x.io/job: release lighthouse.jenkins-x.io/lastCommitSHA: 5cb3c8e48f1fbba5b9085b3cfd113e1a77f186ec lighthouse.jenkins-x.io/refs.org: greencapitaltrade lighthouse.jenkins-x.io/refs.repo: destiny lighthouse.jenkins-x.io/type: postsubmit owner: greencapitaltrade podName: apitaltrade-destiny-main-release-gx74x-from-build-pack-pod provider: github repository: destiny tekton.dev/pipeline: apitaltrade-destiny-main-release-gx74x managedFields: - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:branch: {} f:context: {} f:owner: {} f:provider: {} f:repository: {} f:spec: f:lastCommitMessage: {} f:lastCommitSHA: {} f:releaseNotesURL: {} f:version: {} manager: jx-changelog-0.10.18 operation: Update time: "2026-06-15T12:28:44Z" - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:spec: f:completedTimestamp: {} f:status: {} manager: jx-promote-0.6.31 operation: Update time: "2026-06-15T12:29:38Z" - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:lighthouse.jenkins-x.io/cloneURI: {} f:lighthouse.jenkins-x.io/job: {} f:labels: .: {} f:build: {} f:created-by-lighthouse: {} f:event-GUID: {} f:lighthouse.jenkins-x.io/baseSHA: {} f:lighthouse.jenkins-x.io/branch: {} f:lighthouse.jenkins-x.io/buildNum: {} f:lighthouse.jenkins-x.io/context: {} f:lighthouse.jenkins-x.io/id: {} f:lighthouse.jenkins-x.io/job: {} f:lighthouse.jenkins-x.io/lastCommitSHA: {} f:lighthouse.jenkins-x.io/refs.org: {} f:lighthouse.jenkins-x.io/refs.repo: {} f:lighthouse.jenkins-x.io/type: {} f:podName: {} f:tekton.dev/pipeline: {} f:spec: .: {} f:baseSHA: {} f:batchPipelineActivity: {} f:build: {} f:context: {} f:gitBranch: {} f:gitOwner: {} f:gitRepository: {} f:gitUrl: {} f:message: {} f:pipeline: {} f:startedTimestamp: {} f:steps: {} manager: jx-build-controller operation: Update time: "2026-06-15T12:30:20Z" name: greencapitaltrade-destiny-main-58 namespace: jx resourceVersion: "106867474" uid: 00874201-e0d4-47bf-a3f7-d35cc535dcf8 spec: baseSHA: 5cb3c8e48f1fbba5b9085b3cfd113e1a77f186ec batchPipelineActivity: {} build: "58" buildLogsUrl: s3://logs-gct-prod-20260425045301534100000007/jenkins-x/logs/greencapitaltrade/destiny/main/58.log completedTimestamp: "2026-06-15T12:29:18Z" context: release gitBranch: main gitOwner: greencapitaltrade gitRepository: destiny gitUrl: https://github.com/greencapitaltrade/destiny.git lastCommitMessage: |- feat: [#1129] Add applicationProductSet backend endpoint with transactional flow re-init in Destiny (#1167) * test: add failing e2e tests for PUT /v1/applications/:id/product Covers all acceptance criteria for applicationProductSet: happy path, product-specific flow vs global fallback, cross-org/inactive product rejection, ownership check, idempotency, progress guard (completed or non-null result), no_flow_configured, defensive org isolation check, rollback on initializeFlow failure, and concurrent call safety. Co-Authored-By: Claude Sonnet 4.6 * feat: add PUT /v1/applications/:id/product with transactional flow re-init Implements applicationProductSet backend endpoint (#1152): - Validates product exists, belongs to caller org, and is active - Validates application ownership via ApplicationUser join (mirrors application_user middleware pattern) - Acquires SELECT FOR UPDATE row lock before any read-for-decision - Idempotency: same product + existing steps → no-op, no writes - Progress guard: rejects with product_locked if any step is completed or has a non-null result - Deletes all existing steps, updates product_id, and calls engine.initializeFlow inside a single transaction; rolls back on any failure, leaving prior state intact - Defensive org-isolation: after flow resolution verifies flow.organization_id matches caller org or is null; aborts with no_flow_configured if not (engine-level fix tracked separately) - Surfaces engine no_flow_configured as 422 with code Also exports Product from models/index.js (was omitted). Co-Authored-By: Claude Sonnet 4.6 * style: fix prettier formatting in applications route and product test Co-Authored-By: Claude Sonnet 4.6 * fix: add missing products table migration The products table was defined in models/product.js but had no corresponding migration, causing all application_product tests to fail with "relation products does not exist". Co-Authored-By: Claude Sonnet 4.6 --------- Co-authored-by: Amit Kumar Co-authored-by: Claude Sonnet 4.6 lastCommitSHA: 6b140d4c5e21b17182ab2b54e09b4d6c2b1c5096 message: 'Tasks Completed: 1 (Failed: 0, Cancelled 0), Skipped: 0' pipeline: greencapitaltrade/destiny/main releaseNotesURL: https://github.com/greencapitaltrade/destiny/releases/tag/v1.59.0 startedTimestamp: "2026-06-15T12:26:20Z" status: Succeeded steps: - kind: Stage stage: completedTimestamp: "2026-06-15T12:29:18Z" name: Release startedTimestamp: "2026-06-15T12:28:18Z" status: Succeeded - kind: Promote promote: environment: staging pullRequest: pullRequestURL: https://github.com/greencapitaltrade/mcu/pull/4329 startedTimestamp: "2026-06-15T12:29:18Z" status: Succeeded startedTimestamp: "2026-06-15T12:29:18Z" status: Succeeded - kind: Stage stage: completedTimestamp: "2026-06-15T12:30:16Z" name: from build pack startedTimestamp: "2026-06-15T12:26:29Z" status: Succeeded steps: - completedTimestamp: "2026-06-15T12:26:40Z" name: Git Clone startedTimestamp: "2026-06-15T12:26:29Z" status: Succeeded - completedTimestamp: "2026-06-15T12:26:44Z" name: Next Version startedTimestamp: "2026-06-15T12:26:41Z" status: Succeeded - completedTimestamp: "2026-06-15T12:26:47Z" name: Jx Variables startedTimestamp: "2026-06-15T12:26:44Z" status: Succeeded - completedTimestamp: "2026-06-15T12:27:30Z" name: Build Npm Install startedTimestamp: "2026-06-15T12:26:47Z" status: Succeeded - completedTimestamp: "2026-06-15T12:28:27Z" name: Build Container Build startedTimestamp: "2026-06-15T12:27:30Z" status: Succeeded - completedTimestamp: "2026-06-15T12:28:44Z" name: Promote Changelog startedTimestamp: "2026-06-15T12:28:28Z" status: Succeeded - completedTimestamp: "2026-06-15T12:28:48Z" name: Promote Helm Release startedTimestamp: "2026-06-15T12:28:45Z" status: Succeeded - completedTimestamp: "2026-06-15T12:29:41Z" name: Promote Jx Promote startedTimestamp: "2026-06-15T12:28:49Z" status: Succeeded - completedTimestamp: "2026-06-15T12:30:16Z" name: Publish Org Kb startedTimestamp: "2026-06-15T12:29:41Z" status: Succeeded - kind: Stage stage: completedTimestamp: "2026-06-15T12:30:16Z" name: from build pack startedTimestamp: "2026-06-15T12:26:29Z" status: Succeeded steps: - completedTimestamp: "2026-06-15T12:26:40Z" name: Git Clone startedTimestamp: "2026-06-15T12:26:29Z" status: Succeeded - completedTimestamp: "2026-06-15T12:26:44Z" name: Next Version startedTimestamp: "2026-06-15T12:26:41Z" status: Succeeded - completedTimestamp: "2026-06-15T12:26:47Z" name: Jx Variables startedTimestamp: "2026-06-15T12:26:44Z" status: Succeeded - completedTimestamp: "2026-06-15T12:27:30Z" name: Build Npm Install startedTimestamp: "2026-06-15T12:26:47Z" status: Succeeded - completedTimestamp: "2026-06-15T12:28:27Z" name: Build Container Build startedTimestamp: "2026-06-15T12:27:30Z" status: Succeeded - completedTimestamp: "2026-06-15T12:28:44Z" name: Promote Changelog startedTimestamp: "2026-06-15T12:28:28Z" status: Succeeded - completedTimestamp: "2026-06-15T12:28:48Z" name: Promote Helm Release startedTimestamp: "2026-06-15T12:28:45Z" status: Succeeded - completedTimestamp: "2026-06-15T12:29:41Z" name: Promote Jx Promote startedTimestamp: "2026-06-15T12:28:49Z" status: Succeeded - completedTimestamp: "2026-06-15T12:30:16Z" name: Publish Org Kb startedTimestamp: "2026-06-15T12:29:41Z" status: Succeeded version: 1.59.0 status: {}