Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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-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. |
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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. |

Expand All @@ -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-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, 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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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 `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.

## 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.
Loading