From ca7f7f6b553411c0c37b2ff9a2cdbfea322cc16b Mon Sep 17 00:00:00 2001 From: Senthil Ravichandran Date: Sun, 23 Aug 2026 22:11:44 -0700 Subject: [PATCH 1/2] test(onboard): fix real-device proof identity Signed-off-by: Senthil Ravichandran --- test/helpers/openclaw-real-device-self-approval-proof.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/helpers/openclaw-real-device-self-approval-proof.ts b/test/helpers/openclaw-real-device-self-approval-proof.ts index abf35dbf64d..2e6e7122659 100644 --- a/test/helpers/openclaw-real-device-self-approval-proof.ts +++ b/test/helpers/openclaw-real-device-self-approval-proof.ts @@ -1634,7 +1634,7 @@ fs.statSync = function nemoclawProofStatSync(candidate, ...args) { requireLiveProof( portableRepairObservation.state === "pairing-pending" && portableRepairObservation.deviceIdentitySha256 === - pairingOnlyObservation.deviceIdentitySha256, + pendingUpgradeObservation.deviceIdentitySha256, "Portable repair observation did not preserve the canonical pending transition", ); const pendingBeforeOrdinaryApproval = fs.readFileSync(pendingPath, "utf8"); From 61581635f13e2f513461e6734b283332f6c7776e Mon Sep 17 00:00:00 2001 From: Senthil Ravichandran Date: Sun, 23 Aug 2026 22:48:39 -0700 Subject: [PATCH 2/2] fix(onboard): admit pending pairing observation Signed-off-by: Senthil Ravichandran --- .../openclaw-pairing-qualification.test.ts | 2 +- .../launch-readiness/openclaw-pairing-qualification.ts | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/lib/actions/sandbox/launch-readiness/openclaw-pairing-qualification.test.ts b/src/lib/actions/sandbox/launch-readiness/openclaw-pairing-qualification.test.ts index c6d6e01d0b6..b8a5d4759e7 100644 --- a/src/lib/actions/sandbox/launch-readiness/openclaw-pairing-qualification.test.ts +++ b/src/lib/actions/sandbox/launch-readiness/openclaw-pairing-qualification.test.ts @@ -414,7 +414,7 @@ describe("OpenClaw launch-readiness pairing qualification", () => { }); expect(observeOrdinarySettlement()).toEqual({ - state: "pairing-only", + state: "scope-upgrade-pending", deviceIdentitySha256: expect.stringMatching(/^[a-f0-9]{64}$/), }); expect(() => observeRepairSettlement()).toThrow( diff --git a/src/lib/actions/sandbox/launch-readiness/openclaw-pairing-qualification.ts b/src/lib/actions/sandbox/launch-readiness/openclaw-pairing-qualification.ts index 24e60f275ba..6e002647cca 100644 --- a/src/lib/actions/sandbox/launch-readiness/openclaw-pairing-qualification.ts +++ b/src/lib/actions/sandbox/launch-readiness/openclaw-pairing-qualification.ts @@ -137,7 +137,14 @@ export function parseOpenClawPairingSettlementObservation( output: string, ): OpenClawPairingSettlementObservation | null { const record = parseOpenClawPairingSettlementRecord(output); - if (!record || (record.state !== "pairing-only" && record.state !== "settled")) return null; + if ( + !record || + (record.state !== "pairing-only" && + record.state !== "scope-upgrade-pending" && + record.state !== "settled") + ) { + return null; + } return record as OpenClawPairingSettlementObservation; }