8 Commits
Author SHA1 Message Date
Tirsvad 77f91cf066 Give the C++ and C# workflows a timeout and an exact checkout tag
TirSystem/github-action: Publish wiki / publish-wiki (push) Skipped
TirSystem/github-action: Sync GitHub mirror metadata / sync-metadata (push) Skipped
Validate workflows / validate (pull_request) Successful in 23s
Task: MIL-007#4

Task: MIL-007#5
2026-10-11 16:20:13 +08:00
Tirsvad acbfe967e0 Add the reusable quality-check workflows for C++ and C#
Task: MIL-007#4

Task: MIL-007#5
2026-10-11 16:19:45 +08:00
Tirsvad 8096fe42d0 Merge pull request 'Adopt framework v0.6.0 and call the shared script from the publish workflow' (#112) from adopt-framework-0.6.0 into main
TirSystem/github-action: Publish wiki / publish-wiki (push) Skipped
Validate workflows / validate (push) Successful in 21s
TirSystem/github-action: Sync GitHub mirror metadata / sync-metadata (push) Successful in 7s
Reviewed-on: #112
2026-10-11 07:20:39 +02:00
Tirsvad 4f073779b7 Adopt framework v0.6.0 and call the shared script from the publish workflow
TirSystem/github-action: Publish wiki / publish-wiki (push) Skipped
TirSystem/github-action: Sync GitHub mirror metadata / sync-metadata (push) Skipped
Validate workflows / validate (pull_request) Successful in 21s
- framework moves from v0.5.2 to v0.6.0 (QC-YML-001, QC-WF-001, the YAML
  convention, the qc/artifacts and qc/code folders, autonomous mode, the CI
  publish script).
- .gitea/workflows/sync-milestones.yml: the two run blocks of six lines call
  framework/scripts/ci-publish-milestones.sh (ensure-tools, publish); QC-WF-001
  criterion 20. Same behaviour.
- CHANGELOG.md, Unreleased, Changed.

Tests 305 passed; changelog check passes; the wiki build writes 0 pages.
2026-10-11 13:20:01 +08:00
Tirsvad aecc1a37c5 Merge pull request 'Add the related repositories to AGENTS.md' (#111) from related-repositories into main
TirSystem/github-action: Publish wiki / publish-wiki (push) Skipped
Validate workflows / validate (push) Successful in 18s
TirSystem/github-action: Sync GitHub mirror metadata / sync-metadata (push) Successful in 5s
Reviewed-on: #111
2026-10-11 07:03:38 +02:00
Tirsvad 8433a15e95 Add the related repositories to AGENTS.md
TirSystem/github-action: Publish wiki / publish-wiki (push) Skipped
TirSystem/github-action: Sync GitHub mirror metadata / sync-metadata (push) Skipped
Validate workflows / validate (pull_request) Successful in 17s
A short section naming the four repositories that change together (the
checklists, the framework, github-action and sqa-and-qc), what each owns,
where a thing lives, and the rules for a change that spans repositories:
one pull request per repository in dependency order, pins only to merged
commits or tags, releases as a separate step, and the related repository
named in the plan before an autonomous run works in it.
2026-10-11 12:59:04 +08:00
Tirsvad 6393476fe1 Merge pull request 'Add timeouts to every job and pin actions/checkout to an exact tag' (#109) from workflow-timeouts-and-pins into main
TirSystem/github-action: Publish wiki / publish-wiki (push) Skipped
Validate workflows / validate (push) Successful in 20s
TirSystem/github-action: Sync GitHub mirror metadata / sync-metadata (push) Successful in 5s
Reviewed-on: #109
2026-10-11 06:53:52 +02:00
Tirsvad 1bad75c367 Add timeouts to every job and pin actions/checkout to an exact tag
TirSystem/github-action: Publish wiki / publish-wiki (push) Skipped
TirSystem/github-action: Sync GitHub mirror metadata / sync-metadata (push) Skipped
Validate workflows / validate (pull_request) Successful in 18s
Findings of QC-WF-001 (criteria 8 and 14) applied to the workflows of this
repository and to the two scoped workflows:

- timeout-minutes on every job: quality-checks 15, release 15,
  validate-workflows 10, sync-milestones 15, publish-wiki 10,
  sync-github-metadata 5.
- actions/checkout@v4 becomes actions/checkout@v4.2.2.

No change to inputs, secrets or behaviour. The 6-line run blocks of
sync-milestones.yml move to a script in the framework in a separate change.
2026-10-11 12:49:24 +08:00
11 changed files with 77 additions and 27 deletions
+3 -2
View File
@@ -23,12 +23,13 @@ jobs:
permissions:
contents: read
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Check out the repository
uses: actions/checkout@v4
uses: actions/checkout@v4.2.2
- name: Fetch the shared script
uses: actions/checkout@v4
uses: actions/checkout@v4.2.2
with:
repository: TirSystem/github-action
ref: v1
@@ -16,9 +16,10 @@ jobs:
permissions:
contents: read
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Fetch the shared script
uses: actions/checkout@v4
uses: actions/checkout@v4.2.2
with:
repository: TirSystem/github-action
ref: v1
+3 -2
View File
@@ -43,6 +43,7 @@ jobs:
permissions:
contents: read
runs-on: ubuntu-latest
timeout-minutes: 15
env:
WORKING_DIRECTORY: ${{ inputs.working-directory }}
STD: ${{ inputs.std }}
@@ -52,10 +53,10 @@ jobs:
QC_VENV: /tmp/quality-tools
steps:
- name: Check out the repository
uses: actions/checkout@v4
uses: actions/checkout@v4.2.2
- name: Fetch the shared script
uses: actions/checkout@v4
uses: actions/checkout@v4.2.2
with:
repository: TirSystem/github-action
ref: ${{ inputs.tools-ref }}
+3 -2
View File
@@ -34,6 +34,7 @@ jobs:
permissions:
contents: read
runs-on: ubuntu-latest
timeout-minutes: 15
env:
WORKING_DIRECTORY: ${{ inputs.working-directory }}
PROJECT: ${{ inputs.project }}
@@ -41,10 +42,10 @@ jobs:
DOTNET_ROOT: /tmp/dotnet
steps:
- name: Check out the repository
uses: actions/checkout@v4
uses: actions/checkout@v4.2.2
- name: Fetch the shared script
uses: actions/checkout@v4
uses: actions/checkout@v4.2.2
with:
repository: TirSystem/github-action
ref: ${{ inputs.tools-ref }}
+3 -2
View File
@@ -45,6 +45,7 @@ jobs:
permissions:
contents: read
runs-on: ubuntu-latest
timeout-minutes: 15
env:
LANGUAGES: ${{ inputs.languages }}
WORKING_DIRECTORY: ${{ inputs.working-directory }}
@@ -55,10 +56,10 @@ jobs:
QC_VENV: /tmp/quality-tools
steps:
- name: Check out the repository
uses: actions/checkout@v4
uses: actions/checkout@v4.2.2
- name: Fetch the shared script
uses: actions/checkout@v4
uses: actions/checkout@v4.2.2
with:
repository: TirSystem/github-action
ref: ${{ inputs.tools-ref }}
+2 -1
View File
@@ -26,9 +26,10 @@ jobs:
permissions:
contents: write
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Check out the repository
uses: actions/checkout@v4
uses: actions/checkout@v4.2.2
- name: Check and publish the release
env:
+4 -15
View File
@@ -45,9 +45,10 @@ jobs:
permissions:
contents: read
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Check out the project
uses: actions/checkout@v4
uses: actions/checkout@v4.2.2
with:
token: ${{ secrets.TOKEN_FOR_GITEA }}
@@ -67,23 +68,11 @@ jobs:
git submodule update --init --recursive --depth=1
- name: Make sure curl and jq are available
run: |
set -euo pipefail
if command -v curl >/dev/null && command -v jq >/dev/null; then exit 0; fi
sudo_cmd=""
if [ "$(id -u)" -ne 0 ]; then sudo_cmd="sudo"; fi
$sudo_cmd apt-get update -qq
$sudo_cmd apt-get install -y -qq curl jq
run: bash framework/scripts/ci-publish-milestones.sh ensure-tools
- name: Publish accepted milestones
env:
GITEA_TOKEN: ${{ secrets.TOKEN_FOR_GITEA }}
# Empty on a push (a real run); "true" or "false" on a manual run.
DRY_RUN: ${{ inputs.dry_run }}
run: |
set -euo pipefail
if [ "$DRY_RUN" = "true" ]; then
bash framework/scripts/sync-project.sh --accepted-only
else
bash framework/scripts/sync-project.sh --accepted-only --apply
fi
run: bash framework/scripts/ci-publish-milestones.sh publish
+2 -1
View File
@@ -11,9 +11,10 @@ jobs:
permissions:
contents: read
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Check out the repository
uses: actions/checkout@v4
uses: actions/checkout@v4.2.2
- name: Create a virtual environment and install test dependencies
run: |
+43
View File
@@ -15,6 +15,49 @@ framework.
the working tree first; edit, summarise and stop. The commit/PR rules below
apply once a commit has been asked for.
## Related repositories
This project is one of four repositories that change together. Each has one
job; a change goes to the repository that owns it, not to the one that happens
to be open.
| Repository | Owns | Consumed by | Pinned or released as |
| --- | --- | --- | --- |
| `TirSystem/SQA-QC-Checklists` | the QC checklists (`qc/artifacts/`, `qc/code/`) | `sqa-qc-framework` | a commit, pinned as the `qc/` submodule |
| `TirSystem/sqa-qc-framework` | the skills, process documents, catalog, templates (`templates/ci/`) and scripts | every project, as the `framework/` submodule | a release tag (`v0.5.2`, ...) |
| `TirSystem/github-action` | the shared workflows (`quality-checks`, `release`), the scoped workflows (`publish-wiki`, `sync-github-metadata`) and the scripts they call (`tools/`) | every repository of the organisation, by `uses:` and `ref:` | a release tag and a moving major tag (`v1`), made by its release workflow |
| `TirSystem/sqa-and-qc` | the SQA and AI project management: project artifacts, review records, the traceability matrix | itself | the pull request that merges it |
Where a thing lives:
- A QC checklist, a convention or a template is changed in its owner above and
reaches this project by moving the pin. The review record of a checklist is
written in the project that reviews it (`docs/sqa/reviews/`), not in the
checklist repository.
- A workflow that other repositories call is changed in `github-action` and
released there. A workflow a project copies from `templates/ci/` is changed
in the framework; the project updates its copy after the pin moves.
- A script a workflow needs is a file (`tools/` of `github-action`, or
`scripts/` of the framework for the templates), never a long `run:` block
(`QC-WF-001` criterion 20).
- The `framework/` pin here is independent of the one in `sqa-and-qc`; the two
may differ, and neither is moved to follow the other without a reason in
the pull request.
A change that spans repositories:
1. One pull request per repository, in dependency order: checklists, then
framework, then `github-action` and the projects. A pull request names the
ones it depends on in its description.
2. A downstream repository moves a pin only to a merged commit or tag of the
upstream, never to an unmerged branch.
3. Nothing is released or tagged until its dependencies are merged; a release
is a separate, deliberate step (the release workflow defaults to a dry run).
4. A related repository is added to the session as a working directory only
when the task needs it. In autonomous mode work in a related repository is
inside the accepted plan only if the plan names it; otherwise the run stops
and reports.
## Workflow order
Business Case, Stakeholder Analysis, Project Plan, milestones, tasks synced as
+11
View File
@@ -32,6 +32,17 @@ Each release lists its changes in these groups, in this order:
or later (input `dotnet-sdk-version`, default `10.0.401`), with the inputs
`working-directory`, `project` and `tools-ref`.
### Changed
- Every job has a `timeout-minutes` (5 to 15), so a hung step no longer holds a
runner for the host's default limit.
- `actions/checkout` is referenced by the exact tag `v4.2.2` instead of the
moving tag `v4`. No change for callers.
- The framework pin moves from `v0.5.2` to `v0.6.0`, and the two long `run:`
blocks of this repository's own `sync-milestones.yml` call
`framework/scripts/ci-publish-milestones.sh`. No change for callers of the
shared workflows.
## [1.1.0] - 2026-10-11
### Added