Skip to content

Validate retired-link guard adoption and retire the rollout flag #269

Closed
12 of 12 issues completed
Closed

Description

@devantler

🤖 Generated by the Agentic Engineer

Evidence and audience

Actions devantler-tech/actions#721 introduces a shared, default-off check for links to explicitly configured retired GitHub repositories. The original repeated drift affected monorepo, agent-plugins, agent-skills, platform-template and dotnet-template documentation. The shared check should replace repeated manual discovery with an early, actionable failure.

Outcome and acceptance

  • After devantler-tech/actions#721 ships, adopt the released action by immutable commit in at least two consumers, starting with platform-template and dotnet-template if their current documentation still benefits from the check.
  • Keep consumer-specific retired names, documentation roots and justified historical exceptions in each consumer's versioned configuration.
  • Verify a clean real consumer run and a disposable PR fixture containing a retired link; the latter must fail with the expected file and repository, not an operational error.
  • Observe at least one week of consumer runs for false positives and scope mistakes; correct the shared contract or configuration from evidence.
  • Decide whether the temporary enabled input can default on and then be removed in separate reviewed changes. Do not broaden scan scope or enable callers silently.

Delivery alone does not prove adoption or improvement in consumer documentation. This issue owns that verification and flag retirement after devantler-tech/actions#721.

Remaining work: deliver the default-on decision in #742 through substantive review, complete current-head CI, protected merge and release verification. Retain the existing explicit-false consumer configuration; input deletion is not selected for this increment.

Implementation decision — 25 October 2026

Select default-on validation after the completed consumer observation and retain enabled: "false" as compatible consumer configuration. This ends the opt-in rollout without forcing an API-removal migration or changing consumer-owned scan scopes. The existing released false/true behavior and its refusal/output controls remain supported. This is the decision requested by the last criterion, not a claim that #742 has merged or that a parameter can never change in a future separately reviewed compatibility change.

The rollout observation and native negative controls above justify the default. Existing explicit-true callers retain their behavior. A consumer can keep a declared step and deliberately disable it without installing Go, reading configuration, scanning files or publishing success/source outputs. Keep those disabled-state tests alongside omitted-input clean and rejection controls. Do not interpret supported present behavior as a promise of indefinite interface stability.

Activity

  1. added theissue type on Sep 24, 2026
  2. moved this to 📥 Backlog in 🌊 Project Boardon Sep 24, 2026
  3. transferred this issue fromon Sep 25, 2026
  4. devantler commented on Oct 2, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Refreshed the adoption inventory on 2026-10-02. The complete indexed workflow search returns two matches, both catalogue CI self-tests, with incomplete_results=false. Direct reads of the intended consumers at platform-template 111b61a17cf739872b088f840766a75a4cde92d7 and dotnet-template b54ea833e3d8a7568c1c7fa5cfa8644485a60afa also find no retired-link guard caller. This is bounded search and direct-source evidence, not a full portfolio census.

    Next delivery: adopt the released guard in two reviewed, immutable-pinned consumer changes, with consumer-owned scope and justified historical exceptions. Observe a clean native run and a disposable retired-link failure that identifies the expected file/repository. Start the required one-week observation only once those consumers actually run it.

    Blocker: real consumer adoption, negative-path proof and the required observation period are absent. Catalogue fixtures do not authorize a default flip or retirement.

  5. devantler commented on Oct 3, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Two real consumer adoptions are now merged: .NET template devantler-tech/dotnet-template#466 at main 8b1cb6a126f2d9f6382ca2f46fd88c1d395c1cc1 and platform template devantler-tech/platform-template#219 at main e45925117bc2d626ac75822660c4a716eff3a2c4. Both pin the opt-in validator to immutable canonical v4.9.4, own explicit documentation scopes with no historical exceptions, preserve their configuration through template sync, and require a complete scan in required CI. Generated projects choose their own adoption.

    Native PR jobs https://github.com/devantler-tech/dotnet-template/actions/runs/37161080884/job/111314462653 and https://github.com/devantler-tech/platform-template/actions/runs/37161084935/job/111314476169 checked 5 and 35 clean text files, respectively. Each then rejected the seeded README link with failed outcome, empty validated output, and an independent exit-1 diagnostic identifying the expected file and retired repository. The shipped validator body was also rerun against both fetched merged-main commits with the same clean/negative results.

    The delivery children #465 and #218 are closed. This experiment remains open: the earliest one-week merged-consumer observation window ends 2026-10-10T23:46:08Z. Default-on or flag removal still needs a separate evidence-based decision after that window; this round makes neither change.

  6. moved this from 📥 Backlog to 📊 Verifying in 🌊 Project Boardon Oct 4, 2026
  7. moved this from 📊 Verifying to 🧊 Icebox in 🌊 Project Boardon Oct 8, 2026
  8. devantler commented on Oct 15, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Observation window measured — 2026-10-15

    Every Validate retired repository links job in the two consumers' CI from 2026-10-03 to 2026-10-15, read from the Actions API:

    Consumer Jobs Inside the week (10-03 23:46Z → 10-10) Conclusions Latest scan
    dotnet-template 46 30 46 success 5 text files checked, 0 retired links
    platform-template 24 10 24 success 36 text files checked, 0 retired links
    • False positives: none. No job failed, so no real link was ever reported as retired.
    • The check still bites: in the latest job of each consumer the seeded fixture step found exactly one retired link (README.md, devantler-tech/reusable-workflows), as designed. So the zeros above come from scans that looked at files, not from a skipped step.
    • Scope mistakes: none seen. Both consumers scan the same file counts as at adoption (5 and 36), with 0 historical exceptions.

    What this does not show: every observed job ran on a pull request (mostly dependency updates). No pull request in the window introduced a real retired link, so a true positive outside the fixture was not observed.

    I have ticked the observation criterion and removed blocked. What is left — whether enabled can default on — is our own decision.

  9. added a commit that references this issue on Oct 24, 2026
  10. moved this from 🧊 Icebox to 🏃🏻‍♂️ In Progress in 🌊 Project Boardon Oct 24, 2026
  11. added a commit that references this issue on Oct 25, 2026
    2283be5
  12. moved this from 🏃🏻‍♂️ In Progress to ✅ Done in 🌊 Project Boardon Oct 25, 2026
  13. devantler commented on Oct 25, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Completed by protected merge of #742 as signed commit 2283be5b2f3f937bb1d01804416711e74f829200, released as v13.2.0. Post-merge main CI 40148705891, Release, CD and both CodeQL workflows have succeeded. The released configuration is independently signature-verified and reconciled at the matching revision.

    The complete fresh workflow/composite census covers 23 active repositories, 189 workflows and 61 action metadata files. All 28 direct/composite calls across the 12 current external consumers explicitly enable validation; their actual caller files were individually Git-blob-hash verified. Native omitted-input good/bad, explicit-false, malformed-input and source-output controls pass. The actual rendered action guide was read, the final head received a clean independent Bugbot review, and the only earlier finding was explicitly withdrawn.

    The recorded decision is default-on validation with the compatible explicit-false setting retained as supported consumer configuration. This completes the rollout decision without breaking existing callers. It makes no promise against a future separately reviewed interface change. Native issue readback confirms Completed and Done.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    Priority

    None yet

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions