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: 858b7c9938051b745d1cc39b6ab5ab03 creationTimestamp: "2026-09-10T13:39:40Z" generation: 7 labels: branch: main build: "238" context: release created-by-lighthouse: "true" event-GUID: 0e6e571e-ad1d-11f1-8efe-a6df095d4405 lighthouse.jenkins-x.io/baseSHA: ced4f4126b817594b285affbdadafc472d71d59f lighthouse.jenkins-x.io/branch: main lighthouse.jenkins-x.io/buildNum: "1789047580728" lighthouse.jenkins-x.io/context: release lighthouse.jenkins-x.io/id: apitaltrade-bifrost-main-release-ntf4v lighthouse.jenkins-x.io/job: release lighthouse.jenkins-x.io/lastCommitSHA: ced4f4126b817594b285affbdadafc472d71d59f 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-x2t66-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-10T13:45:27Z" - apiVersion: jenkins.io/v1 fieldsType: FieldsV1 fieldsV1: f:spec: f:completedTimestamp: {} f:status: {} manager: jx-promote-0.6.45 operation: Update time: "2026-09-10T13:47:01Z" - 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-10T13:48:02Z" name: greencapitaltrade-bifrost-main-238 namespace: jx resourceVersion: "338373985" uid: 9ccdf744-102b-438a-bd88-45846009aa7f spec: baseSHA: ced4f4126b817594b285affbdadafc472d71d59f batchPipelineActivity: {} build: "238" buildLogsUrl: s3://logs-gct-prod-20260425045301534100000007/jenkins-x/logs/greencapitaltrade/bifrost/main/238.log completedTimestamp: "2026-09-10T13:46:27Z" context: release gitBranch: main gitOwner: greencapitaltrade gitRepository: bifrost gitUrl: https://github.com/greencapitaltrade/bifrost.git lastCommitMessage: | fix(asset): reconcile remote_control keys from a fixed spec, not stale data_fields The derived-command-state migration (#502) seeded the new per-category command keys from `feature.data_fields`. The features XML is `noupdate="1"`, so an upgrade never rewrites that field on a row that already exists -- on any installed database it still held the OLD key list. The migration therefore deleted the three obsolete rows (command_type, command_status, execution_time) and immediately recreated them from the stale JSON: a no-op that churned ids while remote_control had already been linked to gt06. Verified directly on both staging and production, 2026-09-10: remote_control keys = ['command_status', 'command_type', 'execution_time'] the dead keys, not the derived ones -- so the API has never actually served device command status, on either environment, despite #502 having merged and shipped weeks ago. GT06 devices advertise three permanently-null phantom keys instead. Fix: the migration now carries REMOTE_CONTROL_SPECS / ENGINE_CONTROL_SPECS inline and writes them to BOTH `feature.data_fields` (the seed for fresh installs) and the `asset.iot.feature.data` rows (what the API actually reads) -- neither can be trusted as the source for the other. Also drops `engine_control.remote_start_enabled`, which no protocol ever emitted and no command could drive, yet was declared writable -- advertising a capability the platform does not have. That field was removed from production by hand during an earlier incident but never from the code or from staging, so environments had silently diverged. Tests reproduce the actual bug: `_reconcile()` run against a feature whose data_fields is deliberately stale (the state every installed database is in -- a fresh test database is not, which is why this passed review twice before being caught live), plus an end-to-end test that replays the exact snapshot found on staging/production through the public `migrate()` entry point. Tests: 1075 pass, 0 failures (full post_install suite). Co-Authored-By: Claude Sonnet 5 lastCommitSHA: eeb649d38189425bb5fcb53f24d815f81d500779 message: 'Tasks Completed: 1 (Failed: 0, Cancelled 0), Skipped: 0' pipeline: greencapitaltrade/bifrost/main releaseNotesURL: https://github.com/greencapitaltrade/bifrost/releases/tag/v7.8.2 startedTimestamp: "2026-09-10T13:39:40Z" status: Succeeded steps: - kind: Stage stage: completedTimestamp: "2026-09-10T13:46:27Z" name: Release startedTimestamp: "2026-09-10T13:45:27Z" status: Succeeded - kind: Promote promote: environment: staging pullRequest: pullRequestURL: https://github.com/greencapitaltrade/mcu/pull/5727 startedTimestamp: "2026-09-10T13:46:27Z" status: Succeeded startedTimestamp: "2026-09-10T13:46:27Z" status: Succeeded - kind: Stage stage: completedTimestamp: "2026-09-10T13:47:55Z" name: from build pack startedTimestamp: "2026-09-10T13:39:45Z" status: Succeeded steps: - completedTimestamp: "2026-09-10T13:40:11Z" name: Git Clone startedTimestamp: "2026-09-10T13:39:45Z" status: Succeeded - completedTimestamp: "2026-09-10T13:40:22Z" name: Next Version startedTimestamp: "2026-09-10T13:40:12Z" status: Succeeded - completedTimestamp: "2026-09-10T13:40:28Z" name: Jx Variables startedTimestamp: "2026-09-10T13:40:23Z" status: Succeeded - completedTimestamp: "2026-09-10T13:40:33Z" name: Setup Pip Cache startedTimestamp: "2026-09-10T13:40:28Z" status: Succeeded - completedTimestamp: "2026-09-10T13:40:33Z" name: Process Config Templates startedTimestamp: "2026-09-10T13:40:33Z" status: Succeeded - completedTimestamp: "2026-09-10T13:40:34Z" name: Update Asset Management Version startedTimestamp: "2026-09-10T13:40:34Z" status: Succeeded - completedTimestamp: "2026-09-10T13:40:37Z" name: Check Registry startedTimestamp: "2026-09-10T13:40:34Z" status: Succeeded - completedTimestamp: "2026-09-10T13:45:15Z" name: Build Container Build startedTimestamp: "2026-09-10T13:40:37Z" status: Succeeded - completedTimestamp: "2026-09-10T13:45:27Z" name: Promote Changelog startedTimestamp: "2026-09-10T13:45:16Z" status: Succeeded - completedTimestamp: "2026-09-10T13:45:32Z" name: Promote Helm Release startedTimestamp: "2026-09-10T13:45:28Z" status: Succeeded - completedTimestamp: "2026-09-10T13:47:04Z" name: Promote Jx Promote startedTimestamp: "2026-09-10T13:45:32Z" status: Succeeded - completedTimestamp: "2026-09-10T13:47:55Z" name: Publish Org Kb startedTimestamp: "2026-09-10T13:47:04Z" status: Succeeded - kind: Stage stage: completedTimestamp: "2026-09-10T13:47:55Z" name: from build pack startedTimestamp: "2026-09-10T13:39:45Z" status: Succeeded steps: - completedTimestamp: "2026-09-10T13:40:11Z" name: Git Clone startedTimestamp: "2026-09-10T13:39:45Z" status: Succeeded - completedTimestamp: "2026-09-10T13:40:22Z" name: Next Version startedTimestamp: "2026-09-10T13:40:12Z" status: Succeeded - completedTimestamp: "2026-09-10T13:40:28Z" name: Jx Variables startedTimestamp: "2026-09-10T13:40:23Z" status: Succeeded - completedTimestamp: "2026-09-10T13:40:33Z" name: Setup Pip Cache startedTimestamp: "2026-09-10T13:40:28Z" status: Succeeded - completedTimestamp: "2026-09-10T13:40:33Z" name: Process Config Templates startedTimestamp: "2026-09-10T13:40:33Z" status: Succeeded - completedTimestamp: "2026-09-10T13:40:34Z" name: Update Asset Management Version startedTimestamp: "2026-09-10T13:40:34Z" status: Succeeded - completedTimestamp: "2026-09-10T13:40:37Z" name: Check Registry startedTimestamp: "2026-09-10T13:40:34Z" status: Succeeded - completedTimestamp: "2026-09-10T13:45:15Z" name: Build Container Build startedTimestamp: "2026-09-10T13:40:37Z" status: Succeeded - completedTimestamp: "2026-09-10T13:45:27Z" name: Promote Changelog startedTimestamp: "2026-09-10T13:45:16Z" status: Succeeded - completedTimestamp: "2026-09-10T13:45:32Z" name: Promote Helm Release startedTimestamp: "2026-09-10T13:45:28Z" status: Succeeded - completedTimestamp: "2026-09-10T13:47:04Z" name: Promote Jx Promote startedTimestamp: "2026-09-10T13:45:32Z" status: Succeeded - completedTimestamp: "2026-09-10T13:47:55Z" name: Publish Org Kb startedTimestamp: "2026-09-10T13:47:04Z" status: Succeeded version: 7.8.2 status: {}