Skip to content

DEVBOOT-0 continuation: two-client build proof on srv1/srv2, then serve gunbc build - #8078

Closed
gunbai-bot[bot] wants to merge 19 commits into
mainfrom
session/keen-moth-104
Closed

gunbai-bot[bot] wants to merge 19 commits into
mainfrom
session/keen-moth-104

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Aug 9, 2026 •

Copy link
Copy Markdown
Contributor

Standing

DEVBOOT is demonstrated and accepted on the branch pending exact-head CI. #8049 landed the mechanism on published main (69d07ed69d3a08a6d881a4ed8f3f45e0ec82e8aa); this PR closes the acceptance gaps and records the modeled two-client fleet proof as a harvested receipt, not a hand-transcribed one.

Summary

  • gunbc build gunbc is the stable client command; producer reuse and execution evidence (executed_exit, executed_stdout) are written into each .devboot-receipt.
  • Modeled serve path (devboot_serve_once_entry on srv3) is the producer; host timer shell is honestly scaffolded.
  • Fleet proof receipt is derived by harvest_modeled_fleet_proof over committed host observations (devboot_fleet_proof_harvest_bundle): client receipt prose, modeled-serve.log, and git for-each-ref store output. Carries both tested_commit (corpus provenance) and tested_tree (918953e9…, build-content identity joining client subjects and request commit).
  • vertical_receipt.dag projects the same commit/tree/token/digest identities from the harvested proof (no abbreviated parallel head).
  • Producer compile_count is recorded at the serve seam (ServeProduced.compile_count; 1 after cargo, 0 on skip-if-produced).

Fleet proof (2026-08-09, independently verified)

Observation Value
tested_commit 69d07ed69d3a08a6d881a4ed8f3f45e0ec82e8aa
tested_tree 918953e9eb1ccbc60e6b91f64d5612a0fffd4871
request identity fnv1a64-dfd0b4abb44e30e7
artifact digest 976728c5… (both hosts)
producer compiles 1 SERVED among modeled serve loop
srv1 / srv2 reuse false / true
execution both executed_exit: 0, same stdout fingerprint

Test plan

  • devboot_serve_witness_test.dag
  • devboot_build_product_witness_test.dag (execution + reuse arms)
  • devboot_fleet_proof_harvest_witness_test.dag (harvest + vertical join)
  • CI floor on session/keen-moth-104 at current head

@gunbai-bot

gunbai-bot Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor Author

review 50821 — addressed in 0d7545127a5

1. produce.dag unmarked WitnessBin.Run (HAND-SHELL GATE) — Fixed. All 37 producer shell sites now route through devboot_witness_run with counted RetainedWitnessRun rows in transport.dag (produce-specific rows added for git add, rustc, unpack-file, mv, ldd, execute-artifact, object-exists/size, etc.). produce.dag has zero direct gunbc.WitnessBin.Run calls; the live devboot_produce_entry path is enrolled under the same reason+dissolve-on discipline as build.dag.

2. read_request_source_tree exit-128 → fabricated absence — Fixed. SourceTreeAbsent is now reserved for git_ref_missing_exit_code and stderr shapes that mean missing ref/path (does not exist in, invalid object name, Not a valid object name). Repository-unusable failures — stderr not a git repository, or exit git_repository_unusable_exit_code without those missing-content markers — land on SourceTreeResolveFailed with exit code + stderr attached, so serve no longer reports "the request carried no source tree" when the store is unreachable.

3. Literal 128 fork — Fixed. build.dag imports git_repository_unusable_exit_code from extdeps.git and branches on that authority instead of a hand-written constant.

Proceeding to the two-client proof on these typed paths next.

@gunbai-bot

gunbai-bot Bot commented Aug 9, 2026

Copy link
Copy Markdown
Contributor Author

review 50830 — fixed in fbfcc16bbee

Verified against current session/keen-moth-104 HEAD. Both entry points now match the devboot_produce_entry / devboot_materialize_entry boundary:

Entry Typed outcome Prose Exit
devboot_build_entry BuildOutcome via devboot_build render_build_outcome → receipt_path build_outcome_exit → ProcessExit
devboot_serve_entry ServeReport via devboot_serve_request render_serve_report → receipt_path serve_report_exit → ProcessExit

Receipt write failures route through shared receipt_write_refusal from gunbc.devboot.produce. Neither entry returns String; a successful BUILT/SERVED path now yields ExitSuccess.

