Founder checks: no ArgoCD repository credentials; k3s registries.yaml holds auth only for the frozen Gitea host, none for forgejo.coulomb.social. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 5457@bnt-lap001 Assistant-Session: 792bf84a-3783-4f5d-a811-cded61dd2012
6.4 KiB
Anonymous forge consumers — ORGREF-WP-0002-T02
Machine-readable result: access-consumers-2026-10-08.json. Reproduce:
python3 tools/runtime_inventory.py --output inventory/runtime-2026-10-08.json
python3 tools/access_consumers.py --root /home/worsch \
--runtime inventory/runtime-2026-10-08.json \
--output inventory/access-consumers-2026-10-08.json
Read-only: 161 local working trees scanned, plus a fresh runtime capture
(runtime-2026-10-08.json: 135 controllers, 10 Applications, 7 AppProjects).
Secrets and node registry configuration were not inspected.
What breaks when repositories and packages go private
| Class | Count | Reads | Will need |
|---|---|---|---|
| cluster-image-pull | 43 workloads | container images from the Forgejo registry, none with imagePullSecrets |
node-level registry auth (k3s registries.yaml has none for the forge, founder check below) or pull credentials per namespace. Anonymous pulls confirmed working on 2026-10-08: anonymous registry token issued, tag list 200 |
| cluster-gitops | 10 ArgoCD applications over 5 repos | Git: railiance-platform (6 apps), activity-core, informed-decision, state-hub, target-revenue | ArgoCD repository credentials: none exist today (founder check below) |
| ci-runner | about 20 repos | own-source tarballs and cross-repo tarballs, anonymously (below) | job token for the own repository, a scoped read token across repositories |
| package index | kaizen-agentic, vergabe-teilnahme | PyPI simple/ index without credentials |
package-read token |
| federation | reuse-surface | about 60 capability indexes by raw URL | read identity, or a published index location |
| code readers | about 8 files, below | clones, API and raw reads without token handling | owner review; re-point to an authenticated path |
| campaign images | pr-hall-of-helix, fluid-telegram | Telegram fetching post images by raw URL | a deliberate public asset location (ORGREF-WP-0002-T01 point 4) |
Lower risk: repo-gitops and repo-image-reference are the cluster consumers
seen from their source repos. doc-link means links break for the public, not
consumers. record-or-test is evidence and fixtures.
Per-entry review, 2026-10-08
CI: anonymous source tarballs (breaks). Workflows download their own source
with plain curl/wget from /${GITHUB_REPOSITORY}/archive/<sha>.tar.gz, with no
credentials: access-engine, activity-core, core-hub, coulomb-social, email-connect,
glas-harness, hub-core, issue-core, kaizen-agentic, key-cape, net-kingdom,
railiance-platform, reuse-surface, sbom-nexus, state-hub, tenant-engine,
the-custodian, user-engine, vergabe-teilnahme. Cross-repo fetches as well:
core-hub → hub-core, glas-harness → sand-boxer, state-hub → extra repos.
Work-record workflows (binky-control, repo-seed, runbook-tutorials) call the
forge base URL too. Fix: send the job token (Authorization: token ${{ github.token }}) for the job's own repository, and a scoped read token for
cross-repo fetches. Registry pushes in the same workflows are already
authenticated.
Package indexes: anonymous reads (breaks). PyPI simple/ used without
credentials: kaizen-agentic install docs, and vergabe-teilnahme pyproject.toml /
uv.lock (issue-core 0.2.1). npm consumers (whynot-design, markitect
testdrive-jsui) already send NPM_AUTH_TOKEN.
Federation: reuse-surface (breaks). registry/federation/sources.yaml fetches
about 60 capability indexes by raw URL, anonymously.
Code readers with no token handling found. activity-core
release_transport.py (https clone of activity-core and railiance-platform),
owner_return_eligibility.py (forge API) and run_artifacts.py; sbom-nexus
source_fetch.py; repo-manager source_ref.py; frontend-patterns
reference_consume.py; state-hub scripts/verify_image_pin.py. Each owner
confirms and re-points it. Token-aware already: state-hub forge_projection.py,
railiance-platform forgejo_package_prune.py and its provisioning scripts.
activity-core context resolvers are partly token-aware. Smoke probes of /v2/
(core-hub, ops-hub) only check reachability.
Not consumers. Runbooks, docs and evidence that mention URLs;
gitea.coulomb.social references (frozen legacy host); kaizen-agentic project
URLs and whynot-design's SSH repository field.
Not anonymous
All 160 local clones use SSH with the founder's key (forgejo-remote). They keep
working as long as that account can read the repositories.
Founder checks (presence only, no secret values)
Agents do not read Secrets, so run these in your own terminal and paste the output.
-
ArgoCD repository credentials, by name, type and URL only:
kubectl -n argocd get secrets \ -l 'argocd.argoproj.io/secret-type in (repository,repo-creds)' \ -o go-template='{{range .items}}{{.metadata.name}} {{index .metadata.labels "argocd.argoproj.io/secret-type"}} {{if .data.url}}{{.data.url | base64decode}}{{end}}{{"\n"}}{{end}}' -
k3s registry configuration on railiance01, as key names with every value stripped:
ssh railiance01 'sudo test -f /etc/rancher/k3s/registries.yaml \ && sudo sed -nE "s/^([[:space:]]*[A-Za-z0-9_.\"-]+:).*/\1/p" /etc/rancher/k3s/registries.yaml \ || echo absent'absent, or noauth:under the forge host, means all 43 pulls depend on anonymous registry access today.
Results, 2026-10-08 (run by the founder)
- ArgoCD: no repository credentials. Empty output: no
repositoryorrepo-credsSecrets. All 10 Applications read the forge anonymously. - k3s: no registry auth for the forge.
registries.yamlexists withmirrorsandconfigs.auth(username, password) only for92.205.130.254:<port>, the frozen legacy Gitea host. The port was cut off by the value-stripping command. There is no entry forforgejo.coulomb.social, so all 43 image pulls are anonymous. One node-levelconfigs."forgejo.coulomb.social".authentry with a read-only package identity would cover all of them at once (T06). The stale Gitea credential on the node is a cleanup item for railiance-forge or railiance-infra.
Left to owners (tracked in T06, not T02)
- Owners confirm the code readers listed under "no token handling found".
- Consumers outside these working trees (external sites and links, other people's clones) cannot be found by scanning; T08's anonymous probe after each wave is the backstop.