diff --git a/docs/artifact-registry.md b/docs/artifact-registry.md
index 56d815d..489c564 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 | 007 |
-| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 026 |
+| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 033 |
| TM | Traceability Matrix | docs/sqa/traceability-matrix.md | 002 |
| ADR | Architecture Decision Record | docs/adr/adr-NNNN-*.md | 0005 |
| UCD | Use Case Diagram | docs/use-case-diagram.md | 002 |
diff --git a/docs/milestones/mil-001-stabilise-metadata-sync.md b/docs/milestones/mil-001-stabilise-metadata-sync.md
index 001ce3b..9ef8b0e 100644
--- a/docs/milestones/mil-001-stabilise-metadata-sync.md
+++ b/docs/milestones/mil-001-stabilise-metadata-sync.md
@@ -4,13 +4,13 @@
| Key | Value |
| --- | --- |
| ID | MIL-001 |
-| CrossReference | [BC-001] |
+| CrossReference | [BC-001], [ADR-0002] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
-| 2026-10-03 | Deprecated | Jens Tirsvad Nielsen | S01 | Recorded decisions for tasks 1 and 3 | [cbb9688] |
-| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Task 1 decision amended: zero GitHub mirrors is a successful skip
Task 5 tests cover zero or several mirrors accordingly | [0c06789] |
+| 2026-10-10 | Deprecated | Jens Tirsvad Nielsen | S01 | Task 1 decision amended: zero GitHub mirrors is a successful skip
Task 5 tests cover zero or several mirrors accordingly | [0c06789] |
+| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Target date 2026-10-17 confirmed on 2026-10-10 by S01 (stand-in for S05) | [ea06eaa] |
---
@@ -56,7 +56,7 @@ successful manual run on the Gitea instance.
## Target Date
-2026-10-17 — proposed; to be confirmed by S01 and S05 (the Business Case sets no deadline).
+2026-10-17 — confirmed on 2026-10-10 by S01, standing in for S05 (ADR-0002); the Business Case sets no deadline.
## Tasks
@@ -73,5 +73,6 @@ successful manual run on the Gitea instance.
---
[BC-001]: ../business-case.md
-[cbb9688]: https://git.tirsystem.com/TirSystem/github-action/commit/cbb9688ed4217ee953d5843b846e2e79f22aaf45
[0c06789]: https://git.tirsystem.com/TirSystem/github-action/commit/0c06789a2779382672712cd483f4964b28a0ebe9
+[ADR-0002]: ../adr/adr-0002-s01-approves-as-stand-in.md
+[ea06eaa]: https://git.tirsystem.com/TirSystem/github-action/commit/ea06eaaa698247d20e4a8e2694d7acbb1de58b63
diff --git a/docs/milestones/mil-002-onboarding-and-operations.md b/docs/milestones/mil-002-onboarding-and-operations.md
index e7f3398..32a32e8 100644
--- a/docs/milestones/mil-002-onboarding-and-operations.md
+++ b/docs/milestones/mil-002-onboarding-and-operations.md
@@ -4,13 +4,13 @@
| Key | Value |
| --- | --- |
| ID | MIL-002 |
-| CrossReference | [BC-001] |
+| CrossReference | [BC-001], [ADR-0002] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
-| 2026-10-03 | Deprecated | Jens Tirsvad Nielsen | S01 | Owner is S05 (security authority); S01 remains approving reviewer | [4de5438] |
-| 2026-10-03 | Accepted | Jens Tirsvad Nielsen | S01 | Recorded verification results for task 2 | [7dcb9c4] |
+| 2026-10-03 | Deprecated | Jens Tirsvad Nielsen | S01 | Recorded verification results for task 2 | [7dcb9c4] |
+| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Target date 2026-10-31 confirmed on 2026-10-10 by S01 (stand-in for S05) | [ea06eaa] |
---
@@ -56,7 +56,7 @@ a credential validation step in the workflow, and categorized failure messages.
## Target Date
-2026-10-31 — proposed; to be confirmed by S01 and S05.
+2026-10-31 — confirmed on 2026-10-10 by S01, standing in for S05 (ADR-0002); the Business Case sets no deadline.
## Tasks
@@ -73,5 +73,6 @@ a credential validation step in the workflow, and categorized failure messages.
---
[BC-001]: ../business-case.md
-[4de5438]: https://git.tirsystem.com/TirSystem/github-action/commit/4de5438a88b4bbf18b165f52f797d1a52af89f6d
[7dcb9c4]: https://git.tirsystem.com/TirSystem/github-action/commit/7dcb9c4dfce712572aced281d0dfdfa435283646
+[ADR-0002]: ../adr/adr-0002-s01-approves-as-stand-in.md
+[ea06eaa]: https://git.tirsystem.com/TirSystem/github-action/commit/ea06eaaa698247d20e4a8e2694d7acbb1de58b63
diff --git a/docs/milestones/mil-003-quality-checks.md b/docs/milestones/mil-003-quality-checks.md
index ae5e4bd..8f086b1 100644
--- a/docs/milestones/mil-003-quality-checks.md
+++ b/docs/milestones/mil-003-quality-checks.md
@@ -4,13 +4,13 @@
| Key | Value |
| --- | --- |
| ID | MIL-003 |
-| CrossReference | [BC-001] |
+| CrossReference | [BC-001], [ADR-0002] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
-| 2026-10-03 | Deprecated | Jens Tirsvad Nielsen | S01 | Initial version | [4de5438] |
-| 2026-10-03 | Accepted | Jens Tirsvad Nielsen | S01 | Owner is S05 (security authority); S01 remains approving reviewer | [4de5438] |
+| 2026-10-03 | Deprecated | Jens Tirsvad Nielsen | S01 | Owner is S05 (security authority); S01 remains approving reviewer | [4de5438] |
+| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Target date 2026-11-14 confirmed on 2026-10-10 by S01 (stand-in for S05) | [ea06eaa] |
---
@@ -54,7 +54,7 @@ other repository, and a guide for reading its results.
## Target Date
-2026-11-14 — proposed; to be confirmed by S01 and S05.
+2026-11-14 — confirmed on 2026-10-10 by S01, standing in for S05 (ADR-0002); the Business Case sets no deadline.
## Tasks
@@ -70,3 +70,5 @@ other repository, and a guide for reading its results.
[BC-001]: ../business-case.md
[4de5438]: https://git.tirsystem.com/TirSystem/github-action/commit/4de5438a88b4bbf18b165f52f797d1a52af89f6d
+[ADR-0002]: ../adr/adr-0002-s01-approves-as-stand-in.md
+[ea06eaa]: https://git.tirsystem.com/TirSystem/github-action/commit/ea06eaaa698247d20e4a8e2694d7acbb1de58b63
diff --git a/docs/milestones/mil-004-versioned-release.md b/docs/milestones/mil-004-versioned-release.md
index 48512e5..657c925 100644
--- a/docs/milestones/mil-004-versioned-release.md
+++ b/docs/milestones/mil-004-versioned-release.md
@@ -4,13 +4,13 @@
| Key | Value |
| --- | --- |
| ID | MIL-004 |
-| CrossReference | [BC-001] |
+| CrossReference | [BC-001], [ADR-0002] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
-| 2026-10-03 | Deprecated | Jens Tirsvad Nielsen | S01 | Initial version | [4de5438] |
-| 2026-10-03 | Accepted | Jens Tirsvad Nielsen | S01 | Owner is S05 (security authority); S01 remains approving reviewer | [4de5438] |
+| 2026-10-03 | Deprecated | Jens Tirsvad Nielsen | S01 | Owner is S05 (security authority); S01 remains approving reviewer | [4de5438] |
+| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Target date 2026-11-28 confirmed on 2026-10-10 by S01 (stand-in for S05) | [ea06eaa] |
---
@@ -55,7 +55,7 @@ changelog), a consumer upgrade guide and a reusable release workflow.
## Target Date
-2026-11-28 — proposed; to be confirmed by S01 and S05.
+2026-11-28 — confirmed on 2026-10-10 by S01, standing in for S05 (ADR-0002); the Business Case sets no deadline.
## Tasks
@@ -71,3 +71,5 @@ changelog), a consumer upgrade guide and a reusable release workflow.
[BC-001]: ../business-case.md
[4de5438]: https://git.tirsystem.com/TirSystem/github-action/commit/4de5438a88b4bbf18b165f52f797d1a52af89f6d
+[ADR-0002]: ../adr/adr-0002-s01-approves-as-stand-in.md
+[ea06eaa]: https://git.tirsystem.com/TirSystem/github-action/commit/ea06eaaa698247d20e4a8e2694d7acbb1de58b63
diff --git a/docs/milestones/mil-005-wiki-and-translations.md b/docs/milestones/mil-005-wiki-and-translations.md
index fefbc00..f128211 100644
--- a/docs/milestones/mil-005-wiki-and-translations.md
+++ b/docs/milestones/mil-005-wiki-and-translations.md
@@ -4,13 +4,13 @@
| Key | Value |
| --- | --- |
| ID | MIL-005 |
-| CrossReference | [BC-001] |
+| CrossReference | [BC-001], [ADR-0002] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
-| 2026-10-10 | Deprecated | Jens Tirsvad Nielsen | S01 | Initial version | [08ef26a] |
-| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Decided how the wiki is published: source in `wiki/`, published by a workflow on merge
Added task 8 | [77c5277] |
+| 2026-10-10 | Deprecated | Jens Tirsvad Nielsen | S01 | Decided how the wiki is published: source in `wiki/`, published by a workflow on merge
Added task 8 | [77c5277] |
+| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Target date 2026-12-12 confirmed on 2026-10-10 by S01 (stand-in for S05) | [ea06eaa] |
---
@@ -61,7 +61,7 @@ to `main`, and a pull request rule in `AGENTS.md` keeps the wiki current.
## Target Date
-2026-12-12 — proposed; to be confirmed by S01 and S05.
+2026-12-12 — confirmed on 2026-10-10 by S01, standing in for S05 (ADR-0002); the Business Case sets no deadline.
## Tasks
@@ -79,5 +79,6 @@ to `main`, and a pull request rule in `AGENTS.md` keeps the wiki current.
---
[BC-001]: ../business-case.md
-[08ef26a]: https://git.tirsystem.com/TirSystem/github-action/commit/08ef26a6d3eb98c066b45634c2271e578e6c0a0b
[77c5277]: https://git.tirsystem.com/TirSystem/github-action/commit/77c52779c46bca35dee4d73e587ca7b611373790
+[ADR-0002]: ../adr/adr-0002-s01-approves-as-stand-in.md
+[ea06eaa]: https://git.tirsystem.com/TirSystem/github-action/commit/ea06eaaa698247d20e4a8e2694d7acbb1de58b63
diff --git a/docs/milestones/mil-006-shared-wiki-publishing.md b/docs/milestones/mil-006-shared-wiki-publishing.md
index 1c97499..73a10b8 100644
--- a/docs/milestones/mil-006-shared-wiki-publishing.md
+++ b/docs/milestones/mil-006-shared-wiki-publishing.md
@@ -4,12 +4,13 @@
| Key | Value |
| --- | --- |
| ID | MIL-006 |
-| CrossReference | [BC-001], [MIL-005], [ADR-0003] |
+| CrossReference | [BC-001], [MIL-005], [ADR-0003], [ADR-0002] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
-| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Initial version | [6b8e36d] |
+| 2026-10-10 | Deprecated | Jens Tirsvad Nielsen | S01 | Initial version | [6b8e36d] |
+| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Target date 2026-12-26 confirmed on 2026-10-10 by S01 (stand-in for S05) | [ea06eaa] |
---
@@ -59,7 +60,7 @@ repository other than this one that publishes its wiki through it.
## Target Date
-2026-12-26 — proposed; to be confirmed by S01 and S05 (the Business Case sets no deadline).
+2026-12-26 — confirmed on 2026-10-10 by S01, standing in for S05 (ADR-0002); the Business Case sets no deadline.
## Tasks
@@ -75,3 +76,5 @@ repository other than this one that publishes its wiki through it.
[BC-001]: ../business-case.md
[6b8e36d]: https://git.tirsystem.com/TirSystem/github-action/commit/6b8e36d67ac9af165b180bc0045289e41cfd1fc3
+[ADR-0002]: ../adr/adr-0002-s01-approves-as-stand-in.md
+[ea06eaa]: https://git.tirsystem.com/TirSystem/github-action/commit/ea06eaaa698247d20e4a8e2694d7acbb1de58b63
diff --git a/docs/project-plan.md b/docs/project-plan.md
index 457cbae..3a56e74 100644
--- a/docs/project-plan.md
+++ b/docs/project-plan.md
@@ -4,13 +4,13 @@
| Key | Value |
| --- | --- |
| ID | PP-001 |
-| CrossReference | [BC-001], [SA-001], [US-001], [MIL-001], [MIL-002], [MIL-003], [MIL-004], [MIL-005], [MIL-006] |
+| CrossReference | [BC-001], [SA-001], [ADR-0002], [US-001], [MIL-001], [MIL-002], [MIL-003], [MIL-004], [MIL-005], [MIL-006] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
-| 2026-10-10 | Deprecated | Jens Tirsvad Nielsen | S01 | Added gateway MIL-006 (shared wiki publishing) | [6b8e36d] |
-| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | P1 use cases written and accepted (UCD-001, US-001, UC-001 to UC-004): Open Issues updated | [a2bf2d4] |
+| 2026-10-10 | Deprecated | Jens Tirsvad Nielsen | S01 | P1 use cases written and accepted (UCD-001, US-001, UC-001 to UC-004): Open Issues updated | [a2bf2d4] |
+| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Dates confirmed by S01 (stand-in for S05); the confirmation item is removed from Open Issues | [ea06eaa] |
---
@@ -18,13 +18,13 @@
This plan schedules six milestones that move the repository from one
workflow with known defects to a documented, versioned collection of shared
-workflows. The Business Case sets no deadline, so the dates are proposals.
+workflows. The Business Case sets no deadline, so the dates are the plan's own; they were confirmed on 2026-10-10 by S01, standing in for S05 (ADR-0002).
## Planning Assumptions
- Week 1 starts 2026-10-05; phases are two weeks long; the last decision is 2026-12-26.
- Work on a milestone starts only after its `MIL-*` document is `Accepted`.
-- Dates are proposed by the author and need confirmation by S01 and S05.
+- Dates were confirmed on 2026-10-10 by S01, standing in for S05 (ADR-0002).
## Gateway Schedule
@@ -84,7 +84,6 @@ A No-Go moves every later window by the rework time of the failed milestone.
## Open Issues
-- Confirm the proposed dates and the start week (S01 and S05).
- No QC checklist exists for the Project Plan.
- The P1 candidates are written as brief use cases (UC-001 to UC-004) with a use case diagram (UCD-001) and user stories (US-001). The P2 and P3 candidates have no use case document yet.
@@ -245,6 +244,7 @@ no tests, no release process.
[BC-001]: ./business-case.md
[SA-001]: ./stakeholder-analysis.md
[US-001]: ./user-stories.md
+[ADR-0002]: ./adr/adr-0002-s01-approves-as-stand-in.md
[MIL-001]: ./milestones/mil-001-stabilise-metadata-sync.md
[MIL-002]: ./milestones/mil-002-onboarding-and-operations.md
[MIL-003]: ./milestones/mil-003-quality-checks.md
@@ -257,5 +257,5 @@ no tests, no release process.
[Milestone MIL-004]: https://git.tirsystem.com/TirSystem/github-action/milestone/21
[Milestone MIL-005]: https://git.tirsystem.com/TirSystem/github-action/milestone/93
[Milestone MIL-006]: https://git.tirsystem.com/TirSystem/github-action/milestone/94
-[6b8e36d]: https://git.tirsystem.com/TirSystem/github-action/commit/6b8e36d67ac9af165b180bc0045289e41cfd1fc3
[a2bf2d4]: https://git.tirsystem.com/TirSystem/github-action/commit/a2bf2d420416f7aff2badc6fe32a7690e2e523fd
+[ea06eaa]: https://git.tirsystem.com/TirSystem/github-action/commit/ea06eaaa698247d20e4a8e2694d7acbb1de58b63
diff --git a/docs/sqa/reviews/rc-026-mil-001-date.md b/docs/sqa/reviews/rc-026-mil-001-date.md
new file mode 100644
index 0000000..7e332d0
--- /dev/null
+++ b/docs/sqa/reviews/rc-026-mil-001-date.md
@@ -0,0 +1,46 @@
+# Review Record: MIL-001 (target date)
+
+## Metadata
+| Key | Value |
+| --- | --- |
+| ID | RC-026 |
+| CrossReference | [MIL-001], [QC-MIL-001] |
+
+## Version History
+| Date | Status | Author | Reviewer | Change | Commit |
+| --- | --- | --- | --- | --- | --- |
+| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Initial version | [ea06eaa] |
+
+---
+
+## Artifact Under Review
+
+- Instance reviewed: [MIL-001]
+- Checklist used: [QC-MIL-001]
+
+## 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 | Unchanged. |
+| 3 | Dependencies on other milestones are explicitly mapped | Pass | Unchanged. |
+| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Unchanged. |
+| 5 | Milestone owner and approving reviewer are identified | Pass | Unchanged. |
+| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target date 2026-10-17 is now confirmed on 2026-10-10 by S01, standing in for S05 (ADR-0002); it was marked proposed. The Business Case sets no deadline. |
+
+## Overall Verdict
+
+Go - all six criteria pass; the only change reviewed is the confirmation of the target date. This closes the earlier action item to confirm it. S01 gave the Go in chat on 2026-10-10, standing in for the other reviewers as ADR-0002 records; there is no independent reader.
+
+## Action Items
+
+| Action | Owner | Due |
+| --- | --- | --- |
+| None | - | - |
+
+---
+
+[MIL-001]: ../../milestones/mil-001-stabilise-metadata-sync.md
+[QC-MIL-001]: ../../../framework/qc/qc-milestones-gateways.md
+[ea06eaa]: https://git.tirsystem.com/TirSystem/github-action/commit/ea06eaaa698247d20e4a8e2694d7acbb1de58b63
diff --git a/docs/sqa/reviews/rc-027-mil-002-date.md b/docs/sqa/reviews/rc-027-mil-002-date.md
new file mode 100644
index 0000000..1235280
--- /dev/null
+++ b/docs/sqa/reviews/rc-027-mil-002-date.md
@@ -0,0 +1,46 @@
+# Review Record: MIL-002 (target date)
+
+## Metadata
+| Key | Value |
+| --- | --- |
+| ID | RC-027 |
+| CrossReference | [MIL-002], [QC-MIL-001] |
+
+## Version History
+| Date | Status | Author | Reviewer | Change | Commit |
+| --- | --- | --- | --- | --- | --- |
+| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Initial version | [ea06eaa] |
+
+---
+
+## Artifact Under Review
+
+- Instance reviewed: [MIL-002]
+- Checklist used: [QC-MIL-001]
+
+## 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 | Unchanged. |
+| 3 | Dependencies on other milestones are explicitly mapped | Pass | Unchanged. |
+| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Unchanged. |
+| 5 | Milestone owner and approving reviewer are identified | Pass | Unchanged. |
+| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target date 2026-10-31 is now confirmed on 2026-10-10 by S01, standing in for S05 (ADR-0002); it was marked proposed. The Business Case sets no deadline. |
+
+## Overall Verdict
+
+Go - all six criteria pass; the only change reviewed is the confirmation of the target date. This closes the earlier action item to confirm it. S01 gave the Go in chat on 2026-10-10, standing in for the other reviewers as ADR-0002 records; there is no independent reader.
+
+## Action Items
+
+| Action | Owner | Due |
+| --- | --- | --- |
+| None | - | - |
+
+---
+
+[MIL-002]: ../../milestones/mil-002-onboarding-and-operations.md
+[QC-MIL-001]: ../../../framework/qc/qc-milestones-gateways.md
+[ea06eaa]: https://git.tirsystem.com/TirSystem/github-action/commit/ea06eaaa698247d20e4a8e2694d7acbb1de58b63
diff --git a/docs/sqa/reviews/rc-028-mil-003-date.md b/docs/sqa/reviews/rc-028-mil-003-date.md
new file mode 100644
index 0000000..b0c651c
--- /dev/null
+++ b/docs/sqa/reviews/rc-028-mil-003-date.md
@@ -0,0 +1,46 @@
+# Review Record: MIL-003 (target date)
+
+## Metadata
+| Key | Value |
+| --- | --- |
+| ID | RC-028 |
+| CrossReference | [MIL-003], [QC-MIL-001] |
+
+## Version History
+| Date | Status | Author | Reviewer | Change | Commit |
+| --- | --- | --- | --- | --- | --- |
+| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Initial version | [ea06eaa] |
+
+---
+
+## Artifact Under Review
+
+- Instance reviewed: [MIL-003]
+- Checklist used: [QC-MIL-001]
+
+## 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 | Unchanged. |
+| 3 | Dependencies on other milestones are explicitly mapped | Pass | Unchanged. |
+| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Unchanged. |
+| 5 | Milestone owner and approving reviewer are identified | Pass | Unchanged. |
+| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target date 2026-11-14 is now confirmed on 2026-10-10 by S01, standing in for S05 (ADR-0002); it was marked proposed. The Business Case sets no deadline. |
+
+## Overall Verdict
+
+Go - all six criteria pass; the only change reviewed is the confirmation of the target date. This closes the earlier action item to confirm it. S01 gave the Go in chat on 2026-10-10, standing in for the other reviewers as ADR-0002 records; there is no independent reader.
+
+## Action Items
+
+| Action | Owner | Due |
+| --- | --- | --- |
+| None | - | - |
+
+---
+
+[MIL-003]: ../../milestones/mil-003-quality-checks.md
+[QC-MIL-001]: ../../../framework/qc/qc-milestones-gateways.md
+[ea06eaa]: https://git.tirsystem.com/TirSystem/github-action/commit/ea06eaaa698247d20e4a8e2694d7acbb1de58b63
diff --git a/docs/sqa/reviews/rc-029-mil-004-date.md b/docs/sqa/reviews/rc-029-mil-004-date.md
new file mode 100644
index 0000000..f4da1e8
--- /dev/null
+++ b/docs/sqa/reviews/rc-029-mil-004-date.md
@@ -0,0 +1,46 @@
+# Review Record: MIL-004 (target date)
+
+## Metadata
+| Key | Value |
+| --- | --- |
+| ID | RC-029 |
+| CrossReference | [MIL-004], [QC-MIL-001] |
+
+## Version History
+| Date | Status | Author | Reviewer | Change | Commit |
+| --- | --- | --- | --- | --- | --- |
+| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Initial version | [ea06eaa] |
+
+---
+
+## Artifact Under Review
+
+- Instance reviewed: [MIL-004]
+- Checklist used: [QC-MIL-001]
+
+## 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 | Unchanged. |
+| 3 | Dependencies on other milestones are explicitly mapped | Pass | Unchanged. |
+| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Unchanged. |
+| 5 | Milestone owner and approving reviewer are identified | Pass | Unchanged. |
+| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target date 2026-11-28 is now confirmed on 2026-10-10 by S01, standing in for S05 (ADR-0002); it was marked proposed. The Business Case sets no deadline. |
+
+## Overall Verdict
+
+Go - all six criteria pass; the only change reviewed is the confirmation of the target date. This closes the earlier action item to confirm it. S01 gave the Go in chat on 2026-10-10, standing in for the other reviewers as ADR-0002 records; there is no independent reader.
+
+## Action Items
+
+| Action | Owner | Due |
+| --- | --- | --- |
+| None | - | - |
+
+---
+
+[MIL-004]: ../../milestones/mil-004-versioned-release.md
+[QC-MIL-001]: ../../../framework/qc/qc-milestones-gateways.md
+[ea06eaa]: https://git.tirsystem.com/TirSystem/github-action/commit/ea06eaaa698247d20e4a8e2694d7acbb1de58b63
diff --git a/docs/sqa/reviews/rc-030-mil-005-date.md b/docs/sqa/reviews/rc-030-mil-005-date.md
new file mode 100644
index 0000000..8e5d57e
--- /dev/null
+++ b/docs/sqa/reviews/rc-030-mil-005-date.md
@@ -0,0 +1,46 @@
+# Review Record: MIL-005 (target date)
+
+## Metadata
+| Key | Value |
+| --- | --- |
+| ID | RC-030 |
+| CrossReference | [MIL-005], [QC-MIL-001] |
+
+## Version History
+| Date | Status | Author | Reviewer | Change | Commit |
+| --- | --- | --- | --- | --- | --- |
+| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Initial version | [ea06eaa] |
+
+---
+
+## Artifact Under Review
+
+- Instance reviewed: [MIL-005]
+- Checklist used: [QC-MIL-001]
+
+## 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 | Unchanged. |
+| 3 | Dependencies on other milestones are explicitly mapped | Pass | Unchanged. |
+| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Unchanged. |
+| 5 | Milestone owner and approving reviewer are identified | Pass | Unchanged. |
+| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target date 2026-12-12 is now confirmed on 2026-10-10 by S01, standing in for S05 (ADR-0002); it was marked proposed. The Business Case sets no deadline. |
+
+## Overall Verdict
+
+Go - all six criteria pass; the only change reviewed is the confirmation of the target date. This closes the earlier action item to confirm it. S01 gave the Go in chat on 2026-10-10, standing in for the other reviewers as ADR-0002 records; there is no independent reader.
+
+## Action Items
+
+| Action | Owner | Due |
+| --- | --- | --- |
+| None | - | - |
+
+---
+
+[MIL-005]: ../../milestones/mil-005-wiki-and-translations.md
+[QC-MIL-001]: ../../../framework/qc/qc-milestones-gateways.md
+[ea06eaa]: https://git.tirsystem.com/TirSystem/github-action/commit/ea06eaaa698247d20e4a8e2694d7acbb1de58b63
diff --git a/docs/sqa/reviews/rc-031-mil-006-date.md b/docs/sqa/reviews/rc-031-mil-006-date.md
new file mode 100644
index 0000000..025d99b
--- /dev/null
+++ b/docs/sqa/reviews/rc-031-mil-006-date.md
@@ -0,0 +1,46 @@
+# Review Record: MIL-006 (target date)
+
+## Metadata
+| Key | Value |
+| --- | --- |
+| ID | RC-031 |
+| CrossReference | [MIL-006], [QC-MIL-001] |
+
+## Version History
+| Date | Status | Author | Reviewer | Change | Commit |
+| --- | --- | --- | --- | --- | --- |
+| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Initial version | [ea06eaa] |
+
+---
+
+## Artifact Under Review
+
+- Instance reviewed: [MIL-006]
+- Checklist used: [QC-MIL-001]
+
+## 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 | Unchanged. |
+| 3 | Dependencies on other milestones are explicitly mapped | Pass | Unchanged. |
+| 4 | Each milestone is traceable to a Business Case objective or KPI | Pass | Unchanged. |
+| 5 | Milestone owner and approving reviewer are identified | Pass | Unchanged. |
+| 6 | Milestone has a defined target date consistent with project constraints | Pass | Target date 2026-12-26 is now confirmed on 2026-10-10 by S01, standing in for S05 (ADR-0002); it was marked proposed. The Business Case sets no deadline. |
+
+## Overall Verdict
+
+Go - all six criteria pass; the only change reviewed is the confirmation of the target date. This closes the earlier action item to confirm it. S01 gave the Go in chat on 2026-10-10, standing in for the other reviewers as ADR-0002 records; there is no independent reader.
+
+## Action Items
+
+| Action | Owner | Due |
+| --- | --- | --- |
+| None | - | - |
+
+---
+
+[MIL-006]: ../../milestones/mil-006-shared-wiki-publishing.md
+[QC-MIL-001]: ../../../framework/qc/qc-milestones-gateways.md
+[ea06eaa]: https://git.tirsystem.com/TirSystem/github-action/commit/ea06eaaa698247d20e4a8e2694d7acbb1de58b63
diff --git a/docs/sqa/reviews/rc-032-pp-001-dates.md b/docs/sqa/reviews/rc-032-pp-001-dates.md
new file mode 100644
index 0000000..3f9ea0f
--- /dev/null
+++ b/docs/sqa/reviews/rc-032-pp-001-dates.md
@@ -0,0 +1,47 @@
+# Review Record: PP-001 Project Plan (dates confirmed)
+
+## Metadata
+| Key | Value |
+| --- | --- |
+| ID | RC-032 |
+| CrossReference | [PP-001], [BC-001] |
+
+## Version History
+| Date | Status | Author | Reviewer | Change | Commit |
+| --- | --- | --- | --- | --- | --- |
+| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Initial version | [ea06eaa] |
+
+---
+
+## Artifact Under Review
+
+- Instance reviewed: [PP-001]
+- Checklist used: none: the Project Plan has no QC checklist. Validated against the Business Case [BC-001] and the Go / No-Go criteria of each listed milestone, as `PP.md` prescribes.
+
+## Checklist Results
+
+| # | Criterion | Status | Evidence/Notes |
+| --- | --- | --- | --- |
+| 1 | Every milestone in the plan has a `MIL-*` document and the plan's dates equal that document's target date | Pass | MIL-001 to MIL-006 now state their target dates as confirmed (RC-026 to RC-031). |
+| 2 | Every Business Case scope item is covered by a gateway | Pass | Unchanged. |
+| 3 | The schedule respects the Business Case constraints | Pass | The Business Case sets no deadline. |
+| 4 | Dependencies between milestones are stated | Pass | Unchanged. |
+| 5 | Every gateway has an owner who is a stakeholder ID | Pass | Unchanged. |
+| 6 | Plan content is internally consistent | Pass | Purpose and Planning Assumptions say the dates were confirmed; no remaining text calls them proposals. |
+| 7 | Open Issues are current | Pass | The item to confirm the proposed dates is removed; the two remaining items are still open (no QC checklist for the Project Plan; P2 and P3 use cases). |
+
+## Overall Verdict
+
+Go - all seven criteria pass. S01 gave the Go in chat on 2026-10-10, standing in for the other reviewers as ADR-0002 records; there is no independent reader.
+
+## Action Items
+
+| Action | Owner | Due |
+| --- | --- | --- |
+| None | - | - |
+
+---
+
+[PP-001]: ../../project-plan.md
+[BC-001]: ../../business-case.md
+[ea06eaa]: https://git.tirsystem.com/TirSystem/github-action/commit/ea06eaaa698247d20e4a8e2694d7acbb1de58b63
diff --git a/docs/sqa/traceability-matrix.md b/docs/sqa/traceability-matrix.md
index f87e50a..e5a221c 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], [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], [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], [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], [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-10 | Deprecated | Jens Tirsvad Nielsen | S01 | Added ADR-0004 and RC-018 | [b22a2cd] |
-| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Added UCD-001, US-001, UC-001 to UC-004 and RC-019 to RC-025 | [a2bf2d4] |
+| 2026-10-10 | Deprecated | Jens Tirsvad Nielsen | S01 | Added UCD-001, US-001, UC-001 to UC-004 and RC-019 to RC-025 | [a2bf2d4] |
+| 2026-10-10 | Accepted | Jens Tirsvad Nielsen | S01 | Added RC-026 to RC-032 (dates confirmed) | [ea06eaa] |
---
@@ -26,19 +26,19 @@ updated whenever an artifact instance is created or reviewed.
| --- | --- | --- | --- | --- |
| [SA-001] | SA | - | [BC-001], [UCD-001] | [RC-004] |
| [BC-001] | BC | [SA-001] | [PP-001], [MIL-001], [MIL-002], [MIL-003], [MIL-004], [MIL-005], [MIL-006] | [RC-001], [RC-008] |
-| [PP-001] | PP | [BC-001], [SA-001] | [MIL-001], [MIL-002], [MIL-003], [MIL-004], [MIL-005], [MIL-006], [US-001] | [RC-002], [RC-009], [RC-015], [RC-017], [RC-025] |
-| [MIL-001] | MIL | [BC-001], [PP-001] | [MIL-002] | [RC-003] |
-| [MIL-002] | MIL | [BC-001], [PP-001], [MIL-001] | [MIL-003], [MIL-005] | [RC-005] |
-| [MIL-003] | MIL | [BC-001], [PP-001], [MIL-002] | [MIL-004] | [RC-006] |
-| [MIL-004] | MIL | [BC-001], [PP-001], [MIL-003] | - | [RC-007] |
+| [PP-001] | PP | [BC-001], [SA-001] | [MIL-001], [MIL-002], [MIL-003], [MIL-004], [MIL-005], [MIL-006], [US-001] | [RC-002], [RC-009], [RC-015], [RC-017], [RC-025], [RC-032] |
+| [MIL-001] | MIL | [BC-001], [PP-001] | [MIL-002] | [RC-003], [RC-026] |
+| [MIL-002] | MIL | [BC-001], [PP-001], [MIL-001] | [MIL-003], [MIL-005] | [RC-005], [RC-027] |
+| [MIL-003] | MIL | [BC-001], [PP-001], [MIL-002] | [MIL-004] | [RC-006], [RC-028] |
+| [MIL-004] | MIL | [BC-001], [PP-001], [MIL-003] | - | [RC-007], [RC-029] |
| [RC-001] | RC | [BC-001] | - | - |
| [RC-002] | RC | [PP-001] | - | - |
| [RC-003] | RC | [MIL-001] | - | - |
| [RC-004] | RC | [SA-001] | - | - |
| [RC-005] | RC | [MIL-002] | - | - |
| [RC-006] | RC | [MIL-003] | - | - |
-| [MIL-005] | MIL | [BC-001], [PP-001], [MIL-002] | [MIL-006] | [RC-010], [RC-011] |
-| [MIL-006] | MIL | [BC-001], [PP-001], [MIL-002], [MIL-005] | - | [RC-016] |
+| [MIL-005] | MIL | [BC-001], [PP-001], [MIL-002] | [MIL-006] | [RC-010], [RC-011], [RC-030] |
+| [MIL-006] | MIL | [BC-001], [PP-001], [MIL-002], [MIL-005] | - | [RC-016], [RC-031] |
| [RC-007] | RC | [MIL-004] | - | - |
| [RC-008] | RC | [BC-001] | - | - |
| [RC-009] | RC | [PP-001] | - | - |
@@ -68,6 +68,13 @@ updated whenever an artifact instance is created or reviewed.
| [RC-023] | RC | [UC-003] | - | - |
| [RC-024] | RC | [UC-004] | - | - |
| [RC-025] | RC | [PP-001] | - | - |
+| [RC-026] | RC | [MIL-001] | - | - |
+| [RC-027] | RC | [MIL-002] | - | - |
+| [RC-028] | RC | [MIL-003] | - | - |
+| [RC-029] | RC | [MIL-004] | - | - |
+| [RC-030] | RC | [MIL-005] | - | - |
+| [RC-031] | RC | [MIL-006] | - | - |
+| [RC-032] | RC | [PP-001] | - | - |
## Coverage Notes
@@ -122,5 +129,12 @@ updated whenever an artifact instance is created or reviewed.
[RC-023]: ./reviews/rc-023-uc-003.md
[RC-024]: ./reviews/rc-024-uc-004.md
[RC-025]: ./reviews/rc-025-pp-001-use-cases.md
-[b22a2cd]: https://git.tirsystem.com/TirSystem/github-action/commit/b22a2cd59235078656c4440b945b787f88fbd345
+[RC-026]: ./reviews/rc-026-mil-001-date.md
+[RC-027]: ./reviews/rc-027-mil-002-date.md
+[RC-028]: ./reviews/rc-028-mil-003-date.md
+[RC-029]: ./reviews/rc-029-mil-004-date.md
+[RC-030]: ./reviews/rc-030-mil-005-date.md
+[RC-031]: ./reviews/rc-031-mil-006-date.md
+[RC-032]: ./reviews/rc-032-pp-001-dates.md
[a2bf2d4]: https://git.tirsystem.com/TirSystem/github-action/commit/a2bf2d420416f7aff2badc6fe32a7690e2e523fd
+[ea06eaa]: https://git.tirsystem.com/TirSystem/github-action/commit/ea06eaaa698247d20e4a8e2694d7acbb1de58b63
diff --git a/guides/credentials.md b/guides/credentials.md
index f23d0ba..7b2feb0 100644
--- a/guides/credentials.md
+++ b/guides/credentials.md
@@ -11,16 +11,21 @@ leaves.
## Minimum permissions
-These come from the Gitea and GitHub documentation and the API calls the
-workflow makes. They have **not been confirmed with a minimal token on this
-instance yet**; S05 should confirm them when the tokens are created.
+These were checked on 2026-10-10 against the Gitea source (the route
+definitions in `routers/api/v1/api.go`, `main` branch) and the GitHub page
+"Permissions required for fine-grained personal access tokens", for every API
+call the workflows make. S01, standing in for S05 (ADR-0002), approved them on
+2026-10-10. They have **not been tested on this instance with a token that
+holds only these permissions**; the checks at the end of this section are the
+way to do that.
**Gitea token** (a personal access token of a user, not a deploy key; deploy
keys do not work for the REST API):
-- scope `read:repository`
-- the user must be allowed to read the repository's push mirrors, which
- Gitea limits to repository administrators
+- scope `read:repository`: every `/repos/...` route needs the repository
+ scope, and the calls below only read
+- the user must be an administrator of the repository: the `push_mirrors`
+ routes require repository administration in addition to the token scope
Calls made: `GET /repos/{owner}/{repo}` and `GET /repos/{owner}/{repo}/push_mirrors`.
@@ -28,12 +33,33 @@ Calls made: `GET /repos/{owner}/{repo}` and `GET /repos/{owner}/{repo}/push_mirr
- Resource owner: the owner of the mirror repository
- Repository access: only the mirror repository
-- Repository permission: **Administration: Read and write** (no other permission)
+- Repository permission: **Administration: Read and write** (no other
+ permission); it is needed for `PATCH /repos/{owner}/{repo}` and
+ `PUT /repos/{owner}/{repo}/topics`. `Metadata: Read` is added automatically
+ and covers `GET /repos/{owner}/{repo}`.
- Set an expiry date
Calls made: `GET /repos/{owner}/{repo}`, `PATCH /repos/{owner}/{repo}` (description)
and `PUT /repos/{owner}/{repo}/topics`.
+**Gitea token for the wiki** (see "Wiki publishing secret" below): scope
+`write:repository`, because writing a page (`POST`, `PATCH`, `DELETE` under
+`/repos/{owner}/{repo}/wiki`) needs the repository scope with write access, and
+the user needs write access to the repository's wiki. Listing and reading
+pages needs only the read scope.
+
+**Testing the permissions on the instance (optional)**
+
+1. In the Gitea settings of the user, the token stored as `TOKEN_FOR_GITEA`
+ lists only `read:repository`, the user is an administrator of the
+ repository, and a run still ends with `Preflight passed`.
+2. The GitHub token lists only the mirror repository and
+ `Administration: Read and write` (plus the automatic `Metadata: Read`), and
+ a run ends with `Preflight passed` and `Synced description and topics`.
+3. A throwaway token that lacks one of these permissions makes the run fail
+ with `[permissions]` (or HTTP 403 for Gitea) and names the category,
+ without printing the token.
+
Format of `PAT_FOR_GITHUB`: only the token string (for example
`github_pat_...`), as clear text. The workflow only checks that it is not empty;
GitHub rejects a wrong value (HTTP 401).
diff --git a/wiki/Credentials.da.md b/wiki/Credentials.da.md
index 651c1a8..c540f03 100644
--- a/wiki/Credentials.da.md
+++ b/wiki/Credentials.da.md
@@ -1,4 +1,4 @@
-
+
> Dette er en oversættelse af [`Credentials`](Credentials). Den engelske side er autoritativ, og ændringer her bliver overskrevet, næste gang wikien publiceres.
@@ -15,12 +15,12 @@ Synkroniseringsworkflowet bruger to secrets. Giv hver af dem de mindste rettighe
## Mindste rettigheder
-Disse kommer fra dokumentationen til Gitea og GitHub og fra de API-kald, workflowet foretager. De er **endnu ikke bekræftet med et minimalt token på denne instans**; S05 bør bekræfte dem, når tokens oprettes.
+Disse blev kontrolleret den 2026-10-10 mod Gitea-kildekoden (rutedefinitionerne i `routers/api/v1/api.go`, `main`-grenen) og GitHub-siden "Permissions required for fine-grained personal access tokens" for hvert API-kald, workflows foretager. S01 godkendte dem som stedfortræder for S05 (ADR-0002) den 2026-10-10. De er **ikke afprøvet på denne instans med et token, der kun har disse rettigheder**; kontrollerne i slutningen af dette afsnit er måden at gøre det på.
**Gitea-token** (et personal access token for en bruger, ikke en deploy key; deploy keys virker ikke til REST API'et):
-- scope `read:repository`
-- brugeren skal have lov til at læse repositoryets push-spejle, hvilket Gitea begrænser til repository-administratorer
+- scope `read:repository`: hver `/repos/...`-rute kræver repository-scopet, og kaldene nedenfor læser kun
+- brugeren skal være administrator af repositoryet: `push_mirrors`-rutene kræver repository-administration ud over token-scopet
Kald, der foretages: `GET /repos/{owner}/{repo}` og `GET /repos/{owner}/{repo}/push_mirrors`.
@@ -28,11 +28,19 @@ Kald, der foretages: `GET /repos/{owner}/{repo}` og `GET /repos/{owner}/{repo}/p
- Resource owner: ejeren af spejl-repositoryet
- Repository access: kun spejl-repositoryet
-- Repository permission: **Administration: Read and write** (ingen andre tilladelser)
+- Repository permission: **Administration: Read and write** (ingen andre tilladelser); den kræves til `PATCH /repos/{owner}/{repo}` og `PUT /repos/{owner}/{repo}/topics`. `Metadata: Read` tilføjes automatisk og dækker `GET /repos/{owner}/{repo}`.
- Angiv en udløbsdato
Kald, der foretages: `GET /repos/{owner}/{repo}`, `PATCH /repos/{owner}/{repo}` (beskrivelse) og `PUT /repos/{owner}/{repo}/topics`.
+**Gitea-token til wikien** (se "Secret til publicering af wiki" nedenfor): scope `write:repository`, fordi skrivning af en side (`POST`, `PATCH`, `DELETE` under `/repos/{owner}/{repo}/wiki`) kræver repository-scopet med skriveadgang, og brugeren skal have skriveadgang til repositoryets wiki. Oplistning og læsning af sider kræver kun læse-scopet.
+
+**Afprøvning af rettighederne på instansen (valgfrit)**
+
+1. I brugerens Gitea-indstillinger viser det token, der er gemt som `TOKEN_FOR_GITEA`, kun `read:repository`, brugeren er administrator af repositoryet, og en kørsel slutter stadig med `Preflight passed`.
+2. GitHub-tokenet viser kun spejl-repositoryet og `Administration: Read and write` (plus den automatiske `Metadata: Read`), og en kørsel slutter med `Preflight passed` og `Synced description and topics`.
+3. Et midlertidigt token, der mangler én af disse rettigheder, får kørslen til at fejle med `[permissions]` (eller HTTP 403 for Gitea) og navngive kategorien uden at udskrive tokenet.
+
Format for `PAT_FOR_GITHUB`: kun token-strengen (fx `github_pat_...`) som almindelig tekst. Workflowet tjekker kun, at den ikke er tom; GitHub afviser en forkert værdi (HTTP 401).
## Hvad workflowet kontrollerer, før det ændrer noget
diff --git a/wiki/Credentials.md b/wiki/Credentials.md
index b936c78..7688b6b 100644
--- a/wiki/Credentials.md
+++ b/wiki/Credentials.md
@@ -17,16 +17,21 @@ leaves.
## Minimum permissions
-These come from the Gitea and GitHub documentation and the API calls the
-workflow makes. They have **not been confirmed with a minimal token on this
-instance yet**; S05 should confirm them when the tokens are created.
+These were checked on 2026-10-10 against the Gitea source (the route
+definitions in `routers/api/v1/api.go`, `main` branch) and the GitHub page
+"Permissions required for fine-grained personal access tokens", for every API
+call the workflows make. S01, standing in for S05 (ADR-0002), approved them on
+2026-10-10. They have **not been tested on this instance with a token that
+holds only these permissions**; the checks at the end of this section are the
+way to do that.
**Gitea token** (a personal access token of a user, not a deploy key; deploy
keys do not work for the REST API):
-- scope `read:repository`
-- the user must be allowed to read the repository's push mirrors, which
- Gitea limits to repository administrators
+- scope `read:repository`: every `/repos/...` route needs the repository
+ scope, and the calls below only read
+- the user must be an administrator of the repository: the `push_mirrors`
+ routes require repository administration in addition to the token scope
Calls made: `GET /repos/{owner}/{repo}` and `GET /repos/{owner}/{repo}/push_mirrors`.
@@ -34,12 +39,33 @@ Calls made: `GET /repos/{owner}/{repo}` and `GET /repos/{owner}/{repo}/push_mirr
- Resource owner: the owner of the mirror repository
- Repository access: only the mirror repository
-- Repository permission: **Administration: Read and write** (no other permission)
+- Repository permission: **Administration: Read and write** (no other
+ permission); it is needed for `PATCH /repos/{owner}/{repo}` and
+ `PUT /repos/{owner}/{repo}/topics`. `Metadata: Read` is added automatically
+ and covers `GET /repos/{owner}/{repo}`.
- Set an expiry date
Calls made: `GET /repos/{owner}/{repo}`, `PATCH /repos/{owner}/{repo}` (description)
and `PUT /repos/{owner}/{repo}/topics`.
+**Gitea token for the wiki** (see "Wiki publishing secret" below): scope
+`write:repository`, because writing a page (`POST`, `PATCH`, `DELETE` under
+`/repos/{owner}/{repo}/wiki`) needs the repository scope with write access, and
+the user needs write access to the repository's wiki. Listing and reading
+pages needs only the read scope.
+
+**Testing the permissions on the instance (optional)**
+
+1. In the Gitea settings of the user, the token stored as `TOKEN_FOR_GITEA`
+ lists only `read:repository`, the user is an administrator of the
+ repository, and a run still ends with `Preflight passed`.
+2. The GitHub token lists only the mirror repository and
+ `Administration: Read and write` (plus the automatic `Metadata: Read`), and
+ a run ends with `Preflight passed` and `Synced description and topics`.
+3. A throwaway token that lacks one of these permissions makes the run fail
+ with `[permissions]` (or HTTP 403 for Gitea) and names the category,
+ without printing the token.
+
Format of `PAT_FOR_GITHUB`: only the token string (for example
`github_pat_...`), as clear text. The workflow only checks that it is not empty;
GitHub rejects a wrong value (HTTP 401).
diff --git a/wiki/Credentials.ms.md b/wiki/Credentials.ms.md
index 3771556..3889964 100644
--- a/wiki/Credentials.ms.md
+++ b/wiki/Credentials.ms.md
@@ -1,4 +1,4 @@
-
+
> Ini ialah terjemahan [`Credentials`](Credentials). Halaman bahasa Inggeris ialah teks yang sah, dan perubahan di sini akan ditimpa pada penerbitan wiki yang seterusnya.
@@ -15,12 +15,12 @@ Aliran kerja penyegerakan menggunakan dua rahsia (secret). Beri setiap satu keis
## Kebenaran minimum
-Ini datang daripada dokumentasi Gitea dan GitHub serta panggilan API yang dibuat oleh aliran kerja. Ia **belum disahkan dengan token minimum pada instans ini**; S05 harus mengesahkannya apabila token dicipta.
+Ini disemak pada 2026-10-10 terhadap kod sumber Gitea (definisi laluan dalam `routers/api/v1/api.go`, cabang `main`) dan halaman GitHub "Permissions required for fine-grained personal access tokens", bagi setiap panggilan API yang dibuat oleh aliran kerja. S01 meluluskannya sebagai pengganti S05 (ADR-0002) pada 2026-10-10. Ia **belum diuji pada instans ini dengan token yang hanya mempunyai kebenaran ini**; semakan di hujung bahagian ini ialah cara untuk melakukannya.
**Token Gitea** (personal access token seorang pengguna, bukan deploy key; deploy key tidak berfungsi untuk REST API):
-- skop `read:repository`
-- pengguna mesti dibenarkan membaca push mirror repositori, yang dihadkan oleh Gitea kepada pentadbir repositori
+- skop `read:repository`: setiap laluan `/repos/...` memerlukan skop repositori, dan panggilan di bawah hanya membaca
+- pengguna mesti pentadbir repositori: laluan `push_mirrors` memerlukan pentadbiran repositori selain skop token
Panggilan yang dibuat: `GET /repos/{owner}/{repo}` dan `GET /repos/{owner}/{repo}/push_mirrors`.
@@ -28,11 +28,19 @@ Panggilan yang dibuat: `GET /repos/{owner}/{repo}` dan `GET /repos/{owner}/{repo
- Resource owner: pemilik repositori cermin
- Repository access: hanya repositori cermin
-- Repository permission: **Administration: Read and write** (tiada kebenaran lain)
+- Repository permission: **Administration: Read and write** (tiada kebenaran lain); ia diperlukan untuk `PATCH /repos/{owner}/{repo}` dan `PUT /repos/{owner}/{repo}/topics`. `Metadata: Read` ditambah secara automatik dan meliputi `GET /repos/{owner}/{repo}`.
- Tetapkan tarikh tamat tempoh
Panggilan yang dibuat: `GET /repos/{owner}/{repo}`, `PATCH /repos/{owner}/{repo}` (penerangan) dan `PUT /repos/{owner}/{repo}/topics`.
+**Token Gitea untuk wiki** (lihat "Secret untuk menerbitkan wiki" di bawah): skop `write:repository`, kerana menulis halaman (`POST`, `PATCH`, `DELETE` di bawah `/repos/{owner}/{repo}/wiki`) memerlukan skop repositori dengan akses tulis, dan pengguna mesti mempunyai akses tulis kepada wiki repositori. Menyenaraikan dan membaca halaman hanya memerlukan skop baca.
+
+**Menguji kebenaran pada instans (pilihan)**
+
+1. Dalam tetapan Gitea pengguna, token yang disimpan sebagai `TOKEN_FOR_GITEA` hanya menyenaraikan `read:repository`, pengguna ialah pentadbir repositori, dan larian masih berakhir dengan `Preflight passed`.
+2. Token GitHub hanya menyenaraikan repositori cermin dan `Administration: Read and write` (serta `Metadata: Read` automatik), dan larian berakhir dengan `Preflight passed` dan `Synced description and topics`.
+3. Token sementara yang tidak mempunyai salah satu kebenaran ini menyebabkan larian gagal dengan `[permissions]` (atau HTTP 403 bagi Gitea) dan menamakan kategori tanpa mencetak token.
+
Format `PAT_FOR_GITHUB`: hanya rentetan token (contohnya `github_pat_...`) sebagai teks biasa. Aliran kerja hanya menyemak bahawa ia tidak kosong; GitHub menolak nilai yang salah (HTTP 401).
## Perkara yang disemak oleh aliran kerja sebelum mengubah apa-apa