apiVersion: jenkins.io/v1 kind: PipelineActivity metadata: annotations: lighthouse.jenkins-x.io/cloneURI: https://github.com/greencapitaltrade/bifrost.git lighthouse.jenkins-x.io/job: release pipeline.jenkins-x.io/traceID: a085a3e9d57a3eb6c3b218f20e0942fa creationTimestamp: "2026-09-05T12:12:33Z" generation: 8 labels: branch: main build: "217" context: release created-by-lighthouse: "true" event-GUID: 0e3f6ccc-a923-11f1-8517-03560e46c60b lighthouse.jenkins-x.io/baseSHA: 50a4d010d760236ce8a0ddee41ba3f0816978590 lighthouse.jenkins-x.io/branch: main lighthouse.jenkins-x.io/buildNum: "1788610352847" lighthouse.jenkins-x.io/context: release lighthouse.jenkins-x.io/id: apitaltrade-bifrost-main-release-g2jb5 lighthouse.jenkins-x.io/job: release lighthouse.jenkins-x.io/lastCommitSHA: 50a4d010d760236ce8a0ddee41ba3f0816978590 lighthouse.jenkins-x.io/refs.org: greencapitaltrade lighthouse.jenkins-x.io/refs.repo: bifrost lighthouse.jenkins-x.io/type: postsubmit owner: greencapitaltrade podName: apitaltrade-bifrost-main-release-zfdp8-from-build-pack-pod provider: github repository: bifrost tekton.dev/pipeline: apitaltrade-bifrost-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-09-05T12:21:08Z" - 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-09-05T12:24:55Z" name: greencapitaltrade-bifrost-main-217 namespace: jx resourceVersion: "325353889" uid: a49767cb-ced8-4896-80e3-96cbfd084056 spec: baseSHA: 50a4d010d760236ce8a0ddee41ba3f0816978590 batchPipelineActivity: {} build: "217" buildLogsUrl: s3://logs-gct-prod-20260425045301534100000007/jenkins-x/logs/greencapitaltrade/bifrost/main/217.log completedTimestamp: "2026-09-05T12:24:49Z" context: release gitBranch: main gitOwner: greencapitaltrade gitRepository: bifrost gitUrl: https://github.com/greencapitaltrade/bifrost.git lastCommitMessage: | feat(asset): give each operator an Odoo user to be acted as Fury runs every asset request as the operator -- `getSecureUserContext` reads `x-gct-external-id` and Bifrost builds `env(user=uid)` -- which is what lets Odoo's record rules do the authorising rather than Fury. `asset_rider_asset_rule` scopes an operator to `[('operator_id', '=', user.partner_id.id)]`. Without a user there is no uid, and every asset resolver answers 401 with "User may not be linked to Bifrost". That is the current state for all SPARQ operators. Internal users, not portal: `group_asset_rider` implies `base.group_user`. That costs nothing here -- this is Odoo Community and no Enterprise module is installed (all of them read `uninstallable` in production). The count is one per active operator, ~25 today, not one per signup: the 832 Thor rows are two years of cumulative phone signups, of which 20 logged in last month. Login is the partner ref -- the Thor user id -- so it is stable, unique, and already the identity every other system keys on. No password is set: these exist to be acted as, not to log into Odoo directly. The resulting uid is recorded in `summary.uid_by_ref`. That is precisely the value `thor_users.external_id` needs and currently lacks for all 829 SPARQ users, and it is the last hop before the SPARQ app can read the asset APIs. Writing it back needs a Thor endpoint, which does not exist yet. Idempotent like the rest of the script: a partner that already has a user keeps it, and the existing uid is reported rather than a second user created. Co-Authored-By: Claude Opus 5 lastCommitSHA: 294361d8f983d07f434a852e836fb8f92228850b message: 'Tasks Completed: 1 (Failed: 0, Cancelled 0), Skipped: 0' pipeline: greencapitaltrade/bifrost/main releaseNotesURL: https://github.com/greencapitaltrade/bifrost/releases/tag/v7.0.1 startedTimestamp: "2026-09-05T12:12:33Z" status: Succeeded steps: - kind: Stage stage: completedTimestamp: "2026-09-05T12:24:49Z" name: from build pack startedTimestamp: "2026-09-05T12:12:40Z" status: Succeeded steps: - completedTimestamp: "2026-09-05T12:13:16Z" name: Git Clone startedTimestamp: "2026-09-05T12:12:40Z" status: Succeeded - completedTimestamp: "2026-09-05T12:13:27Z" name: Next Version startedTimestamp: "2026-09-05T12:13:17Z" status: Succeeded - completedTimestamp: "2026-09-05T12:13:35Z" name: Jx Variables startedTimestamp: "2026-09-05T12:13:28Z" status: Succeeded - completedTimestamp: "2026-09-05T12:13:42Z" name: Setup Pip Cache startedTimestamp: "2026-09-05T12:13:35Z" status: Succeeded - completedTimestamp: "2026-09-05T12:13:43Z" name: Process Config Templates startedTimestamp: "2026-09-05T12:13:42Z" status: Succeeded - completedTimestamp: "2026-09-05T12:13:44Z" name: Update Asset Management Version startedTimestamp: "2026-09-05T12:13:44Z" status: Succeeded - completedTimestamp: "2026-09-05T12:13:47Z" name: Check Registry startedTimestamp: "2026-09-05T12:13:44Z" status: Succeeded - completedTimestamp: "2026-09-05T12:20:55Z" name: Build Container Build startedTimestamp: "2026-09-05T12:13:47Z" status: Succeeded - completedTimestamp: "2026-09-05T12:21:08Z" name: Promote Changelog startedTimestamp: "2026-09-05T12:20:55Z" status: Succeeded - completedTimestamp: "2026-09-05T12:21:13Z" name: Promote Helm Release startedTimestamp: "2026-09-05T12:21:08Z" status: Succeeded - completedTimestamp: "2026-09-05T12:23:30Z" name: Promote Jx Promote startedTimestamp: "2026-09-05T12:21:13Z" status: Succeeded - completedTimestamp: "2026-09-05T12:24:49Z" name: Publish Org Kb startedTimestamp: "2026-09-05T12:23:30Z" status: Succeeded - kind: Promote promote: environment: staging pullRequest: pullRequestURL: https://github.com/greencapitaltrade/mcu/pull/5664 startedTimestamp: "2026-09-05T12:22:37Z" status: Succeeded startedTimestamp: "2026-09-05T12:22:37Z" status: Succeeded - kind: Promote promote: environment: production pullRequest: pullRequestURL: https://github.com/greencapitaltrade/mcu/pull/5665 startedTimestamp: "2026-09-05T12:23:27Z" status: Succeeded startedTimestamp: "2026-09-05T12:23:27Z" status: Succeeded version: 7.0.1 status: {}