run: read Forgejo 16 logs through job API #239

Merged
stephen merged 3 commits from fix-actions-rest-logs into main 2026-08-07 13:16:47 +00:00
Owner

Summary

  • resolve fj run view --log through Forgejo 16 run jobs and job log APIs
  • map displayed run numbers to API run ids before listing jobs, including runs beyond the first page
  • preserve FJ_TOKEN precedence so env-token-only environments do not touch an unreadable token store
  • inherit the signed user-id fix from main, so PR lists/views decode Forgejo synthetic reviewers such as forgejo-actions with id -2
  • report Forgejo 15.x log API absence with /version instead of a task-shape parse error
  • make strict coverage deterministic by passing coverage_nightly explicitly and covering workflow-log helper paths

Verification

  • cargo test
  • cargo test api::workflow_logs::tests -- --nocapture
  • cargo test explicit_host_uses_env_token_without_reading_token_store -- --nocapture
  • cargo test run_logs_resolves_run_number_beyond_first_page -- --nocapture
  • cargo test deserializes_negative_system_actor_id -- --nocapture
  • make coverage-strict COV_MIN=73
  • stable: cargo run --quiet -- pr list -R rasterstate/fj --json --no-pager decoded PR #239, including requested_reviewers[0].id = -2 for forgejo-actions.
  • LTS direct: curl https://commons.fjord.host/api/v1/version returned 15.0.6+gitea-1.22.0.
  • stable earlier: target/debug/fj run view 101 --log --job 0 -R rasterstate/lane-image --host rasterhub.com printed real log text, including Runner 31f8e0d0-ce1d-4ffc-b87f-2f8b93db63ee ... received task 33277 of job shellcheck and Job succeeded.
  • LTS anonymous earlier: env -u FJ_TOKEN target/debug/fj run list -R fjord/actions --limit 3 --host commons.fjord.host listed public runs.
  • LTS anonymous earlier: env -u FJ_TOKEN target/debug/fj run view 2 --log -R fjord/actions --host commons.fjord.host failed with the versioned does not expose the token-authenticated Actions job log API message.

Notes

  • The negative reviewer id should be decoded, not skipped: the API is returning a valid actor object with a sentinel id, and dropping it would hide requested review state from PR and fleet views.
  • This PR does not change public-repo auth selection. In this shell, fj api /version --host commons.fjord.host sends an invalid ambient Rasterhub token to commons and gets 401; direct curl without an auth header gets 200.
  • fj run watch still uses the existing web route and on rasterhub PAT auth returns the existing actionable web-log auth error; rerun/cancel are state-changing and were not executed against production.
## Summary - resolve `fj run view --log` through Forgejo 16 run jobs and job log APIs - map displayed run numbers to API run ids before listing jobs, including runs beyond the first page - preserve `FJ_TOKEN` precedence so env-token-only environments do not touch an unreadable token store - inherit the signed user-id fix from `main`, so PR lists/views decode Forgejo synthetic reviewers such as `forgejo-actions` with id `-2` - report Forgejo 15.x log API absence with `/version` instead of a task-shape parse error - make strict coverage deterministic by passing `coverage_nightly` explicitly and covering workflow-log helper paths ## Verification - `cargo test` - `cargo test api::workflow_logs::tests -- --nocapture` - `cargo test explicit_host_uses_env_token_without_reading_token_store -- --nocapture` - `cargo test run_logs_resolves_run_number_beyond_first_page -- --nocapture` - `cargo test deserializes_negative_system_actor_id -- --nocapture` - `make coverage-strict COV_MIN=73` - stable: `cargo run --quiet -- pr list -R rasterstate/fj --json --no-pager` decoded PR #239, including `requested_reviewers[0].id = -2` for `forgejo-actions`. - LTS direct: `curl https://commons.fjord.host/api/v1/version` returned `15.0.6+gitea-1.22.0`. - stable earlier: `target/debug/fj run view 101 --log --job 0 -R rasterstate/lane-image --host rasterhub.com` printed real log text, including `Runner 31f8e0d0-ce1d-4ffc-b87f-2f8b93db63ee ... received task 33277 of job shellcheck` and `Job succeeded`. - LTS anonymous earlier: `env -u FJ_TOKEN target/debug/fj run list -R fjord/actions --limit 3 --host commons.fjord.host` listed public runs. - LTS anonymous earlier: `env -u FJ_TOKEN target/debug/fj run view 2 --log -R fjord/actions --host commons.fjord.host` failed with the versioned `does not expose the token-authenticated Actions job log API` message. ## Notes - The negative reviewer id should be decoded, not skipped: the API is returning a valid actor object with a sentinel id, and dropping it would hide requested review state from PR and fleet views. - This PR does not change public-repo auth selection. In this shell, `fj api /version --host commons.fjord.host` sends an invalid ambient Rasterhub token to commons and gets `401`; direct curl without an auth header gets `200`. - `fj run watch` still uses the existing web route and on rasterhub PAT auth returns the existing actionable web-log auth error; rerun/cancel are state-changing and were not executed against production.
run: read Forgejo 16 logs through job API
Some checks failed
Forseti review / forseti review (advisory) (pull_request_target) Successful in 1m44s
ci / check (pull_request) Successful in 10m53s
ci / live-e2e (pull_request) Successful in 2m9s
ci / coverage (pull_request) Failing after 2m52s
dc36da0274

