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: 00d972abea89686ba66bfaf7c2fd4516 creationTimestamp: "2026-08-26T16:24:15Z" generation: 8 labels: branch: main build: "200" context: release created-by-lighthouse: "true" event-GUID: 91fc8e66-a16a-11f1-82be-27e731bd7285 lighthouse.jenkins-x.io/baseSHA: 13a3f25e4923a2d5e0f58eb1ee49a97f46bcc182 lighthouse.jenkins-x.io/branch: main lighthouse.jenkins-x.io/buildNum: "1787761455684" lighthouse.jenkins-x.io/context: release lighthouse.jenkins-x.io/id: apitaltrade-destiny-main-release-gnhrc lighthouse.jenkins-x.io/job: release lighthouse.jenkins-x.io/lastCommitSHA: 13a3f25e4923a2d5e0f58eb1ee49a97f46bcc182 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-4kwnv-from-build-pack-pod provider: github repository: destiny tekton.dev/pipeline: apitaltrade-destiny-main-release 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.29 operation: Update time: "2026-08-26T16:27:03Z" - 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-08-26T16:30:12Z" name: greencapitaltrade-destiny-main-200 namespace: jx resourceVersion: "300032104" uid: 0a53ddd8-7042-40a0-8c3e-9001f9cbf9e8 spec: baseSHA: 13a3f25e4923a2d5e0f58eb1ee49a97f46bcc182 batchPipelineActivity: {} build: "200" buildLogsUrl: s3://logs-gct-prod-20260425045301534100000007/jenkins-x/logs/greencapitaltrade/destiny/main/200.log completedTimestamp: "2026-08-26T16:30:06Z" context: release gitBranch: main gitOwner: greencapitaltrade gitRepository: destiny gitUrl: https://github.com/greencapitaltrade/destiny.git lastCommitMessage: | feat(aa): give each organisation its own Saafe credentials Every other provider on this platform resolves per organisation — Digio's credentials live encrypted in integration_credentials and are looked up by organization_id. Saafe did not: `SAAFE_EMAIL` and `SAAFE_PASSWORD` were read once from the process environment at module load, and a single module-level token was cached for the whole process. On a platform serving several lenders that is not a configuration detail. One tenant's borrowers would be sent through another tenant's AA account, their consents raised in that account's name, and whichever organisation logged in first would hand its session to everyone after it. - `saafe` joins INTEGRATIONS, so a row can be stored for it at all - credentials resolve per organisation, falling back to the environment when a deployment has no row yet — the same shape provider/digio.js uses for its own legacy fallback, so nothing in flight breaks - the token cache is keyed by host and account rather than being one variable - the organisation is threaded from each caller: the AA step takes it from the application, the Saafe webhook from the step's application, and the internal AA routes from the caller's `x-gct-org-id` The environment is also read per call now rather than at import. Rotating the shared password used to need a pod restart before it took effect, while a per-org row applies immediately; there was no reason for the two to differ. Co-Authored-By: Claude Opus 5 (1M context) lastCommitSHA: 51348b830fb70930319eff518c09536160d592d6 message: 'Tasks Completed: 1 (Failed: 0, Cancelled 0), Skipped: 0' pipeline: greencapitaltrade/destiny/main releaseNotesURL: https://github.com/greencapitaltrade/destiny/releases/tag/v1.82.0 startedTimestamp: "2026-08-26T16:24:15Z" status: Succeeded steps: - kind: Stage stage: completedTimestamp: "2026-08-26T16:30:06Z" name: from build pack startedTimestamp: "2026-08-26T16:24:20Z" status: Succeeded steps: - completedTimestamp: "2026-08-26T16:24:35Z" name: Git Clone startedTimestamp: "2026-08-26T16:24:20Z" status: Succeeded - completedTimestamp: "2026-08-26T16:24:41Z" name: Next Version startedTimestamp: "2026-08-26T16:24:35Z" status: Succeeded - completedTimestamp: "2026-08-26T16:24:46Z" name: Jx Variables startedTimestamp: "2026-08-26T16:24:41Z" status: Succeeded - completedTimestamp: "2026-08-26T16:25:46Z" name: Build Npm Install startedTimestamp: "2026-08-26T16:24:47Z" status: Succeeded - completedTimestamp: "2026-08-26T16:26:53Z" name: Build Container Build startedTimestamp: "2026-08-26T16:25:46Z" status: Succeeded - completedTimestamp: "2026-08-26T16:27:03Z" name: Promote Changelog startedTimestamp: "2026-08-26T16:26:54Z" status: Succeeded - completedTimestamp: "2026-08-26T16:27:07Z" name: Promote Helm Release startedTimestamp: "2026-08-26T16:27:03Z" status: Succeeded - completedTimestamp: "2026-08-26T16:28:35Z" name: Promote Jx Promote startedTimestamp: "2026-08-26T16:27:07Z" status: Succeeded - completedTimestamp: "2026-08-26T16:30:06Z" name: Publish Org Kb startedTimestamp: "2026-08-26T16:28:36Z" status: Succeeded - kind: Promote promote: environment: staging pullRequest: pullRequestURL: https://github.com/greencapitaltrade/mcu/pull/5567 startedTimestamp: "2026-08-26T16:28:00Z" status: Succeeded startedTimestamp: "2026-08-26T16:28:00Z" status: Succeeded - kind: Promote promote: environment: production pullRequest: pullRequestURL: https://github.com/greencapitaltrade/mcu/pull/5568 startedTimestamp: "2026-08-26T16:28:32Z" status: Succeeded startedTimestamp: "2026-08-26T16:28:32Z" status: Succeeded version: 1.82.0 status: {}