From 2481c26d802464decd51d75539157093b60e08e8 Mon Sep 17 00:00:00 2001 From: Jens Tirsvad Nielsen Date: Tue, 13 Oct 2026 12:26:56 +0800 Subject: [PATCH] MIL-007 task 7: adoption in two throwaway repositories, seeded failures verified Results and review (RC-059, autonomous, AI as stand-in for S01) added to the milestone. The guides and their wiki pages now say that clang-tidy and dotnet print absolute paths in the workspace of the runner. Task: MIL-007#7 Closes #101 --- CHANGELOG.md | 6 +++ docs/artifact-registry.md | 2 +- .../mil-007-cpp-csharp-quality-checks.md | 28 ++++++++++- docs/sqa/reviews/rc-059-mil-007-adoption.md | 50 +++++++++++++++++++ docs/sqa/traceability-matrix.md | 8 +-- guides/quality-checks-cpp.md | 4 +- guides/quality-checks-csharp.md | 2 + wiki/QualityChecksCSharp.da.md | 4 +- wiki/QualityChecksCSharp.md | 2 + wiki/QualityChecksCSharp.ms.md | 4 +- wiki/QualityChecksCpp.da.md | 4 +- wiki/QualityChecksCpp.md | 4 +- wiki/QualityChecksCpp.ms.md | 4 +- 13 files changed, 106 insertions(+), 16 deletions(-) create mode 100644 docs/sqa/reviews/rc-059-mil-007-adoption.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 12c488a..d6a2964 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,12 @@ Each release lists its changes in these groups, in this order: ## [Unreleased] +### Changed + +- The C++ and C# guides and their wiki pages say that `clang-tidy` and `dotnet` print + absolute paths in the workspace of the runner (found in the adoption check, + MIL-007 task 7). + ## [1.2.0] - 2026-10-13 ### Added diff --git a/docs/artifact-registry.md b/docs/artifact-registry.md index 0ae85cd..cd4c561 100644 --- a/docs/artifact-registry.md +++ b/docs/artifact-registry.md @@ -11,7 +11,7 @@ each document lives in *this* project and the next version to use. | SA | Stakeholder Analysis | docs/stakeholder-analysis.md | 002 | | PP | Project Plan | docs/project-plan.md | 002 | | MIL | Milestone / Gateway | docs/milestones/*.md | 008 | -| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 059 | +| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 060 | | TM | Traceability Matrix | docs/sqa/traceability-matrix.md | 002 | | ADR | Architecture Decision Record | docs/adr/adr-NNNN-*.md | 0009 | | UCD | Use Case Diagram | docs/use-case-diagram.md | 002 | diff --git a/docs/milestones/mil-007-cpp-csharp-quality-checks.md b/docs/milestones/mil-007-cpp-csharp-quality-checks.md index 1f7030b..995547c 100644 --- a/docs/milestones/mil-007-cpp-csharp-quality-checks.md +++ b/docs/milestones/mil-007-cpp-csharp-quality-checks.md @@ -9,8 +9,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-11 | Deprecated | Jens Tirsvad Nielsen | S01 | Current tool versions only, .NET SDK 10 or later: results of run 699 replace the SDK 8 result; tasks 3 and criterion 1 amended | [7bcc67a] | -| 2026-10-11 | Accepted | Jens Tirsvad Nielsen | S01 | Amendment reviewed (RC-055) and accepted: current tool versions, .NET SDK 10 or later, results of run 699, the contract of ADR-0008 in task 3 | [faf13b2] | +| 2026-10-11 | Deprecated | Jens Tirsvad Nielsen | S01 | Amendment reviewed (RC-055) and accepted: current tool versions, .NET SDK 10 or later, results of run 699, the contract of ADR-0008 in task 3 | [faf13b2] | +| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Task 7 results added and reviewed (RC-059): adoption in two throwaway repositories, seeded failures verified, a guide gap fixed | pending | --- @@ -112,6 +112,30 @@ network), a private runner with no internet, and an image that differs from `ubuntu-latest`. Those belong to the contract (task 3) and to the adoption (task 7). +Task 7 was run on 2026-10-13 in two throwaway private repositories of the +organisation, `TirSystem/qc-adoption-cpp` and `TirSystem/qc-adoption-csharp` +(no real C++ or C# project exists there; the user chose throwaways in chat). +Each holds a small passing project, a style file, and a workflow that calls the +released `v1.2.0` (`quality-checks-cpp.yml`, `quality-checks-csharp.yml`) with +the guide's call. A branch `seeded-failure` with a pull request added a +formatting error and a null dereference. + +| Repository | Baseline on `main` | Seeded failure (pull request 1) | +| --- | --- | --- | +| `qc-adoption-cpp` | Pass (runs 899, 900) | Fail (run 906): `main.cpp:3:13: error: code should be clang-formatted`, `main.cpp:5:18: error: Dereference of null pointer ... [clang-analyzer-core.NullDereference]`, `FAIL clang-format`, `FAIL clang-tidy (C++)`, last line `Quality checks failed: clang-format clang-tidy (C++)` | +| `qc-adoption-csharp` | Pass (runs 901, 902) | Fail: `src/Program.cs(5,3): error WHITESPACE`, `src/Program.cs(8,27): error CS8602`, `FAIL dotnet format --verify-no-changes`, `FAIL dotnet build -warnaserror` | + +Both statuses (`quality` and `quality-checks-cpp` / `quality-checks-csharp`) +appear on the pull requests. One gap in the guides was found and fixed: they +said the paths are relative to `working-directory`, but `clang-tidy` and +`dotnet` print absolute paths in the workspace of the runner. The guides and +their three wiki languages now say so. + +Not covered: a real C++ project with a compile database and a real C# solution +with many packages; both stay open until a project of that kind adopts the +workflows. The throwaway repositories are kept until the user says to delete +them. + --- [BC-001]: ../business-case.md diff --git a/docs/sqa/reviews/rc-059-mil-007-adoption.md b/docs/sqa/reviews/rc-059-mil-007-adoption.md new file mode 100644 index 0000000..33ed291 --- /dev/null +++ b/docs/sqa/reviews/rc-059-mil-007-adoption.md @@ -0,0 +1,50 @@ +# Review Record: MIL-007 (task 7 results) + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-059 | +| CrossReference | [MIL-007], [QC-MIL-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | AI as stand-in for S01 | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [MIL-007] with the verification results of task 7 (adoption in two throwaway repositories, seeded failures) +- Checklist used: [QC-MIL-001] +- Scope: delta re-review of the added results and of Go/No-Go criteria 3 and 4; the earlier record is [RC-055] +- Language and domain: n/a (technical type) +- Language reviewer: none +- Mode: autonomous, not independent (the reviewer is `AI as stand-in for S01`; the user chose the throwaway repositories in chat on 2026-10-13) + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | A concrete deliverable is defined for every gate | Pass | Unchanged. | +| 2 | Explicit Go/No-Go criteria are stated for each gate | Pass | Criterion 3 (tool, file and line in the log) and 4 (status on pull requests) are met for both workflows by runs 906 and the C# run of the same pull request, as the verification results table lists. | +| 3 | Dependencies on other milestones are explicitly mapped | Pass | Unchanged: MIL-003 and MIL-004. | +| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Unchanged: O4, US-001.09, .10, .16, .17. | +| 5 | Milestone owner and approving reviewer are identified | Pass | Owner S05, approving reviewer S01. | +| 6 | Milestone has a defined target date consistent with project constraints | Pass | 2027-01-16, unchanged. | + +## Overall Verdict + +Go - all six criteria pass. Criteria 3 and 4 of the milestone are verified on throwaway repositories only; a real project with a compile database or many packages is still open and is said so in the results. S01 is stood in for by the AI as the user chose autonomous mode; there is no independent reader, and the decision stays open to challenge. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| Decide whether to delete `TirSystem/qc-adoption-cpp` and `TirSystem/qc-adoption-csharp`, and adopt the workflows in a real C++ and C# project | S05 | before the milestone closes | + +--- + +[MIL-007]: ../../milestones/mil-007-cpp-csharp-quality-checks.md +[RC-055]: ./rc-055-mil-007-amendment.md +[QC-MIL-001]: ../../../framework/qc/qc-milestones-gateways.md diff --git a/docs/sqa/traceability-matrix.md b/docs/sqa/traceability-matrix.md index 4a187d8..888dbe8 100644 --- a/docs/sqa/traceability-matrix.md +++ b/docs/sqa/traceability-matrix.md @@ -4,13 +4,13 @@ | Key | Value | | --- | --- | | ID | TM-001 | -| CrossReference | [BC-001], [SA-001], [PP-001], [MIL-001], [MIL-002], [MIL-003], [MIL-004], [MIL-005], [MIL-006], [MIL-007], [RC-001], [RC-002], [RC-003], [RC-004], [RC-005], [RC-006], [RC-007], [RC-008], [RC-009], [RC-010], [RC-011], [RC-012], [RC-013], [RC-014], [RC-015], [RC-016], [RC-017], [RC-018], [RC-019], [RC-020], [RC-021], [RC-022], [RC-023], [RC-024], [RC-025], [RC-026], [RC-027], [RC-028], [RC-029], [RC-030], [RC-031], [RC-032], [RC-033], [RC-034], [RC-035], [RC-036], [RC-037], [RC-038], [RC-039], [RC-040], [RC-041], [RC-042], [RC-043], [RC-044], [RC-045], [RC-046], [RC-047], [RC-048], [RC-049], [RC-050], [RC-051], [RC-052], [RC-053], [RC-054], [RC-055], [RC-056], [RC-057], [RC-058], [ADR-0007], [ADR-0008], [UC-007], [UC-006], [ADR-0006], [UC-005], [ADR-0005], [UCD-001], [US-001], [UC-001], [UC-002], [UC-003], [UC-004], [ADR-0001], [ADR-0002], [ADR-0003], [ADR-0004] | +| CrossReference | [BC-001], [SA-001], [PP-001], [MIL-001], [MIL-002], [MIL-003], [MIL-004], [MIL-005], [MIL-006], [MIL-007], [RC-001], [RC-002], [RC-003], [RC-004], [RC-005], [RC-006], [RC-007], [RC-008], [RC-009], [RC-010], [RC-011], [RC-012], [RC-013], [RC-014], [RC-015], [RC-016], [RC-017], [RC-018], [RC-019], [RC-020], [RC-021], [RC-022], [RC-023], [RC-024], [RC-025], [RC-026], [RC-027], [RC-028], [RC-029], [RC-030], [RC-031], [RC-032], [RC-033], [RC-034], [RC-035], [RC-036], [RC-037], [RC-038], [RC-039], [RC-040], [RC-041], [RC-042], [RC-043], [RC-044], [RC-045], [RC-046], [RC-047], [RC-048], [RC-049], [RC-050], [RC-051], [RC-052], [RC-053], [RC-054], [RC-055], [RC-056], [RC-057], [RC-058], [RC-059], [ADR-0007], [ADR-0008], [UC-007], [UC-006], [ADR-0006], [UC-005], [ADR-0005], [UCD-001], [US-001], [UC-001], [UC-002], [UC-003], [UC-004], [ADR-0001], [ADR-0002], [ADR-0003], [ADR-0004] | ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-11 | Deprecated | Jens Tirsvad Nielsen | S01 | Added RC-056 and RC-057 (UC-005 and US-001 for C++ and C#) | [1bc56f8] | | 2026-10-13 | Proposed | Jens Tirsvad Nielsen | S01 | Added RC-058 (MIL-006 task 6 amendment) | [8051cc4] | +| 2026-10-13 | Proposed | Jens Tirsvad Nielsen | S01 | Added RC-059 (MIL-007 task 7 results) | pending | --- @@ -39,7 +39,7 @@ updated whenever an artifact instance is created or reviewed. | [RC-006] | RC | [MIL-003] | - | - | | [MIL-005] | MIL | [BC-001], [PP-001], [MIL-002] | [MIL-006] | [RC-010], [RC-011], [RC-030], [RC-050] | | [MIL-006] | MIL | [BC-001], [PP-001], [MIL-002], [MIL-005] | - | [RC-016], [RC-031], [RC-049], [RC-058] | -| [MIL-007] | MIL | [BC-001], [PP-001], [MIL-003], [MIL-004], [ADR-0008] | - | [RC-052], [RC-055] | +| [MIL-007] | MIL | [BC-001], [PP-001], [MIL-003], [MIL-004], [ADR-0008] | - | [RC-052], [RC-055], [RC-059] | | [RC-007] | RC | [MIL-004] | - | - | | [RC-008] | RC | [BC-001] | - | - | | [RC-009] | RC | [PP-001] | - | - | @@ -109,6 +109,7 @@ updated whenever an artifact instance is created or reviewed. | [RC-056] | RC | [UC-005] | - | - | | [RC-057] | RC | [US-001] | - | - | | [RC-058] | RC | [MIL-006] | - | - | +| [RC-059] | RC | [MIL-007] | - | - | ## Coverage Notes @@ -197,6 +198,7 @@ updated whenever an artifact instance is created or reviewed. [RC-056]: ./reviews/rc-056-uc-005-cpp-csharp.md [RC-057]: ./reviews/rc-057-us-001-cpp-csharp.md [RC-058]: ./reviews/rc-058-mil-006-task-6.md +[RC-059]: ./reviews/rc-059-mil-007-adoption.md [ADR-0008]: ../adr/adr-0008-cpp-csharp-quality-check-contract.md [ADR-0007]: ../adr/adr-0007-release-publish-destination.md [UC-007]: ../uc-007/uc.md diff --git a/guides/quality-checks-cpp.md b/guides/quality-checks-cpp.md index f4f1f20..68bef34 100644 --- a/guides/quality-checks-cpp.md +++ b/guides/quality-checks-cpp.md @@ -70,7 +70,9 @@ package, and old tools are not run (ADR-0008). 3. A tool ends with `PASS ` or `FAIL `; the last line of a failed run names them: `Quality checks failed: clang-format`. 4. A finding is written by the tool itself as `path:line:column: message`. - Paths are relative to `working-directory`. + `clang-format` prints paths relative to `working-directory`; `clang-tidy` + prints absolute paths in the workspace of the runner + (`/workspace///main.cpp:5:18`). ## Typical failures and fixes diff --git a/guides/quality-checks-csharp.md b/guides/quality-checks-csharp.md index ed4555a..e4243cb 100644 --- a/guides/quality-checks-csharp.md +++ b/guides/quality-checks-csharp.md @@ -67,6 +67,8 @@ a notice. Project tests are not run. run names them: `Quality checks failed: dotnet format --verify-no-changes`. 4. A finding is written by the tool itself as `path(line,column): CODE message`. + The path is absolute in the workspace of the runner + (`/workspace///src/Program.cs(8,27)`). ## Typical failures and fixes diff --git a/wiki/QualityChecksCSharp.da.md b/wiki/QualityChecksCSharp.da.md index c1aa955..3b7b668 100644 --- a/wiki/QualityChecksCSharp.da.md +++ b/wiki/QualityChecksCSharp.da.md @@ -1,4 +1,4 @@ - + > Dette er en oversættelse af [`QualityChecksCSharp`](QualityChecksCSharp). Den engelske side er autoritativ, og ændringer her bliver overskrevet, næste gang wikien publiceres. @@ -56,7 +56,7 @@ Usporede filer kontrolleres ikke. Et repository uden `*.cs`-filer består med en 1. Åbn statuskontrollen på pull requesten og derefter jobbet `quality-checks-csharp`. 2. Hvert værktøj har sin egen logggruppe. Begge kører, selv om det første fejlede, så én kørsel viser alle fund. 3. Et værktøj ender med `PASS ` eller `FAIL `; sidste linje i en mislykket kørsel nævner dem: `Quality checks failed: dotnet format --verify-no-changes`. -4. Et fund skrives af værktøjet selv som `path(line,column): CODE message`. +4. Et fund skrives af værktøjet selv som `path(line,column): CODE message`. Stien er absolut i runnerens arbejdsområde (`/workspace///src/Program.cs(8,27)`). ## Typiske fejl og rettelser diff --git a/wiki/QualityChecksCSharp.md b/wiki/QualityChecksCSharp.md index 1b3bec7..8b39ef3 100644 --- a/wiki/QualityChecksCSharp.md +++ b/wiki/QualityChecksCSharp.md @@ -73,6 +73,8 @@ a notice. Project tests are not run. run names them: `Quality checks failed: dotnet format --verify-no-changes`. 4. A finding is written by the tool itself as `path(line,column): CODE message`. + The path is absolute in the workspace of the runner + (`/workspace///src/Program.cs(8,27)`). ## Typical failures and fixes diff --git a/wiki/QualityChecksCSharp.ms.md b/wiki/QualityChecksCSharp.ms.md index 3e7d4d5..15564d6 100644 --- a/wiki/QualityChecksCSharp.ms.md +++ b/wiki/QualityChecksCSharp.ms.md @@ -1,4 +1,4 @@ - + > Ini ialah terjemahan [`QualityChecksCSharp`](QualityChecksCSharp). Halaman bahasa Inggeris ialah teks yang sah, dan perubahan di sini akan ditimpa pada penerbitan wiki yang seterusnya. @@ -56,7 +56,7 @@ Fail yang tidak dijejaki tidak disemak. Repositori tanpa fail `*.cs` lulus denga 1. Buka semakan status pada pull request, kemudian kerja `quality-checks-csharp`. 2. Setiap alat mempunyai kumpulan lognya sendiri. Kedua-duanya dijalankan walaupun yang pertama gagal, jadi satu larian menunjukkan semua dapatan. 3. Satu alat berakhir dengan `PASS ` atau `FAIL `; baris terakhir larian yang gagal menamakannya: `Quality checks failed: dotnet format --verify-no-changes`. -4. Satu dapatan ditulis oleh alat itu sendiri sebagai `path(line,column): CODE message`. +4. Satu dapatan ditulis oleh alat itu sendiri sebagai `path(line,column): CODE message`. Laluan itu mutlak dalam ruang kerja runner (`/workspace///src/Program.cs(8,27)`). ## Kegagalan biasa dan pembetulan diff --git a/wiki/QualityChecksCpp.da.md b/wiki/QualityChecksCpp.da.md index 52683d8..8c826ce 100644 --- a/wiki/QualityChecksCpp.da.md +++ b/wiki/QualityChecksCpp.da.md @@ -1,4 +1,4 @@ - + > Dette er en oversættelse af [`QualityChecksCpp`](QualityChecksCpp). Den engelske side er autoritativ, og ændringer her bliver overskrevet, næste gang wikien publiceres. @@ -58,7 +58,7 @@ Usporede filer kontrolleres ikke. Et repository uden disse filer består med en 1. Åbn statuskontrollen på pull requesten og derefter jobbet `quality-checks-cpp`. 2. Hvert værktøj har sin egen logggruppe. Alle værktøjer kører, selv om et tidligere fejlede, så én kørsel viser alle fund. 3. Et værktøj ender med `PASS ` eller `FAIL `; sidste linje i en mislykket kørsel nævner dem: `Quality checks failed: clang-format`. -4. Et fund skrives af værktøjet selv som `path:line:column: message`. Stier er relative til `working-directory`. +4. Et fund skrives af værktøjet selv som `path:line:column: message`. `clang-format` skriver stier relative til `working-directory`; `clang-tidy` skriver absolutte stier i runnerens arbejdsområde (`/workspace///main.cpp:5:18`). ## Typiske fejl og rettelser diff --git a/wiki/QualityChecksCpp.md b/wiki/QualityChecksCpp.md index 9aa14a9..470b052 100644 --- a/wiki/QualityChecksCpp.md +++ b/wiki/QualityChecksCpp.md @@ -76,7 +76,9 @@ package, and old tools are not run (ADR-0008). 3. A tool ends with `PASS ` or `FAIL `; the last line of a failed run names them: `Quality checks failed: clang-format`. 4. A finding is written by the tool itself as `path:line:column: message`. - Paths are relative to `working-directory`. + `clang-format` prints paths relative to `working-directory`; `clang-tidy` + prints absolute paths in the workspace of the runner + (`/workspace///main.cpp:5:18`). ## Typical failures and fixes diff --git a/wiki/QualityChecksCpp.ms.md b/wiki/QualityChecksCpp.ms.md index 8bad26b..91506c0 100644 --- a/wiki/QualityChecksCpp.ms.md +++ b/wiki/QualityChecksCpp.ms.md @@ -1,4 +1,4 @@ - + > Ini ialah terjemahan [`QualityChecksCpp`](QualityChecksCpp). Halaman bahasa Inggeris ialah teks yang sah, dan perubahan di sini akan ditimpa pada penerbitan wiki yang seterusnya. @@ -58,7 +58,7 @@ Fail yang tidak dijejaki tidak disemak. Repositori tanpa fail ini lulus dengan s 1. Buka semakan status pada pull request, kemudian kerja `quality-checks-cpp`. 2. Setiap alat mempunyai kumpulan lognya sendiri. Setiap alat dijalankan walaupun yang terdahulu gagal, jadi satu larian menunjukkan semua dapatan. 3. Satu alat berakhir dengan `PASS ` atau `FAIL `; baris terakhir larian yang gagal menamakannya: `Quality checks failed: clang-format`. -4. Satu dapatan ditulis oleh alat itu sendiri sebagai `path:line:column: message`. Laluan relatif kepada `working-directory`. +4. Satu dapatan ditulis oleh alat itu sendiri sebagai `path:line:column: message`. `clang-format` menulis laluan relatif kepada `working-directory`; `clang-tidy` menulis laluan mutlak dalam ruang kerja runner (`/workspace///main.cpp:5:18`). ## Kegagalan biasa dan pembetulan