Superseded by Forseti review for f9a70c680278.

Forseti review

2 blocking finding(s) from the lead reviewer (advisory: not gating merges yet).

Findings

  • P1 src/client/resolve.rs:40Option::or evaluates its argument eagerly, so auth::load_token(&name)? is called even when auth::env_token() returns a token. That regresses the previous behavior where an environment token was sufficient on its own; in environments without a working keyring/token store, commands using FJ_TOKEN can now fail before the env token is used.

  • P1 src/api/workflow_logs.rs:409fj run view --log now resolves the displayed run number by calling list_runs(..., 50) and searching only that single page. Any valid run number outside the latest 50 entries will be reported as not found before the jobs/log APIs are tried, even though the user supplied an explicit run number and the previous task-based path did not have this pagination limit. This breaks log viewing for older runs in repositories with more than 50 workflow runs.

  • PR: rasterstate/fj#239

  • Head SHA: dc36da0274d5

  • Review job: sha256:4d9443c97c5671a5208dbea6202c5c0ec9beb772152bb8542fcc11e867169058

  • Provider pair: openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001

  • Blocking findings: 2

  • Inline findings: 2

  • Model tokens: 83091 in / 10712 out (33586 from cache) ≈ $0.3687

  • Token source: GITHUB_TOKEN

  • Runner: c7e168fb8174

  • Run: https://rasterhub.com/rasterstate/fj/actions/runs/421

<!-- forseti:review {"version":2,"repo":"rasterstate/fj","pr":239,"head_sha":"dc36da0274d554fa1d219a932d731090698ed57f","provider_pair":"openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001","policy_version":"stub-policy-v1","prompt_version":"prompt-v2","context_fingerprint":"fnv64:384226b4f8b7d711","review_job_key":"sha256:4d9443c97c5671a5208dbea6202c5c0ec9beb772152bb8542fcc11e867169058","base_sha":"fdd0938f622b3d6a08c281a590389fd0dce52b33","role":"summary","status":"superseded"} --> > Superseded by Forseti review for `f9a70c680278`. ## Forseti review 2 blocking finding(s) from the lead reviewer (advisory: not gating merges yet). ### Findings - **P1** `src/client/resolve.rs:40` — `Option::or` evaluates its argument eagerly, so `auth::load_token(&name)?` is called even when `auth::env_token()` returns a token. That regresses the previous behavior where an environment token was sufficient on its own; in environments without a working keyring/token store, commands using FJ_TOKEN can now fail before the env token is used. - **P1** `src/api/workflow_logs.rs:409` — `fj run view --log` now resolves the displayed run number by calling `list_runs(..., 50)` and searching only that single page. Any valid run number outside the latest 50 entries will be reported as not found before the jobs/log APIs are tried, even though the user supplied an explicit run number and the previous task-based path did not have this pagination limit. This breaks log viewing for older runs in repositories with more than 50 workflow runs. - PR: `rasterstate/fj#239` - Head SHA: `dc36da0274d5` - Review job: `sha256:4d9443c97c5671a5208dbea6202c5c0ec9beb772152bb8542fcc11e867169058` - Provider pair: `openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001` - Blocking findings: `2` - Inline findings: `2` - Model tokens: `83091 in / 10712 out` (`33586` from cache) ≈ `$0.3687` - Token source: `GITHUB_TOKEN` - Runner: `c7e168fb8174` - Run: https://rasterhub.com/rasterstate/fj/actions/runs/421
forgejo-actions requested changes 2026-08-07 04:54:39 +00:00
Dismissed
forgejo-actions left a comment

Forseti review

2 blocking finding(s) from the lead reviewer (advisory: not gating merges yet).

