Submission polish: verification-doc accuracy and final hardening - #40
Merged
Conversation
Documentation accuracy against the assignment text (timing inside the verify section, --confirm on documented verify_recovery.sh invocations, explicit Extension A/B/D claims, an append-only-retention limitation, a port-collision troubleshooting row), a worker-restore EXIT-trap fix in phase_scenarios, a CI job for the three gates config/ci.rb already declares, and consistency fixes (Appendix E wording, stale step-7 comments, .claude/ in .gitignore). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The scenario phase now arms the worker-restore trap before the stop attempt so an interrupted stop is covered, records stop/start outcomes as checks that fail the verdict instead of swallowing them, and skips the scenarios when the worker could not be stopped. README known limitation 9 now states the correct worst case: twelve polls at ~100 events each is ~1,200 rows an hour, not ~100. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #39
What this is
The final pre-submission polish pass: documentation accuracy against the assignment text, one defensive fix in the verification script, and a CI job for the already-declared static-analysis gates. No runtime behavior changes — the only non-doc, non-CI change is the EXIT-trap arming in
script/verify_recovery.sh.Changes
README
script/verify_recovery.sh --phase=cleanupinvocations (and the--phase=rate-limitmention) now carry--confirm; without it the script prints usage and exits 2, so the documented command previously failed on first paste.script/verify_recovery.sh
phase_scenariosstops the worker but never armed the worker-restore EXIT trap thatphase_test_isolationuses, so a mid-phase failure underset -euo pipefailcould leave a reviewer's worker stopped. The stop now armsTEST_WORKER_RESTART_PENDINGand the verified start clears it, mirroring the existing pattern; the trap's message is rephrased since two phases now share it.CI
analysisjob running the three gatesconfig/ci.rbalready declares forbin/ci— RuboCop, bundler-audit, Brakeman (same flags). Until now the declared tooling had no execution record anywhere. All three verified green in the project container before this PR: RuboCop 231 files no offenses, Brakeman 0 warnings, bundler-audit no vulnerabilities against the 2026-07-31 advisory database.Consistency
page_writer.rb,end_to_end_spec.rb) still cited "reviewer verification step 7", a numbering the Phase A/B/C restructure removed; both now reference the Phase B replay check that exists..gitignorenow covers/.claude/, so the exclusion travels with the repository instead of relying on one machine's global git config.Tradeoffs
${WEB_PORT:-3000}interpolation: every curl in the README targetslocalhost:3000, and a configurable port would make those examples conditionally wrong for one rare failure mode.analysisjob is a separate CI job, not steps appended to the RSpec job: none of the three tools needs the Postgres service, and a parallel job keeps the suite's wall-clock unchanged.Verification
db:test:prepare && rspec && rspec spec/stress), includingspec/docker_compose_spec.rb, which pinsverify_recovery.shsource properties the script edit had to preserve.