Skip to content

Add CI: fmt, clippy, test#3

Merged
strawgate merged 1 commit into
masterfrom
ci-workflow
Mar 29, 2026
Merged

Add CI: fmt, clippy, test#3
strawgate merged 1 commit into
masterfrom
ci-workflow

Conversation

@strawgate
Copy link
Copy Markdown
Owner

Summary

  • Add GitHub Actions CI workflow triggered on push and PR to master
  • Runs cargo fmt --check, cargo clippy -- -D warnings, and cargo test on ubuntu-latest with stable Rust
  • Uses Swatinem/rust-cache@v2 for dependency caching

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@strawgate strawgate merged commit 427f02e into master Mar 29, 2026
1 check failed
@strawgate strawgate deleted the ci-workflow branch March 29, 2026 05:24
strawgate added a commit that referenced this pull request Apr 14, 2026
- Fix pending_acks count in stalled batch scenario: after ACKing #3,
  only #1 and #3 are in pending_acks (2, not 3) since #2 hasn't been
  ACKed yet at that step.

- Remove 'queued' from checkpoint-blocking states. Per the TLA+ spec,
  only sent batches (via begin_send) participate in ordered-ack.
  Queued batches that were never sent are invisible to the checkpoint
  machine and should not block advancement.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
strawgate added a commit that referenced this pull request Apr 29, 2026
Add comprehensive verification to prevent the class of bugs found during
bug hunting (path mismatch, PID race, inotify breakage):

TLA+ SupervisorProtocol.tla:
- Models OpAMP client → supervisor → child process interaction
- PathConsistency invariant: write path == read path (prevents #1 bug)
- NeverSignalDeadChild: PID generation tracking (prevents #3 bug)
- ConfigMonotonic, OnlyValidatedConfigsReachMain: safety gates
- ConfigEventuallyApplied, CrashEventuallyRecovered: liveness

New proptests (supervisor.rs):
- path_contract_opamp_writes_where_supervisor_reads
- supervisor_intermediate_differs_from_main
- atomic_write_never_produces_partial_content
- supervisor_state_machine_always_valid (8 events, 50 steps)
- happy_path_returns_to_idle
- invalid_config_never_signals
- dead_child_never_gets_signaled
- filename_filter_matches_target

New proptests (ffwd-opamp integration):
- remote_config_path_is_yaml
- remote_config_path_none_never_panics
- remote_config_path_never_collides_with_main

New proptests (ffwd-config diff):
- reloadable_iff_server_unchanged
- total_count_equals_union_cardinality
- diff_is_deterministic

Also:
- Increase bootstrap reload channel capacity from 1 to 4
- Document TLA+ specs in tla/README.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
strawgate added a commit that referenced this pull request Apr 29, 2026
Add comprehensive verification to prevent the class of bugs found during
bug hunting (path mismatch, PID race, inotify breakage):

TLA+ SupervisorProtocol.tla:
- Models OpAMP client → supervisor → child process interaction
- PathConsistency invariant: write path == read path (prevents #1 bug)
- NeverSignalDeadChild: PID generation tracking (prevents #3 bug)
- ConfigMonotonic, OnlyValidatedConfigsReachMain: safety gates
- ConfigEventuallyApplied, CrashEventuallyRecovered: liveness

New proptests (supervisor.rs):
- path_contract_opamp_writes_where_supervisor_reads
- supervisor_intermediate_differs_from_main
- atomic_write_never_produces_partial_content
- supervisor_state_machine_always_valid (8 events, 50 steps)
- happy_path_returns_to_idle
- invalid_config_never_signals
- dead_child_never_gets_signaled
- filename_filter_matches_target

New proptests (ffwd-opamp integration):
- remote_config_path_is_yaml
- remote_config_path_none_never_panics
- remote_config_path_never_collides_with_main

New proptests (ffwd-config diff):
- reloadable_iff_server_unchanged
- total_count_equals_union_cardinality
- diff_is_deterministic

Also:
- Increase bootstrap reload channel capacity from 1 to 4
- Document TLA+ specs in tla/README.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
strawgate added a commit that referenced this pull request Apr 29, 2026
Add comprehensive verification to prevent the class of bugs found during
bug hunting (path mismatch, PID race, inotify breakage):

TLA+ SupervisorProtocol.tla:
- Models OpAMP client → supervisor → child process interaction
- PathConsistency invariant: write path == read path (prevents #1 bug)
- NeverSignalDeadChild: PID generation tracking (prevents #3 bug)
- ConfigMonotonic, OnlyValidatedConfigsReachMain: safety gates
- ConfigEventuallyApplied, CrashEventuallyRecovered: liveness

New proptests (supervisor.rs):
- path_contract_opamp_writes_where_supervisor_reads
- supervisor_intermediate_differs_from_main
- atomic_write_never_produces_partial_content
- supervisor_state_machine_always_valid (8 events, 50 steps)
- happy_path_returns_to_idle
- invalid_config_never_signals
- dead_child_never_gets_signaled
- filename_filter_matches_target

New proptests (ffwd-opamp integration):
- remote_config_path_is_yaml
- remote_config_path_none_never_panics
- remote_config_path_never_collides_with_main

New proptests (ffwd-config diff):
- reloadable_iff_server_unchanged
- total_count_equals_union_cardinality
- diff_is_deterministic

Also:
- Increase bootstrap reload channel capacity from 1 to 4
- Document TLA+ specs in tla/README.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
strawgate added a commit that referenced this pull request Apr 29, 2026
Add comprehensive verification to prevent the class of bugs found during
bug hunting (path mismatch, PID race, inotify breakage):

TLA+ SupervisorProtocol.tla:
- Models OpAMP client → supervisor → child process interaction
- PathConsistency invariant: write path == read path (prevents #1 bug)
- NeverSignalDeadChild: PID generation tracking (prevents #3 bug)
- ConfigMonotonic, OnlyValidatedConfigsReachMain: safety gates
- ConfigEventuallyApplied, CrashEventuallyRecovered: liveness

New proptests (supervisor.rs):
- path_contract_opamp_writes_where_supervisor_reads
- supervisor_intermediate_differs_from_main
- atomic_write_never_produces_partial_content
- supervisor_state_machine_always_valid (8 events, 50 steps)
- happy_path_returns_to_idle
- invalid_config_never_signals
- dead_child_never_gets_signaled
- filename_filter_matches_target

New proptests (ffwd-opamp integration):
- remote_config_path_is_yaml
- remote_config_path_none_never_panics
- remote_config_path_never_collides_with_main

New proptests (ffwd-config diff):
- reloadable_iff_server_unchanged
- total_count_equals_union_cardinality
- diff_is_deterministic

Also:
- Increase bootstrap reload channel capacity from 1 to 4
- Document TLA+ specs in tla/README.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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