Repository navigation
Migrate governance intent from devantler-tech/maintenance into .github (declarative) and retire the maintenance repo #84
Description
🤖 Generated by the Agentic Engineer
Problem
Retire the legacy maintenance reports after their useful policy checks are owned and verified here. Declaring a team grant does not prevent an additional unmanaged admin grant, and Observe-only resources do not revert live state. Rendered policy checks therefore need a complete live repository/team join before retirement.
Desired behavior
Every active, non-archived organization repository has exactly one effective admin team: the secret, non-inheritable Admins team. The rendered Admins policy and repository coverage remain authoritative desired-state checks; the live audit must additionally include undeclared repositories, every permissions page and repeated stable joins. Incomplete visibility returns UNKNOWN, never PASS.
PR #400 is merged as 6d7a19f3b37722806610ade51da745d939eef7e5. On 2026-10-03, both the independent organization-admin audit and the reviewed main App audit passed all 23 active repositories with repeated stable census/team joins. The App run requested read-only permissions and completed token revocation. The false-input control skipped the audit job and every credential step. This establishes manual App census coverage. Scheduled replacement, routine activation and experiment retirement are complete, as recorded below; maintenance retirement remains separate.
Tooling decision
Retain Crossplane as the settings writer and use the dedicated coverage/admin joins for this exact invariant. Decline a new Allstar deployment and keep Scorecard as supplementary security evidence. OpenSSF reports community-hosted Allstar ended in August 2026; self-hosting adds another operated settings writer. Allstar's settings enforcement and Scorecard's security heuristics do not replace authoritative ownership and the complete effective-team join required here.
Acceptance criteria
- Verify the full live repository universe is declared and satisfies the current Admins grant policy; backfill any gaps. (Verified 2026-10-10: all 25 active repositories pass; the only undeclared one is
actions, the deliberate exemption tracked in Archive devantler-tech/actions once nothing references it #240.) - Prove the reviewed main-only App audit can read the complete census and every effective team assignment (Audit live repository admin-team parity before maintenance retirement #395).
- Activate one scheduled completeness/admin check with issue-on-gap behavior before replacing the legacy reports.
- Record the Allstar/Scorecard adoption decision and reasons.
- Archive maintenance only after the replacement is verified and references are cleared; remove its declarative resources through reviewed deletion guards. The maintainer performs any final irreversible deletion.
No archive, deletion or policy activation is authorized by the audit result alone. Related: #305, #306, #395 and the provider adoption gates in #69/#121. This issue remains open for rollout and retirement.
Natural scheduled observation
The first natural daily run completed on 2026-10-04 from reviewed main 6ae9a67. Admission, both complete coverage/admin checks and the separate reporter all succeeded; the audit covered all 23 active repositories and revoked its read-only App token. The reporter executed its actual complete-success path. Failure/UNKNOWN-to-open behavior remains protected by the existing independent report controls; this successful run does not claim a native failure-issue creation.
PR #444 is merged and completes experiment retirement in #395. The input-free combined main audit and standalone main audit both pass from the merged source; the combined success-path reporter also completes. The complete desired-state adoption/exemption join and archive/reference/deletion gates remain open. No maintenance archival or irreversible deletion follows from this observation.
Metadata
Metadata
Assignees
Labels
Type
Fields
Priority
Start date
Target date
Effort
Projects
- StatusShow more project fields🧊 Icebox
Activity
coderabbitai commentedon Jul 7, 2026
🔗 Related PRs
#74 - feat(rulesets): require the CodeRabbit review status check org-wide [merged]
#78 - feat(repositories): declare provider-upjet-unifi (net-new Library repo) [merged]
#79 - feat(labels): bring devantler-tech/monorepo under declarative IssueLabels management [merged]
#82 - feat: declare the devantler-tech/aws config-tenant repo [merged]
📝 Issue Planner
Check the box below or use the
@coderabbitai plancommand to generate an implementation plan and prompts that you can use with your favorite coding assistant.🧪 Issue enrichment is currently in open beta.
You can configure auto-planning by selecting labels in the issue_enrichment configuration.
To disable automatic issue enrichment, add the following to your
.coderabbit.yaml:💬 Have feedback or questions? Drop into our discord!
chore: agent-claim #84 nonce=63c667443e9389816a1531dc35e25ab3
devantler commentedon Sep 27, 2026
Started the migration with the one piece worth keeping from the maintenance reports: a live-org completeness check (#305, delivered by #307). Running it today already finds two public repositories outside
deploy/with no team at all; adopting them is #306. Removing the maintenance repository stays last, once both are in.feat(governance): report live repositories that deploy/ does not decl…
devantler commentedon Oct 3, 2026
Decision for this retirement: retain Crossplane as the authoritative settings writer and the dedicated repository-coverage/admin-team joins. Decline a new Allstar deployment; use Scorecard signals as supplementary security evidence rather than as proof of this exact team policy.
OpenSSF's September 2026 update reports that community-hosted Allstar ended in August and users must self-host. Allstar can monitor and change repository settings; adding another operated writer would duplicate the ownership already held here. Scorecard measures security heuristics, which do not establish a complete join of every active repository and its effective Admins team. These are the reasons for the decision, not a claim that the tools are interchangeable.
PR #400 supplies the default-off, read-only admin audit. Scheduling/issue-on-gap, native App coverage, and archive/remove sequencing still need their own evidence. This resolves the tooling-decision item only and does not retire maintenance.
chore: agent-claim #84 nonce=836010820bf3eb4afa002f1444ce585c
devantler commentedon Oct 3, 2026
PR #409 merged as 906a5bc. All three actual main controls now pass from that source:
The routine workflow is delivered; its daily schedule is still disabled pending the reviewed activation change. Actual scheduled observation, opt-in/rollout-flag retirement and legacy maintenance retirement remain open. Organization-settings monitoring remains separate in #85/#404. The existing deliberate coverage exemption remains tracked by the Actions migration; this evidence does not claim every live repository has been adopted or authorize an archive/deletion.
devantler commentedon Oct 10, 2026
The replacement has now handled a real gap by itself
The earlier note here said the failure path had not yet been seen natively. It has now:
For comparison, the three legacy reports in
maintenanceeach run once a week (last on 5, 6 and 7 October), so their next look would have been 12 to 14 October.Acceptance
First item ticked. The Admins policy holds on every active repository, and every one is declared except
actions, the one deliberate exemption (tracked in Archive devantler-tech/actions once nothing references it #240).The last item, archiving
maintenance, is the only one left, and it is not ready: references are not cleared. An organization-wide code search today, checked against a known reference as a control, still findsdevantler-tech/maintenanceoutside this repository in two places:.gitmodules) and names it in two agent guides;src/content/docs/projects/active.mdx.It also has one open Dependabot pull request (build(deps-dev): Bump typescript from 6.0.2 to 7.0.2 maintenance#92), and its three weekly reports are still switched on.
Next steps, in order
This card is in Icebox, so nothing below is started by this note. The steps are recorded for when it is pulled into Ready, and the board's In Review and Verifying stages are both over their limits today.
deploy/archived-repositories/kustomization.yamland the shape of fix(deploy): declare the archived client-portal repository as archived #564: make the repository a read-only mirror underarchived-repositories/and remove its label, permission and team-grant resources. Nothing on GitHub changes in this phase. One difference from fix(deploy): declare the archived client-portal repository as archived #564 to prove before merging:client-portalwas already archived, whilemaintenancewill still be live, so run the drift, coverage and admin-team checks from the branch and show they pass for a repository that is declared there but not yet archived.No archive, settings change or declaration change was made in this run.
chore: agent-claim #84 nonce=3b32cd7e098bb1e39876827d91c4e555