Skip to content

Commit b345b6d

Browse files
authored
Merge branch 'main' into codex/ci-failure-locations-20261013
2 parents 2b66607 + 9fc2fc0 commit b345b6d

59 files changed

Lines changed: 4595 additions & 309 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/desktop-release-artifacts.yml‎

Lines changed: 106 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@ on:
1717
description: "Existing GitHub Release tag to attach desktop artifacts to"
1818
required: false
1919
type: string
20+
publication_probe:
21+
description: "Read-only builder publication preflight; never attaches Release assets"
22+
required: false
23+
type: boolean
24+
default: false
2025

2126
permissions:
2227
contents: read
@@ -79,6 +84,22 @@ jobs:
7984
apps/desktop/loopx-control-plane/package-lock.json
8085
apps/presentation/dashboard/package-lock.json
8186
87+
- name: Check out immutable preflight tooling
88+
if: github.event_name == 'workflow_dispatch' && inputs.publication_probe == true
89+
uses: actions/checkout@v7
90+
with:
91+
ref: ${{ github.workflow_sha }}
92+
path: .release-tooling
93+
persist-credentials: false
94+
95+
- name: Capture read-only release source
96+
if: github.event_name == 'workflow_dispatch' && inputs.publication_probe == true
97+
timeout-minutes: 2
98+
env:
99+
PUBLICATION_PROBE: "true"
100+
RELEASE_TAG: ${{ steps.identity.outputs.release-tag }}
101+
run: node .release-tooling/scripts/ci/desktop_release_preflight.ts capture
102+
82103
- name: Set up Rust
83104
uses: dtolnay/rust-toolchain@stable
84105

