From 4773c3d79685c65b7729a67b665bd5f62616acd0 Mon Sep 17 00:00:00 2001 From: Jose Celano Date: Wed, 16 Sep 2026 18:56:06 +0100 Subject: [PATCH 1/3] docs(links): record C6 hosted verification --- .../ISSUE.md | 9 +++++---- .../agent-review-reports.md | 13 +++++++++++++ .../external-link-baseline.md | 14 ++++++++++---- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/ISSUE.md b/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/ISSUE.md index 380736838..e22b66756 100644 --- a/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/ISSUE.md +++ b/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/ISSUE.md @@ -87,7 +87,7 @@ Status values: `TODO`, `IN_PROGRESS`, `BLOCKED`, `DONE`. | ID | Status | Task | Notes / Expected Output | | --- | ----------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | | T1 | DONE | Preserve and classify the baseline | `external-link-baseline.md` maps all 461 report errors to nine recurring categories and dispositions. | -| T2 | IN_PROGRESS | Repair clearly stale references | C3-C5 hosted-verified; Docker ACI repair pending hosted verification; remaining C6 fragments pending. | +| T2 | IN_PROGRESS | Repair clearly stale references | C3-C6 Docker repairs hosted-verified; remaining C6 fragments and C7-C8 pending. | | T3 | DONE | Add justified narrow exclusions | C1/C9 and C2 online-only rules are verified on merged upstream hosted runs. | | T4 | DONE | Revalidate hosted signal | Hosted run 34616458439 excluded C1/C9 and C2 while retaining visible unrelated failures and its report artifact. | | T5 | TODO | Document operations and review completion | Triage procedure, residual risks, acceptance evidence, and independent review are updated from observed results. | @@ -141,6 +141,7 @@ A category that needs no repository change is recorded in issue-local evidence w - 2026-09-15 10:12 UTC - Copilot - Hosted [run 34953081017](https://github.com/torrust/torrust-tracker/actions/runs/34953081017) on merged revision `a1ddcaa0` visibly failed with 38 errors and 2 timeouts, uploaded a 1,342-byte report artifact through 2026-09-29, and contained no occurrence of C5's retired URL. However, it reported the replacement `#servers` fragment as missing, so C5 is not hosted-verified. Replaced the fragment with the same authoritative Caddy server-options page without a fragment, which returned HTTP 200; focused validation and a new hosted run remain pending. - 2026-09-15 12:52 UTC - Copilot - After PR #2225 merged, [run 34971438822](https://github.com/torrust/torrust-tracker/actions/runs/34971438822) ran on merged revision `bbb58fa8`: it visibly failed with 37 unrelated errors, no timeouts, and a retained `lychee-external-link-report` artifact. The report contains neither C5's retired URL nor the current Caddy options URL without a fragment as an error, while Docker missing fragments, third-party `403` responses, FSF transport errors, GitHub comment/review fragments, and the Star History fragment remain visible. This hosted-verifies C5 without adding an exclusion. - 2026-09-15 15:00 UTC - Copilot - Replaced C6's two retired Docker Cloud ACI fragment links. Both Docker page URLs now redirect to Docker's retired-page notice. Azure's current Azure Files documentation describes mount-path content obscuring, replacing the obsolete single-file/subfolder assertion; Azure's troubleshooting documentation confirms that ACI does not support Docker-style port mapping. Focused validation and hosted workflow verification remain pending; the GitHub-comment and Star History fragments remain separate C6 investigations. +- 2026-09-16 17:33 UTC - Copilot - After PR #2231 merged, [run 35128890381](https://github.com/torrust/torrust-tracker/actions/runs/35128890381) ran on merged revision `6e1e9d29`: it visibly failed with 33 errors and 4 timeouts, uploaded a 1,229-byte `lychee-external-link-report` artifact through 2026-09-30, and contained no errors for either retired Docker ACI URL. Unrelated third-party `403`, FSF, GitHub comment/review fragment, Star History fragment, and timeout failures remained visible. This hosted-verifies the C6 Docker repair without adding an exclusion. ## Acceptance Criteria @@ -173,7 +174,7 @@ Status values: `TODO`, `IN_PROGRESS`, `DONE`, `FAILED`, `BLOCKED`. | --- | ------------------------------ | ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | M1 | Reproduce baseline | Manually dispatch `external-link-check.yaml` on `develop`; download `lychee-external-link-report`. | Report is available even when Lychee fails; baseline counts and categories can be reviewed. | DONE | [Run 34347690674](https://github.com/torrust/torrust-tracker/actions/runs/34347690674), revision `7abc30b2`, 461 errors, 0 timeouts. | | M2 | Classify durable failures | Review all report entries and group by URL/pattern, response type, owning document, and proposed disposition. | Every baseline failure has a traceable disposition; no broad host-level suppression is proposed. | DONE | `external-link-baseline.md`; independent reconciliation passed on 2026-09-10. | -| M3 | Verify reference repairs | Check each changed target using the appropriate authoritative source, then run local validation. | Replacement reference is correct and offline local-link validation remains clean. | IN_PROGRESS | C3: Cargo metadata and docs.rs confirmed the shared target; [run 34829466145](https://github.com/torrust/torrust-tracker/actions/runs/34829466145) contains none of the 14 replaced URLs. C4: [run 34843399874](https://github.com/torrust/torrust-tracker/actions/runs/34843399874) contains none of the three replaced URLs. C5: [run 34971438822](https://github.com/torrust/torrust-tracker/actions/runs/34971438822) contains neither the retired URL nor the replacement without a fragment as an error. C6's two retired Docker ACI fragments now use authoritative Azure page-level references and await hosted verification. All completed slices retain unrelated errors. | +| M3 | Verify reference repairs | Check each changed target using the appropriate authoritative source, then run local validation. | Replacement reference is correct and offline local-link validation remains clean. | IN_PROGRESS | C3: Cargo metadata and docs.rs confirmed the shared target; [run 34829466145](https://github.com/torrust/torrust-tracker/actions/runs/34829466145) contains none of the 14 replaced URLs. C4: [run 34843399874](https://github.com/torrust/torrust-tracker/actions/runs/34843399874) contains none of the three replaced URLs. C5: [run 34971438822](https://github.com/torrust/torrust-tracker/actions/runs/34971438822) contains neither the retired URL nor the replacement without a fragment as an error. C6 Docker: [run 35128890381](https://github.com/torrust/torrust-tracker/actions/runs/35128890381) contains neither retired Docker ACI URL as an error. All completed slices retain unrelated errors. | | M4 | Verify exclusion boundaries | Dispatch the hosted workflow after adding a proposed exclusion. | The intended durable false-positive category is absent, while representative unrelated external failures remain visible and the report uploads. | DONE | C1/C9: [run 34578523069](https://github.com/torrust/torrust-tracker/actions/runs/34578523069) on `427b0c93` excluded 476 links and retained its report. C2: [run 34616458439](https://github.com/torrust/torrust-tracker/actions/runs/34616458439) on `f6df96bf` excluded 495 links, left 44 errors, retained a 1,533-byte artifact, and contained no loopback URLs. | | M5 | Distinguish transient failures | Re-run a newly observed timeout, 403, or other potentially transient result once. | The record distinguishes a persistent failure from a transient response before an exclusion or repair decision. | TODO | Pair of hosted-run URLs and comparison. | @@ -182,10 +183,10 @@ Status values: `TODO`, `IN_PROGRESS`, `DONE`, `FAILED`, `BLOCKED`. | AC ID | Status (`TODO`/`DONE`) | Evidence | | ----- | ---------------------- | ------------------------------------------------------------------ | | AC1 | DONE | `external-link-baseline.md` from run 34347690674. | -| AC2 | TODO | C3-C5 target and hosted verification are recorded; remaining repair slices must be verified. | +| AC2 | TODO | C3-C6 Docker target and hosted verification are recorded; remaining repair slices must be verified. | | AC3 | DONE | C1/C9 and C2 hosted runs show each exact exclusion remains narrow. | | AC4 | DONE | Run 34578523069 failed visibly and uploaded its report artifact. | -| AC5 | DONE | Runs 34578523069, 34616458439, 34829466145, 34843399874, and 34971438822 record each completed remediation slice. | +| AC5 | DONE | Runs 34578523069, 34616458439, 34829466145, 34843399874, 34971438822, and 35128890381 record each completed remediation slice. | | AC6 | TODO | Updated documentation and reviewer confirmation. | ## Risks and Trade-offs diff --git a/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/agent-review-reports.md b/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/agent-review-reports.md index 3d656e3cf..6167cd5eb 100644 --- a/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/agent-review-reports.md +++ b/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/agent-review-reports.md @@ -181,3 +181,16 @@ semantic-links: - Follow-up actions: - Commit and merge this isolated repair, then obtain and independently review a hosted External Link Check report. - Continue the remaining C6 fragments independently; do not close issue #2185. + +### 2026-09-16 17:55 UTC - Task Reviewer + +- Invocation scope: Read-only review of the merged C6 Docker ACI hosted-verification evidence in `ISSUE.md`, `external-link-baseline.md`, `agent-review-reports.md`, and `docs/containers.md`. +- Inputs: PR #2231 merge commit `6e1e9d29b5d88b763e1748ad45afabe5d725d62f`, GitHub Actions [run 35128890381](https://github.com/torrust/torrust-tracker/actions/runs/35128890381), and its downloaded `lychee-external-link-report` artifact. +- Evidence: The run completed with the expected advisory failure. `Check External Links` failed visibly while `Upload Lychee Report` succeeded. The retained 1,229-byte artifact expires on 2026-09-30. Its report records 2,117 total checks, 1,483 unique links, 1,343 successful checks, 25 redirects, 737 exclusions, 33 errors, and 4 timeouts. It contains neither retired Docker ACI URL as an error and retains unrelated third-party `403`, FSF, GitHub comment/review fragment, Star History fragment, and timeout failures. +- Findings: + - Resolved: The two Docker ACI repairs are hosted-verified without adding an exclusion or hiding unrelated external-link failures. + - Pending: The GitHub issue-comment and Star History fragments remain separate C6 investigations; C7 and C8 remain pending. Keep AC2, AC6, final quality, manual-verification, acceptance-review, implementation-completion-review, and closure checkpoints pending. +- Verdict: REVIEW PASSED for the C6 Docker sub-slice. +- Follow-up actions: + - Record run 35128890381 in the issue and baseline evidence while preserving the remaining C6-C8 work as pending. + - Do not close issue #2185. diff --git a/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/external-link-baseline.md b/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/external-link-baseline.md index 29e7aaab9..bef1c916a 100644 --- a/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/external-link-baseline.md +++ b/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/external-link-baseline.md @@ -67,12 +67,12 @@ The following nine categories cover all 461 report errors. C1 and C9 share one p - **Evidence:** Hosted [run 34953081017](https://github.com/torrust/torrust-tracker/actions/runs/34953081017) contains no retired C5 URL but reports the prior `#servers` replacement fragment as missing. Follow-up [run 34971438822](https://github.com/torrust/torrust-tracker/actions/runs/34971438822) ran on merged revision `bbb58fa8`, contains neither the retired URL nor the replacement without a fragment as an error, retained 37 unrelated errors with no timeouts, and successfully uploaded its report artifact. - **Next action:** Complete. Keep the C6-C8 categories under their independent dispositions. -### C6: Other missing fragments — 5 baseline occurrences (2 repaired pending verification) +### C6: Other missing fragments — 5 baseline occurrences (2 repaired and hosted-verified) - **Pattern:** Docker Cloud ACI fragments, GitHub issue-comment fragments, and the Star History fragment returning `Cannot find fragment`. -- **Disposition:** Two Docker Cloud ACI fragments repaired pending hosted verification; GitHub issue-comment and Star History fragments remain under investigation. Unlike C1, these have distinct target-page semantics and must not be hidden by a broad fragment exclusion. -- **Evidence:** Both Docker Cloud ACI pages now redirect to Docker's retired-page notice. Azure's current Azure Files documentation describes the replacement mount-path behavior, and Azure's troubleshooting documentation confirms that ACI does not support Docker-style port mapping. -- **Next action:** Run a hosted workflow to verify the two Docker fragment URLs are absent while unrelated failures remain visible. Verify the GitHub issue-comment and Star History fragments independently. +- **Disposition:** Two Docker Cloud ACI fragments repaired and hosted-verified; GitHub issue-comment and Star History fragments remain under investigation. Unlike C1, these have distinct target-page semantics and must not be hidden by a broad fragment exclusion. +- **Evidence:** Both Docker Cloud ACI pages redirect to Docker's retired-page notice. Azure's current Azure Files documentation describes the replacement mount-path behavior, and Azure's troubleshooting documentation confirms that ACI does not support Docker-style port mapping. Hosted [run 35128890381](https://github.com/torrust/torrust-tracker/actions/runs/35128890381) on merged revision `6e1e9d29` contains neither retired Docker URL as an error, retains 33 unrelated errors and 4 timeouts, and successfully uploads its report artifact. +- **Next action:** Complete the Docker ACI sub-slice. Verify the GitHub issue-comment and Star History fragments independently. ### C7: Third-party access-controlled links — 3 occurrences @@ -168,6 +168,12 @@ The downloaded report records 1,782 total checks, 1,224 unique links, 1,196 succ The downloaded report contains neither the retired `https://caddyserver.com/docs/protocol/http3` URL nor the `https://caddyserver.com/docs/caddyfile/options` replacement without a fragment as an error. It retains unrelated Docker missing fragments, Medium and Stack Overflow `403` responses, FSF transport errors, GitHub comment and review fragments, and the Star History fragment. This verifies the C5 repair without adding an exclusion or hiding remaining external-link failures. +### C6 Docker repair verification + +[External Link Check run 35128890381](https://github.com/torrust/torrust-tracker/actions/runs/35128890381) ran after PR #2231 merged on revision `6e1e9d29b5d88b763e1748ad45afabe5d725d62f`. The `Check External Links` step failed visibly and `Upload Lychee Report` succeeded. The retained `lychee-external-link-report` artifact is 1,229 bytes and expires on 2026-09-30. + +The report records 2,117 total checks, 1,483 unique links, 1,343 successful checks, 25 redirects, 737 exclusions, 33 errors, and 4 timeouts. It contains neither `https://docs.docker.com/cloud/aci-container-features/#persistent-volumes` nor `https://docs.docker.com/cloud/aci-integration/#exposing-ports` as an error. It retains unrelated third-party `403` responses, FSF transport errors, GitHub issue-comment and review fragments, the Star History fragment, and timeout failures. This verifies the Docker ACI repair without adding an exclusion or hiding remaining external-link failures. + ## Deferred Work C6-C8 remain deferred until each category's affected references or transient behavior is verified individually. This keeps future repairs and any potential exclusions narrowly scoped and prevents mixing stale-reference, missing-fragment, and transient/access-controlled findings in one change. From 3821dc53a2bd26bb3e6a99cc9310acd26dfbb575 Mon Sep 17 00:00:00 2001 From: Jose Celano Date: Thu, 17 Sep 2026 11:54:02 +0100 Subject: [PATCH 2/3] docs(links): clarify C6 hosted verification scope --- .../ISSUE.md | 4 ++-- .../external-link-baseline.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/ISSUE.md b/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/ISSUE.md index e22b66756..ae0401a89 100644 --- a/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/ISSUE.md +++ b/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/ISSUE.md @@ -87,7 +87,7 @@ Status values: `TODO`, `IN_PROGRESS`, `BLOCKED`, `DONE`. | ID | Status | Task | Notes / Expected Output | | --- | ----------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | | T1 | DONE | Preserve and classify the baseline | `external-link-baseline.md` maps all 461 report errors to nine recurring categories and dispositions. | -| T2 | IN_PROGRESS | Repair clearly stale references | C3-C6 Docker repairs hosted-verified; remaining C6 fragments and C7-C8 pending. | +| T2 | IN_PROGRESS | Repair clearly stale references | C3-C5 and C6 Docker repairs hosted-verified; remaining C6 fragments and C7-C8 pending. | | T3 | DONE | Add justified narrow exclusions | C1/C9 and C2 online-only rules are verified on merged upstream hosted runs. | | T4 | DONE | Revalidate hosted signal | Hosted run 34616458439 excluded C1/C9 and C2 while retaining visible unrelated failures and its report artifact. | | T5 | TODO | Document operations and review completion | Triage procedure, residual risks, acceptance evidence, and independent review are updated from observed results. | @@ -183,7 +183,7 @@ Status values: `TODO`, `IN_PROGRESS`, `DONE`, `FAILED`, `BLOCKED`. | AC ID | Status (`TODO`/`DONE`) | Evidence | | ----- | ---------------------- | ------------------------------------------------------------------ | | AC1 | DONE | `external-link-baseline.md` from run 34347690674. | -| AC2 | TODO | C3-C6 Docker target and hosted verification are recorded; remaining repair slices must be verified. | +| AC2 | TODO | C3-C5 and C6 Docker target and hosted verification are recorded; remaining repair slices must be verified. | | AC3 | DONE | C1/C9 and C2 hosted runs show each exact exclusion remains narrow. | | AC4 | DONE | Run 34578523069 failed visibly and uploaded its report artifact. | | AC5 | DONE | Runs 34578523069, 34616458439, 34829466145, 34843399874, 34971438822, and 35128890381 record each completed remediation slice. | diff --git a/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/external-link-baseline.md b/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/external-link-baseline.md index bef1c916a..4cc5faf71 100644 --- a/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/external-link-baseline.md +++ b/docs/issues/open/2185-2003-triage-advisory-external-link-check-findings/external-link-baseline.md @@ -170,7 +170,7 @@ The downloaded report contains neither the retired `https://caddyserver.com/docs ### C6 Docker repair verification -[External Link Check run 35128890381](https://github.com/torrust/torrust-tracker/actions/runs/35128890381) ran after PR #2231 merged on revision `6e1e9d29b5d88b763e1748ad45afabe5d725d62f`. The `Check External Links` step failed visibly and `Upload Lychee Report` succeeded. The retained `lychee-external-link-report` artifact is 1,229 bytes and expires on 2026-09-30. +[External Link Check run 35128890381](https://github.com/torrust/torrust-tracker/actions/runs/35128890381) ran after PR #2231 merged on revision `6e1e9d29`. The `Check External Links` step failed visibly and `Upload Lychee Report` succeeded. The retained `lychee-external-link-report` artifact is 1,229 bytes and expires on 2026-09-30. The report records 2,117 total checks, 1,483 unique links, 1,343 successful checks, 25 redirects, 737 exclusions, 33 errors, and 4 timeouts. It contains neither `https://docs.docker.com/cloud/aci-container-features/#persistent-volumes` nor `https://docs.docker.com/cloud/aci-integration/#exposing-ports` as an error. It retains unrelated third-party `403` responses, FSF transport errors, GitHub issue-comment and review fragments, the Star History fragment, and timeout failures. This verifies the Docker ACI repair without adding an exclusion or hiding remaining external-link failures. From 1dbd2b2c513c580a4cb7f69e0009b47787aa4ef6 Mon Sep 17 00:00:00 2001 From: Jose Celano Date: Thu, 17 Sep 2026 12:03:04 +0100 Subject: [PATCH 3/3] docs(reviews): audit PR 2248 findings --- docs/pr-reviews/pr-2248-review.md | 62 +++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 docs/pr-reviews/pr-2248-review.md diff --git a/docs/pr-reviews/pr-2248-review.md b/docs/pr-reviews/pr-2248-review.md new file mode 100644 index 000000000..57992fc68 --- /dev/null +++ b/docs/pr-reviews/pr-2248-review.md @@ -0,0 +1,62 @@ +--- +semantic-links: + skill-links: + - process-pr-review + related-artifacts: + - .github/skills/dev/pr-reviews/process-pr-review/SKILL.md + - docs/templates/PR-REVIEW-TEMPLATE.md + - docs/templates/REVIEW-FINDINGS.md +--- + + + +# PR #2248 Review Audit + +Source: pull-request reviews and inline review threads for https://github.com/torrust/torrust-tracker/pull/2248. + +## Ownership + +The PR author owns this tracked audit record. The Copilot reviewer delivered findings through GitHub and created no repository artifact. + +## Findings + +| Finding ID | Review finding reference | Author class | Severity | Category | Relationship | Disposition | Thread state | +| ---------- | ------------------------ | ------------ | -------- | -------- | ------------ | ----------- | ------------ | +| F1 | `review-finding:pr-2248-f1` | Copilot | Suggestion (inferred) | documentation | ORIGINAL | FIXED | RESOLVED | +| F2 | `review-finding:pr-2248-f2` | Copilot | Suggestion (inferred) | documentation | ORIGINAL | FIXED | RESOLVED | + +## Finding Details + +### F1 - Clarify the C6 Docker subset status + +- PR number: 2248 +- Source review ID: 5226580057 +- Source URL: https://github.com/torrust/torrust-tracker/pull/2248#discussion_r4029303212 +- Concern: The T2 status could imply that all of C6 is hosted-verified, although only the Docker sub-slice is complete. +- Solution: Clarified the T2 and AC2 evidence to distinguish C6 Docker repairs from the remaining C6 fragments. +- Current-tree verification: `ISSUE.md` now states `C3-C5 and C6 Docker repairs hosted-verified; remaining C6 fragments and C7-C8 pending`; Markdown and cspell validation passed. +- Resolution reference: `docs(links): clarify C6 hosted verification scope` +- Reply URL: https://github.com/torrust/torrust-tracker/pull/2248#discussion_r4036069289 + +### F2 - Standardize the C6 hosted-run revision format + +- PR number: 2248 +- Source review ID: 5226580057 +- Source URL: https://github.com/torrust/torrust-tracker/pull/2248#discussion_r4029303260 +- Concern: The C6 hosted-verification entry used a full SHA while nearby evidence used short SHAs. +- Solution: Changed the C6 hosted-verification entry to the established short revision form, `6e1e9d29`. +- Current-tree verification: `external-link-baseline.md` records the C6 run on revision `6e1e9d29`; Markdown and cspell validation passed. +- Resolution reference: `docs(links): clarify C6 hosted verification scope` +- Reply URL: https://github.com/torrust/torrust-tracker/pull/2248#discussion_r4036072013 + +## Processing Log + +- 2026-09-17 10:55 UTC - Started audit for Copilot review `5226580057`; normalized findings F1-F2 in source order. +- 2026-09-17 11:02 UTC - F1 and F2 fixed in `docs(links): clarify C6 hosted verification scope`, replied to, and resolved. + +## Completion Rules + +- Re-derive each reply claim against the current tree before replying or resolving a thread. +- Reply on every resolvable inline thread before resolving it. +- Cite each fix by its unique Conventional Commit subject and durable reply URL, never by a branch SHA. +- Refresh review threads using GraphQL and confirm that no unresolved actionable thread remains.