Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
e506d3f
test: add recursive install shared-home harness
ORESoftware Aug 3, 2026
93b4b39
ci: run recursive install graph contract
ORESoftware Aug 3, 2026
6646359
ci: advance recursive installer pin and preserve diagnostics
ORESoftware Aug 3, 2026
4916453
ci: validate expanded recursive installer suite
ORESoftware Aug 3, 2026
ea39e36
ci: validate formatted expanded recursive installer suite
ORESoftware Aug 3, 2026
b81d163
test: cover recursive zed add and remove installs
ORESoftware Aug 3, 2026
dbc3290
ci: validate recursive add and remove paths
ORESoftware Aug 3, 2026
4227fb2
test: stress recursive installs across four processes
ORESoftware Aug 3, 2026
26a3c61
ci: add five-worker recursive install stress contract
ORESoftware Aug 3, 2026
bb96ae4
ci: test formatted recursive installer head
ORESoftware Aug 3, 2026
21e3855
ci: pin recursive graph checks to latest installer head
ORESoftware Aug 3, 2026
ac49819
test: pin recursive graph E2E to latest zed-cli head
ORESoftware Aug 3, 2026
1093b53
test: pin recursive stress E2E to latest zed-cli head
ORESoftware Aug 3, 2026
3b3b277
test: validate unified artifact locking in recursive graph E2E
ORESoftware Aug 3, 2026
6436f17
test: validate unified artifact locking under recursive stress
ORESoftware Aug 3, 2026
77f933a
test: pin recursive graph E2E to worker-hardened core
ORESoftware Aug 3, 2026
67ed242
test: pin recursive stress E2E to worker-hardened core
ORESoftware Aug 3, 2026
569ae1b
test: repin recursive graph E2E after rustfmt fix
ORESoftware Aug 3, 2026
6048041
test: repin recursive stress E2E after rustfmt fix
ORESoftware Aug 3, 2026
b73e731
test: certify full recursive-lock stack and owner-exit recovery
ORESoftware Aug 3, 2026
c416a4a
test: repin recursive stress to full blocking-lock stack
ORESoftware Aug 3, 2026
d8fb20d
test: treat shared-schema as a real package fixture
ORESoftware Aug 3, 2026
63a83da
test: certify resolver hardening on the final recursive stack
ORESoftware Aug 3, 2026
404d4b7
test: stress the final resolver-hardening commit
ORESoftware Aug 3, 2026
54303a0
test: track shared-schema dependency and clean publish scratch output
ORESoftware Aug 3, 2026
3ab5315
test: fail closed around publish scratch cleanup
ORESoftware Aug 3, 2026
a6b989c
test: cover lifecycle dependency mapping and scratch cleanup safety
ORESoftware Aug 3, 2026
2fb7605
test: load lifecycle dataclasses through a registered module
ORESoftware Aug 3, 2026
ebff138
ci: add permanent lifecycle harness safety tests
ORESoftware Aug 3, 2026
4cf4ff3
test: repin recursive install coverage to synchronized zed-cli head
ORESoftware Aug 3, 2026
78e2272
test: repin recursive stress coverage to synchronized zed-cli head
ORESoftware Aug 3, 2026
cf1ebf8
test: add install recovery rollback and idempotency matrix
ORESoftware Aug 3, 2026
cb9bf8f
ci: run same-project install recovery and rollback matrix
ORESoftware Aug 3, 2026
b1ffa05
test: add real zed-pkg-test app and workspace install matrix
ORESoftware Aug 3, 2026
5ef45b3
ci: install real zed-pkg-test apps and workspace members
ORESoftware Aug 3, 2026
e88e430
test: stage immutable workspace-install head repin
ORESoftware Aug 3, 2026
9206d53
ci: repin all install suites to workspace implementation
ORESoftware Aug 3, 2026
54767ce
ci: trigger exact workspace install head repin
ORESoftware Aug 3, 2026
032aa01
ci: trigger immutable install repin from the E2E PR
ORESoftware Aug 3, 2026
2d67650
test: pin real org installs to workspace implementation
ORESoftware Aug 3, 2026
6c9b7aa
test: pin recursive graph certification to workspace implementation
ORESoftware Aug 3, 2026
b85d4da
test: pin recursive stress certification to workspace implementation
ORESoftware Aug 3, 2026
9dee589
test: pin recovery matrix to workspace implementation
ORESoftware Aug 3, 2026
8f8b8d5
ci: remove completed install-head repin helper
ORESoftware Aug 3, 2026
38e288b
ci: remove completed install-head repin workflow
ORESoftware Aug 3, 2026
1e283f5
test: stage frozen workspace and adapter-copy coverage
ORESoftware Aug 3, 2026
ac8b5b4
ci: publish frozen workspace install coverage
ORESoftware Aug 3, 2026
78f8def
test: harden workspace install and frozen repair coverage
github-actions[bot] Aug 3, 2026
1fdc799
ci: trigger fail-closed workspace coverage publication
ORESoftware Aug 3, 2026
32c8c37
ci: remove completed workspace coverage patch helper
ORESoftware Aug 3, 2026
6d716c1
ci: remove completed workspace coverage publishing workflow
ORESoftware Aug 3, 2026
3b7713e
test: stage workspace uninstall and adapter cleanup coverage
ORESoftware Aug 3, 2026
db12c69
ci: publish workspace uninstall and frozen-restore certification
ORESoftware Aug 3, 2026
5873d49
ci: publish workspace uninstall tests without workflow writes
ORESoftware Aug 3, 2026
26df1bd
test: certify workspace uninstall and frozen restore
github-actions[bot] Aug 3, 2026
72d80e7
test: pin recursive graph suite to workspace uninstall head
ORESoftware Aug 3, 2026
7feb1e5
test: pin recursive stress suite to workspace uninstall head
ORESoftware Aug 3, 2026
39a2d98
test: pin recovery matrix to workspace uninstall head
ORESoftware Aug 3, 2026
7fd6678
test: pin real org installs to workspace uninstall head
ORESoftware Aug 3, 2026
a65f56c
ci: remove completed workspace uninstall coverage helper
ORESoftware Aug 3, 2026
4b1143e
ci: remove completed workspace uninstall coverage workflow
ORESoftware Aug 3, 2026
8773ba1
merge(DEN-1505/DEN-1585): compose recursive certification with strict…
ORESoftware Aug 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
135 changes: 135 additions & 0 deletions .github/workflows/install-recovery.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
name: install recovery matrix