@@ -168,11 +189,47 @@ jobs:
168189
Copy-Item apps/desktop/loopx-control-plane/src-tauri/target/release/bundle/nsis/*.exe dist/desktop/
169190
170191
- name: Attest desktop artifacts
192+
id: binary-attestation
171193
if: github.event_name != 'pull_request'
172194
uses: actions/attest@v4
173195
with:
174196
subject-path: ${{ matrix.artifact-path }}
175197

198+
- name: Record preflight source subjects
199+
if: github.event_name == 'workflow_dispatch' && inputs.publication_probe == true
200+
timeout-minutes: 2
201+
env:
202+
PUBLICATION_PROBE: "true"
203+
RELEASE_TAG: ${{ steps.identity.outputs.release-tag }}
204+
run: node .release-tooling/scripts/ci/desktop_release_preflight.ts record
205+
206+
- name: Attest preflight source record
207+
if: github.event_name == 'workflow_dispatch' && inputs.publication_probe == true
208+
id: source-attestation
209+
timeout-minutes: 2
210+
uses: actions/attest@v4
211+
with:
212+
subject-path: .desktop-preflight/source/source.json
213+
214+
- name: Preserve preflight attestation bundles
215+
if: github.event_name == 'workflow_dispatch' && inputs.publication_probe == true
216+
env:
217+
PUBLICATION_PROBE: "true"
218+
RELEASE_TAG: ${{ steps.identity.outputs.release-tag }}
219+
SOURCE_BUNDLE: ${{ steps.source-attestation.outputs.bundle-path }}
220+
BINARY_BUNDLE: ${{ steps.binary-attestation.outputs.bundle-path }}
221+
run: node .release-tooling/scripts/ci/desktop_release_preflight.ts bundles
222+
223+
- name: Upload isolated preflight source
224+
if: github.event_name == 'workflow_dispatch' && inputs.publication_probe == true
225+
uses: actions/upload-artifact@v7
226+
with:
227+
name: desktop-source-${{ runner.os == 'macOS' && 'macos' || 'windows' }}-${{ github.run_attempt }}
228+
path: .desktop-preflight/source
229+
include-hidden-files: true
230+
if-no-files-found: error
231+
retention-days: 30
232+
176233
- name: Upload desktop artifact
177234
uses: actions/upload-artifact@v7
178235
with:
@@ -181,8 +238,56 @@ jobs:
181238
if-no-files-found: error
182239
retention-days: 30
183240

241+
- name: Check peer success and publication budget
242+
if: github.event_name == 'workflow_dispatch' && inputs.publication_probe == true && runner.os == 'Windows'
243+
id: preflight
244+
timeout-minutes: 2
245+
env:
246+
PUBLICATION_PROBE: "true"
247+
RELEASE_TAG: ${{ steps.identity.outputs.release-tag }}
248+
run: node .release-tooling/scripts/ci/desktop_release_preflight.ts admit
249+
250+
- name: Download same-run Mac desktop artifact
251+
id: mac-desktop
252+
if: github.event_name == 'workflow_dispatch' && inputs.publication_probe == true && runner.os == 'Windows' && steps.preflight.outputs.eligible == 'true'
253+
timeout-minutes: 2
254+
uses: actions/download-artifact@v7
255+
with:
256+
name: loopx-macos-${{ steps.identity.outputs.release-tag }}
257+
path: dist/desktop
258+
259+
- name: Download same-run Mac source proof
260+
id: mac-source
261+
if: github.event_name == 'workflow_dispatch' && inputs.publication_probe == true && runner.os == 'Windows' && steps.preflight.outputs.eligible == 'true'
262+
timeout-minutes: 2
263+
uses: actions/download-artifact@v7
264+
with:
265+
name: ${{ steps.preflight.outputs.mac-source }}
266+
path: .desktop-preflight/mac-source
267+
268+
- name: Verify read-only publication preflight
269+
if: always() && github.event_name == 'workflow_dispatch' && inputs.publication_probe == true && runner.os == 'Windows' && steps.preflight.outputs.eligible == 'true'
270+
timeout-minutes: 5
271+
env:
272+
PUBLICATION_PROBE: "true"
273+
RELEASE_TAG: ${{ steps.identity.outputs.release-tag }}
274+
GH_TOKEN: ${{ github.token }}
275+
PEER_ARTIFACT_DOWNLOAD: ${{ steps.mac-desktop.outcome }}
276+
PEER_SOURCE_DOWNLOAD: ${{ steps.mac-source.outcome }}
277+
run: node .release-tooling/scripts/ci/desktop_release_preflight.ts verify
278+
279+
- name: Preserve read-only preflight result
280+
if: always() && github.event_name == 'workflow_dispatch' && inputs.publication_probe == true && runner.os == 'Windows'
281+
uses: actions/upload-artifact@v7
282+
with:
283+
name: desktop-publication-preflight-${{ github.run_attempt }}
284+
path: .desktop-preflight/report.json
285+
include-hidden-files: true
286+
if-no-files-found: error
287+
retention-days: 30
288+
184289
upload-release:
185-
if: github.event_name != 'pull_request'
290+
if: github.event_name != 'pull_request' && !(github.event_name == 'workflow_dispatch' && inputs.publication_probe == true)
186291
needs: build
187292
runs-on: ubuntu-latest
188293
timeout-minutes: 10

‎docs/architecture/rfcs/STATUS.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ appendix may keep dated history, but no dated log heading may precede it.
6161
| [RFC: Provider-Neutral Post-Writeback Capability Hooks v0](provider-neutral-post-writeback-capability-hooks-v0.md) | Accepted | none | — |
6262
| [RFC: Provider-Neutral Turn-Start Inbox Hook v0](provider-neutral-turn-start-inbox-hook-v0.md) | Accepted | none | — |
6363
| [RFC: Research Exploration Control Plane v0](research-exploration-control-plane-v0.md) | Accepted | none | — |
64-
| [RFC: Semantic Vocabulary Convergence and Commit-Time Drift Checks (v0)](semantic-vocabulary-convergence-v0.md) | Accepted | none | [6 entries](ledger/semantic-vocabulary-convergence-v0/) |
64+
| [RFC: Semantic Vocabulary Convergence and Commit-Time Drift Checks (v0)](semantic-vocabulary-convergence-v0.md) | Accepted | none | [7 entries](ledger/semantic-vocabulary-convergence-v0/) |
6565
| [RFC: Shared Goal Alignment and Governed Amendment Protocol (v0)](shared-goal-alignment-and-governed-amendment-v0.md) | Accepted | none | [2 entries](ledger/shared-goal-alignment-and-governed-amendment-v0/) |
6666
| [RFC: LoopX Shared Control-Plane Authority and Pluggable State Providers (v0)](shared-goal-authority-state-provider-v0.md) | Accepted | none | [24 entries](ledger/shared-goal-authority-state-provider-v0/) |
6767
| [RFC: Single-Owner Local Daemon (v0)](single-owner-local-daemon-v0.md) | Accepted | none | — |

‎docs/architecture/rfcs/STATUS.zh-CN.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
| [RFC:Provider-Neutral Post-Writeback Capability Hooks v0](provider-neutral-post-writeback-capability-hooks-v0.zh-CN.md) | 已接受 | 无 | — |
5959
| [RFC: Provider-Neutral Turn-Start Inbox Hook v0](provider-neutral-turn-start-inbox-hook-v0.md) | 已接受 | none | — |
6060
| [RFC:研究型探索控制面 v0](research-exploration-control-plane-v0.zh-CN.md) | 已接受 | 无 | — |
61-
| [RFC:语义词表收敛与提交期漂移检查(v0)](semantic-vocabulary-convergence-v0.zh-CN.md) | 已接受 | 无 | [6 条](ledger/semantic-vocabulary-convergence-v0/) |
61+
| [RFC:语义词表收敛与提交期漂移检查(v0)](semantic-vocabulary-convergence-v0.zh-CN.md) | 已接受 | 无 | [7 条](ledger/semantic-vocabulary-convergence-v0/) |
6262
| [RFC:共享 Goal 对齐与受治理 Amendment 协议(v0)](shared-goal-alignment-and-governed-amendment-v0.zh-CN.md) | 已接受 | 无 | [2 条](ledger/shared-goal-alignment-and-governed-amendment-v0/) |
6363
| [RFC:LoopX 共享控制面权威与可插拔状态 Provider(v0)](shared-goal-authority-state-provider-v0.zh-CN.md) | 已接受 | 无 | [24 条](ledger/shared-goal-authority-state-provider-v0/) |
6464
| [RFC: Single-Owner Local Daemon (v0)](single-owner-local-daemon-v0.md) | 已接受 | none | — |

‎docs/architecture/rfcs/ledger/semantic-vocabulary-convergence-v0/2026-09-20-settlement-receipt-source-boundaries.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Executed settlement and receipt source boundaries
22

3+
Current readback: [registered source treatment](2026-10-12-registered-source-treatment.md). The observations below retain their original baseline; they are not current PR status.
4+
5+
36
Measured from `36134771355f05c9bcc5657ce739bb86426383dc`, for #4447 Stage 2a.
47
The scope revision in #4789 remains a proposal. This entry changes neither RFC
58
acceptance nor the F1/F2 production domain: **7/26**, with these four entries

‎docs/architecture/rfcs/ledger/semantic-vocabulary-convergence-v0/2026-09-20-settlement-receipt-source-boundaries.zh-CN.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Settlement 与 receipt 的可执行来源边界
22

3+
当前读回见[登记来源处理](2026-10-12-registered-source-treatment.zh-CN.md)。下文保留原基线观测,不代表当前 PR 状态。
4+
5+
36
基线 `36134771355f05c9bcc5657ce739bb86426383dc`,对应 #4447 Stage 2a。
47
#4789 的范围修订仍是提案。本条不改变 RFC 验收或 F1/F2 生产域:仍为
58
**7/26**,本组四项仍在域外。来源处理与生产扫描纳入是不同结论。

‎docs/architecture/rfcs/ledger/semantic-vocabulary-convergence-v0/2026-09-20-staged-tracker-acceptance.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Staged tracker acceptance and conditional field retirement
22

3+
Current readback: [registered source treatment](2026-10-12-registered-source-treatment.md). The observations below retain their original baseline; they are not current PR status.
4+
5+
36
Status: **proposal**, not a completed migration or approval record. Baseline:
47
`36134771355f05c9bcc5657ce739bb86426383dc`. Delivery status and the ordered
58
work plan belong to [#4447](https://github.com/loopx-project/loopx/issues/4447);

‎docs/architecture/rfcs/ledger/semantic-vocabulary-convergence-v0/2026-09-20-staged-tracker-acceptance.zh-CN.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Tracker 阶段验收与有条件字段退役
22

3+
当前读回见[登记来源处理](2026-10-12-registered-source-treatment.zh-CN.md)。下文保留原基线观测,不代表当前 PR 状态。
4+
5+
36
状态:**提案**,不是迁移完成或批准记录。基线:
47
`36134771355f05c9bcc5657ce739bb86426383dc`。
58
交付状态与有序工作计划归 [#4447](https://github.com/loopx-project/loopx/issues/4447)

0 commit comments

Comments
 (0)