Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
188 commits
Select commit Hold shift + click to select a range
57c1ba6
fix(missions): emit canonical agent ids in mission presentation
schickling-assistant Nov 7, 2026
3f969ab
fix(missions): canonicalize work filters and explicit fixture assignm…
schickling-assistant Nov 7, 2026
fa63ecc
fix(missions): canonicalize legacy client actors and queue selection
schickling-assistant Nov 7, 2026
62bb716
fix(missions): complete canonical mission card and fixture cutover
schickling-assistant Nov 7, 2026
9a4bd69
fix(missions): preserve historical assignees when reparsing declarations
schickling-assistant Nov 7, 2026
99f571e
test(missions): assert stored declaration work selectors
schickling-assistant Nov 7, 2026
6961e9c
fix(missions): preserve mixed-version actor ownership and comparisons
schickling-assistant Nov 7, 2026
9726599
fix(missions): admit contextual legacy ownership during mixed-version…
schickling-assistant Nov 7, 2026
869ae32
chore(missions): retain generated SQL catalog ordering
schickling-assistant Nov 7, 2026
c5b54df
fix(missions): gate legacy ownership and unify queue actor equivalence
schickling-assistant Nov 7, 2026
76f79f2
test(missions): account for bounded actor spelling SQL inputs
schickling-assistant Nov 7, 2026
5f565e3
test(missions): use registered synthetic person identity
schickling-assistant Nov 7, 2026
2aa34aa
feat(fractal-api-core): add service read routes and central refusal gate
schickling-assistant Nov 7, 2026
c22dcf5
fix(missions): retain bare actor work read qualification
schickling-assistant Nov 7, 2026
59212ea
fix(fractal-api-core): deny service disclosure outside explicit recei…
schickling-assistant Nov 7, 2026
29335f1
fix(fractal-daemon): refuse mixed browser authority before token rede…
schickling-assistant Nov 7, 2026
98600d8
test(fractal-daemon): refuse browser sessions on service claim aliases
schickling-assistant Nov 7, 2026
7b3838a
fix(service): withhold verifier metadata and rich work text
schickling-assistant Nov 7, 2026
f595ecc
fix(service): reject hidden claim ids before body loading
schickling-assistant Nov 7, 2026
1edca03
test(service): account for request ids and resumed work leases
schickling-assistant Nov 7, 2026
bd9aca3
test(service): use valid assistant scopes and pinned gate document
schickling-assistant Nov 7, 2026
0858ced
test(service): advance agentless gate through readiness
schickling-assistant Nov 7, 2026
92670f7
Merge origin/main and retain expansion-only actor ownership writes
schickling-assistant Nov 7, 2026
b0d2ae1
fix(missions): retain initial run selector writer spelling
schickling-assistant Nov 7, 2026
e0c1c93
fix(release): classify service gate downtime and recovery
schickling-assistant Nov 7, 2026
2f5d0bd
test(missions): assert expansion-only renewal spelling
schickling-assistant Nov 7, 2026
f1ba8ce
fix(service): restrict selected claim pages to disclosed kinds
schickling-assistant Nov 8, 2026
541ffea
test(missions): compare carried renewal anchor with main writer rule
schickling-assistant Nov 8, 2026
8e23a8a
fix(service): cover read routes and require single browser authority
schickling-assistant Nov 8, 2026
861e19e
fix(service): make selector field admission exhaustive
schickling-assistant Nov 8, 2026
9d294af
test(service): use registered selected claim fixtures
schickling-assistant Nov 8, 2026
0c70272
fix(service): match canonical claim selectors literally
schickling-assistant Nov 8, 2026
1c5a6c0
fix(missions): remove redundant work actor borrow
schickling-assistant Nov 8, 2026
e3a0773
test(service): require successful seeded cost probes
schickling-assistant Nov 8, 2026
717c0ec
test(service): register SQLite fixture value sites
schickling-assistant Nov 8, 2026
9a070d0
fix(missions): retain literal lease ownership for renewal writes
schickling-assistant Nov 8, 2026
9dcc3ea
fix(missions): preserve literal admission for all claim mutations
schickling-assistant Nov 8, 2026
ca6b58c
fix(missions): keep alias resolution out of mutation admission
schickling-assistant Nov 8, 2026
6c0c729
fix(missions): normalize bare writers before admission validation
schickling-assistant Nov 8, 2026
07cb396
Merge remote-tracking branch 'origin/main' into schickling-assistant/…
schickling-assistant Nov 8, 2026
adcf3ce
test(missions): isolate literal lease and capacity parity fixtures
schickling-assistant Nov 8, 2026
a0c31f3
fix(missions): use literal selectors for mutation queues
schickling-assistant Nov 8, 2026
c13e630
fix(missions): keep wake queue inputs literal
schickling-assistant Nov 8, 2026
15c9fd7
test(missions): use recognized aliases in wake order regression
schickling-assistant Nov 8, 2026
b4d1672
fix(missions): avoid hiding literal row helper re-export
schickling-assistant Nov 8, 2026
87a5ebb
Merge origin/main into schickling-assistant/2026-11-07-mission-agenti…
schickling-assistant Nov 8, 2026
89e147f
test(missions): build wake ordering fixture from durable claims
schickling-assistant Nov 8, 2026
bcc7376
Merge origin/main into mission AgentId expansion
schickling-assistant Nov 8, 2026
7c3d8ed
fix: use managed wrappers for interactive harness launches
schickling-assistant Nov 8, 2026
05b8e2c
fix: preserve managed provider PATH and declared persona
schickling-assistant Nov 8, 2026
1a26c8a
fix: bind managed launch policy to daemon launch provenance
schickling-assistant Nov 8, 2026
abdc613
fix: derive managed launch policy from authoritative seat binding
schickling-assistant Nov 8, 2026
92dcc9b
Preserve native person bindings with authenticated launch selection
schickling-assistant Nov 8, 2026
e103f3e
Refuse managed children with mismatched fenced identity aliases
schickling-assistant Nov 8, 2026
efa83a0
Unwrap fallible managed command construction in Codex tests
schickling-assistant Nov 8, 2026
d0cb484
Exercise managed fixture profiles and preserve startup through daemon…
schickling-assistant Nov 8, 2026
f831f9d
Retry managed client construction during full replay startup
schickling-assistant Nov 8, 2026
bb132c0
Complete managed profile setup for Codex admission wait fixtures
schickling-assistant Nov 8, 2026
ef75da4
packages/fractal: Fractal.objective, and the shipped objectives rende…
schickling Nov 9, 2026
cd0e355
Objectives: one strict reader for the objective kind, and the shipped…
schickling Nov 9, 2026
b820f33
refactor(telemetry): build the daemon's targets from slo/objectives.kdl
schickling Nov 9, 2026
2305eea
docs: name slo/objectives.kdl wherever slo/targets.toml was named
schickling Nov 9, 2026
a3934b9
chore(kernel): register the shipped objectives include in the large-v…
schickling Nov 9, 2026
cd88707
kernel: box the interval indicator so Indicator stays small (clippy l…
schickling Nov 9, 2026
e172fbc
Objectives: a fleet declares an interval objective with fractal apply
schickling Nov 9, 2026
f06f938
Objectives: evaluate declared objectives and deliver their breach res…
schickling Nov 9, 2026
aaa4869
Objectives: read interval claims through Store::claims_by_kinds_after…
schickling Nov 9, 2026
feec2e3
Merge branch 'schickling/2026-11-09-2026-11-09-claims-by-kind-prefix'…
schickling Nov 9, 2026
f5ab515
Merge branch 'schickling/2026-11-09-native-objectives' into schicklin…
schickling Nov 9, 2026
c4bbaf1
ci: declare slo/objectives.kdl as a fractal-kernel test input
schickling Nov 9, 2026
5e05945
Merge branch 'schickling/2026-11-09-native-objectives' into schicklin…
schickling Nov 9, 2026
beb3242
Merge remote-tracking branch 'origin/schickling/2026-11-09-fractal-au…
schickling Nov 9, 2026
4017537
Merge remote-tracking branch 'origin/schickling/2026-11-09-fractal-au…
schickling Nov 9, 2026
b86390b
release-notes: Fractal.objective and the generated shipped objectives
schickling Nov 9, 2026
48e1e88
Merge branch 'schickling/2026-11-09-2026-11-09-claims-by-kind-prefix'…
schickling Nov 9, 2026
5929722
Merge branch 'schickling/2026-11-09-native-objectives' into schicklin…
schickling Nov 9, 2026
c600da8
Merge remote-tracking branch 'origin/schickling/2026-11-09-fractal-au…
schickling Nov 9, 2026
a7015bd
fix(runtime): resolve default terminal cwd to host home
schickling-assistant Nov 10, 2026
6c633a6
fix(terminals): scope home cwd resolution to default shells
schickling-assistant Nov 10, 2026
4fc6558
test(terminals): assert home intent through parsed declarations
schickling-assistant Nov 10, 2026
32424b5
test(terminals): inspect creation document tags directly
schickling-assistant Nov 10, 2026
2c862d2
test(terminals): use KDL value accessors
schickling-assistant Nov 10, 2026
9fdecd0
fix(terminals): retain shell home cd for mixed-runtime rollout
schickling-assistant Nov 10, 2026
dfe85aa
slo: whole-number objective literals as genie renders them
schickling Nov 10, 2026
7527a71
Merge remote-tracking branch 'origin/schickling/2026-11-09-native-obj…
schickling Nov 10, 2026
35b2107
Merge origin/main into service read gate
schickling-assistant Nov 10, 2026
9e13ccb
Merge origin/main into mission agent identity canonicalization
schickling-assistant Nov 10, 2026
999efd6
Regenerate canonical SQLite large-value inventory
schickling-assistant Nov 10, 2026
2ac842d
Register durable mailbox expiry outcome contract
schickling-assistant Nov 10, 2026
335ea7a
Merge main into interactive managed launch fix
schickling-assistant Nov 10, 2026
95dfcf3
Initialize browser pairing state in native seed driver tests
schickling-assistant Nov 10, 2026
928106d
Report a stall when a held step only renews its lease
schickling Nov 10, 2026
b230fc9
Merge origin/main preserving mission owner identity rules
schickling-assistant Nov 10, 2026
a5ae6c4
Count a held step's own progress record in the stall clock
schickling Nov 10, 2026
d8650e5
Add the release note for the stall clock change
schickling Nov 10, 2026
f73a546
fix(web): keep browser pairing status read-only
schickling-assistant Nov 10, 2026
7b25604
Merge origin/main into b2 PR 1
schickling-assistant Nov 10, 2026
4b1b3ad
Correct corpus v18 non-trimming seeds from hosted CI
schickling-assistant Nov 10, 2026
7969633
Merge origin/main into b2 PR 1
schickling-assistant Nov 10, 2026
cb77f89
test(web): preserve published Host in pairing requests
schickling-assistant Nov 10, 2026
7fc2ee3
Merge remote-tracking branch 'origin/main' into schickling-assistant/…
schickling-assistant Nov 10, 2026
bb11a99
Specify the CPU reservation ledger contract (#2964)
schickling-assistant Nov 10, 2026
ae81354
Use valid service grants when testing ready-work route refusal
schickling-assistant Nov 10, 2026
53a0a7b
Merge remote-tracking branch 'origin/main' into schickling/2026-11-10…
schickling-assistant Nov 10, 2026
37ba218
Merge origin/main
schickling-assistant Nov 10, 2026
92a9676
fix(terminals): preserve shell startup when home lookup is unavailable
schickling-assistant Nov 10, 2026
1240e5b
Merge main into pairing status fix
schickling-assistant Nov 10, 2026
304eb0b
Merge latest origin/main for hosted CI proof
schickling-assistant Nov 10, 2026
b7e037e
docs: program engine design (draft)
schickling Nov 10, 2026
8dcaf3b
docs(web): record read-only pairing status behavior
schickling-assistant Nov 10, 2026
8383867
docs: accept the program engine design and record its build plan
schickling Nov 10, 2026
fe520a9
chore(ci): advance compatibility baselines to v0.3.32
schickling-assistant Nov 10, 2026
10cb657
docs(program-engine): attempt-scoped child keys, one result key, safe…
schickling Nov 10, 2026
e43bca8
test: synchronize unchanged-through roster publication
schickling-assistant Nov 10, 2026
d04f548
ci: add burst workflow for exact-commit suite runs
schickling Nov 10, 2026
86a47d8
Parse, render and store a mission's run authority block
schickling Nov 10, 2026
20d696d
Merge pull request #6222 from compoundingtech/schickling-assistant/20…
schickling-assistant Nov 10, 2026
4f9ac11
Merge main into interactive managed launch fix
schickling-assistant Nov 10, 2026
77b91d7
Hold run authority publication until every member reads it
schickling Nov 10, 2026
b429edc
ci: post burst statuses from jobs that never check out the commit
schickling Nov 10, 2026
fc48622
Merge pull request #6252 from compoundingtech/schickling-assistant/20…
schickling-assistant Nov 10, 2026
37cc08b
Exercise managed wrapper inputs in launch subscription fault test
schickling-assistant Nov 10, 2026
1e5f817
fractal: program missions on effect/workflow (fractal/effect)
schickling Nov 10, 2026
ad9d4d7
fractal: port the landing program to fractal/effect and run its bun b…
schickling Nov 10, 2026
b1668d6
Restore same-principal service record in cross-profile admission test
schickling-assistant Nov 10, 2026
8f0d0c6
fractal: keep the input type assertion on the offending field after f…
schickling Nov 10, 2026
675987e
Expect person holders as person actors in mission presentation test
schickling-assistant Nov 10, 2026
28934dd
Merge pull request #6182 from compoundingtech/schickling/2026-11-10-t…
schickling-assistant Nov 10, 2026
5be2878
Merge origin/main and regenerate SQLite inventory
schickling-assistant Nov 10, 2026
eb9baf1
Merge remote-tracking branch 'origin/main' into schickling-assistant/…
schickling-assistant Nov 10, 2026
90ecd1e
fractal: bind step ids to one fiber, end the attempt on a refused jou…
schickling Nov 10, 2026
71c75d2
Merge remote-tracking branch 'origin/main' into schickling/2026-11-10…
schickling Nov 10, 2026
31de4e6
Compare authority refusal codes as strings
schickling Nov 10, 2026
379ca20
fix: isolate named-instance native session discovery
schickling-assistant Nov 10, 2026
e731df9
Pin that runtime-held gate steps are not held steps
schickling Nov 10, 2026
5472b4b
test: finish environment setup before session discovery workers
schickling-assistant Nov 10, 2026
3f57882
feat(ios): prepare isolated test variant and XCUITest observer
schickling-assistant Nov 10, 2026
4968429
Report every authority refusal mismatch; match the barrier message
schickling Nov 10, 2026
89dd297
fractal: read worker-turn products by their full resource subject
schickling Nov 10, 2026
4f5ffcd
Watch managed launch inputs before resolution can fail
schickling-assistant Nov 10, 2026
de1fa2c
fix(ios): preserve normal config and generate actual UI test product
schickling-assistant Nov 10, 2026
d7aa0be
Merge pull request #6253 from compoundingtech/schickling/2026-11-10-p…
schickling-assistant Nov 10, 2026
1a11513
fix: isolate native profiles without changing driver HOME
schickling-assistant Nov 10, 2026
0fc0b13
Merge pull request #6216 from compoundingtech/schickling-assistant/20…
schickling-assistant Nov 10, 2026
acb54e0
fix(ios): declare provisioning as changed manual release impact
schickling-assistant Nov 10, 2026
7aae8cd
Merge remote-tracking branch 'origin/main' into schickling-assistant/…
schickling Nov 10, 2026
b87ee11
Merge pull request #6257 from compoundingtech/schickling-assistant/20…
schickling-assistant Nov 10, 2026
8960ad6
Merge pull request #6267 from compoundingtech/schickling-assistant/20…
schickling-assistant Nov 10, 2026
67eab50
Merge remote-tracking branch 'origin/main' into schickling/2026-11-10…
schickling Nov 10, 2026
76665ee
docs: run authority in program engine §3
schickling Nov 10, 2026
9680d40
Objectives: one objective kind; shipped objectives read from slo/obje…
schickling Nov 10, 2026
19fda1d
Merge pull request #6205 from compoundingtech/schickling-assistant/20…
schickling-assistant Nov 10, 2026
0a1c7ce
Merge pull request #6270 from compoundingtech/schickling-assistant/20…
schickling-assistant Nov 10, 2026
3f4e0ff
Merge remote-tracking branch 'origin/main' into schickling/2026-11-09…
schickling Nov 10, 2026
514a94e
Merge pull request #5582 from compoundingtech/schickling-assistant/20…
schickling-assistant Nov 10, 2026
742f4b8
Merge remote-tracking branch 'origin/schickling/2026-11-10-native-obj…
schickling Nov 10, 2026
c5ca72a
Merge remote-tracking branch 'origin/main' into schickling/2026-11-09…
schickling Nov 10, 2026
714caf8
Merge remote-tracking branch 'origin/schickling/2026-11-10-native-obj…
schickling Nov 10, 2026
4e55951
Merge pull request #6266 from compoundingtech/schickling/2026-11-10-p…
schickling-assistant Nov 10, 2026
9434003
Merge pull request #5982 from compoundingtech/fix/interactive-managed…
schickling-assistant Nov 10, 2026
e416a14
Merge pull request #6271 from compoundingtech/schickling-assistant/20…
schickling-assistant Nov 10, 2026
97e5ebf
Keep .github/workflows/perf-load.ts unchanged; its slo/targets.toml c…
schickling Nov 10, 2026
4576125
Merge remote-tracking branch 'origin/schickling/2026-11-10-native-obj…
schickling Nov 10, 2026
5a48b30
Merge remote-tracking branch 'origin/schickling/2026-11-10-native-obj…
schickling Nov 10, 2026
08bbc16
store: drop an explicit deref clippy flags in the mission field barrier
schickling Nov 10, 2026
7886b16
Merge pull request #6258 from compoundingtech/schickling-assistant/20…
schickling-assistant Nov 10, 2026
7de58d1
Merge pull request #5738 from compoundingtech/schickling-assistant/20…
schickling-assistant Nov 10, 2026
4706404
Merge pull request #6284 from compoundingtech/schickling/2026-11-10-n…
schickling-assistant Nov 10, 2026
1ef965a
Merge pull request #6164 from compoundingtech/schickling/2026-11-09-f…
schickling-assistant Nov 10, 2026
4b3771c
Merge pull request #6166 from compoundingtech/schickling/2026-11-09-2…
schickling-assistant Nov 10, 2026
787e8ed
Merge pull request #6260 from compoundingtech/schickling/2026-11-10-p…
schickling-assistant Nov 10, 2026
ed9360c
Base isolated pairing admission on signed QR key approval
schickling-assistant Nov 10, 2026
a850549
Define isolated Fabric pairing admission and signed result contract
schickling-assistant Nov 10, 2026
cd71fda
Constrain admission states and retain typed confirm receipts
schickling-assistant Nov 10, 2026
f111843
Specify held approval wait and digest-safe pairing request replay
schickling-assistant Nov 10, 2026
56f1563
Unify pairing exchange replies and required refusal messages
schickling-assistant Nov 10, 2026
34288d9
Make refused admission predicate explicit for schema generation
schickling-assistant Nov 10, 2026
e9771f6
Support object presence predicates in conditional client schemas
schickling-assistant Nov 10, 2026
c322092
Validate approval wait request and reply schema fixtures
schickling-assistant Nov 10, 2026
4cf1c6b
Express absolute QR gateway URI with supported schema format
schickling-assistant Nov 10, 2026
acd673d
Expose cold pairing refusal codes in native client templates
schickling-assistant Nov 10, 2026
928532f
Regenerate pairing schemas from acd673da44b1f17db834263392333f6e0a2d4de4
schickling-assistant Nov 10, 2026
14f05b4
Match opt-in pairing advertisement schema to gateway discovery
schickling-assistant Nov 10, 2026
8ea253c
Expose typed native QR exchange approval and result models
schickling-assistant Nov 10, 2026
5dd88ca
Regenerate native pairing models from 8ea253cd0a49e75959de6f2d4791e32…
schickling-assistant Nov 10, 2026
2cf3867
Require unique pairing capabilities and validate default discovery
schickling-assistant Nov 10, 2026
63b7564
Reject inconsistent native pairing envelopes and wire constants
schickling-assistant Nov 10, 2026
35cb2b1
Regenerate strict pairing codecs from 63b7564886170320263f04c04006df6…
schickling-assistant Nov 10, 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
12 changes: 6 additions & 6 deletions .github/fleet-compat-baseline.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
{
"commit": "15c8db96ce66921cdeb487bf6978030f8fbfea64",
"tag": "v0.3.31",
"commit": "d853248908ec308713d327f5c666111fbc76e09e",
"tag": "v0.3.32",
"why": "Rolling previous-published-release compatibility baseline; advance after each stable release.",
"exception_reason": null,
"bundles": {
"x86_64-unknown-linux-gnu": {
"url": "https://github.com/compoundingtech/fractal/releases/download/v0.3.31/fractal-x86_64-unknown-linux-gnu.tar.gz",
"sha256": "78759918a6a487e1a1bacd5d73489fe7560a396911c0cfb639325a413f9f2bdc"
"url": "https://github.com/compoundingtech/fractal/releases/download/v0.3.32/fractal-x86_64-unknown-linux-gnu.tar.gz",
"sha256": "fbdd870ea0dbe01fdf1563ea2388f1ff4dccdc67761df6220a8f4684a8d370e7"
},
"aarch64-apple-darwin": {
"url": "https://github.com/compoundingtech/fractal/releases/download/v0.3.31/fractal-aarch64-apple-darwin.tar.gz",
"sha256": "f5bd99274dc0aaff49e562c09666be28af290157c363b0d441dd203343e7594b"
"url": "https://github.com/compoundingtech/fractal/releases/download/v0.3.32/fractal-aarch64-apple-darwin.tar.gz",
"sha256": "387d94c9782b3e2cb741dda7bad1e684c743dfe8318a4a5a829615fc2e46c024"
}
}
}
12 changes: 6 additions & 6 deletions .github/messaging-compat-baseline.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
{
"commit": "15c8db96ce66921cdeb487bf6978030f8fbfea64",
"tag": "v0.3.31",
"commit": "d853248908ec308713d327f5c666111fbc76e09e",
"tag": "v0.3.32",
"why": "Rolling previous-published-release compatibility baseline; advance after each stable release.",
"exception_reason": null,
"bundles": {
"x86_64-unknown-linux-gnu": {
"url": "https://github.com/compoundingtech/fractal/releases/download/v0.3.31/fractal-x86_64-unknown-linux-gnu.tar.gz",
"sha256": "78759918a6a487e1a1bacd5d73489fe7560a396911c0cfb639325a413f9f2bdc"
"url": "https://github.com/compoundingtech/fractal/releases/download/v0.3.32/fractal-x86_64-unknown-linux-gnu.tar.gz",
"sha256": "fbdd870ea0dbe01fdf1563ea2388f1ff4dccdc67761df6220a8f4684a8d370e7"
},
"aarch64-apple-darwin": {
"url": "https://github.com/compoundingtech/fractal/releases/download/v0.3.31/fractal-aarch64-apple-darwin.tar.gz",
"sha256": "f5bd99274dc0aaff49e562c09666be28af290157c363b0d441dd203343e7594b"
"url": "https://github.com/compoundingtech/fractal/releases/download/v0.3.32/fractal-aarch64-apple-darwin.tar.gz",
"sha256": "387d94c9782b3e2cb741dda7bad1e684c743dfe8318a4a5a829615fc2e46c024"
}
}
}
285 changes: 285 additions & 0 deletions .github/workflows/burst.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,285 @@
# Generated file - DO NOT EDIT
# Source: burst.yml.genie.ts

name: burst

run-name: "burst ${{ inputs.suite }} ${{ inputs.sha }} ${{ inputs.request }}"

on:
workflow_dispatch:
inputs:
sha:
description: Full 40-character commit SHA to test
required: true
type: string
suite:
description: "One of: cargo-test, nextest, st-test-all"
required: true
type: string
args:
description: Extra arguments for cargo-test or nextest, split on spaces
required: false
type: string
default: ""
request:
description: Unique request id per dispatch ([A-Za-z0-9._-], at most 64)
required: true
type: string

permissions:
contents: read

concurrency:
group: "burst-${{ inputs.request }}"
cancel-in-progress: false

jobs:
pending:
name: pending
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
statuses: write
defaults:
run:
shell: bash
env:
SHA: ${{ inputs.sha }}
SUITE: ${{ inputs.suite }}
ARGS: ${{ inputs.args }}
REQUEST: ${{ inputs.request }}
RUN_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
steps:
- name: Validate the request
run: |
[ "$GITHUB_REF" = refs/heads/main ] || { echo "::error::burst runs only from main's workflow (got $GITHUB_REF)"; exit 1; }
sha_pattern='^[0-9a-f]{40}$' request_pattern='^[A-Za-z0-9._-]{1,64}$' args_pattern='^[A-Za-z0-9_:./=@ ,+-]*$'
[[ "$SHA" =~ $sha_pattern ]] || { echo "::error::sha must match $sha_pattern"; exit 1; }
[[ "$REQUEST" =~ $request_pattern ]] || { echo "::error::request must match $request_pattern"; exit 1; }
[[ "$ARGS" =~ $args_pattern ]] || { echo "::error::args must match $args_pattern"; exit 1; }
case "$SUITE" in
cargo-test|nextest|st-test-all) ;;
*) echo "::error::suite must be one of: cargo-test nextest st-test-all"; exit 1 ;;
esac
if [ "$SUITE" = st-test-all ] && [ -n "$ARGS" ]; then echo "::error::st-test-all takes no args"; exit 1; fi
- name: Report the run as pending
env:
GH_TOKEN: ${{ github.token }}
run: |
curl -fsS --retry 3 -X POST \
-H "Authorization: Bearer $GH_TOKEN" -H 'Accept: application/vnd.github+json' \
"$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/statuses/$SHA" \
-d "{\"state\":\"pending\",\"context\":\"burst/$SUITE\",\"description\":\"request=$REQUEST\",\"target_url\":\"$RUN_URL\"}" > /dev/null
- name: Report job cache coverage
if: always()
shell: bash
env:
CACHE_REASON: Validates the request and posts a commit status without a checkout.
run: "printf 'Cache coverage: **not applicable** — %s\\n' \"$CACHE_REASON\" >> \"$GITHUB_STEP_SUMMARY\""
burst:
name: burst
needs: [pending]
runs-on: ${{ fromJSON(vars.BURST_RUNS_ON || format('["nscloud-ubuntu-24.04-amd64-8x16-with-features;job.priority=3","namespace-features:github.run-id={0}"]', github.run_id)) }}
timeout-minutes: 180
defaults:
run:
shell: bash
env:
CARGO_PROFILE_DEV_DEBUG: "0"
CARGO_PROFILE_TEST_DEBUG: "0"
CARGO_INCREMENTAL: "0"
SHA: ${{ inputs.sha }}
SUITE: ${{ inputs.suite }}
ARGS: ${{ inputs.args }}
REQUEST: ${{ inputs.request }}
RUN_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
outputs:
exit: ${{ steps.suite.outputs.exit }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ inputs.sha }}
persist-credentials: false
fetch-depth: 1
- name: Fetch the whole history without evidence tags
if: inputs.suite == 'st-test-all'
env:
FETCH_TOKEN: ${{ github.token }}
run: |
if [ -z "$(git config --local --get-regexp '^http\..*\.extraheader$' || true)" ]; then
export GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=http.https://github.com/.extraheader
GIT_CONFIG_VALUE_0="AUTHORIZATION: basic $(printf 'x-access-token:%s' "$FETCH_TOKEN" | base64 | tr -d '\n')"
export GIT_CONFIG_VALUE_0
fi
head=$(git rev-parse HEAD)
shallow=$(git rev-parse --git-path shallow)
errors=$(mktemp)
fetch() {
status=0
git fetch --quiet --refetch --no-tags origin '+refs/heads/*:refs/remotes/origin/*' '+refs/tags/*:refs/tags/*' '^refs/tags/evidence/*' "$head" 2> "$errors" || status=$?
cat "$errors" >&2
return "$status"
}
transport() { grep -Eq 'HTTP (408|429|5[0-9][0-9])|RPC failed|remote end hung up|early EOF|Connection (timed out|reset)|Operation timed out' "$errors"; }
[ ! -f "$shallow" ] || mv "$shallow" "$shallow.full-fetch"
if ! fetch && ! { transport && echo 'full history fetch: transport failure; trying once more' >&2 && fetch; }; then
[ ! -f "$shallow.full-fetch" ] || mv "$shallow.full-fetch" "$shallow"
exit 1
fi
rm -f "$shallow.full-fetch"
git fsck --connectivity-only --no-dangling --no-progress
- name: Require the requested commit
run: 'head=$(git rev-parse HEAD); [ "$head" = "$SHA" ] || { echo "::error::checked out $head, not $SHA"; exit 1; }'
- name: Use the runner's own caches
run: |
if [ -n "${CI_LOCAL_CARGO_HOME:-}" ]; then echo CI_LOCAL_CACHES=1 >> "$GITHUB_ENV"; fi
printf 'CARGO_HOME=%s\nCI_CACHE_DIR=%s\n' "${CI_LOCAL_CARGO_HOME:-$RUNNER_TEMP/cargo-home}" "$RUNNER_TEMP/fractal-ci-cache" >> "$GITHUB_ENV"
- name: Restore the Cargo target and registry
id: cargo-cache
if: env.CI_LOCAL_CACHES != '1' && env.CI_BUILD_SNAPSHOT_HIT != '1'
uses: actions/cache/restore@v4
with:
path: |
${{ github.workspace }}/target
${{ runner.temp }}/cargo-home/registry
${{ runner.temp }}/cargo-home/git
key: "cargo-perf-cost-${{ runner.os }}-${{ hashFiles('Cargo.lock', 'flake.lock', 'Cargo.toml', 'crates/**/Cargo.toml', '.cargo/config.toml') }}"
restore-keys: "cargo-perf-cost-${{ runner.os }}-"
- name: Restore the local Nix cache
id: nix-cache
if: env.CI_LOCAL_CACHES != '1' && env.CI_BUILD_SNAPSHOT_HIT != '1'
uses: actions/cache/restore@v4
with:
path: "${{ runner.temp }}/fractal-ci-cache"
key: "nix5-perf-cost-${{ runner.os }}-${{ hashFiles('flake.lock', 'flake.nix', 'nix/**/*.nix', '.github/fleet-compat-baseline.json', '.github/messaging-compat-baseline.json') }}"
restore-keys: |
nix5-perf-cost-${{ runner.os }}-
nix4-perf-cost-${{ runner.os }}-
- # v3.24.1
name: Install Nix
uses: DeterminateSystems/determinate-nix-action@92957199488000b908fdad19f63711000965d8f3
env:
GITHUB_TOKEN: ${{ github.token }}
with:
extra-conf: |
experimental-features = nix-command flakes
accept-flake-config = true
connect-timeout = 10
stalled-download-timeout = 60
download-attempts = 3
extra-substituters = https://overeng-effect-utils.cachix.org
extra-trusted-public-keys = overeng-effect-utils.cachix.org-1:KFmqYNF6Q7ZzVYPl2znpJYZGEolage9YNCA9res6vKc=
access-tokens = github.com=${{ github.token }}
summarize: true
- name: Isolate test home and XDG state
run: |
# Cargo's home and the CI cache directory live under RUNNER_TEMP, not HOME: tests get an isolated HOME,
# and actions/cache expands a leading tilde against the HOME of the step that runs it.
printf 'CARGO_HOME=%s\nCI_CACHE_DIR=%s\n' "${CI_LOCAL_CARGO_HOME:-$RUNNER_TEMP/cargo-home}" "$RUNNER_TEMP/fractal-ci-cache" >> "$GITHUB_ENV"
home="$RUNNER_TEMP/test-home"
mkdir -p "$home" "$home/.config" "$home/.cache" "$home/.local/state"
printf 'HOME=%s\nXDG_CONFIG_HOME=%s/.config\nXDG_CACHE_HOME=%s/.cache\nXDG_STATE_HOME=%s/.local/state\n' "$home" "$home" "$home" "$home" >> "$GITHUB_ENV"
- name: Use the cached Nix outputs
if: env.CI_LOCAL_CACHES != '1'
run: 'bash scripts/ci-nix-cache use || echo "::warning::the local Nix cache is unavailable; this run builds everything"'
- name: Materialize megarepo members
env:
MEGAREPO_STORE: "${{ runner.temp }}/megarepo"
run: |
python3 scripts/prepare-pnpm-source-inputs.py apply
printf 'MEGAREPO_STORE=%s\n' "$MEGAREPO_STORE" >> "$GITHUB_ENV"
if: inputs.suite == 'st-test-all'
- name: Run the suite
id: suite
env:
ST_TEST_ALL: |
python3 - <<'BURST_ST_TEST_ALL'
import importlib.machinery, importlib.util, shlex, subprocess, sys
loader = importlib.machinery.SourceFileLoader('st_test', 'scripts/st-test')
module = importlib.util.module_from_spec(importlib.util.spec_from_loader(loader.name, loader))
loader.exec_module(module)
skip = set(module.KEYED) | {module.RUST_TESTS, module.WEB}
status = 0
for name, argv in module.LOCAL.items():
if name in skip:
continue
print(f'burst: {name}: {shlex.join(argv)}', flush=True)
code = subprocess.run(argv, stdin=subprocess.DEVNULL).returncode
print(f'burst: {name} exit={code}', flush=True)
status = status or code
sys.exit(status)
BURST_ST_TEST_ALL
COREPACK_ENABLE_DOWNLOAD_PROMPT: "0"
run: |
read -r -a argv <<< "$ARGS"
case "$SUITE" in
cargo-test) command=(nix develop -c cargo test --locked "${argv[@]}") ;;
nextest) command=(nix develop -c cargo nextest run --locked "${argv[@]}") ;;
st-test-all) command=(bash -c "$ST_TEST_ALL") ;;
esac
log="$RUNNER_TEMP/burst.log"
start=$(date +%s)
code=0
set -o pipefail
"${command[@]}" 2>&1 | tee "$log" || code=$?
line="burst suite=$SUITE sha=$SHA request=$REQUEST exit=$code seconds=$(( $(date +%s) - start ))"
printf 'exit=%s\nline=%s\n' "$code" "$line" >> "$GITHUB_OUTPUT"
printf '%s\n' "$line" >> "$GITHUB_STEP_SUMMARY"
printf '%s\n' "$line" | tee -a "$log"
- name: Retain the suite log
if: always() && steps.suite.outcome != 'skipped'
uses: actions/upload-artifact@v4
with:
name: "burst-log-${{ inputs.request }}"
path: "${{ runner.temp }}/burst.log"
if-no-files-found: warn
retention-days: 14
- name: Finish with the suite exit
if: always()
env:
EXIT: ${{ steps.suite.outputs.exit }}
LINE: ${{ steps.suite.outputs.line }}
run: |
[ -n "$EXIT" ] || { echo "::error::the suite did not run"; exit 1; }
printf '%s\n' "$LINE"
exit "$EXIT"
- name: Report job cache coverage
if: always()
shell: bash
env:
CACHE_ENTRIES: '[{"name":"Restore the Cargo target and registry","outcome":"${{ steps.cargo-cache.outcome }}","hit":"${{ steps.cargo-cache.outputs.cache-hit }}","matched":"${{ steps.cargo-cache.outputs.cache-matched-key }}","opaqueFallback":false,"sourceOnly":false,"avoidable":"","lookup":false},{"name":"Restore the local Nix cache","outcome":"${{ steps.nix-cache.outcome }}","hit":"${{ steps.nix-cache.outputs.cache-hit }}","matched":"${{ steps.nix-cache.outputs.cache-matched-key }}","opaqueFallback":false,"sourceOnly":false,"avoidable":"","lookup":false}]'
run: 'python3 "${CI_CACHE_AUDIT_SCRIPT:-scripts/ci-cache-audit}"'
report:
name: report
needs: [pending, burst]
if: always() && needs.pending.result == 'success'
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
statuses: write
defaults:
run:
shell: bash
env:
SHA: ${{ inputs.sha }}
SUITE: ${{ inputs.suite }}
ARGS: ${{ inputs.args }}
REQUEST: ${{ inputs.request }}
RUN_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
steps:
- name: Report the result on the commit
env:
GH_TOKEN: ${{ github.token }}
EXIT: ${{ needs.burst.outputs.exit }}
run: |
if [ -z "$EXIT" ]; then state=error; elif [ "$EXIT" = 0 ]; then state=success; else state=failure; fi
curl -fsS --retry 3 -X POST \
-H "Authorization: Bearer $GH_TOKEN" -H 'Accept: application/vnd.github+json' \
"$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/statuses/$SHA" \
-d "{\"state\":\"$state\",\"context\":\"burst/$SUITE\",\"description\":\"exit=${EXIT:-none} request=$REQUEST\",\"target_url\":\"$RUN_URL\"}" > /dev/null
- name: Report job cache coverage
if: always()
shell: bash
env:
CACHE_REASON: Posts the final commit status without a checkout.
run: "printf 'Cache coverage: **not applicable** — %s\\n' \"$CACHE_REASON\" >> \"$GITHUB_STEP_SUMMARY\""
Loading
Loading