on:
pull_request:
paths:
- scripts/install_recovery_matrix.py
- .github/workflows/install-recovery.yml
push:
branches: [main]
paths:
- scripts/install_recovery_matrix.py
- .github/workflows/install-recovery.yml
workflow_dispatch:
inputs:
zed_cli_ref:
description: Immutable zed-cli commit to test
required: false
default: 8cc6745c75fd46dabf2e383cbcfc14db5ff933da

permissions:
contents: read

concurrency:
group: install-recovery-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

defaults:
run:
shell: bash

env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: "1"
ZED_CLI_REF: ${{ github.event.inputs.zed_cli_ref || '8cc6745c75fd46dabf2e383cbcfc14db5ff933da' }}
ZED_INTERFACES_REF: dc0e0a0620b9462817950b552d3d334a184b1cb1

jobs:
install-recovery:
name: Same-project races, rollback, repair, and tamper failures
runs-on: ubuntu-24.04
timeout-minutes: 45
steps:
- name: Require immutable component pins
run: |
set -euo pipefail
[[ "$ZED_CLI_REF" =~ ^[0-9a-f]{40}$ ]]
[[ "$ZED_INTERFACES_REF" =~ ^[0-9a-f]{40}$ ]]

- name: Check out e2e harness
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
path: harness
fetch-depth: 1
persist-credentials: false
show-progress: false

- name: Check out zed-cli
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: zed-pkg/zed-cli
ref: ${{ env.ZED_CLI_REF }}
path: zed-cli
fetch-depth: 1
persist-credentials: false
show-progress: false

- name: Check out pinned zed-interfaces sibling
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: zed-pkg/zed-interfaces
ref: ${{ env.ZED_INTERFACES_REF }}
path: zed-interfaces
fetch-depth: 1
persist-credentials: false
show-progress: false

- name: Install stable Rust
run: |
set -euo pipefail
rustup toolchain install stable --profile minimal --component rustfmt
rustup default stable
rustc --version --verbose
cargo --version --verbose

- name: Compile the recovery harness and check Rust formatting
run: |
set -euo pipefail
python3 -m py_compile harness/scripts/install_recovery_matrix.py
cargo fmt --all --check --manifest-path zed-cli/Cargo.toml

- name: Build immutable zed binary
run: |
set -euo pipefail
cargo build --locked --release --manifest-path zed-cli/Cargo.toml --bin zed
install -Dm755 zed-cli/target/release/zed "$RUNNER_TEMP/zed-bin/zed"
"$RUNNER_TEMP/zed-bin/zed" --version

- name: Run install recovery and rollback matrix
env:
WORK_ROOT: ${{ runner.temp }}/zed-install-recovery
run: |
set -euo pipefail
test ! -e "$WORK_ROOT"
python3 harness/scripts/install_recovery_matrix.py \
--zed "$RUNNER_TEMP/zed-bin/zed" \
--work-root "$WORK_ROOT"

- name: Collect failure diagnostics
if: failure()
env:
WORK_ROOT: ${{ runner.temp }}/zed-install-recovery
run: |
set +e
mkdir -p "$WORK_ROOT/diagnostics"
find "$WORK_ROOT" -maxdepth 11 -printf '%y %P -> %l\n' \
| LC_ALL=C sort > "$WORK_ROOT/diagnostics/work-tree.txt" 2>&1
find "$WORK_ROOT/registry" -maxdepth 10 -type f -print0 2>/dev/null \
| sort -z | xargs -0 -r sha256sum \
> "$WORK_ROOT/diagnostics/registry-sha256.txt" 2>&1
find "$WORK_ROOT" -path '*/cache/*.tar.gz' -type f -print0 2>/dev/null \
| sort -z | xargs -0 -r sha256sum \
> "$WORK_ROOT/diagnostics/cache-sha256.txt" 2>&1
find "$WORK_ROOT" -path '*/.zpkg.lock' -type f -print -exec sed -n '1,240p' {} \; \
> "$WORK_ROOT/diagnostics/lockfiles.txt" 2>&1
true

