Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
d6f11ac
feat: add web_test feature, build_runner support, and enhanced manage…
tsavo-at-pieces Feb 24, 2026
82fbad0
feat: enhanced managed test with full output capture and rich job sum…
tsavo-at-pieces Feb 24, 2026
0b65313
fix: harden web_test validation, extract shared test utils, and expan…
tsavo-at-pieces Feb 24, 2026
32bc1f3
refactor: consolidate test utils into StepSummary, expand render guar…
tsavo-at-pieces Feb 25, 2026
9292802
bot(format): apply dart format --line-length 120 [skip ci]
github-actions[bot] Feb 25, 2026
fe79ee4
fix: address PR review findings — size guard, stream cleanup, path sa…
tsavo-at-pieces Feb 25, 2026
7e14b70
sec: harden input validation, shell escaping, and symlink protection
tsavo-at-pieces Feb 25, 2026
62e9c5a
fix: broaden CI dart formatting and safe staging
tsavo-at-pieces Feb 25, 2026
e4ad440
fix: tighten ci config validation rules
tsavo-at-pieces Feb 25, 2026
d017a20
test: add _preserveUserSections edge cases and feature flag combinati…
tsavo-at-pieces Feb 25, 2026
cf410de
fix: harden CI workflow generation and test execution paths
tsavo-at-pieces Feb 25, 2026
6e04666
fix: harden process execution and runtime config boundaries
tsavo-at-pieces Feb 25, 2026
261466c
fix: standardize Windows pub-cache paths, make artifact retention con…
tsavo-at-pieces Feb 25, 2026
5a98b33
fix: stream test result parsing and harden test command exits
tsavo-at-pieces Feb 25, 2026
b711648
test: broaden workflow generator validation assertions
tsavo-at-pieces Feb 25, 2026
877a146
merge: bring branch up to date with main
tsavo-at-pieces Feb 25, 2026
dcae6c2
bot(format): apply dart format --line-length 120 [skip ci]
github-actions[bot] Feb 25, 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
63 changes: 41 additions & 22 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Generated by runtime_ci_tooling v0.14.0
# Generated by runtime_ci_tooling v0.14.1
# Configured via .runtime_ci/config.json — run 'dart run runtime_ci_tooling:manage_cicd update --workflows' to regenerate.
# Policy: test artifact retention-days = 7 (applied consistently).
name: CI

on:
Expand Down Expand Up @@ -57,15 +58,15 @@ jobs:
sdk: "3.9.2"

- name: Format code
run: dart format --line-length 120 lib/
run: dart format --line-length 120 .