Findings

  • P1 src/client/resolve.rs:40Option::or evaluates its argument eagerly, so auth::load_token(&name)? is called even when auth::env_token() returns a token. That regresses the previous behavior where an environment token was sufficient on its own; in environments without a working keyring/token store, commands using FJ_TOKEN can now fail before the env token is used.

  • P1 src/api/workflow_logs.rs:409fj run view --log now resolves the displayed run number by calling list_runs(..., 50) and searching only that single page. Any valid run number outside the latest 50 entries will be reported as not found before the jobs/log APIs are tried, even though the user supplied an explicit run number and the previous task-based path did not have this pagination limit. This breaks log viewing for older runs in repositories with more than 50 workflow runs.

  • PR: rasterstate/fj#239

  • Head SHA: dc36da0274d5

  • Review job: sha256:4d9443c97c5671a5208dbea6202c5c0ec9beb772152bb8542fcc11e867169058

  • Provider pair: openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001

  • Blocking findings: 2

  • Inline findings: 2

  • Model tokens: 83091 in / 10712 out (33586 from cache) ≈ $0.3687

  • Token source: GITHUB_TOKEN

  • Runner: c7e168fb8174

  • Run: https://rasterhub.com/rasterstate/fj/actions/runs/421

<!-- forseti:review {"version":2,"repo":"rasterstate/fj","pr":239,"head_sha":"dc36da0274d554fa1d219a932d731090698ed57f","provider_pair":"openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001","policy_version":"stub-policy-v1","prompt_version":"prompt-v2","context_fingerprint":"fnv64:384226b4f8b7d711","review_job_key":"sha256:4d9443c97c5671a5208dbea6202c5c0ec9beb772152bb8542fcc11e867169058","base_sha":"fdd0938f622b3d6a08c281a590389fd0dce52b33","role":"summary","status":"current"} --> ## Forseti review 2 blocking finding(s) from the lead reviewer (advisory: not gating merges yet). ### Findings - **P1** `src/client/resolve.rs:40` — `Option::or` evaluates its argument eagerly, so `auth::load_token(&name)?` is called even when `auth::env_token()` returns a token. That regresses the previous behavior where an environment token was sufficient on its own; in environments without a working keyring/token store, commands using FJ_TOKEN can now fail before the env token is used. - **P1** `src/api/workflow_logs.rs:409` — `fj run view --log` now resolves the displayed run number by calling `list_runs(..., 50)` and searching only that single page. Any valid run number outside the latest 50 entries will be reported as not found before the jobs/log APIs are tried, even though the user supplied an explicit run number and the previous task-based path did not have this pagination limit. This breaks log viewing for older runs in repositories with more than 50 workflow runs. - PR: `rasterstate/fj#239` - Head SHA: `dc36da0274d5` - Review job: `sha256:4d9443c97c5671a5208dbea6202c5c0ec9beb772152bb8542fcc11e867169058` - Provider pair: `openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001` - Blocking findings: `2` - Inline findings: `2` - Model tokens: `83091 in / 10712 out` (`33586` from cache) ≈ `$0.3687` - Token source: `GITHUB_TOKEN` - Runner: `c7e168fb8174` - Run: https://rasterhub.com/rasterstate/fj/actions/runs/421
run: fix log resolution regressions
Some checks failed
Forseti review / forseti review (advisory) (pull_request_target) Successful in 3m10s
ci / check (pull_request) Successful in 10m50s
ci / live-e2e (pull_request) Successful in 2m7s
ci / coverage (pull_request) Failing after 2m10s
f9a70c6802

Superseded by Forseti review for 02f148e68de2.

Forseti review

No blocking findings from the lead reviewer.

No inline findings.

  • PR: rasterstate/fj#239
  • Head SHA: f9a70c680278
  • Review job: sha256:b762ae470499a8534383156380405fe1312108944570426a3cdf2f90a6909d3a
  • Provider pair: openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001
  • Blocking findings: 0
  • Inline findings: 0
  • Model tokens: 91065 in / 13540 out (38450 from cache) ≈ $0.5074
  • Token source: GITHUB_TOKEN
  • Runner: 4740cc42430b
  • Run: https://rasterhub.com/rasterstate/fj/actions/runs/423
<!-- forseti:review {"version":2,"repo":"rasterstate/fj","pr":239,"head_sha":"f9a70c6802787a7807d053a313d599b199127ba0","provider_pair":"openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001","policy_version":"stub-policy-v1","prompt_version":"prompt-v2","context_fingerprint":"fnv64:0f84588948b880d3","review_job_key":"sha256:b762ae470499a8534383156380405fe1312108944570426a3cdf2f90a6909d3a","base_sha":"fdd0938f622b3d6a08c281a590389fd0dce52b33","role":"summary","status":"superseded"} --> > Superseded by Forseti review for `02f148e68de2`. ## Forseti review No blocking findings from the lead reviewer. _No inline findings._ - PR: `rasterstate/fj#239` - Head SHA: `f9a70c680278` - Review job: `sha256:b762ae470499a8534383156380405fe1312108944570426a3cdf2f90a6909d3a` - Provider pair: `openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001` - Blocking findings: `0` - Inline findings: `0` - Model tokens: `91065 in / 13540 out` (`38450` from cache) ≈ `$0.5074` - Token source: `GITHUB_TOKEN` - Runner: `4740cc42430b` - Run: https://rasterhub.com/rasterstate/fj/actions/runs/423
forgejo-actions approved these changes 2026-08-07 05:21:47 +00:00
Dismissed
forgejo-actions left a comment

