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: 6c673118704ca2ba3e52e4a72a517ac2 creationTimestamp: "2026-09-06T16:18:55Z" generation: 7 labels: branch: main build: "227" context: release created-by-lighthouse: "true" event-GUID: 73362a30-aa0e-11f1-88b6-d11fb85d52e3 lighthouse.jenkins-x.io/baseSHA: bd4e52a3da4e87453d0a155884d4d5b97292bf66 lighthouse.jenkins-x.io/branch: main lighthouse.jenkins-x.io/buildNum: "1788711535327" lighthouse.jenkins-x.io/context: release lighthouse.jenkins-x.io/id: apitaltrade-bifrost-main-release-w82nr lighthouse.jenkins-x.io/job: release lighthouse.jenkins-x.io/lastCommitSHA: bd4e52a3da4e87453d0a155884d4d5b97292bf66 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-zflxf-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-06T16:24:06Z" - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:spec: f:completedTimestamp: {} f:status: {} manager: jx-promote-0.6.45 operation: Update time: "2026-09-06T16:25:41Z" - 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: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-09-06T16:26:52Z" name: greencapitaltrade-bifrost-main-227 namespace: jx resourceVersion: "328373153" uid: 3a3698a6-592b-4a64-a8b1-c547b1e184fa spec: baseSHA: bd4e52a3da4e87453d0a155884d4d5b97292bf66 batchPipelineActivity: {} build: "227" buildLogsUrl: s3://logs-gct-prod-20260425045301534100000007/jenkins-x/logs/greencapitaltrade/bifrost/main/227.log completedTimestamp: "2026-09-06T16:25:08Z" context: release gitBranch: main gitOwner: greencapitaltrade gitRepository: bifrost gitUrl: https://github.com/greencapitaltrade/bifrost.git lastCommitMessage: | feat(asset): gate IoT commands with ownership-chain authority asset.iot.command.check_reverse_permission() implemented the "reverse blocked by ownership chain" rule but was never called, and can_execute() only checked active/deprecated, an Odoo group, and rate limits -- nothing about who holds the asset. Add _check_ownership_authority(asset, user) as the single, reusable authority gate: staff (base.group_system / group_asset_admin) bypass; everyone else must hold an active asset.ownership.chain record on the asset; a restrictive command (restrict_reverse_to_chain or is_critical) additionally requires can_immobilize; and check_reverse_permission is consulted so a reverse is only allowed at the same-or-higher hierarchy_level as whoever placed the restriction. Wire it into asset.iot.command.execute() (sets executor_ownership_id on the log) and into the /commands/execute controller (uses the resolved acting user, not the raw uid) so Fury-mediated API callers get the same rule. Implements the ownership-chain authority half of bifrost#307; the real enable_swap/disable_swap opcodes land separately per bifrost#265/#306 and will call the same _check_ownership_authority() from their executor dispatch path. Co-Authored-By: Claude Fable 5.1 lastCommitSHA: 7ec779ed2eca227390de1674ae2c6fcdae57013c message: 'Tasks Completed: 1 (Failed: 0, Cancelled 0), Skipped: 0' pipeline: greencapitaltrade/bifrost/main releaseNotesURL: https://github.com/greencapitaltrade/bifrost/releases/tag/v7.3.4 startedTimestamp: "2026-09-06T16:18:55Z" status: Succeeded steps: - kind: Stage stage: completedTimestamp: "2026-09-06T16:25:08Z" name: Release startedTimestamp: "2026-09-06T16:24:08Z" status: Succeeded - kind: Promote promote: environment: staging pullRequest: pullRequestURL: https://github.com/greencapitaltrade/mcu/pull/5688 startedTimestamp: "2026-09-06T16:25:08Z" status: Succeeded startedTimestamp: "2026-09-06T16:25:08Z" status: Succeeded - kind: Stage stage: completedTimestamp: "2026-09-06T16:26:45Z" name: from build pack startedTimestamp: "2026-09-06T16:19:00Z" status: Succeeded steps: - completedTimestamp: "2026-09-06T16:19:20Z" name: Git Clone startedTimestamp: "2026-09-06T16:19:00Z" status: Succeeded - completedTimestamp: "2026-09-06T16:19:27Z" name: Next Version startedTimestamp: "2026-09-06T16:19:21Z" status: Succeeded - completedTimestamp: "2026-09-06T16:19:32Z" name: Jx Variables startedTimestamp: "2026-09-06T16:19:28Z" status: Succeeded - completedTimestamp: "2026-09-06T16:19:35Z" name: Setup Pip Cache startedTimestamp: "2026-09-06T16:19:32Z" status: Succeeded - completedTimestamp: "2026-09-06T16:19:36Z" name: Process Config Templates startedTimestamp: "2026-09-06T16:19:35Z" status: Succeeded - completedTimestamp: "2026-09-06T16:19:37Z" name: Update Asset Management Version startedTimestamp: "2026-09-06T16:19:37Z" status: Succeeded - completedTimestamp: "2026-09-06T16:19:39Z" name: Check Registry startedTimestamp: "2026-09-06T16:19:37Z" status: Succeeded - completedTimestamp: "2026-09-06T16:23:55Z" name: Build Container Build startedTimestamp: "2026-09-06T16:19:40Z" status: Succeeded - completedTimestamp: "2026-09-06T16:24:06Z" name: Promote Changelog startedTimestamp: "2026-09-06T16:23:55Z" status: Succeeded - completedTimestamp: "2026-09-06T16:24:10Z" name: Promote Helm Release startedTimestamp: "2026-09-06T16:24:06Z" status: Succeeded - completedTimestamp: "2026-09-06T16:25:44Z" name: Promote Jx Promote startedTimestamp: "2026-09-06T16:24:11Z" status: Succeeded - completedTimestamp: "2026-09-06T16:26:45Z" name: Publish Org Kb startedTimestamp: "2026-09-06T16:25:44Z" status: Succeeded - kind: Stage stage: completedTimestamp: "2026-09-06T16:26:45Z" name: from build pack startedTimestamp: "2026-09-06T16:19:00Z" status: Succeeded steps: - completedTimestamp: "2026-09-06T16:19:20Z" name: Git Clone startedTimestamp: "2026-09-06T16:19:00Z" status: Succeeded - completedTimestamp: "2026-09-06T16:19:27Z" name: Next Version startedTimestamp: "2026-09-06T16:19:21Z" status: Succeeded - completedTimestamp: "2026-09-06T16:19:32Z" name: Jx Variables startedTimestamp: "2026-09-06T16:19:28Z" status: Succeeded - completedTimestamp: "2026-09-06T16:19:35Z" name: Setup Pip Cache startedTimestamp: "2026-09-06T16:19:32Z" status: Succeeded - completedTimestamp: "2026-09-06T16:19:36Z" name: Process Config Templates startedTimestamp: "2026-09-06T16:19:35Z" status: Succeeded - completedTimestamp: "2026-09-06T16:19:37Z" name: Update Asset Management Version startedTimestamp: "2026-09-06T16:19:37Z" status: Succeeded - completedTimestamp: "2026-09-06T16:19:39Z" name: Check Registry startedTimestamp: "2026-09-06T16:19:37Z" status: Succeeded - completedTimestamp: "2026-09-06T16:23:55Z" name: Build Container Build startedTimestamp: "2026-09-06T16:19:40Z" status: Succeeded - completedTimestamp: "2026-09-06T16:24:06Z" name: Promote Changelog startedTimestamp: "2026-09-06T16:23:55Z" status: Succeeded - completedTimestamp: "2026-09-06T16:24:10Z" name: Promote Helm Release startedTimestamp: "2026-09-06T16:24:06Z" status: Succeeded - completedTimestamp: "2026-09-06T16:25:44Z" name: Promote Jx Promote startedTimestamp: "2026-09-06T16:24:11Z" status: Succeeded - completedTimestamp: "2026-09-06T16:26:45Z" name: Publish Org Kb startedTimestamp: "2026-09-06T16:25:44Z" status: Succeeded version: 7.3.4 status: {}