- name: Commit and push formatting
id: format-push
run: |
if ! git diff --quiet; then
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add lib/
git add -u -- '*.dart'
git commit -m "bot(format): apply dart format --line-length 120 [skip ci]"
if git push; then
echo "sha=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
Expand All @@ -92,24 +93,26 @@ jobs:
# ── shared:git-config ── keep in sync with single_platform ──
- name: Configure Git for HTTPS with Token
shell: bash
env:
GH_PAT: ${{ secrets.TSAVO_AT_PIECES_PERSONAL_ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
run: |
TOKEN="${{ secrets.TSAVO_AT_PIECES_PERSONAL_ACCESS_TOKEN || secrets.GITHUB_TOKEN }}"
echo "::add-mask::${TOKEN}"
git config --global url."https://x-access-token:${TOKEN}@github.com/".insteadOf "git@github.com:"
git config --global url."https://x-access-token:${TOKEN}@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://x-access-token:${TOKEN}@github.com/open-runtime/".insteadOf "git@github.com:open-runtime/"
git config --global url."https://x-access-token:${TOKEN}@github.com/pieces-app/".insteadOf "git@github.com:pieces-app/"
echo "::add-mask::${GH_PAT}"
git config --global url."https://x-access-token:${GH_PAT}@github.com/".insteadOf "git@github.com:"
git config --global url."https://x-access-token:${GH_PAT}@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://x-access-token:${GH_PAT}@github.com/open-runtime/".insteadOf "git@github.com:open-runtime/"
git config --global url."https://x-access-token:${GH_PAT}@github.com/pieces-app/".insteadOf "git@github.com:pieces-app/"

# ── shared:dart-setup ── keep in sync with single_platform ──
- uses: dart-lang/setup-dart@v1.7.1
with:
sdk: "3.9.2"

# ── shared:pub-cache ── keep in sync with single_platform ──
# Windows: %LOCALAPPDATA%\Pub\Cache (Dart default). Unix: ~/.pub-cache
- name: Cache Dart pub dependencies
uses: actions/cache@v5.0.3
with:
path: ~/.pub-cache
path: ${{ runner.os == 'Windows' && format('{0}\\Pub\\Cache', env.LOCALAPPDATA) || '~/.pub-cache' }}
key: ${{ runner.os }}-${{ runner.arch }}-dart-pub-${{ hashFiles('**/pubspec.yaml') }}
restore-keys: ${{ runner.os }}-${{ runner.arch }}-dart-pub-

Expand All @@ -119,6 +122,9 @@ jobs:
env:
GIT_LFS_SKIP_SMUDGE: "1"

- name: Run build_runner
run: dart run build_runner build --delete-conflicting-outputs

# ── shared:analysis-cache ── keep in sync with single_platform ──
# ── shared:proto-verify ── keep in sync with single_platform ──
# ── shared:analyze ── keep in sync with single_platform ──
Expand Down Expand Up @@ -150,51 +156,64 @@ jobs:
# ── shared:git-config ── keep in sync with single_platform ──
- name: Configure Git for HTTPS with Token
shell: bash
env:
GH_PAT: ${{ secrets.TSAVO_AT_PIECES_PERSONAL_ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
run: |
TOKEN="${{ secrets.TSAVO_AT_PIECES_PERSONAL_ACCESS_TOKEN || secrets.GITHUB_TOKEN }}"
echo "::add-mask::${TOKEN}"
git config --global url."https://x-access-token:${TOKEN}@github.com/".insteadOf "git@github.com:"
git config --global url."https://x-access-token:${TOKEN}@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://x-access-token:${TOKEN}@github.com/open-runtime/".insteadOf "git@github.com:open-runtime/"
git config --global url."https://x-access-token:${TOKEN}@github.com/pieces-app/".insteadOf "git@github.com:pieces-app/"
echo "::add-mask::${GH_PAT}"
git config --global url."https://x-access-token:${GH_PAT}@github.com/".insteadOf "git@github.com:"
git config --global url."https://x-access-token:${GH_PAT}@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://x-access-token:${GH_PAT}@github.com/open-runtime/".insteadOf "git@github.com:open-runtime/"
git config --global url."https://x-access-token:${GH_PAT}@github.com/pieces-app/".insteadOf "git@github.com:pieces-app/"

# ── shared:dart-setup ── keep in sync with single_platform ──
- uses: dart-lang/setup-dart@v1.7.1
with:
sdk: "3.9.2"

# ── shared:pub-cache ── keep in sync with single_platform ──
# Windows: %LOCALAPPDATA%\Pub\Cache (Dart default). Unix: ~/.pub-cache
- name: Cache Dart pub dependencies
uses: actions/cache@v5.0.3
with:
path: ~/.pub-cache
path: ${{ runner.os == 'Windows' && format('{0}\\Pub\\Cache', env.LOCALAPPDATA) || '~/.pub-cache' }}
key: ${{ runner.os }}-${{ runner.arch }}-dart-pub-${{ hashFiles('**/pubspec.yaml') }}
restore-keys: ${{ runner.os }}-${{ runner.arch }}-dart-pub-

# ── shared:proto-setup ── keep in sync with single_platform ──
# ── shared:pub-get ── keep in sync with single_platform ──
- run: dart pub get
env:
GIT_LFS_SKIP_SMUDGE: "1"

- name: Run build_runner
run: dart run build_runner build --delete-conflicting-outputs

# --- BEGIN USER: pre-test ---
# --- END USER: pre-test ---

# ── shared:test ── keep in sync with single_platform ──
- name: Test
run: dart test
shell: bash
run: |
set -o pipefail
mkdir -p "$TEST_LOG_DIR"
dart run runtime_ci_tooling:manage_cicd test 2>&1 | tee "$TEST_LOG_DIR/console.log"
env:
TEST_LOG_DIR: ${{ runner.temp }}/test-logs
PLATFORM_ID: ${{ matrix.platform_id }}

- name: Upload test artifacts on failure
if: failure()
- name: Upload test logs
if: success() || failure()
uses: actions/upload-artifact@v4
with:
name: test-artifacts-${{ matrix.platform_id }}
name: test-logs-${{ matrix.platform_id }}
path: |
${{ runner.temp }}/test-logs/
test/integration/fixtures/bin/
**/test-results/
retention-days: 7

# --- BEGIN USER: post-test ---
# --- END USER: post-test ---

# --- BEGIN USER: extra-jobs ---
# --- END USER: extra-jobs ---
17 changes: 10 additions & 7 deletions .github/workflows/issue-triage.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,13 @@ jobs:
- name: Configure Git for HTTPS with Token
if: steps.trigger.outputs.run == 'true'
shell: bash
env:
GH_PAT: ${{ secrets.TSAVO_AT_PIECES_PERSONAL_ACCESS_TOKEN || secrets.GITHUB_TOKEN }}
run: |
TOKEN="${{ secrets.TSAVO_AT_PIECES_PERSONAL_ACCESS_TOKEN || secrets.GITHUB_TOKEN }}"
git config --global url."https://x-access-token:${TOKEN}@github.com/".insteadOf "git@github.com:"
git config --global url."https://x-access-token:${TOKEN}@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://x-access-token:${TOKEN}@github.com/open-runtime/".insteadOf "git@github.com:open-runtime/"
git config --global url."https://x-access-token:${TOKEN}@github.com/pieces-app/".insteadOf "git@github.com:pieces-app/"
git config --global url."https://x-access-token:${GH_PAT}@github.com/".insteadOf "git@github.com:"
git config --global url."https://x-access-token:${GH_PAT}@github.com/".insteadOf "ssh://git@github.com/"
git config --global url."https://x-access-token:${GH_PAT}@github.com/open-runtime/".insteadOf "git@github.com:open-runtime/"
git config --global url."https://x-access-token:${GH_PAT}@github.com/pieces-app/".insteadOf "git@github.com:pieces-app/"

- uses: dart-lang/setup-dart@v1.7.1
if: steps.trigger.outputs.run == 'true'
Expand All @@ -66,7 +67,7 @@ jobs:
if: steps.trigger.outputs.run == 'true'
uses: actions/cache@v5.0.3
with:
path: ~/.pub-cache
path: ${{ runner.os == 'Windows' && format('{0}\\Pub\\Cache', env.LOCALAPPDATA) || '~/.pub-cache' }}
key: ${{ runner.os }}-dart-pub-${{ hashFiles('**/pubspec.yaml') }}
restore-keys: ${{ runner.os }}-dart-pub-

Expand All @@ -79,6 +80,7 @@ jobs:
node-version: "22"

- run: npm install -g @google/gemini-cli@latest
if: steps.trigger.outputs.run == 'true'

- name: Cache Go modules (GitHub MCP server)
if: steps.trigger.outputs.run == 'true'
Expand All @@ -93,4 +95,5 @@ jobs:
env:
GEMINI_API_KEY: ${{ secrets.CICD_GEMINI_API_KEY_OPEN_RUNTIME }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: dart run runtime_ci_tooling:triage_cli ${{ github.event.issue.number }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
run: dart run runtime_ci_tooling:triage_cli "$ISSUE_NUMBER"
Loading