Forseti review

No blocking findings from the lead reviewer.

No inline findings.

  • PR: rasterstate/fj#239
  • Head SHA: f9a70c680278
  • Review job: sha256:b762ae470499a8534383156380405fe1312108944570426a3cdf2f90a6909d3a
  • Provider pair: openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001
  • Blocking findings: 0
  • Inline findings: 0
  • Model tokens: 91065 in / 13540 out (38450 from cache) ≈ $0.5074
  • Token source: GITHUB_TOKEN
  • Runner: 4740cc42430b
  • Run: https://rasterhub.com/rasterstate/fj/actions/runs/423
<!-- forseti:review {"version":2,"repo":"rasterstate/fj","pr":239,"head_sha":"f9a70c6802787a7807d053a313d599b199127ba0","provider_pair":"openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001","policy_version":"stub-policy-v1","prompt_version":"prompt-v2","context_fingerprint":"fnv64:0f84588948b880d3","review_job_key":"sha256:b762ae470499a8534383156380405fe1312108944570426a3cdf2f90a6909d3a","base_sha":"fdd0938f622b3d6a08c281a590389fd0dce52b33","role":"summary","status":"current"} --> ## Forseti review No blocking findings from the lead reviewer. _No inline findings._ - PR: `rasterstate/fj#239` - Head SHA: `f9a70c680278` - Review job: `sha256:b762ae470499a8534383156380405fe1312108944570426a3cdf2f90a6909d3a` - Provider pair: `openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001` - Blocking findings: `0` - Inline findings: `0` - Model tokens: `91065 in / 13540 out` (`38450` from cache) ≈ `$0.5074` - Token source: `GITHUB_TOKEN` - Runner: `4740cc42430b` - Run: https://rasterhub.com/rasterstate/fj/actions/runs/423
test: cover workflow log helpers
Some checks failed
Forseti review / forseti review (advisory) (pull_request_target) Successful in 2m57s
ci / check (pull_request) Successful in 11m5s
ci / live-e2e (pull_request) Successful in 2m2s
ci / coverage (pull_request) Failing after 2m52s
02f148e68d

Superseded by Forseti review for f7304e31a371.

Forseti review

No blocking findings from the lead reviewer.

Findings

  • P2 src/client/resolve.rs:207 — This test mutates process-global XDG_CONFIG_HOME and FJ_TOKEN while Rust tests in the same binary may run concurrently. Any other test resolving config or auth during this window can observe the invalid config path or env token and fail nondeterministically; the manual restore also would not run if the test panics before those lines.

  • PR: rasterstate/fj#239

  • Head SHA: 02f148e68de2

  • Review job: sha256:a1df3928668f4f940d57f90252e53333a8166efdcf7196f44dc980fb60df556c

  • Provider pair: openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001

  • Blocking findings: 0

  • Inline findings: 1

  • Model tokens: 104691 in / 14412 out (42546 from cache) ≈ $0.5178

  • Token source: GITHUB_TOKEN

  • Runner: d65ba87981a3

  • Run: https://rasterhub.com/rasterstate/fj/actions/runs/425

<!-- forseti:review {"version":2,"repo":"rasterstate/fj","pr":239,"head_sha":"02f148e68de2357f0c14b9f450f014dc2f380223","provider_pair":"openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001","policy_version":"stub-policy-v1","prompt_version":"prompt-v2","context_fingerprint":"fnv64:22f2d7c553be2c1c","review_job_key":"sha256:a1df3928668f4f940d57f90252e53333a8166efdcf7196f44dc980fb60df556c","base_sha":"fdd0938f622b3d6a08c281a590389fd0dce52b33","role":"summary","status":"superseded"} --> > Superseded by Forseti review for `f7304e31a371`. ## Forseti review No blocking findings from the lead reviewer. ### Findings - **P2** `src/client/resolve.rs:207` — This test mutates process-global `XDG_CONFIG_HOME` and `FJ_TOKEN` while Rust tests in the same binary may run concurrently. Any other test resolving config or auth during this window can observe the invalid config path or env token and fail nondeterministically; the manual restore also would not run if the test panics before those lines. - PR: `rasterstate/fj#239` - Head SHA: `02f148e68de2` - Review job: `sha256:a1df3928668f4f940d57f90252e53333a8166efdcf7196f44dc980fb60df556c` - Provider pair: `openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001` - Blocking findings: `0` - Inline findings: `1` - Model tokens: `104691 in / 14412 out` (`42546` from cache) ≈ `$0.5178` - Token source: `GITHUB_TOKEN` - Runner: `d65ba87981a3` - Run: https://rasterhub.com/rasterstate/fj/actions/runs/425
forgejo-actions approved these changes 2026-08-07 05:38:57 +00:00
Dismissed
forgejo-actions left a comment

