Record the forge visibility policy, points 1-2 decided
Forge private without anonymous access; publication via a per-repo public/ folder of symlinks, projected outward by a shared, sanitizing publisher. 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
This commit is contained in:
parent
a13f33674c
commit
fbf54e701b
1 changed files with 89 additions and 0 deletions
89
decisions/forge-visibility-policy.md
Normal file
89
decisions/forge-visibility-policy.md
Normal file
|
|
@ -0,0 +1,89 @@
|
||||||
|
# Forge visibility policy (ORGREF-WP-0002-T01)
|
||||||
|
|
||||||
|
Status: **partly decided** (founder, 2026-10-08). Points 1 and 2 are decided.
|
||||||
|
Points 3–6 and the plan's owner are open.
|
||||||
|
|
||||||
|
## 1. The forge is private, with no anonymous access — decided
|
||||||
|
|
||||||
|
Every org, repository and package on `forgejo.coulomb.social` is private, and
|
||||||
|
the final wave sets `REQUIRE_SIGNIN_VIEW=true`. The forge is internal
|
||||||
|
infrastructure. Public codebases, when there are any, are published to a
|
||||||
|
separate location with its own publicity, probably not one we build
|
||||||
|
(GitHub or similar).
|
||||||
|
|
||||||
|
## 2. Publication is a per-repo `public/` convention, not a visibility setting — decided
|
||||||
|
|
||||||
|
Licensing is experimental and is **not** an input to access decisions.
|
||||||
|
|
||||||
|
What to publish, where and for whom is a series of decisions per repository.
|
||||||
|
They are made through a shared publication-flow mechanism, not reinvented per
|
||||||
|
repository. The baseline is the Unix home directory's public folder:
|
||||||
|
|
||||||
|
- **`public/` holds only symlinks**, never original content. Each link points to
|
||||||
|
a file inside the same repository.
|
||||||
|
- **Everything reachable through `public/` may be made readable from outside**,
|
||||||
|
by a publisher that projects it to the public location. Nothing outside
|
||||||
|
`public/` is published.
|
||||||
|
- **Emergency removal:** renaming the folder (for example to `public.withdrawn/`)
|
||||||
|
withdraws everything at once.
|
||||||
|
- **Transparency:** `INTENT.md`, `README.md` and `LICENSE.md` are candidates to
|
||||||
|
link from `public/` where showing what a repository is about is wanted.
|
||||||
|
- **Sanitization:** published content passes a check before it leaves (secrets,
|
||||||
|
internal hostnames and addresses, personal data, links into private
|
||||||
|
repositories).
|
||||||
|
- **Hall of Helix** content is published: it is a PR edge. This connects to
|
||||||
|
coulomb.social, where a coulomb.social space corresponds to a repository and
|
||||||
|
its content is a projection of information in that repository.
|
||||||
|
|
||||||
|
### Consequences to carry into the design
|
||||||
|
|
||||||
|
- **Withdrawal must propagate.** Renaming `public/` stops new publication. It only
|
||||||
|
removes content from the outside if the projection mirrors absence: the
|
||||||
|
publisher deletes what is no longer in `public/` on its next run, and a
|
||||||
|
withdrawal can trigger that run immediately. What has already been fetched
|
||||||
|
outside stays fetched.
|
||||||
|
- **The publisher is the only reader that crosses the boundary.** It reads
|
||||||
|
private repositories with its own read identity, resolves the symlinks,
|
||||||
|
sanitizes, and writes to the public target. The forge itself never serves
|
||||||
|
`public/` anonymously, which is consistent with point 1.
|
||||||
|
- **The convention is checkable.** A repository check can enforce that `public/`
|
||||||
|
contains only relative symlinks resolving inside the repository, with no
|
||||||
|
absolute paths, no `..` escapes and no links to other symlinks.
|
||||||
|
- **This is ecosystem convention.** The `public/` rule belongs in canon (a
|
||||||
|
the-custodian standard, review-gated). The publisher and the coulomb.social
|
||||||
|
projection belong to their own owners (coulomb-social, plus a publishing
|
||||||
|
component). This plan only needs the forge to be closable without breaking
|
||||||
|
the Hall's PR edge.
|
||||||
|
|
||||||
|
## 3. Packages follow their repository: private — open
|
||||||
|
|
||||||
|
Proposed: one node-level registry login (k3s `registries.yaml`, read-only package
|
||||||
|
identity) for all 43 workloads; one ArgoCD credential template for the
|
||||||
|
`coulomb/` repositories; job tokens in CI; package-read tokens for PyPI and npm.
|
||||||
|
|
||||||
|
## 4. Telegram post images — open
|
||||||
|
|
||||||
|
Proposed: the fluid-telegram adapter fetches the image with a read identity and
|
||||||
|
uploads it to Telegram, so no image URL needs to be public. Under point 2 the
|
||||||
|
alternative is the publisher's public target (the Hall's coulomb.social space)
|
||||||
|
once it exists.
|
||||||
|
|
||||||
|
## 5. Interim lockdown — open
|
||||||
|
|
||||||
|
Proposed: close now the sensitive repositories with no anonymous reader
|
||||||
|
(inventory 2026-10-08): `disaster-control`, `railiance-hosts`, `secrets-engine`,
|
||||||
|
`rapp-secrets-engine`, `rapp-openbao`, `rapp-policy-nexus`, `fin-hub`,
|
||||||
|
`qonto-assistant`, `rapp-tenant-engine`, `executor-sandbox`, `ops-mason`,
|
||||||
|
`rein-aharness`, `rein-openweights`.
|
||||||
|
|
||||||
|
Under point 2, `hall-of-helix` should stay readable until its publication
|
||||||
|
path exists, so it is not in the interim set.
|
||||||
|
|
||||||
|
## 6. Exposed history — open
|
||||||
|
|
||||||
|
Proposed: T03 scans public history and drives rotations in parallel; it does
|
||||||
|
not block the waves.
|
||||||
|
|
||||||
|
## Owner — open
|
||||||
|
|
||||||
|
Proposed: the founder holds T01 and T08; an agent drives the rest.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue