Skip to main content

Behavioral Patterns: Project and Capstone Thread

Build a local document-review workbench. A CLI or accessible text interface is sufficient. Reuse the offline kit's contracts and state explicitly where you extend them. Budget 16–23 hours including defense; later semester integration adds work.

Required behavior​

Edit document text with undo/redo and declared snapshot scope. Submit, revise, approve and archive using the L04 lifecycle. Notify two views after an accepted transition, with registration cleanup and failures reported separately. Rebuild workflow state from accepted records without repeating notifications. Use a pure coordinator to compute available actions from state and pending input.

Choose a plain function, table or object for each boundary and defend it. There is no requirement to force every pattern into the application. History of text edits and lifecycle history are distinct: declare whether undo affects only text and when text edits are allowed. Do not silently undo a published approval.

Acceptance scenarios​

  1. An invalid edit leaves text, undo and redo unchanged; a new valid edit clears redo.
  2. Illegal lifecycle operations leave state and accepted records unchanged.
  3. A disposed view receives no subsequent event; disposing twice is harmless.
  4. A failing view does not erase accepted state; return a distinguishable notification failure.
  5. Replayed state matches live accepted history and triggers no external effects.
  6. A stale review-generation approval is rejected in your extended model.
  7. All advertised commands work from the keyboard, errors identify a repair action, and output does not rely on color alone. A GUI adds its own accessibility checks.

Review packet​

Submit a run command, scenario fixtures, contracts, state/event matrix, ownership diagram, actual change history, independent oracle, evidence of a rejected faulty variant, source/AI-use declaration and one-page design memo. Include a simpler alternative and the condition that would make you adopt it. Reuse evidence from labs/experiments instead of counting it twice.

The reviewer changes one assumption: shared editing, persisted history, asynchronous delivery or a new node/operation. Explain which guarantees no longer hold and propose a bounded next change. Do not implement an entire distributed system to avoid acknowledging the boundary. All C01–C10 and a delayed recheck still apply.

Carry forward​

Save contract traces, rejected alternatives, review feedback and the repaired artifact for the semester refactor log/design review and eventual capstone defense. Distinguish authored, executed, independently reviewed and learner-piloted claims.

Runtime comparison evidence in the project​

Include the BD1–BD6 packet alongside C01–C10. State which publisher/history policy the integrated workbench uses and keep the other policy in a separate comparison fixture. Demonstrate close/disposal and immutable history in that fixture. Shared reasoning need not be rewritten, but neither package's distinct checks may be waived.