Forseti review

No blocking findings from the lead reviewer.

Findings

  • P2 src/client/resolve.rs:207 — This test mutates process-global XDG_CONFIG_HOME and FJ_TOKEN while Rust tests in the same binary may run concurrently. Any other test resolving config or auth during this window can observe the invalid config path or env token and fail nondeterministically; the manual restore also would not run if the test panics before those lines.

  • PR: rasterstate/fj#239

  • Head SHA: 02f148e68de2

  • Review job: sha256:a1df3928668f4f940d57f90252e53333a8166efdcf7196f44dc980fb60df556c

  • Provider pair: openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001

  • Blocking findings: 0

  • Inline findings: 1

  • Model tokens: 104691 in / 14412 out (42546 from cache) ≈ $0.5178

  • Token source: GITHUB_TOKEN

  • Runner: d65ba87981a3

  • Run: https://rasterhub.com/rasterstate/fj/actions/runs/425

<!-- forseti:review {"version":2,"repo":"rasterstate/fj","pr":239,"head_sha":"02f148e68de2357f0c14b9f450f014dc2f380223","provider_pair":"openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001","policy_version":"stub-policy-v1","prompt_version":"prompt-v2","context_fingerprint":"fnv64:22f2d7c553be2c1c","review_job_key":"sha256:a1df3928668f4f940d57f90252e53333a8166efdcf7196f44dc980fb60df556c","base_sha":"fdd0938f622b3d6a08c281a590389fd0dce52b33","role":"summary","status":"current"} --> ## Forseti review No blocking findings from the lead reviewer. ### Findings - **P2** `src/client/resolve.rs:207` — This test mutates process-global `XDG_CONFIG_HOME` and `FJ_TOKEN` while Rust tests in the same binary may run concurrently. Any other test resolving config or auth during this window can observe the invalid config path or env token and fail nondeterministically; the manual restore also would not run if the test panics before those lines. - PR: `rasterstate/fj#239` - Head SHA: `02f148e68de2` - Review job: `sha256:a1df3928668f4f940d57f90252e53333a8166efdcf7196f44dc980fb60df556c` - Provider pair: `openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001` - Blocking findings: `0` - Inline findings: `1` - Model tokens: `104691 in / 14412 out` (`42546` from cache) ≈ `$0.5178` - Token source: `GITHUB_TOKEN` - Runner: `d65ba87981a3` - Run: https://rasterhub.com/rasterstate/fj/actions/runs/425
stephen force-pushed fix-actions-rest-logs from 02f148e68d
Some checks failed
Forseti review / forseti review (advisory) (pull_request_target) Successful in 2m57s
ci / check (pull_request) Successful in 11m5s
ci / live-e2e (pull_request) Successful in 2m2s
ci / coverage (pull_request) Failing after 2m52s
to f7304e31a3
Some checks failed
Forseti review / forseti review (advisory) (pull_request_target) Successful in 2m49s
ci / check (pull_request) Successful in 10m51s
ci / coverage (pull_request) Failing after 1m58s
ci / live-e2e (pull_request) Successful in 2m0s
2026-08-07 05:52:44 +00:00
Compare

Superseded by Forseti review for 31a8e4e8aa56.

Forseti review

No blocking findings from the lead reviewer.

No inline findings.

  • PR: rasterstate/fj#239
  • Head SHA: f7304e31a371
  • Review job: sha256:e673215dc4480c51fbf8528dc13a7edae815637da31ec62b261bb048e1b78a3c
  • Provider pair: openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001
  • Blocking findings: 0
  • Inline findings: 0
  • Model tokens: 120228 in / 13087 out (46642 from cache) ≈ $0.5371
  • Token source: GITHUB_TOKEN
  • Runner: ef85bdcad803
  • Run: https://rasterhub.com/rasterstate/fj/actions/runs/427
<!-- forseti:review {"version":2,"repo":"rasterstate/fj","pr":239,"head_sha":"f7304e31a3710d3ac4f8a72456b224565cf3b080","provider_pair":"openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001","policy_version":"stub-policy-v1","prompt_version":"prompt-v2","context_fingerprint":"fnv64:0983d6127d7602b6","review_job_key":"sha256:e673215dc4480c51fbf8528dc13a7edae815637da31ec62b261bb048e1b78a3c","base_sha":"fdd0938f622b3d6a08c281a590389fd0dce52b33","role":"summary","status":"superseded"} --> > Superseded by Forseti review for `31a8e4e8aa56`. ## Forseti review No blocking findings from the lead reviewer. _No inline findings._ - PR: `rasterstate/fj#239` - Head SHA: `f7304e31a371` - Review job: `sha256:e673215dc4480c51fbf8528dc13a7edae815637da31ec62b261bb048e1b78a3c` - Provider pair: `openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001` - Blocking findings: `0` - Inline findings: `0` - Model tokens: `120228 in / 13087 out` (`46642` from cache) ≈ `$0.5371` - Token source: `GITHUB_TOKEN` - Runner: `ef85bdcad803` - Run: https://rasterhub.com/rasterstate/fj/actions/runs/427
forgejo-actions approved these changes 2026-08-07 05:55:33 +00:00
Dismissed
forgejo-actions left a comment

