prj-forgejo-org-refactor/inventory/owner-evidence-contract.md
tegwick 3bd576990b Refine stewardship evidence and specify owner preparation handoffs
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a0e782-9f45-7382-afff-77ad665b88ec
2026-09-28 13:06:18 +02:00

3.9 KiB

Owner evidence required to complete G1

Decision 5f3680fc-0cd5-4d27-ba39-59fbdd13313c remains open. The previous credential request was denied by the policy gate. This contract can be fulfilled by an authorized forge owner; it does not authorize this project to impersonate that owner, mint credentials, or use State Hub's workload credential.

Export contents

Provide a JSON export with the fields below. A successful HTTP response, an empty list, or a site-admin flag alone is not proof of coverage.

Section Required evidence
provenance Capture time, source instance URL, product/version, authenticated principal identifier (no token), export tool/revision, owner attestation and scope
repositories Immutable ID, current owner/name, visibility, archive state, default branch and revision; include private and archived repositories
packages Immutable package/version identity where supported, owner, type, name, tags/digests, repository association separately; include unlinked packages and retained rollback versions
access Actual org/team membership and repository grants, direct collaborators, branch protections, machine-reader grants; distinguish inherited from direct grants
automation Deploy-key IDs and read/write flags (no key bytes), webhook IDs and destination host/path without query credentials, runner associations and reusable workflow consumers
pagination Endpoint/filter and observed counts for every page, termination evidence, API permission failures and omissions; no silent partial success
consumers GitOps source allowlists and repository credential references, runtime/current and rollback image consumers, package index users, external clones/CI and frozen-cluster consumers
completeness Owner-confirmed reconciliation with this project's public/local/registered census; every omission explicitly accepted or blocking

Do not export credential values, key bytes, Secret objects, webhook secrets, auth headers, token-bearing URLs or raw environment/configuration dumps. Names and grant IDs are sufficient for the access comparison. Record unavailable surfaces as blockers rather than replacing them with empty accepted lists.

Acceptance procedure

  1. Validate identities and pagination; reconcile the 12 local paths absent from the anonymous census, remote-only private repos and archived repos.
  2. Join repo/package identities to the assignment matrix. Do not derive package ownership from Git repository ownership.
  3. Reconcile reference locations, runtime consumers and each excluded surface.
  4. Record grant-preservation checks for every proposed transfer; no broad new org membership may silently widen access.
  5. Capture two consecutive source/server/runtime snapshots in a declared unchanged-fleet window. Stop acceptance if revisions, content, grants or consumer sets change. Compare semantic inventory and record provenance.
  6. Only after owner attestation and all coverage gaps are closed may G1 and condition 3 be accepted. Stable partial output is insufficient.

Existing owner records

  • WARDEN-WP-0025 — 70c11222-d8e7-5936-99f7-7d626a4a5deb: admin PAT lane establishment. Historical success does not establish current caller access.
  • WARDEN-WP-0031 — 739bad25-2345-5f4f-aaa3-cc4cd8c71f6c: caller identity on policy requests. Its documented 403 distinction concerns system binding; it supplies the right diagnostic owner, not permission to substitute an identity.
  • MASON-WP-0003 — 4015b46d-02f1-56ac-853e-87e8542cf0dd: State Hub's narrow forge-read workload lane. This is a separate principal and use; it is not an alternative credential for this project following the denial.

These are context records, not newly accepted owner follow-ups. A new repair or export activity must retain its owner's own record and be linked here once it exists. No owner messages or task assignments have been sent.