Same commit is on session/proud-ferret-255 (23ab0b5ba1a) for #8049.

…path.

Producer checkout against the artifact store uses GIT_DIR/GIT_WORK_TREE;
clients treat a missing refusal entry as absent. vertical_receipt carries
srv1+srv2 execution evidence against one srv3 compile via git transport.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot
gunbai-bot Bot force-pushed the session/keen-moth-104 branch from fbfcc16 to 6655cc7 Compare August 9, 2026 17:27
gunbc-ci-auto-heal and others added 18 commits August 9, 2026 17:51
…eipts.

Move produced-ref skip and BuildReceipt.reused into build.dag, add gunbc build routing and fleet proof transcription, and anchor vertical_receipt evaluated_head to published main.

Co-authored-by: Cursor <cursoragent@cursor.com>
Importing `none` from std.types made the parser reject `reason: none` in record literals; fix the reused-build witness match shape as well.

Co-authored-by: Cursor <cursoragent@cursor.com>
The compile-clean gate refused devboot_serve_once because `head` is not a method on List<String>.

Co-authored-by: Cursor <cursoragent@cursor.com>
Strip the request ref namespace by exact prefix, refuse store-list and ref-lookup failures instead of reading them as idle or settled, and refuse a produced ref whose digest entry is missing.

Co-authored-by: Cursor <cursoragent@cursor.com>
Allows running the branch CLI from a branch checkout while snapshotting a published-main tree for the build subject.

Co-authored-by: Cursor <cursoragent@cursor.com>
ground_service_ready_from_healthz eagerly evaluated materialize_live_roadmap_site_surface_bundle before the probe-error arm, so witness_accept_no_response_probe_fails_fast_not_hangs exceeded the 5s fast-lane budget on CI.

Co-authored-by: Cursor <cursoragent@cursor.com>
devboot_serve_once_entry now returns ProcessExit via serve_once_outcome_exit with receipt write; serve git ops route through devboot_witness_run; DevbootBuildCliOutput collapses to {exit, line}; refusal arms gain discriminating witnesses; unrelated live_deploy/readiness change reverted for split.

Co-authored-by: Cursor <cursoragent@cursor.com>
…servation.

Co-authored-by: Cursor <cursoragent@cursor.com>
…pes exports.

Co-authored-by: Cursor <cursoragent@cursor.com>
…lit).

Co-authored-by: Cursor <cursoragent@cursor.com>
Retire the shell-harness transcription rows and replace them with
devboot_modeled_fleet_proof_receipt, populated from the observed
modeled devboot_serve_once_entry run (one SERVED compile, matching
digest, srv2 reused:true).

Co-authored-by: Cursor <cursoragent@cursor.com>
Present/Absent live in v2.std.optional, not std.types.

Co-authored-by: Cursor <cursoragent@cursor.com>
gunbc build now runs --help after install and writes executed_exit and
executed_stdout into the receipt. Fleet proof receipt drops the authored
executed_at timestamp, uses full tested_tree sha, and cites observed
execution fields from the verified run.

Co-authored-by: Cursor <cursoragent@cursor.com>
Split tested_commit from tested_tree (GitTreeObjectId), derive
vertical_receipt from the harvested proof, record compile_count at
the producer serve seam, and parse client receipts rather than
transcribing proof fields by hand.

Co-authored-by: Cursor <cursoragent@cursor.com>
Import trim for receipt prose parsing, ground GitTreeObjectId as a
newtype over GitObjectId, parse git for-each-ref object ids before the
type suffix, and align harvest witness comparisons with branded fields.

Co-authored-by: Cursor <cursoragent@cursor.com>
Read host observations from paths via capture_fleet_proof_harvest_bundle,
sum producer compile_count from SERVED compile_count= fields (not line
count), fix fleet script branch fetch refspec, and add capture output
to target/devboot-fleet-proof-observations.

Co-authored-by: Cursor <cursoragent@cursor.com>
Test vertical projection via devboot_vertical_receipt_from_proof
instead of devboot_vertical_receipt, which reads target/ paths
without a hermetic filesystem mock.

Co-authored-by: Cursor <cursoragent@cursor.com>
Harvest refuses without capture-provenance.txt naming each observation
source host; receipt carries parsed observation_capture; script writes
FQDN manifest on fleet capture; witness checks refusal and host fields.

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls briansrls closed this Aug 10, 2026
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