Forseti review

No blocking findings from the lead reviewer.

No inline findings.

  • PR: rasterstate/fj#239
  • Head SHA: f7304e31a371
  • Review job: sha256:e673215dc4480c51fbf8528dc13a7edae815637da31ec62b261bb048e1b78a3c
  • Provider pair: openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001
  • Blocking findings: 0
  • Inline findings: 0
  • Model tokens: 120228 in / 13087 out (46642 from cache) ≈ $0.5371
  • Token source: GITHUB_TOKEN
  • Runner: ef85bdcad803
  • Run: https://rasterhub.com/rasterstate/fj/actions/runs/427
<!-- forseti:review {"version":2,"repo":"rasterstate/fj","pr":239,"head_sha":"f7304e31a3710d3ac4f8a72456b224565cf3b080","provider_pair":"openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001","policy_version":"stub-policy-v1","prompt_version":"prompt-v2","context_fingerprint":"fnv64:0983d6127d7602b6","review_job_key":"sha256:e673215dc4480c51fbf8528dc13a7edae815637da31ec62b261bb048e1b78a3c","base_sha":"fdd0938f622b3d6a08c281a590389fd0dce52b33","role":"summary","status":"current"} --> ## Forseti review No blocking findings from the lead reviewer. _No inline findings._ - PR: `rasterstate/fj#239` - Head SHA: `f7304e31a371` - Review job: `sha256:e673215dc4480c51fbf8528dc13a7edae815637da31ec62b261bb048e1b78a3c` - Provider pair: `openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001` - Blocking findings: `0` - Inline findings: `0` - Model tokens: `120228 in / 13087 out` (`46642` from cache) ≈ `$0.5371` - Token source: `GITHUB_TOKEN` - Runner: `ef85bdcad803` - Run: https://rasterhub.com/rasterstate/fj/actions/runs/427
stephen force-pushed fix-actions-rest-logs from f7304e31a3
Some checks failed
Forseti review / forseti review (advisory) (pull_request_target) Successful in 2m49s
ci / check (pull_request) Successful in 10m51s
ci / coverage (pull_request) Failing after 1m58s
ci / live-e2e (pull_request) Successful in 2m0s
to 31a8e4e8aa
Some checks failed
Forseti review / forseti review (advisory) (pull_request_target) Successful in 3m29s
ci / check (pull_request) Successful in 10m45s
ci / live-e2e (pull_request) Successful in 1m59s
ci / coverage (pull_request) Failing after 2m53s
2026-08-07 06:13:27 +00:00
Compare

Superseded by Forseti review for 15ea3148b97c.

Forseti review

No blocking findings from the lead reviewer.

Findings

  • P2 src/client/resolve.rs:204 — This test changes XDG_CONFIG_HOME and FJ_TOKEN, which are process-global. Rust tests run in parallel by default, so any concurrently running test that resolves config or tokens can observe these temporary values and fail nondeterministically.

  • PR: rasterstate/fj#239

  • Head SHA: 31a8e4e8aa56

  • Review job: sha256:dbe7f50ba15cd4f3e60c80529b965af8cab3a34d0d04d233e6f8a948b5dbed02

  • Provider pair: openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001

  • Blocking findings: 0

  • Inline findings: 1

  • Model tokens: 121272 in / 15299 out (46642 from cache) ≈ $0.6100

  • Token source: GITHUB_TOKEN

  • Runner: f941f7e38ad5

  • Run: https://rasterhub.com/rasterstate/fj/actions/runs/429

<!-- forseti:review {"version":2,"repo":"rasterstate/fj","pr":239,"head_sha":"31a8e4e8aa56108513a2fb81348eda090a6f1f71","provider_pair":"openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001","policy_version":"stub-policy-v1","prompt_version":"prompt-v2","context_fingerprint":"fnv64:ed811388b647adf1","review_job_key":"sha256:dbe7f50ba15cd4f3e60c80529b965af8cab3a34d0d04d233e6f8a948b5dbed02","base_sha":"fdd0938f622b3d6a08c281a590389fd0dce52b33","role":"summary","status":"superseded"} --> > Superseded by Forseti review for `15ea3148b97c`. ## Forseti review No blocking findings from the lead reviewer. ### Findings - **P2** `src/client/resolve.rs:204` — This test changes `XDG_CONFIG_HOME` and `FJ_TOKEN`, which are process-global. Rust tests run in parallel by default, so any concurrently running test that resolves config or tokens can observe these temporary values and fail nondeterministically. - PR: `rasterstate/fj#239` - Head SHA: `31a8e4e8aa56` - Review job: `sha256:dbe7f50ba15cd4f3e60c80529b965af8cab3a34d0d04d233e6f8a948b5dbed02` - Provider pair: `openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001` - Blocking findings: `0` - Inline findings: `1` - Model tokens: `121272 in / 15299 out` (`46642` from cache) ≈ `$0.6100` - Token source: `GITHUB_TOKEN` - Runner: `f941f7e38ad5` - Run: https://rasterhub.com/rasterstate/fj/actions/runs/429
forgejo-actions approved these changes 2026-08-07 06:16:57 +00:00
Dismissed
forgejo-actions left a comment

Forseti review

No blocking findings from the lead reviewer.

Findings

  • P2 src/client/resolve.rs:204 — This test changes XDG_CONFIG_HOME and FJ_TOKEN, which are process-global. Rust tests run in parallel by default, so any concurrently running test that resolves config or tokens can observe these temporary values and fail nondeterministically.

  • PR: rasterstate/fj#239

  • Head SHA: 31a8e4e8aa56

  • Review job: sha256:dbe7f50ba15cd4f3e60c80529b965af8cab3a34d0d04d233e6f8a948b5dbed02

  • Provider pair: openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001

  • Blocking findings: 0

  • Inline findings: 1

  • Model tokens: 121272 in / 15299 out (46642 from cache) ≈ $0.6100

  • Token source: GITHUB_TOKEN

  • Runner: f941f7e38ad5

  • Run: https://rasterhub.com/rasterstate/fj/actions/runs/429

<!-- forseti:review {"version":2,"repo":"rasterstate/fj","pr":239,"head_sha":"31a8e4e8aa56108513a2fb81348eda090a6f1f71","provider_pair":"openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001","policy_version":"stub-policy-v1","prompt_version":"prompt-v2","context_fingerprint":"fnv64:ed811388b647adf1","review_job_key":"sha256:dbe7f50ba15cd4f3e60c80529b965af8cab3a34d0d04d233e6f8a948b5dbed02","base_sha":"fdd0938f622b3d6a08c281a590389fd0dce52b33","role":"summary","status":"current"} --> ## Forseti review No blocking findings from the lead reviewer. ### Findings - **P2** `src/client/resolve.rs:204` — This test changes `XDG_CONFIG_HOME` and `FJ_TOKEN`, which are process-global. Rust tests run in parallel by default, so any concurrently running test that resolves config or tokens can observe these temporary values and fail nondeterministically. - PR: `rasterstate/fj#239` - Head SHA: `31a8e4e8aa56` - Review job: `sha256:dbe7f50ba15cd4f3e60c80529b965af8cab3a34d0d04d233e6f8a948b5dbed02` - Provider pair: `openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001` - Blocking findings: `0` - Inline findings: `1` - Model tokens: `121272 in / 15299 out` (`46642` from cache) ≈ `$0.6100` - Token source: `GITHUB_TOKEN` - Runner: `f941f7e38ad5` - Run: https://rasterhub.com/rasterstate/fj/actions/runs/429
stephen force-pushed fix-actions-rest-logs from 31a8e4e8aa
Some checks failed
Forseti review / forseti review (advisory) (pull_request_target) Successful in 3m29s
ci / check (pull_request) Successful in 10m45s
ci / live-e2e (pull_request) Successful in 1m59s
ci / coverage (pull_request) Failing after 2m53s
to 15ea3148b9
All checks were successful
Forseti review / forseti review (advisory) (pull_request_target) Successful in 2m29s
ci / check (pull_request) Successful in 10m55s
ci / live-e2e (pull_request) Successful in 1m59s
ci / coverage (pull_request) Successful in 3m11s
2026-08-07 06:30:35 +00:00
Compare

Forseti review

No blocking findings from the lead reviewer.

Findings

  • P2 src/api/workflow_logs.rs:349list_run_tasks errors are now collapsed to an empty task list. That lets the Forgejo job-log path proceed, but if the native log fetch later returns Unavailable, the Loki fallback requires task metadata and reports only Loki fallback needs workflow task metadata for job index ... instead of the original task API/auth/parse failure. This regresses the existing fallback path by hiding the reason the metadata needed for Loki could not be obtained.

  • PR: rasterstate/fj#239

  • Head SHA: 15ea3148b97c

  • Review job: sha256:e56a9a55c693e481188f46b82a7840d1d65237c37dc2298f16656a46cf15ec7d

  • Provider pair: openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001

  • Blocking findings: 0

  • Inline findings: 1

  • Model tokens: 122754 in / 11489 out (43826 from cache) ≈ $0.5117

  • Token source: GITHUB_TOKEN

  • Runner: d5c99db5accd

  • Run: https://rasterhub.com/rasterstate/fj/actions/runs/431