- name: Upload failure diagnostics
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: install-recovery-${{ github.run_id }}-${{ github.run_attempt }}
path: ${{ runner.temp }}/zed-install-recovery/diagnostics
if-no-files-found: warn
retention-days: 14
include-hidden-files: false
136 changes: 136 additions & 0 deletions .github/workflows/org-app-installs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
name: zed-pkg-test app installs

on:
pull_request:
paths:
- scripts/org_app_installs.py
- .github/workflows/org-app-installs.yml
push:
branches: [main]
paths:
- scripts/org_app_installs.py
- .github/workflows/org-app-installs.yml
workflow_dispatch:
inputs:
zed_cli_ref:
description: Immutable zed-cli commit to test
required: false
default: 8cc6745c75fd46dabf2e383cbcfc14db5ff933da

permissions:
contents: read

concurrency:
group: zed-pkg-test-app-installs-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

defaults:
run:
shell: bash

env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: "1"
ZED_CLI_REF: ${{ github.event.inputs.zed_cli_ref || '8cc6745c75fd46dabf2e383cbcfc14db5ff933da' }}
ZED_INTERFACES_REF: dc0e0a0620b9462817950b552d3d334a184b1cb1

jobs:
org-app-installs:
name: Real app fixtures, adapters, uninstall/restore, and workspaces
runs-on: ubuntu-24.04
timeout-minutes: 60
steps:
- name: Require immutable component pins
run: |
set -euo pipefail
[[ "$ZED_CLI_REF" =~ ^[0-9a-f]{40}$ ]]
[[ "$ZED_INTERFACES_REF" =~ ^[0-9a-f]{40}$ ]]

- name: Check out e2e harness
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
path: harness
fetch-depth: 1
persist-credentials: false
show-progress: false

- name: Check out zed-cli
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: zed-pkg/zed-cli
ref: ${{ env.ZED_CLI_REF }}
path: zed-cli
fetch-depth: 1
persist-credentials: false
show-progress: false

- name: Check out pinned zed-interfaces sibling
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: zed-pkg/zed-interfaces
ref: ${{ env.ZED_INTERFACES_REF }}
path: zed-interfaces
fetch-depth: 1
persist-credentials: false
show-progress: false

- name: Install stable Rust
run: |
set -euo pipefail
rustup toolchain install stable --profile minimal --component rustfmt
rustup default stable
rustc --version --verbose
cargo --version --verbose
git --version
python3 --version

- name: Compile the org install harness and check Rust formatting
run: |
set -euo pipefail
python3 -m py_compile harness/scripts/org_app_installs.py
cargo fmt --all --check --manifest-path zed-cli/Cargo.toml

- name: Build immutable zed binary
run: |
set -euo pipefail
cargo build --locked --release --manifest-path zed-cli/Cargo.toml --bin zed
install -Dm755 zed-cli/target/release/zed "$RUNNER_TEMP/zed-bin/zed"
"$RUNNER_TEMP/zed-bin/zed" --version

- name: Install real applications from zed-pkg-test
env:
WORK_ROOT: ${{ runner.temp }}/zed-pkg-test-app-installs
run: |
set -euo pipefail
test ! -e "$WORK_ROOT"
python3 harness/scripts/org_app_installs.py \
--zed "$RUNNER_TEMP/zed-bin/zed" \
--work-root "$WORK_ROOT"

- name: Collect failure diagnostics
if: failure()
env:
WORK_ROOT: ${{ runner.temp }}/zed-pkg-test-app-installs
run: |
set +e
mkdir -p "$WORK_ROOT/diagnostics"
find "$WORK_ROOT" -maxdepth 12 -printf '%y %P -> %l\n' \
| LC_ALL=C sort > "$WORK_ROOT/diagnostics/work-tree.txt" 2>&1
find "$WORK_ROOT/registry" -maxdepth 10 -type f -print0 2>/dev/null \
| sort -z | xargs -0 -r sha256sum \
> "$WORK_ROOT/diagnostics/registry-sha256.txt" 2>&1
find "$WORK_ROOT" -path '*/.zpkg.lock' -type f -print -exec sed -n '1,260p' {} \; \
> "$WORK_ROOT/diagnostics/lockfiles.txt" 2>&1
find "$WORK_ROOT" -path '*/.zed/*' -type f -print -exec sed -n '1,200p' {} \; \
> "$WORK_ROOT/diagnostics/adapter-files.txt" 2>&1
true

- name: Upload failure diagnostics
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: zed-pkg-test-app-installs-${{ github.run_id }}-${{ github.run_attempt }}
path: ${{ runner.temp }}/zed-pkg-test-app-installs/diagnostics
if-no-files-found: warn
retention-days: 14
include-hidden-files: false
Loading