fabro/lib/apps/fabro-server/src
Scott Werner 18d98794ae Move Git-target validation onto RunTarget in fabro-types
The Git-target grammar (slug, branch, and SHA rules plus the derived
origin URL) was implemented twice with no shared code path: once in
server admission and again in sandbox start, so the two could drift and
disagree about which persisted targets are valid.

Own it once as RunTarget::validate() in fabro-types, next to the
primitives it uses, returning the canonical target together with its
derived GitContext projection. Admission consumes it directly, and the
start path re-derives the expected clone source from the same rules
before checking the persisted projection against it. The start path now
also moves the derived strings into the sandbox spec instead of cloning
them.

While reordering admission around the shared validator, run the pure,
in-memory checks (target grammar, environment id) before the blob-store
closure fetch and lowering so malformed requests no longer pay for
version-store I/O.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 11:55:44 -04:00
..
auth Derive initial refresh token session state 2026-08-21 14:01:30 -04:00
demo refactor(search): select backend from available credentials 2026-08-21 20:09:52 -04:00
prompts Render the run title prompt with Jinja instead of string replacement 2026-07-27 17:23:16 -04:00
server Move Git-target validation onto RunTarget in fabro-types 2026-08-24 11:55:44 -04:00
worker_control refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
automation_materializer.rs refactor(github): simplify repository access checks 2026-08-21 17:12:27 -04:00
canonical_host.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
canonical_origin.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
csp.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
diagnostics.rs refactor(search): select backend from available credentials 2026-08-21 20:09:52 -04:00
error.rs Make pull request creation durable and asynchronous 2026-08-01 19:28:52 -04:00
git_checkout.rs refactor(github): simplify repository access checks 2026-08-21 17:12:27 -04:00
github_webhooks.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
install.rs Request Packages read permission in the GitHub App manifest 2026-08-21 14:12:32 -04:00
interp.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
jwt_auth.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
lib.rs Add version-backed run intent creation 2026-08-24 11:55:43 -04:00
manifest_validation.rs fix(tool): keep fabro_run_create validation catalog-free 2026-07-28 14:40:54 -04:00
migrations.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
principal_middleware.rs Unify blob hash vocabulary 2026-08-17 13:56:19 -04:00
request_id.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
run_compiler.rs Add version-backed run intent creation 2026-08-24 11:55:43 -04:00
run_files.rs Add version-backed run intent creation 2026-08-24 11:55:43 -04:00
run_files_security.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
run_intent.rs Move Git-target validation onto RunTarget in fabro-types 2026-08-24 11:55:44 -04:00
run_manifest.rs Merge pull request #775 from fabro-sh/claude/additional-github-repositories 2026-08-21 18:55:31 -04:00
run_selector.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
run_title_generation.rs refactor: address run title review findings 2026-07-28 17:14:03 -04:00
run_tool_manifest.rs Remove run IDs from create manifest producers 2026-08-01 11:47:11 -04:00
security_headers.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
serve.rs Merge main into feat/refresh-tokens-sqlite 2026-08-21 13:16:14 -04:00
server.rs Merge main into feat/refresh-tokens-sqlite 2026-08-24 11:04:10 -04:00
server_secrets.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
spawn_env.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
startup.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
static_files.rs feat(web): tell open tabs when a new build ships 2026-07-25 14:45:26 -04:00
test_support.rs fix(test): propagate storage setup errors 2026-07-28 17:23:31 -04:00
web_auth.rs Serve CLI auth sessions from SQLite 2026-07-26 00:00:15 -04:00
worker_runtime.rs refactor: simplify cancellation lifecycle code from review 2026-07-23 21:15:35 -04:00
worker_token.rs refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00