Skip to content

public-prep: split fleet topology out; descriptive README - #2

Merged
colbyt merged 2 commits into
mainfrom
forge-public-prep
Jul 15, 2026
Merged

public-prep: split fleet topology out; descriptive README#2
colbyt merged 2 commits into
mainfrom
forge-public-prep

Conversation

@colbyt

@colbyt colbyt commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Prepares forge to be published as a general tool. Companion to the private overlay in GoodAncestor/infra (separate PR).

What moves out of the repo

  • envs/profiles.yaml loses hosts/smoke_host — physical topology. Profiles keep only hardware class + torch index + status.
  • envs.py load_profiles() merges a private overlay from $FORGE_FLEET_CONFIG (profiles.hosts.yaml). No overlay → empty fleet (correct for a public clone).
  • config.py FLEET_URL default → http://localhost:8096 (real URL via FORGE_FLEET_URL; on the aggregator host localhost is the aggregator, so the deployed cron is unaffected).
  • docs: genericize RUNBOOK/ops/cron.md (drop LAN IP, secret paths, deploy-key alias, hostnames); update env-maintenance to the deferred-smoke model; remove TODO.md (internal scratchpad).
  • README rewritten as a descriptive public overview.

Audit

No secrets ever lived in the tree or history. This removes internal topology (RFC1918 IPs, fleet hostnames) so the working tree is clean. Verified: git grep for IPs/hostnames/secret-paths → clean; 93 tests pass; ruff clean.

⚠ Deployment coupling (do NOT merge+deploy alone)

After this merges, the deployment must set FORGE_FLEET_CONFIG (pointing at the infra overlay) or forge run --host X cannot map a host to a profile. Land the infra overlay + deployment wiring together with this.

⚠ Publishing note

Flipping the existing repo public exposes all history, which still contains the old IPs/hostnames. Recommend publishing a fresh-history snapshot of this sanitized tree as the public repo instead (see PR discussion).

colbyt added 2 commits July 15, 2026 02:38
Move all GA-specific fleet topology out of the tree so forge can be published
as a general tool, with the real bindings living in a private overlay.

- envs/profiles.yaml: drop hosts/smoke_host (physical topology). Profiles now
  carry only the hardware class + torch index + status.
- envs.py: load_profiles merges a private overlay from $FORGE_FLEET_CONFIG
  (profiles.hosts.yaml). No overlay -> every profile resolves to an empty
  fleet, the correct default for a clone with no hardware.
- config.py: FLEET_URL default drops the LAN IP for http://localhost:8096
  (real URL comes from FORGE_FLEET_URL). On the aggregator host localhost is
  the aggregator, so the deployed cron is unaffected.
- docs: genericize RUNBOOK/ops-cron (drop LAN IP, secret paths, deploy-key
  alias, specific hostnames); update env-maintenance to the deferred-smoke
  model; remove TODO.md (internal acceptance-tracking scratchpad).
- tests: cover overlay merge + empty-fleet default; genericize host fixtures.

Nothing secret ever lived here; this removes internal topology so the tree is
safe to publish. Host bindings move to GoodAncestor/infra (private).
@colbyt
colbyt merged commit c170291 into main Jul 15, 2026
2 checks passed
@colbyt
colbyt deleted the forge-public-prep branch July 15, 2026 11:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant