Skip to content

Commit 4a494b8

Browse files
syncing project settings (#2258)
1 parent 74bb044 commit 4a494b8

27 files changed

Lines changed: 162 additions & 451 deletions

.config/hk.pkl

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ local excludeDiagnostics = new Listing<String> {
99
"CA2255"
1010
"CS0103"
1111
"CS0108"
12+
"CS1061"
1213
"CS0246"
1314
"CS1591"
1415
"CS8602"
@@ -31,6 +32,22 @@ local excludeDiagnostics = new Listing<String> {
3132
"RS0026"
3233
}
3334

35+
local excludes = new Listing<String> {
36+
"**/obj/**/*"
37+
"**/bin/**/*"
38+
".git/**/*"
39+
".vs/**/*"
40+
".vscode/**/*"
41+
".idea/**/*"
42+
".claude/**/*"
43+
".agents/**/*"
44+
".apm/**/*"
45+
".copilot/**/*"
46+
".squad/**/*"
47+
"**/*.verified.*"
48+
"**/*.received.*"
49+
}
50+
3451
local excludedDiagnosticsString = excludeDiagnostics.join(" ")
3552

3653
// `dotnet format` — whitespace / code-style / analyzer fixes, scoped to the changed C# files.
@@ -76,6 +93,7 @@ local linters = new Mapping<String, Step> {
7693
// ["jb-cleanupcode"] = jbCleanupCode
7794
}
7895

96+
exclude = excludes
7997
hooks {
8098
["pre-commit"] {
8199
fix = true

.config/mise.toml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"github:yvgude/lean-ctx" = { version = "v3.8.8", bin = "lean-ctx" }
55
hk = "1.48.0"
66
pkl = "0.31.1"
7-
bun = "1.3.14"
7+
node = "24.16.0"
88
actionlint = "1.7.12"
99
prettier = "3.8.4"
1010

@@ -20,13 +20,15 @@ dotnet = [{ version = "8.0.14", runtime = "dotnet" }, { version = "10.0.301" }]
2020
"dotnet:verify.tool" = "0.7.0"
2121
"dotnet:gitreleasemanager.tool" = "0.20.0"
2222
"dotnet:NuGet.Mcp.Server" = "1.4.3"
23-
"npm:vitepress" = "v2.0.0-alpha.17"
23+
"pipx:git+https://github.com/github/spec-kit.git" = "latest"
24+
"npm:@bradygaster/squad-cli" = "0.10.0"
2425
# dotnet
2526

2627
[tasks]
2728
build = { run = "dotnet run build/Build.cs" }
28-
docs = { run = "vitepress dev docs" }
29-
docs-preview = { run = "vitepress preview docs" }
29+
docs = { run = "npm run dev --workspace docs", description = "Start Astro/Starlight dev server" }
30+
"docs:preview" = { run = "npm run preview --workspace docs", description = "Preview built Starlight site" }
31+
"docs:build" = { run = "npm run build --workspace docs", description = "Build the Starlight site (API reference is generated in-process by the Astro XML loader)" }
3032
"roslyn-lsp" = { run = "bash build/scripts/install-roslyn-lsp.sh", description = "Install the Microsoft Roslyn language server for this RID" }
3133
"pkl-vscode" = { run = "bash build/scripts/install-pkl-vscode.sh", description = "Install the Pkl VS Code extension (not in marketplace; installed from VSIX)" }
3234

@@ -36,6 +38,10 @@ prereleases = true
3638

3739
[env]
3840
HK_MISE = 1
41+
# Keep npm's download cache inside the mise data dir so jdx/mise-action's
42+
# cache (which caches MISE_DATA_DIR / ~/.local/share/mise) also persists npm
43+
# tarballs across CI runs. `npm ci` still wipes node_modules, but reuses these.
44+
npm_config_cache = "{{env.HOME}}/.local/share/mise/npm-cache"
3945
# Microsoft Roslyn language server (Microsoft.CodeAnalysis.LanguageServer), installed by the
4046
# `roslyn-lsp` task from the Azure DevOps vs-impl feed. The wrapper lands on PATH below.
4147
ROSLYN_LSP_VERSION = "4.8.0-7.26274.14"

.github/workflows/build.yml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,3 @@ jobs:
7474
with:
7575
name: event
7676
path: artifacts/event.json
77-
# Docs are built into artifacts/docs by the canonical pipeline (DocsModule). Only the
78-
# main branch publishes to GitHub Pages (FR-027/028, SC-010).
79-
- name: 📤 Upload Pages artifact
80-
if: github.ref == 'refs/heads/main'
81-
uses: actions/upload-pages-artifact@v3
82-
with:
83-
path: artifacts/docs

.github/workflows/close-milestone.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ jobs:
5757
with:
5858
title: v${{ steps.gitversion.outputs.majorMinorPatch }}
5959
- name: sync milestones
60-
uses: RocketSurgeonsGuild/actions/sync-milestone@v0.3.15
60+
uses: RocketSurgeonsGuild/actions/sync-milestone@v0.3.19
6161
with:
6262
default-label: ':sparkles: mysterious'
6363
github-token: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/dependabot-merge.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ on:
1111

1212
jobs:
1313
comment:
14-
uses: RocketSurgeonsGuild/actions/.github/workflows/dependabot-merge.yml@v0.3.15
14+
uses: RocketSurgeonsGuild/actions/.github/workflows/dependabot-merge-queue.yml@v0.3.19
1515
secrets:
1616
RSG_BOT_TOKEN: ${{ secrets.RSG_BOT_TOKEN }}

.github/workflows/deploy-docs.yml

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
name: Deploy Docs
22

33
on:
4-
workflow_run:
5-
workflows:
6-
- Build
7-
types:
8-
- completed
4+
push:
5+
branches:
6+
- main
7+
paths:
8+
- docs/**
9+
- src/**
10+
- .github/workflows/deploy-docs.yml
11+
workflow_dispatch:
912

1013
permissions:
1114
contents: read
@@ -17,23 +20,40 @@ concurrency:
1720
cancel-in-progress: false
1821

1922
jobs:
23+
build:
24+
name: Build
25+
runs-on: ubuntu-latest
26+
steps:
27+
- name: Checkout
28+
uses: actions/checkout@v7
29+
with:
30+
clean: 'false'
31+
fetch-depth: '0'
32+
- name: 🛠️ Setup mise
33+
uses: jdx/mise-action@v4
34+
with:
35+
install: true
36+
cache: true
37+
github_token: ${{ secrets.GITHUB_TOKEN }}
38+
39+
- name: 📚 Build docs
40+
run: mise run docs:build
41+
env:
42+
GH_API_TOKEN: ${{ secrets.GH_API_TOKEN }}
43+
44+
- name: Upload Pages artifact
45+
uses: actions/upload-pages-artifact@v5
46+
with:
47+
path: docs/dist
48+
2049
deploy:
21-
if: >
22-
github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.head_branch == 'main'
2350
name: Deploy
51+
needs: build
2452
runs-on: ubuntu-latest
2553
environment:
2654
name: github-pages
2755
url: ${{ steps.deployment.outputs.page_url }}
2856
steps:
29-
- name: 📥 Download event
30-
continue-on-error: true
31-
uses: actions/download-artifact@v8
32-
with:
33-
name: event
34-
path: artifacts/
35-
run-id: ${{ github.event.workflow_run.id }}
36-
github-token: ${{ secrets.GITHUB_TOKEN }}
3757
- name: Deploy to GitHub Pages
3858
id: deployment
39-
uses: actions/deploy-pages@v4
59+
uses: actions/deploy-pages@v5

.github/workflows/draft-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ jobs:
6262
with:
6363
title: v${{ steps.gitversion.outputs.majorMinorPatch }}
6464
- name: sync milestones
65-
uses: RocketSurgeonsGuild/actions/sync-milestone@v0.3.15
65+
uses: RocketSurgeonsGuild/actions/sync-milestone@v0.3.19
6666
with:
6767
default-label: ':sparkles: mysterious'
6868
github-token: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/lint.yml

Lines changed: 23 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
name: Lint
1+
name: autofix.ci
22

33
on:
4-
pull_request_target:
4+
pull_request:
5+
push:
56
branches:
67
- main
78
- next
@@ -10,20 +11,11 @@ on:
1011
- main
1112
- next
1213

14+
# Read-only: autofix.ci pushes the fix commit server-side via its GitHub App,
15+
# so the workflow itself never needs write access or a secret. This is what makes
16+
# running a formatter over untrusted fork code safe.
1317
permissions:
14-
actions: read
15-
checks: write
16-
contents: write
17-
deployments: read
18-
id-token: none
19-
issues: write
20-
discussions: none
21-
packages: none
22-
pages: none
23-
pull-requests: write
24-
repository-projects: none
25-
security-events: none
26-
statuses: write
18+
contents: read
2719

2820
concurrency:
2921
group: lint-${{ github.event.pull_request.number || github.run_id }}
@@ -38,37 +30,33 @@ jobs:
3830
with:
3931
clean: 'false'
4032
fetch-depth: '0'
41-
ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || github.sha }}
42-
repository: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name || github.repository }}
43-
token: ${{ secrets.RSG_BOT_TOKEN }}
44-
- name: Get Head Commit Message
45-
id: commit-message
46-
run: |
47-
echo "message=$(git show -s --format=%s)" >> "$GITHUB_OUTPUT"
4833
- name: 🛠️ Setup mise
4934
uses: jdx/mise-action@v4
5035
with:
5136
install: true
5237
cache: true
5338
github_token: ${{ secrets.GITHUB_TOKEN }}
54-
- name: 🧹 Lint (hk fix)
55-
if: github.event_name == 'pull_request_target'
56-
run: |
57-
hk fix --from-ref "$DEFAULT_BRANCH" --to-ref "$HEAD"
58-
env:
59-
DEFAULT_BRANCH: ${{ github.event.pull_request.base.sha }}
60-
HEAD: ${{ github.event.pull_request.head.sha }}
61-
- name: 🧹 Lint (hk check)
39+
# merge_group: hard gate only — no autofix in the merge queue.
40+
- name: 🧹 Lint (hk check) — merge_group
6241
if: github.event_name == 'merge_group'
6342
run: |
6443
hk check --from-ref "$DEFAULT_BRANCH" --to-ref "$HEAD"
6544
env:
6645
DEFAULT_BRANCH: ${{ github.event.merge_group.base_sha }}
6746
HEAD: ${{ github.event.merge_group.head_sha }}
68-
- name: Add & Commit
69-
if: github.event_name == 'pull_request_target' && !contains(steps.commit-message.outputs.message, 'Automatically linting code')
70-
uses: stefanzweifel/git-auto-commit-action@v7
47+
# pull_request (same-repo AND fork): apply fixes into the working tree.
48+
# autofix.ci uploads the diff and commits it back to the PR (incl. forks).
49+
- name: 🧹 Lint (hk fix)
50+
if: github.event_name == 'pull_request'
51+
run: |
52+
hk fix --from-ref "$DEFAULT_BRANCH" --to-ref "$HEAD"
7153
env:
72-
GITHUB_TOKEN: ${{ secrets.RSG_BOT_TOKEN }}
54+
DEFAULT_BRANCH: ${{ github.event.pull_request.base.sha }}
55+
HEAD: ${{ github.event.pull_request.head.sha }}
56+
# Must be the LAST step: pushes the working-tree changes back as a
57+
# verified commit (and fails the check when a fix was needed).
58+
- name: ✍️ Apply fixes (autofix.ci)
59+
if: github.event_name == 'pull_request'
60+
uses: autofix-ci/action@v1.3.4
7361
with:
74-
commit_message: Automatically linting code
62+
commit-message: Automatically linting code

.github/workflows/squad-heartbeat.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
heartbeat:
2626
runs-on: ubuntu-latest
2727
steps:
28-
- uses: actions/checkout@v4
28+
- uses: actions/checkout@v7
2929

3030
- name: Check triage script
3131
id: check-script
@@ -48,7 +48,7 @@ jobs:
4848
4949
- name: Ralph — Apply triage decisions
5050
if: steps.check-script.outputs.has_script == 'true' && hashFiles('triage-results.json') != ''
51-
uses: actions/github-script@v7
51+
uses: actions/github-script@v9
5252
with:
5353
script: |
5454
const fs = require('fs');
@@ -100,7 +100,7 @@ jobs:
100100
# Copilot auto-assign step (uses PAT if available)
101101
- name: Ralph — Assign @copilot issues
102102
if: success()
103-
uses: actions/github-script@v7
103+
uses: actions/github-script@v9
104104
with:
105105
github-token: ${{ secrets.COPILOT_ASSIGN_TOKEN || secrets.GITHUB_TOKEN }}
106106
script: |

.github/workflows/squad-issue-assign.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ jobs:
1414
if: startsWith(github.event.label.name, 'squad:')
1515
runs-on: ubuntu-latest
1616
steps:
17-
- uses: actions/checkout@v4
17+
- uses: actions/checkout@v7
1818

1919
- name: Identify assigned member and trigger work
20-
uses: actions/github-script@v7
20+
uses: actions/github-script@v9
2121
with:
2222
script: |
2323
const fs = require('fs');
@@ -116,7 +116,7 @@ jobs:
116116
# Separate step: assign @copilot using PAT (required for coding agent)
117117
- name: Assign @copilot coding agent
118118
if: github.event.label.name == 'squad:copilot'
119-
uses: actions/github-script@v7
119+
uses: actions/github-script@v9
120120
with:
121121
github-token: ${{ secrets.COPILOT_ASSIGN_TOKEN }}
122122
script: |

0 commit comments

Comments
 (0)