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: e89dd6d83352871bae6c3ed251cf4287 creationTimestamp: "2026-05-12T20:47:42Z" generation: 8 labels: branch: main build: "36" context: release created-by-lighthouse: "true" event-GUID: cfead072-4e43-11f1-8467-babc9c36e428 lighthouse.jenkins-x.io/baseSHA: a696b1aeb1723c7dde04b8e673700648ef6b4043 lighthouse.jenkins-x.io/branch: main lighthouse.jenkins-x.io/buildNum: "1778618862644" lighthouse.jenkins-x.io/context: release lighthouse.jenkins-x.io/id: apitaltrade-destiny-main-release-nqh6q lighthouse.jenkins-x.io/job: release lighthouse.jenkins-x.io/lastCommitSHA: a696b1aeb1723c7dde04b8e673700648ef6b4043 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-x7gqm-from-build-pack-pod provider: github repository: destiny tekton.dev/pipeline: apitaltrade-destiny-main-release-x7gqm 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-05-12T20:50:09Z" - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:lighthouse.jenkins-x.io/cloneURI: {} f:lighthouse.jenkins-x.io/job: {} f:pipeline.jenkins-x.io/traceID: {} 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:buildLogsUrl: {} f:completedTimestamp: {} f:context: {} f:gitBranch: {} f:gitOwner: {} f:gitRepository: {} f:gitUrl: {} f:message: {} f:pipeline: {} f:startedTimestamp: {} f:status: {} f:steps: {} manager: jx-build-controller operation: Update time: "2026-05-12T20:51:14Z" name: greencapitaltrade-destiny-main-36 namespace: jx resourceVersion: "17550510" uid: 6dcf1555-a3cf-4702-a5e2-a11600928f3b spec: baseSHA: a696b1aeb1723c7dde04b8e673700648ef6b4043 batchPipelineActivity: {} build: "36" buildLogsUrl: s3://logs-gct-prod-20260425045301534100000007/jenkins-x/logs/greencapitaltrade/destiny/main/36.log completedTimestamp: "2026-05-12T20:51:09Z" context: release gitBranch: main gitOwner: greencapitaltrade gitRepository: destiny gitUrl: https://github.com/greencapitaltrade/destiny.git lastCommitMessage: | feat: generic review step + PATCH /sanction + POST /reviews Adds the review-step primitive that subsumes manual/auto sanction approve, limit assignment, and the eventual document-review use case. Engine handler `review`: - `mode: "manual"` — stays active until POST /reviews completes a slot; serial or parallel ordering; `unique_users` two-person rule; `distinct_from_steps` for cross-step actor uniqueness. - `mode: "auto"` — publishes `decision_event` to Kafka and waits for callback. - `on_complete: [{type: "publish", event: "..."}]` fires when the step closes, whether via manual approval or auto callback. Single code path. `application_flow_step_reviews` table — one row per filled reviewer slot. Unique on (step_id, slot_index) so concurrent submissions don't race on a JSON blob. Routes: - `POST /v1/:application_id/reviews/:step_id` — reviewer submits decision (gated only by Hulk-side login; no app_user scoping since reviewers don't own the application they're reviewing). - `PATCH /v1/:application_id/sanction` — allowlist field-level edits with min/max integrity check; sanction terms remain pure data, no status flags. Tests (TDD, red-green): handler (10), routes/reviews (6), routes/sanction PATCH (4). Full suite 111/111 in devcontainer. Co-Authored-By: Claude Sonnet 4.6 lastCommitSHA: 54fe429528b1d4a78afc47440416b0ff016b5258 message: 'Tasks Completed: 1 (Failed: 0, Cancelled 0), Skipped: 0' pipeline: greencapitaltrade/destiny/main releaseNotesURL: https://github.com/greencapitaltrade/destiny/releases/tag/v1.52.0 startedTimestamp: "2026-05-12T20:47:42Z" status: Succeeded steps: - kind: Stage stage: completedTimestamp: "2026-05-12T20:51:09Z" name: from build pack startedTimestamp: "2026-05-12T20:47:46Z" status: Succeeded steps: - completedTimestamp: "2026-05-12T20:47:56Z" name: Git Clone startedTimestamp: "2026-05-12T20:47:46Z" status: Succeeded - completedTimestamp: "2026-05-12T20:48:00Z" name: Next Version startedTimestamp: "2026-05-12T20:47:57Z" status: Succeeded - completedTimestamp: "2026-05-12T20:48:03Z" name: Jx Variables startedTimestamp: "2026-05-12T20:48:01Z" status: Succeeded - completedTimestamp: "2026-05-12T20:48:49Z" name: Build Npm Install startedTimestamp: "2026-05-12T20:48:04Z" status: Succeeded - completedTimestamp: "2026-05-12T20:49:52Z" name: Build Container Build startedTimestamp: "2026-05-12T20:48:49Z" status: Succeeded - completedTimestamp: "2026-05-12T20:50:09Z" name: Promote Changelog startedTimestamp: "2026-05-12T20:49:52Z" status: Succeeded - completedTimestamp: "2026-05-12T20:50:13Z" name: Promote Helm Release startedTimestamp: "2026-05-12T20:50:09Z" status: Succeeded - completedTimestamp: "2026-05-12T20:51:09Z" name: Promote Jx Promote startedTimestamp: "2026-05-12T20:50:13Z" status: Succeeded - kind: Promote promote: environment: staging pullRequest: pullRequestURL: https://github.com/greencapitaltrade/mcu/pull/3812 startedTimestamp: "2026-05-12T20:50:45Z" status: Succeeded startedTimestamp: "2026-05-12T20:50:45Z" status: Succeeded - kind: Promote promote: environment: production pullRequest: pullRequestURL: https://github.com/greencapitaltrade/mcu/pull/3813 startedTimestamp: "2026-05-12T20:51:06Z" status: Succeeded startedTimestamp: "2026-05-12T20:51:06Z" status: Succeeded version: 1.52.0 status: {}