You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(ci): upgrade GitHub Actions to Node 24 and harden supply chain (#11)
## Summary
- Upgrade all GitHub first-party actions from Node 20 to Node 24 runtime
- SHA-pin third-party actions (TruffleHog, OSV Scanner) to prevent tag
substitution attacks
## Changes
### Node 24 upgrades
| Action | Before | After |
|---|---|---|
| `actions/checkout` | `@v4` | `@v6` |
| `actions/setup-node` | `@v4` | `@v6` |
| `actions/cache` | `@v4` | `@v5` |
| `actions/dependency-review-action` | `@v4` | `@v4.9.0` (latest, still
Node 20) |
Node 20 support is removed from GitHub runners on 2026-09-16, with
forced default switch to Node 24 on 2026-06-02.
### Supply chain hardening
Third-party actions pinned by commit SHA instead of tag to prevent tag
substitution attacks (as exploited in the [Trivy supply chain
compromise](GHSA-69fq-xp46-6x23)
of March 2026).
First-party `actions/*` remain tag-pinned — compromising them requires
compromising GitHub itself, which is a different threat model.
## Test plan
- [ ] All security jobs pass without Node 20 deprecation warnings
- [ ] TruffleHog and OSV Scanner resolve correctly via SHA pins
---------
Co-authored-by: semantic-release-bot <[email protected]>
Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
Copy file name to clipboardExpand all lines: agents/ceo.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -121,12 +121,12 @@ EOF
121
121
```
122
122
Using `>>` is atomic at the filesystem level and avoids overwriting prior entries.
123
123
124
-
8.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
124
+
9.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
125
125
126
-
9.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
126
+
10.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
127
127
128
128
### Stuck task recovery
129
-
If a phase has been `IN_PROGRESS` for over 30 minutes with no new execution-log entries, a planner may reset it to `TODO` for reassignment.
129
+
Stale recovery is now handled automatically by step 3 of the executor workflow. Every agent that activates will reset phases that have been IN_PROGRESS for over 30 minutes (based on `claimed_at` timestamp). Phases without a `claimed_at` field are treated as stale immediately.
130
130
131
131
### Security rules
132
132
- Never write `.env` file contents, API keys, credentials, or secrets into any `.tasks/` file.
Copy file name to clipboardExpand all lines: agents/compliance-counsel.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -126,12 +126,12 @@ EOF
126
126
```
127
127
Using `>>` is atomic at the filesystem level and avoids overwriting prior entries.
128
128
129
-
8.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
129
+
9.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
130
130
131
-
9.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
131
+
10.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
132
132
133
133
### Stuck task recovery
134
-
If a phase has been `IN_PROGRESS` for over 30 minutes with no new execution-log entries, a planner may reset it to `TODO` for reassignment.
134
+
Stale recovery is now handled automatically by step 3 of the executor workflow. Every agent that activates will reset phases that have been IN_PROGRESS for over 30 minutes (based on `claimed_at` timestamp). Phases without a `claimed_at` field are treated as stale immediately.
135
135
136
136
### Security rules
137
137
- Never write `.env` file contents, API keys, credentials, or secrets into any `.tasks/` file.
Copy file name to clipboardExpand all lines: agents/creative-technologist.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -127,12 +127,12 @@ EOF
127
127
```
128
128
Using `>>` is atomic at the filesystem level and avoids overwriting prior entries.
129
129
130
-
8.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
130
+
9.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
131
131
132
-
9.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
132
+
10.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
133
133
134
134
### Stuck task recovery
135
-
If a phase has been `IN_PROGRESS` for over 30 minutes with no new execution-log entries, a planner may reset it to `TODO` for reassignment.
135
+
Stale recovery is now handled automatically by step 3 of the executor workflow. Every agent that activates will reset phases that have been IN_PROGRESS for over 30 minutes (based on `claimed_at` timestamp). Phases without a `claimed_at` field are treated as stale immediately.
136
136
137
137
### Security rules
138
138
- Never write `.env` file contents, API keys, credentials, or secrets into any `.tasks/` file.
Copy file name to clipboardExpand all lines: agents/cto.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -124,12 +124,12 @@ EOF
124
124
```
125
125
Using `>>` is atomic at the filesystem level and avoids overwriting prior entries.
126
126
127
-
8.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
127
+
9.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
128
128
129
-
9.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
129
+
10.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
130
130
131
131
### Stuck task recovery
132
-
If a phase has been `IN_PROGRESS` for over 30 minutes with no new execution-log entries, a planner may reset it to `TODO` for reassignment.
132
+
Stale recovery is now handled automatically by step 3 of the executor workflow. Every agent that activates will reset phases that have been IN_PROGRESS for over 30 minutes (based on `claimed_at` timestamp). Phases without a `claimed_at` field are treated as stale immediately.
133
133
134
134
### Security rules
135
135
- Never write `.env` file contents, API keys, credentials, or secrets into any `.tasks/` file.
Copy file name to clipboardExpand all lines: agents/data-engineer.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -133,12 +133,12 @@ EOF
133
133
```
134
134
Using `>>` is atomic at the filesystem level and avoids overwriting prior entries.
135
135
136
-
8.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
136
+
9.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
137
137
138
-
9.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
138
+
10.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
139
139
140
140
### Stuck task recovery
141
-
If a phase has been `IN_PROGRESS` for over 30 minutes with no new execution-log entries, a planner may reset it to `TODO` for reassignment.
141
+
Stale recovery is now handled automatically by step 3 of the executor workflow. Every agent that activates will reset phases that have been IN_PROGRESS for over 30 minutes (based on `claimed_at` timestamp). Phases without a `claimed_at` field are treated as stale immediately.
142
142
143
143
### Security rules
144
144
- Never write `.env` file contents, API keys, credentials, or secrets into any `.tasks/` file.
Copy file name to clipboardExpand all lines: agents/devops.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -131,12 +131,12 @@ EOF
131
131
```
132
132
Using `>>` is atomic at the filesystem level and avoids overwriting prior entries.
133
133
134
-
8.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
134
+
9.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
135
135
136
-
9.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
136
+
10.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
137
137
138
138
### Stuck task recovery
139
-
If a phase has been `IN_PROGRESS` for over 30 minutes with no new execution-log entries, a planner may reset it to `TODO` for reassignment.
139
+
Stale recovery is now handled automatically by step 3 of the executor workflow. Every agent that activates will reset phases that have been IN_PROGRESS for over 30 minutes (based on `claimed_at` timestamp). Phases without a `claimed_at` field are treated as stale immediately.
140
140
141
141
### Security rules
142
142
- Never write `.env` file contents, API keys, credentials, or secrets into any `.tasks/` file.
Copy file name to clipboardExpand all lines: agents/product-engineer.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -135,12 +135,12 @@ EOF
135
135
```
136
136
Using `>>` is atomic at the filesystem level and avoids overwriting prior entries.
137
137
138
-
8.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
138
+
9.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
139
139
140
-
9.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
140
+
10.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
141
141
142
142
### Stuck task recovery
143
-
If a phase has been `IN_PROGRESS` for over 30 minutes with no new execution-log entries, a planner may reset it to `TODO` for reassignment.
143
+
Stale recovery is now handled automatically by step 3 of the executor workflow. Every agent that activates will reset phases that have been IN_PROGRESS for over 30 minutes (based on `claimed_at` timestamp). Phases without a `claimed_at` field are treated as stale immediately.
144
144
145
145
### Security rules
146
146
- Never write `.env` file contents, API keys, credentials, or secrets into any `.tasks/` file.
Copy file name to clipboardExpand all lines: agents/qa-architect.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -140,12 +140,12 @@ EOF
140
140
```
141
141
Using `>>` is atomic at the filesystem level and avoids overwriting prior entries.
142
142
143
-
8.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
143
+
9.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
144
144
145
-
9.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
145
+
10.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
146
146
147
147
### Stuck task recovery
148
-
If a phase has been `IN_PROGRESS` for over 30 minutes with no new execution-log entries, a planner may reset it to `TODO` for reassignment.
148
+
Stale recovery is now handled automatically by step 3 of the executor workflow. Every agent that activates will reset phases that have been IN_PROGRESS for over 30 minutes (based on `claimed_at` timestamp). Phases without a `claimed_at` field are treated as stale immediately.
149
149
150
150
### Security rules
151
151
- Never write `.env` file contents, API keys, credentials, or secrets into any `.tasks/` file.
Copy file name to clipboardExpand all lines: agents/qa-engineer.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -127,12 +127,12 @@ EOF
127
127
```
128
128
Using `>>` is atomic at the filesystem level and avoids overwriting prior entries.
129
129
130
-
8.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
130
+
9.**Block:** If you cannot proceed, edit the phase to `status: BLOCKED` and append explanation to execution-log.md via the same `>>` pattern.
131
131
132
-
9.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
132
+
10.**Idle:** If no phases match your persona with TODO status (and prior phases DONE), report "No active tasks found for @<persona>" and stop.
133
133
134
134
### Stuck task recovery
135
-
If a phase has been `IN_PROGRESS` for over 30 minutes with no new execution-log entries, a planner may reset it to `TODO` for reassignment.
135
+
Stale recovery is now handled automatically by step 3 of the executor workflow. Every agent that activates will reset phases that have been IN_PROGRESS for over 30 minutes (based on `claimed_at` timestamp). Phases without a `claimed_at` field are treated as stale immediately.
136
136
137
137
### Security rules
138
138
- Never write `.env` file contents, API keys, credentials, or secrets into any `.tasks/` file.
0 commit comments