From 8c2c52ebd2a27e4d0edb4008c31c002718d280fb Mon Sep 17 00:00:00 2001 From: Jens Tirsvad Nielsen Date: Tue, 13 Oct 2026 23:32:39 +0800 Subject: [PATCH] ADR-0009 and RC-063: review and acceptance RC-063 reviews ADR-0009 against QC-ADR-001: three findings fixed (stale verification statement, security impact named, product owner spelled out). S01 gave the Go in chat on 2026-10-13; ADR-0009 and RC-063 are Accepted. --- ...-0009-wiki-publishing-reusable-workflow.md | 18 ++++-- docs/artifact-registry.md | 2 +- docs/sqa/reviews/rc-063-adr-0009.md | 55 +++++++++++++++++++ docs/sqa/traceability-matrix.md | 9 ++- 4 files changed, 76 insertions(+), 8 deletions(-) create mode 100644 docs/sqa/reviews/rc-063-adr-0009.md diff --git a/docs/adr/adr-0009-wiki-publishing-reusable-workflow.md b/docs/adr/adr-0009-wiki-publishing-reusable-workflow.md index a5383ff..08834ee 100644 --- a/docs/adr/adr-0009-wiki-publishing-reusable-workflow.md +++ b/docs/adr/adr-0009-wiki-publishing-reusable-workflow.md @@ -9,7 +9,8 @@ ## Version History | Date | Status | Author | Reviewer | Change | Commit | | --- | --- | --- | --- | --- | --- | -| 2026-10-13 | Proposed | Jens Tirsvad Nielsen | S01 | Initial version | [01b9c29] | +| 2026-10-13 | Deprecated | Jens Tirsvad Nielsen | S01 | Initial version | [01b9c29] | +| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | S01 | Review findings fixed (RC-063): the product owner's language is spelled out, the security consequence is named, and the secret passing is recorded as verified | pending | Allowed Status values: `Proposed`, `Accepted`, `Rejected`, `Deprecated`, `Superseded by ADR-NNNN`. @@ -22,7 +23,8 @@ repository of an organisation, and a marker file `wiki/.publish` is the opt-in. That avoids a copy of the workflow, but it runs where nobody asked for it and needs a safety gate for that reason; its trigger path (`wiki/**`) and the version of the script (`v1`) are fixed centrally. The framework now prescribes -the wiki in `docs/wiki/` with English and the PO language as a minimum, and +the wiki in `docs/wiki/` with English and the product owner's language as a +minimum, and repositories need to say where their wiki is. Options: @@ -61,6 +63,9 @@ The rules that follow from it: to `docs/wiki/` one repository at a time. - Opting in is a file in the repository, reviewed in a pull request, and a repository without a caller is never written to. +- Security: the token is passed explicitly by the caller and is never + inherited or taken from a fallback, so a repository that does not pass it + cannot write a wiki. - One call convention for every shared workflow of this repository. **Negative:** @@ -74,8 +79,13 @@ The rules that follow from it: their migrations. - The owner chose a patch release (1.2.2) for this change although a new workflow is a minor one under [ADR-0006]; the changelog states the deviation. -- Passing a declared secret through `workflow_call` is not yet verified on this - Gitea instance; it is checked by the first call, in this repository. +- Anyone who can change the caller file of a repository can change the folder + and `prune`, and so what the token deletes in that repository's wiki; this is + the same exposure as the marker had, and it is reviewed through the pull + request that changes the caller. +- Passing a declared secret through `workflow_call`, and a local `uses:` call, + were verified on this Gitea instance by run 316 of this repository on + 2026-10-13. ## Affected Artifacts diff --git a/docs/artifact-registry.md b/docs/artifact-registry.md index f4ff96d..4a3e822 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 | 009 | -| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 063 | +| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 064 | | TM | Traceability Matrix | docs/sqa/traceability-matrix.md | 002 | | ADR | Architecture Decision Record | docs/adr/adr-NNNN-*.md | 0010 | | UCD | Use Case Diagram | docs/use-case-diagram.md | 002 | diff --git a/docs/sqa/reviews/rc-063-adr-0009.md b/docs/sqa/reviews/rc-063-adr-0009.md new file mode 100644 index 0000000..43ccff4 --- /dev/null +++ b/docs/sqa/reviews/rc-063-adr-0009.md @@ -0,0 +1,55 @@ +# Review Record: ADR-0009 Wiki publishing as a reusable workflow + +## Metadata +| Key | Value | +| --- | --- | +| ID | RC-063 | +| CrossReference | [ADR-0009], [QC-ADR-001] | + +## Version History +| Date | Status | Author | Reviewer | Change | Commit | +| --- | --- | --- | --- | --- | --- | +| 2026-10-13 | Accepted | Jens Tirsvad Nielsen | S01 | Initial version | pending | + +--- + +## Artifact Under Review + +- Instance reviewed: [ADR-0009] +- Checklist used: [QC-ADR-001] +- Scope: full review +- Language and domain: n/a (technical type) +- Mode: supervised (the AI prepared the record; S01, the user, gave the Go in chat on 2026-10-13) + +## Checklist Results + +| # | Criterion | Status | Evidence/Notes | +| --- | --- | --- | --- | +| 1 | The ID (`ADR-NNNN`, 4-digit) matches the filename number and is unique and sequential | Pass | ADR-0009 in `adr-0009-wiki-publishing-reusable-workflow.md`; follows ADR-0008. | +| 2 | Context states the problem, the forces (cost, risk, constraints) and the options evaluated | Pass | Names the scoped delivery, its gate, the fixed trigger path and version, and the new folder rule. | +| 3 | At least two options were considered, or the absence of alternatives is justified | Pass | Two options: keep the scoped workflow and read both folders, or a reusable workflow. | +| 4 | Decision is stated in one or two unhedged sentences and matches one of the evaluated options | Pass | Two sentences; matches option 2. The rules below it add detail only. | +| 5 | Consequences list both Positive and Negative outcomes | Pass | Finding fixed during this review: the consequence "passing a declared secret is not yet verified" was out of date, because run 316 verified it on 2026-10-13. It now says so. Four positive and four negative outcomes. | +| 6 | Quality-attribute impacts (performance, security, portability, etc.) are named where the decision affects them | Pass | Finding fixed during this review: the security impact was implicit. A positive bullet (explicit secret, no fallback) and a negative bullet (whoever changes the caller changes the folder and `prune`) were added. | +| 7 | Affected Artifacts are listed as links, and each is also in CrossReference | Pass | MIL-008 and ADR-0004 are linked and cited. | +| 8 | Status changes are recorded as new Version History rows with a Change summary and Commit link; retained rows are never rewritten | Pass | The findings fix is a new row; the first row is kept unchanged. | +| 9 | A superseded or deprecated ADR names its successor, and the successor links back | N-A | ADR-0004 is superseded only in part and stays in force until the scoped workflow is removed; see the action item. | +| 10 | Written in business or technical language of the domain, with no unexplained abbreviations | Pass | Finding fixed during this review: "PO language" is now "the product owner's language". | +| 11 | Status is one of `Proposed`, `Accepted`, `Rejected`, `Deprecated` or `Superseded by ADR-NNNN`, and every Version History row uses only these | Pass | `Proposed` only. | + +## Overall Verdict + +Go - all applicable criteria pass; the three findings (criteria 5, 6 and 10) were fixed during the review. S01 gave the Go in chat on 2026-10-13; there is no independent reader. + +## Action Items + +| Action | Owner | Due | +| --- | --- | --- | +| When the scoped workflow is removed, mark ADR-0004 superseded by ADR-0009 for the delivery and marker parts (new version row and review record) | S01 | the follow-up milestone | + +--- + +--- + +[ADR-0009]: ../../adr/adr-0009-wiki-publishing-reusable-workflow.md +[QC-ADR-001]: ../../../framework/qc/artifacts/qc-adr.md diff --git a/docs/sqa/traceability-matrix.md b/docs/sqa/traceability-matrix.md index b8f0c87..c3be452 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], [MIL-008], [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], [RC-060], [RC-061], [RC-062], [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], [MIL-008], [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], [RC-060], [RC-061], [RC-062], [RC-063], [ADR-0007], [ADR-0008], [ADR-0009], [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-13 | Proposed | Jens Tirsvad Nielsen | S01 | Added RC-062 (PP-001 with MIL-008) and the MIL-008 to PP-001 link | [9aeb74e] | | 2026-10-13 | Proposed | Jens Tirsvad Nielsen | S01 | PP-001 and RC-062 accepted (the Go on the MIL-008 plan change) | [23a64a3] | +| 2026-10-13 | Proposed | Jens Tirsvad Nielsen | S01 | Added ADR-0009 and RC-063 (accepted) | pending | --- @@ -69,6 +69,7 @@ updated whenever an artifact instance is created or reviewed. | [ADR-0006] | ADR | [MIL-004], [UC-006], [US-001], [ADR-0004], [ADR-0005] | - | [RC-043] | | [ADR-0007] | ADR | [MIL-004], [UC-006], [ADR-0006] | - | [RC-047] | | [ADR-0008] | ADR | [MIL-007], [UC-005], [US-001], [ADR-0005], [ADR-0006] | - | [RC-054] | +| [ADR-0009] | ADR | [MIL-008], [ADR-0003], [ADR-0004], [ADR-0005], [ADR-0006] | - | [RC-063] | | [UC-007] | UC | [UCD-001], [US-001], [SA-001] | - | [RC-044] | | [RC-019] | RC | [UCD-001] | - | - | | [RC-020] | RC | [US-001] | - | - | @@ -114,6 +115,7 @@ updated whenever an artifact instance is created or reviewed. | [RC-060] | RC | [MIL-008] | - | - | | [RC-061] | RC | [MIL-008] | - | - | | [RC-062] | RC | [PP-001] | - | - | +| [RC-063] | RC | [ADR-0009] | - | - | ## Coverage Notes @@ -207,7 +209,9 @@ updated whenever an artifact instance is created or reviewed. [RC-060]: ./reviews/rc-060-mil-008-plan.md [RC-061]: ./reviews/rc-061-mil-008-task-5-deferred.md [RC-062]: ./reviews/rc-062-pp-001-mil-008.md +[RC-063]: ./reviews/rc-063-adr-0009.md [ADR-0008]: ../adr/adr-0008-cpp-csharp-quality-check-contract.md +[ADR-0009]: ../adr/adr-0009-wiki-publishing-reusable-workflow.md [ADR-0007]: ../adr/adr-0007-release-publish-destination.md [UC-007]: ../uc-007/uc.md [UC-006]: ../uc-006/uc.md @@ -216,5 +220,4 @@ updated whenever an artifact instance is created or reviewed. [ADR-0005]: ../adr/adr-0005-quality-check-contract.md [faf13b2]: https://git.tirsystem.com/TirSystem/github-action/commit/faf13b2c2a4901c0171977de1ffc2841023f537a [1bc56f8]: https://git.tirsystem.com/TirSystem/github-action/commit/1bc56f8b771531f221f218fc00b147ecc73c051e -[9aeb74e]: https://git.tirsystem.com/TirSystem/github-action/commit/9aeb74e8b09bb7882847e9bd5d569dbc9856fc03 [23a64a3]: https://git.tirsystem.com/TirSystem/github-action/commit/23a64a3f35bd69de456b3c44556d542bd2da0ca0