Serve public Forge reads from the WAL

eca62c1b79bb · AtlantisPleb · · parent 06952374819b

Serve public Forge reads from the WAL

Deploy story

What this commit did to the running system — joined from the forge receipt chain, the part a commit page elsewhere cannot show.

Not deployed through the forge lane

No push, promotion, build, or deploy receipt references this commit (receipts are scanned over a bounded recent window). Changes shipped by full node replacement carry their proof in the release gate receipt instead.

Changed files

  • modified config/runtime.exs
  • modified infra/staging/main.tf
  • modified lib/openagents/forge/browse.ex
  • modified test/openagents/forge/sync_test.exs

Diff

4 files changed, +13 -2

config/runtime.exs modified +1

@@ -352,6 +352,7 @@ if config_env() == :prod and runtime_role == :web do

352 352
    inference_proxy_url: optional_text.("OPENAGENTS_INFERENCE_PROXY_URL"),
353 353
    forge_enabled: forge_enabled,
354 354
    forge_deploy_lane_enabled: forge_deploy_enabled,
355
    repository_provisioner_enabled: forge_deploy_enabled,
355 356
    forge_boot_converge_enabled: boot_convergence_enabled,
356 357
    forge_rolling_provider: forge_rolling_provider,
357 358
    forge_repos: forge_repos,
infra/staging/main.tf modified +6

@@ -532,6 +532,12 @@ resource "google_storage_bucket_iam_member" "fleet_wal" {

532 532
  member = google_service_account.fleet.member
533 533
}
534 534
535
resource "google_storage_bucket_iam_member" "web_wal" {
536
  bucket = google_storage_bucket.wal.name
537
  role   = "roles/storage.objectViewer"
538
  member = google_service_account.web.member
539
}
540
535 541
resource "google_storage_bucket_iam_member" "web_recordings" {
536 542
  bucket = google_storage_bucket.recordings.name
537 543
  role   = "roles/storage.objectAdmin"
lib/openagents/forge/browse.ex modified +1

@@ -74,6 +74,7 @@ defmodule OpenAgents.Forge.Browse do

74 74
75 75
  @doc "The default branch head, if the repo has one."
76 76
  def head(repo) do
77
    _ = freshen(repo)
77 78
    refs = Repos.refs(storage_key(repo))
78 79
79 80
    case Map.fetch(refs, "refs/heads/#{default_branch(repo)}") do
test/openagents/forge/sync_test.exs modified +5 -2

@@ -1,7 +1,8 @@

1 1
defmodule OpenAgents.Forge.SyncTest do
2 2
  use ExUnit.Case, async: false
3 3
4
  alias OpenAgents.Forge.{Repos, Sync, WAL}
4
  alias OpenAgents.Forge.{Browse, Repos, Sync, WAL}
5
  alias OpenAgents.Repositories.Repository
5 6
6 7
  setup do
7 8
    root =

@@ -63,7 +64,9 @@ defmodule OpenAgents.Forge.SyncTest do

63 64
             "refs/heads/trunk"
64 65
65 66
    File.rm_rf!(Repos.bare_path("storage-key"))
66
    assert :ok = Sync.ensure_fresh("storage-key", "trunk")
67
    repository = %Repository{storage_key: "storage-key", default_branch: "trunk"}
68
69
    assert {:ok, ^sha} = Browse.head(repository)
67 70
    assert Repos.refs("storage-key") == refs
68 71
69 72
    assert String.trim(git_bare!(Repos.bare_path("storage-key"), ["show", "trunk:README.md"])) ==

This page updates live while a promote is in flight · changelog