<!-- forseti:review {"version":2,"repo":"rasterstate/fj","pr":239,"head_sha":"15ea3148b97ccf82920e63ea7f6cad15af8b22aa","provider_pair":"openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001","policy_version":"stub-policy-v1","prompt_version":"prompt-v2","context_fingerprint":"fnv64:32b4667e7c50d5c1","review_job_key":"sha256:e56a9a55c693e481188f46b82a7840d1d65237c37dc2298f16656a46cf15ec7d","base_sha":"fdd0938f622b3d6a08c281a590389fd0dce52b33","role":"summary","status":"current"} --> ## Forseti review No blocking findings from the lead reviewer. ### Findings - **P2** `src/api/workflow_logs.rs:349` — `list_run_tasks` errors are now collapsed to an empty task list. That lets the Forgejo job-log path proceed, but if the native log fetch later returns `Unavailable`, the Loki fallback requires task metadata and reports only `Loki fallback needs workflow task metadata for job index ...` instead of the original task API/auth/parse failure. This regresses the existing fallback path by hiding the reason the metadata needed for Loki could not be obtained. - PR: `rasterstate/fj#239` - Head SHA: `15ea3148b97c` - Review job: `sha256:e56a9a55c693e481188f46b82a7840d1d65237c37dc2298f16656a46cf15ec7d` - Provider pair: `openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001` - Blocking findings: `0` - Inline findings: `1` - Model tokens: `122754 in / 11489 out` (`43826` from cache) ≈ `$0.5117` - Token source: `GITHUB_TOKEN` - Runner: `d5c99db5accd` - Run: https://rasterhub.com/rasterstate/fj/actions/runs/431
forgejo-actions left a comment

Forseti review

No blocking findings from the lead reviewer.

Findings

  • P2 src/api/workflow_logs.rs:349list_run_tasks errors are now collapsed to an empty task list. That lets the Forgejo job-log path proceed, but if the native log fetch later returns Unavailable, the Loki fallback requires task metadata and reports only Loki fallback needs workflow task metadata for job index ... instead of the original task API/auth/parse failure. This regresses the existing fallback path by hiding the reason the metadata needed for Loki could not be obtained.

  • PR: rasterstate/fj#239

  • Head SHA: 15ea3148b97c

  • Review job: sha256:e56a9a55c693e481188f46b82a7840d1d65237c37dc2298f16656a46cf15ec7d

  • Provider pair: openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001

  • Blocking findings: 0

  • Inline findings: 1

  • Model tokens: 122754 in / 11489 out (43826 from cache) ≈ $0.5117

  • Token source: GITHUB_TOKEN

  • Runner: d5c99db5accd

  • Run: https://rasterhub.com/rasterstate/fj/actions/runs/431

<!-- forseti:review {"version":2,"repo":"rasterstate/fj","pr":239,"head_sha":"15ea3148b97ccf82920e63ea7f6cad15af8b22aa","provider_pair":"openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001","policy_version":"stub-policy-v1","prompt_version":"prompt-v2","context_fingerprint":"fnv64:32b4667e7c50d5c1","review_job_key":"sha256:e56a9a55c693e481188f46b82a7840d1d65237c37dc2298f16656a46cf15ec7d","base_sha":"fdd0938f622b3d6a08c281a590389fd0dce52b33","role":"summary","status":"current"} --> ## Forseti review No blocking findings from the lead reviewer. ### Findings - **P2** `src/api/workflow_logs.rs:349` — `list_run_tasks` errors are now collapsed to an empty task list. That lets the Forgejo job-log path proceed, but if the native log fetch later returns `Unavailable`, the Loki fallback requires task metadata and reports only `Loki fallback needs workflow task metadata for job index ...` instead of the original task API/auth/parse failure. This regresses the existing fallback path by hiding the reason the metadata needed for Loki could not be obtained. - PR: `rasterstate/fj#239` - Head SHA: `15ea3148b97c` - Review job: `sha256:e56a9a55c693e481188f46b82a7840d1d65237c37dc2298f16656a46cf15ec7d` - Provider pair: `openai:gpt-5.5+anthropic:claude-haiku-4-5-20251001` - Blocking findings: `0` - Inline findings: `1` - Model tokens: `122754 in / 11489 out` (`43826` from cache) ≈ `$0.5117` - Token source: `GITHUB_TOKEN` - Runner: `d5c99db5accd` - Run: https://rasterhub.com/rasterstate/fj/actions/runs/431
stephen deleted branch fix-actions-rest-logs 2026-08-07 13:16:47 +00:00
Sign in to join this conversation.
No description provided.