Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
48bf1de
Add regression investigation contracts and endpoint admission
invalid-email-address Sep 18, 2026
db3f892
Use the trusted repetition limit in observation validation
invalid-email-address Sep 18, 2026
64e8231
Validate trusted context before hashing investigation epochs
invalid-email-address Sep 18, 2026
4d409fd
Keep regression policy independent of the shared JSON cache
invalid-email-address Sep 18, 2026
404ba86
Accept Windows process statuses and strengthen admission coverage
invalid-email-address Sep 18, 2026
1e3e9fb
Add bounded regression intake and authenticated checkpoints
invalid-email-address Sep 18, 2026
c2ef908
Prevent rollback of authenticated regression checkpoints
invalid-email-address Sep 18, 2026
13048d6
Recover interrupted checkpoint initialization before current input ch…
invalid-email-address Sep 18, 2026
04908fa
Prevent cursor-loss starvation and incomplete regression intake
invalid-email-address Sep 18, 2026
261a6b4
Acquire exact released and revision-specific regression toolchains
invalid-email-address Sep 19, 2026
6db0b07
Fix historical toolchain RID and execution evidence
invalid-email-address Sep 19, 2026
4abb739
Cover toolchain trace and redirect failure paths
invalid-email-address Sep 19, 2026
5531019
Await regression toolchain archive delivery before verification
invalid-email-address Sep 19, 2026
41bf362
Add faithful regression reproduction execution
invalid-email-address Sep 19, 2026
e6ee82e
Fix reproduction hook lifetime and nullable identity evidence
invalid-email-address Sep 19, 2026
bf13cf2
Add isolated historical source revision workspaces
invalid-email-address Sep 19, 2026
5a8b9ad
Fix historical workspace packaging and cancellation
invalid-email-address Sep 19, 2026
d5f65ea
Cover non-pass historical source observations
invalid-email-address Sep 19, 2026
4c843d1
Remove duplicate mixed-repetition model assertion
invalid-email-address Sep 19, 2026
2ec6de6
Bound loopback archive reads to the advertised length
invalid-email-address Sep 19, 2026
b00a8d5
Verify historical SDK provenance and clean workspace acceptance
invalid-email-address Sep 19, 2026
044b6d1
Require complete toolchain receipts and preserve worker identities
invalid-email-address Sep 19, 2026
06f9beb
Preserve network failures through observation checkpoints
invalid-email-address Sep 19, 2026
c400adb
Consolidate measured archive digest rejection coverage
invalid-email-address Sep 19, 2026
ec2a1b9
Preserve checksum provenance for rejected archive redirects
invalid-email-address Sep 19, 2026
7b14e7b
Add endpoint-first resumable regression bisection engine
invalid-email-address Sep 19, 2026
38693a6
Fix bisection checkpoint size and confirmation accounting
invalid-email-address Sep 20, 2026
a97ead5
Revalidate bisection workers at execution boundaries
invalid-email-address Sep 20, 2026
b105d2a
Confirm regression source boundaries and guard evidence-based reports
invalid-email-address Sep 20, 2026
f5cc45d
Repair bounded regression confirmation and report recovery
invalid-email-address Sep 20, 2026
d7aae39
Make regression boundary confirmation resumable one unit at a time
invalid-email-address Sep 20, 2026
8ab337f
Compose one-unit regression controller and guarded publisher APIs
invalid-email-address Sep 20, 2026
3f5251d
Bound regression worker output to inert verified-byte transfers
invalid-email-address Sep 20, 2026
5c6f3e6
Add reviewed regression bootstrap and fixed-authority GitHub API
invalid-email-address Sep 20, 2026
b7a3129
Add bounded public egress transport for regression workers
invalid-email-address Sep 20, 2026
a75aa93
Add opt-in disposable regression worker transport
invalid-email-address Sep 20, 2026
dd7c2a7
Retain and authenticate durable regression worker evidence
invalid-email-address Sep 20, 2026
b57ced9
Fix durable evidence runtime and crash recovery boundaries
invalid-email-address Sep 20, 2026
1debd1a
Bound durable evidence staging completion
invalid-email-address Sep 20, 2026
d2359df
Bound durable evidence reads and verify collected product identities
invalid-email-address Sep 20, 2026
91f8417
Bound durable file evidence publication and cleanup
invalid-email-address Sep 20, 2026
9917242
Preserve durable evidence across timed-out writer retries
invalid-email-address Sep 20, 2026
b55b000
Fix durable evidence ownership and operation deadlines
invalid-email-address Sep 21, 2026
3711f0f
Wire trusted regression controller deployment
invalid-email-address Sep 21, 2026
34c439c
Fix regression controller recovery and epoch publication
invalid-email-address Sep 21, 2026
5d7aca5
Reconcile regression controller main epochs before endpoint stops
invalid-email-address Sep 21, 2026
c7eac15
Make controller fixtures atomic and cover Actions inputs
invalid-email-address Sep 21, 2026
4d9016e
Support bounded full-history source handoff in regression controller
invalid-email-address Sep 21, 2026
5a97052
UNVERIFIED recovery checkpoint: restore archived routing overlay
invalid-email-address Sep 21, 2026
d7d172c
Complete durable regression intake routing
invalid-email-address Sep 21, 2026
7bf2f5d
Recover interrupted routing deliveries without starving discovery
invalid-email-address Sep 21, 2026
2f40536
Recover discovery provisioning and terminal routing handoffs
invalid-email-address Sep 21, 2026
a44839c
Bound discovery freshness and retain terminal stop reasons
invalid-email-address Sep 22, 2026
418f918
Share regression routing subprocess fixtures
invalid-email-address Sep 22, 2026
6d34c38
Compile dedicated regression investigation workflow
invalid-email-address Sep 22, 2026
cc77b03
Provision Node for dedicated regression routing
invalid-email-address Sep 22, 2026
0c65060
Freeze a supported controlled-history FSI source fixture
invalid-email-address Sep 22, 2026
2dec082
Add a resumable production-path controlled-history trial
invalid-email-address Sep 22, 2026
5c3eb75
Fix trial archive identity and cover resumable driver delivery
invalid-email-address Sep 22, 2026
348e2fb
Revalidate approved discussion during read-only trial verification
invalid-email-address Sep 22, 2026
e7a0ed5
Run retained regression investigation validation in CI
invalid-email-address Oct 20, 2026
7137037
Fix hosted regression validation and approved proxy traffic
invalid-email-address Oct 20, 2026
1efc3a4
Fix live containment deadline probe and CI receipt races
invalid-email-address Oct 20, 2026
79aac93
Separate Windows supervisor bootstrap from sample environment
invalid-email-address Oct 20, 2026
daf6a6f
Read Windows supervisor requests through an explicit UTF-8 stream
invalid-email-address Oct 20, 2026
e1ae4aa
Load the Windows supervisor JSON module without discovery
invalid-email-address Oct 20, 2026
a749a58
Load installer modules explicitly in isolated Windows processes
invalid-email-address Oct 20, 2026
7e4156a
Exercise a contained source build through the production worker [sour…
invalid-email-address Oct 20, 2026
196d63c
Keep Linux toolchains owned by the extracting account [source-accepta…
invalid-email-address Oct 20, 2026
5566ee2
Enable native SDK execution in worker scratch [source-acceptance]
invalid-email-address Oct 20, 2026
0ca9113
Keep copied worker files owned by their creating account [source-acce…
invalid-email-address Oct 20, 2026
6781a86
Restore supervisor scratch ownership after historical commands [sourc…
invalid-email-address Oct 20, 2026
0e758ae
Permit the public Azure DevOps package CDN [source-acceptance]
invalid-email-address Oct 20, 2026
f7e0f89
Repair contained source bootstrap caches and file limits [source-acce…
invalid-email-address Oct 20, 2026
6e248a8
Fit multi-feed package restore within bounded proxy capacity [source-…
invalid-email-address Oct 20, 2026
e0078ef
[source-acceptance] Bound historical NuGet restore concurrency
invalid-email-address Oct 20, 2026
4e4d05b
[source-acceptance] Permit verified runtime patches during bootstrap
invalid-email-address Oct 20, 2026
f59abc7
[source-acceptance] Queue bounded restore tunnels under pressure
invalid-email-address Oct 20, 2026
777aa8e
[source-acceptance] Retain boundary errors and failed-export counters
invalid-email-address Oct 21, 2026
ce50203
[source-acceptance] Prove memory limits with a supervised child
invalid-email-address Oct 21, 2026
61fea16
[source-acceptance] Reclaim terminated historical runtime IPC
invalid-email-address Oct 21, 2026
07288bc
Fix source smoke compiler runtime acquisition [source-acceptance]
invalid-email-address Oct 21, 2026
ecedd2b
[worker-acceptance] Exercise contained controller and project matrix
invalid-email-address Oct 22, 2026
bdb037e
[worker-acceptance] Distinguish bundled and packaged released Core
invalid-email-address Oct 22, 2026
8e1bac8
[worker-acceptance] Use declared matrix SDKs and collector reader API
invalid-email-address Oct 22, 2026
fe3d47b
[worker-acceptance] Match the exact protected helper invocation
invalid-email-address Oct 22, 2026
1b1a65e
[worker-acceptance] Retain bounded metadata without duplicate matrix …
invalid-email-address Oct 22, 2026
501fe1b
[worker-acceptance] Exercise task identity independently of API compa…
invalid-email-address Oct 22, 2026
5b55a4e
Record verified native Linux worker acceptance
invalid-email-address Oct 22, 2026
e66b5ac
[worker-acceptance] [trial-acceptance] Verify bounded controlled-hist…
invalid-email-address Oct 22, 2026
94014f3
[worker-acceptance] [trial-acceptance] Retain complete physical evide…
invalid-email-address Oct 22, 2026
dc6e0f1
[worker-acceptance] [trial-acceptance] Authenticate the legacy intake…
invalid-email-address Oct 22, 2026
4f7518d
[worker-acceptance] [trial-acceptance] Finish all bounded lost-ack re…
invalid-email-address Oct 22, 2026
c4ad042
Record completed source-bound controlled delivery acceptance
invalid-email-address Oct 22, 2026
86ef587
Require complete ordered Git evidence for controlled trial verification
invalid-email-address Oct 23, 2026
f06319f
Require original authenticated trial reservation and claim transitions
invalid-email-address Oct 23, 2026
49b764b
Require original admission evidence for all six trial workers
invalid-email-address Oct 23, 2026
5c88a13
Add release notes
invalid-email-address Oct 23, 2026
7804e7b
Merge origin/main into idea/dm-912 to unblock CI
invalid-email-address Oct 23, 2026
2a8989a
Preserve shared action registry during isolated workflow validation
invalid-email-address Oct 23, 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
5 changes: 4 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,13 @@ mono/config.make text eol=lf
targets.make text eol=lf

*.sh text eol=lf
eng/regression-bisect/fixtures/checkpoint.txt text eol=lf

*.bsl linguist-vendored=true
*.xlf linguist-generated=true

*.png binary

.github/workflows/*.lock.yml linguist-generated=true merge=ours
.github/workflows/*.lock.yml linguist-generated=true merge=ours
# Preserve this pinned compiler's verbatim output, including generated whitespace.
.github/workflows/regression-bisect.lock.yml eol=lf whitespace=-blank-at-eol,-blank-at-eof
73 changes: 73 additions & 0 deletions .github/policies/regression-bisect.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
{
"schemaVersion": 1,
"repository": "dotnet/fsharp",
"selection": {
"state": "open",
"label": "Regression",
"createdAtOrAfter": "2026-09-01T00:00:00Z"
},
"authorization": {
"mode": "reviewed-manifests-only",
"policySource": "pinned-trusted-default-branch",
"approvalDirectory": ".github/regression-bisect/approved",
"assets": "reviewed-repository-paths-and-sha256"
},
"accounting": {
"scope": "issue-allowance",
"reserveBeforeExecution": true,
"retriesCharged": true,
"cancellationRefunds": false,
"inputEditsResetAllowance": false,
"labelChangesResetAllowance": false,
"dispatchResetsAllowance": false,
"newAllowanceRequires": "maintainer-authorization"
},
"limits": {
"sourceBuilds": 24,
"workerUnits": 40,
"reservedMinutes": 720,
"attemptsPerItem": 2,
"assertionRepetitions": 2,
"buildTimeoutMinutes": 90,
"reproductionTimeoutSeconds": 300,
"workerTimeoutMinutes": 110,
"discoveryIssues": 3,
"discoveryPages": 2,
"discoveryPageSize": 100
},
"evidenceBytesPerStream": 16384,
"toolchains": {
"publicFeeds": [
"https://builds.dotnet.microsoft.com/dotnet",
"https://ci.dot.net/public",
"https://dotnetcli.blob.core.windows.net/dotnet",
"https://download.visualstudio.microsoft.com/download/pr"
],
"measuredArchives": [
{
"sourceSha": "5a8b9adb034f420a5c2c1f577670c5eeeb454b7e",
"product": "sdk",
"version": "11.0.100-rc.1.26420.103",
"rid": "win-x64",
"origin": "https://builds.dotnet.microsoft.com",
"url": "https://builds.dotnet.microsoft.com/dotnet/Sdk/11.0.100-rc.1.26420.103/dotnet-sdk-11.0.100-rc.1.26420.103-win-x64.zip",
"redirectUrls": [],
"maxBytes": 1073741824,
"timeoutMs": 300000,
"approvalRevision": "2ec6de6837b5b367e1f1186e850b8faa2d188b16"
},
{
"sourceSha": "5a8b9adb034f420a5c2c1f577670c5eeeb454b7e",
"product": "sdk",
"version": "11.0.100-rc.1.26420.103",
"rid": "win-x64",
"origin": "https://ci.dot.net",
"url": "https://ci.dot.net/public/Sdk/11.0.100-rc.1.26420.103/dotnet-sdk-11.0.100-rc.1.26420.103-win-x64.zip",
"redirectUrls": [],
"maxBytes": 1073741824,
"timeoutMs": 300000,
"approvalRevision": "2ec6de6837b5b367e1f1186e850b8faa2d188b16"
}
]
}
}
20 changes: 20 additions & 0 deletions .github/regression-bisect/discovery.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Reviewed issue-linked regression discovery registration (not execution approval)",
"type": "object",
"additionalProperties": false,
"required": ["schemaVersion", "repository", "issueNumber", "commentId", "freshnessCommentId", "checkpointAnchorSha", "bootstrapDigest", "freshnessBootstrapDigest", "provisionDeadline", "workflowPath", "workflowGeneration"],
"properties": {
"schemaVersion": { "const": 2 },
"repository": { "const": "dotnet/fsharp" },
"issueNumber": { "type": "integer", "minimum": 1 },
"commentId": { "type": "integer", "minimum": 1 },
"freshnessCommentId": { "type": "integer", "minimum": 1 },
"checkpointAnchorSha": { "type": "string", "pattern": "^[a-f0-9]{40}$" },
"bootstrapDigest": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
"freshnessBootstrapDigest": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
"provisionDeadline": { "type": "string", "format": "date-time" },
"workflowPath": { "const": ".github/workflows/regression-bisect.lock.yml" },
"workflowGeneration": { "type": "integer", "minimum": 1 }
}
}
16 changes: 16 additions & 0 deletions .github/regression-bisect/registration.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Reviewed regression allowance registration (not an execution approval)",
"type": "object",
"additionalProperties": false,
"required": ["allowanceId", "deadline", "checkpointAnchorSha", "checkpointCommentId", "checkpointBootstrapDigest", "resultCommentId", "resultBootstrapDigest"],
"properties": {
"allowanceId": { "type": "string", "pattern": "^[a-zA-Z0-9_-]{1,128}$" },
"deadline": { "type": "string", "format": "date-time" },
"checkpointAnchorSha": { "type": "string", "pattern": "^[a-f0-9]{40}$" },
"checkpointCommentId": { "type": "integer", "minimum": 1 },
"checkpointBootstrapDigest": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
"resultCommentId": { "type": "integer", "minimum": 1 },
"resultBootstrapDigest": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
}
}
61 changes: 61 additions & 0 deletions .github/workflows/regression-bisect-controller.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Regression bisect controller
on:
workflow_dispatch:
inputs:
issue:
description: Approved issue number
type: number
required: true
mode:
description: One deterministic transaction
type: choice
options: [bootstrap, advance, publish]
required: true
routingKey:
description: Durable trusted routing identity (empty for an operator transaction)
type: string
default: ""
routingGeneration:
description: Exact checkpoint generation selected by trusted routing
type: string
default: ""
permissions:
contents: read
actions: read
issues: write
statuses: write
concurrency:
group: regression-bisect-dotnet-fsharp-${{ inputs.issue }}
cancel-in-progress: false
jobs:
controller:
if: github.repository == 'dotnet/fsharp' && github.ref == 'refs/heads/main' && vars.REGRESSION_CONTROLLER_ENABLED == 'true'
environment: regression-controller
runs-on: [self-hosted, linux, x64, regression-container-v1]
timeout-minutes: 135
steps:
- name: Require the reviewed immutable workflow revision
shell: bash
env:
RB_TRUSTED_REVISION: ${{ vars.REGRESSION_CONTROLLER_REVISION }}
run: |
if ! [[ "$RB_TRUSTED_REVISION" =~ ^[0-9a-f]{40}$ && "$RB_TRUSTED_REVISION" == "$GITHUB_WORKFLOW_SHA" ]]; then
echo "::error::The reviewed helper revision must be the immutable workflow SHA"
exit 1
fi
- name: Immutable trusted helpers, never the historical source
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: dotnet/fsharp
ref: ${{ vars.REGRESSION_CONTROLLER_REVISION }}
persist-credentials: false
fetch-depth: 1
- name: One controller transaction
uses: ./eng/regression-bisect
env:
RB_ACTION_INPUTS: ${{ toJSON(inputs) }}
RB_TRUSTED_REVISION: ${{ vars.REGRESSION_CONTROLLER_REVISION }}
RB_STATE_DIRECTORY: /var/lib/fsharp-regression-controller
RB_CONTAINMENT_DIRECTORY: /var/lib/fsharp-regression-containment
RB_GITHUB_TOKEN: ${{ secrets.REGRESSION_CONTROLLER_TOKEN }}
RB_SIGNING_KEYS: ${{ secrets.REGRESSION_CONTROLLER_SIGNING_KEYS }}
Loading
Loading