=== BEGIN ARTIFACT ANALYSIS.md === # Blueprint Analysis: ReadingList ## Commander Expectations - assert readers can maintain an ordered list of books to read through a web application - assert empty titles and authors are rejected with clear reasons - assert the complete automated test suite is runnable through `sh bin/test.sh` ## Crew | Crew | Charge | |---|---| | Commander | Defines intent and decides what done means. | | Team Lead | Confirms epic completeness and stakeholder expectations. | | Planning Crew | Authors atomic specifications and the ordered Manifest. | | Shipyard Crew | Builds the tickets without synchronous Commander access. | ## Story List ### Feature: Book List Management | ID | Story | High-level AC | |---|---|---| | BOOKS-001 | Add a book with title and author | A submitted title and author are stored and shown in the list. | | BOOKS-002 | View books in order added | The list displays books in the same order in which they were added, including an understandable empty-list state. | | BOOKS-003 | Remove a book | Removing a book causes it to be omitted on the next list read. | | BOOKS-004 | Reject incomplete book submissions | Empty titles or authors are rejected and the reason is clearly reported. | ### Feature: Application Verification | ID | Story | High-level AC | |---|---|---| | VERIFY-001 | Run the complete automated test suite | `sh bin/test.sh` runs from the application root and exits zero only when every automated test passes. | | VERIFY-002 | Cover all book-list behaviors with automated tests | Automated tests cover adding, ordered listing, removal, and rejection of empty title or author. | ## Surfaced Acceptance Criteria | ID | Story ID | Criterion | |---|---|---| | AC-001 | BOOKS-001 | The primary web entry point provides a first-time reader with a direct path to submit a title and author. | | AC-002 | BOOKS-002 | When no books exist, the application presents a clear empty-list state. | | AC-003 | BOOKS-004 | Submission errors identify that the title or author is required. | | AC-004 | BOOKS-002 | Interactive list operations provide a usable response while the request is in progress and a clear error state if the operation fails. | ## Relationship Model | Source or group | Relationship type | Related source or group | Evidence | Delivery implication | |---|---|---|---|---| | `sources/reading-list.md` | instruction-to-test | `BOOKS-001` through `BOOKS-004` | The source defines add, ordered viewing, removal, and validation behaviors. | Implementation stories must preserve these user-visible behaviors. | | `sources/reading-list.md` | instruction-to-test | `VERIFY-002` | The source explicitly requires automated tests for each behavior. | Tests must cover every listed book-list behavior. | | `sources/reading-list.md` | instruction-to-test | `VERIFY-001` | The source requires a POSIX-compatible `bin/test.sh` and complete-suite execution. | The terminal verification story must provide and run the project test command. | ## Source Roles | Path | Role | Plan disposition | Build disposition | |---|---|---|---| | `sources/reading-list.md` | author intent | compass | prompt-only | ## Planning Instructions ### Delivery Shape A small web application accepts book title and author input, stores books, renders them in insertion order, and supports removal. The application includes automated behavior tests and a root-level POSIX test launcher. The primary flow is submit, view the ordered list, and remove an item. ### Story Realization Map | Story ID | Blueprint scope | Evidence | Related files | Delivery kind | |---|---|---|---|---| | BOOKS-001 | Book creation flow and persistence | `sources/reading-list.md` | Web entry point, book model/store, add-book tests | capability, persistence, test | | BOOKS-002 | Ordered list rendering and empty state | `sources/reading-list.md` | List view, ordered query/read path, list tests | capability, test | | BOOKS-003 | Book removal flow | `sources/reading-list.md` | Remove route/action, persistence deletion, removal tests | capability, test | | BOOKS-004 | Input validation and error presentation | `sources/reading-list.md` | Validation boundary, form error display, rejection tests | capability, test | | VERIFY-001 | Complete test launcher | `sources/reading-list.md` | `bin/test.sh`, test-runner configuration | acceptance contract, build gate | | VERIFY-002 | Behavior test coverage | `sources/reading-list.md` | Automated test modules for all book behaviors | test harness | ### Test and Acceptance Strategy Each book-management story owns focused tests for its behavior. `VERIFY-002` confirms coverage across adding, ordered listing, removal, and invalid submissions. `VERIFY-001` is the terminal verification story and runs the complete suite through `sh bin/test.sh`; its acceptance assertion uses `Suite: full`. The complete-suite requirement is a proof gate, not a numeric release threshold. ### Sequencing and Dependencies Establish the application foundation and persistence boundary before the book-management stories. Implement creation and ordered reads before removal and validation refinements. Keep focused story tests scoped to the owning behavior. Implement the test launcher and complete-suite verification after the behavior tests are available. ### Source Conflicts and Gaps No conflicting source definitions were found. The source does not name a framework, language, persistence engine, or deployment target; conventional implementation choices are proposed in `TECHNOLOGY_STACK.md`. No external service, authentication model, or sensitive-data requirement is stated. ## Analysis Notes generated: 2026-08-15 blueprint: /mnt/c/Users/barlo/projects/drydock/uat/ReadingList/runs/20260815.171255/workspace/targets/ReadingList/blueprint Quality: Questions blockers: 0 questions: 1 features: 2 stories: 6 stack: proposed Python, Flask, SQLite, pytest, POSIX sh display_name: ReadingList short_description: A web application for maintaining an ordered list of books to read. None. === END ARTIFACT === === BEGIN ARTIFACT SEA_TRIALS.md === # Sea Trials: ReadingList ## st-001: Test suite passes Type: technical Required: yes Criterion: The application shall provide a POSIX-compatible `bin/test.sh` that exits zero when every automated test passes. Verification: proof Pattern: ubiquitous ## st-002: A book can be added Type: behavioral Required: yes Criterion: When a reader submits a title and an author, the application shall store the book and show it in the list. Verification: proof Pattern: event ## st-003: Books appear in the order added Type: behavioral Required: yes Criterion: The application shall present books in the order they were added. Verification: proof Pattern: ubiquitous ## st-004: A book can be removed Type: behavioral Required: yes Criterion: When a reader removes a book, the application shall omit it from the list on the next read. Verification: proof Pattern: event ## st-005: Empty fields are rejected Type: behavioral Required: yes Criterion: If a submission carries an empty title or an empty author, then the application shall reject it and report the reason. Verification: proof Pattern: unwanted ## st-006: Every behavior is covered by a test Type: technical Required: yes Criterion: The application shall carry automated tests for adding a book, listing books in the order added, removing a book, rejecting an empty title or author. Verification: proof Pattern: ubiquitous ## Questions - None. === END ARTIFACT === === BEGIN ARTIFACT TECHNOLOGY_STACK.md === # Technology Stack | Technology | Rigging | Notes | |---|---|---| | Python | `python.md` | Proposed conventional application language; the source does not specify a language. | | Flask | `flask.md` | Proposed lightweight web framework for the described web application. | | SQLite | `sqlite.md` | Proposed local persistence for the stored reading list. | | pytest | `python.md` | Proposed automated test runner for the required behavior suite. | | POSIX shell | `common.md` | Required by the source for the compatible `bin/test.sh` launcher. | === END ARTIFACT === === BEGIN ARTIFACT COMPASS.md === # COMPASS: ReadingList ## Compass ReadingList is a small web application for readers who want to maintain a personal, ordered list of books to read. A reader can add a book with its title and author, review books in insertion order, and remove books when they are no longer needed. ## Constraints - The application must run as a web application. - Book submissions require both a title and an author. - Books must be shown in the order they were added. - `bin/test.sh` must be POSIX-compatible and run from the application root. - The complete automated test suite must pass for `bin/test.sh` to exit zero. ## Guardrails - Never accept or store a submission with an empty title or author. - Never reorder books relative to their addition order. - Never report the test command as successful when any automated test fails. - Always provide a clear reason when rejecting incomplete input. === END ARTIFACT === === BEGIN ARTIFACT discovery-identity.json === { "id": "discovery-identity", "title": "Discovery: Project Identity", "purpose": "Confirm the proposed display name and short description before planning.", "questions": [ { "id": "display_name", "label": "Display Name", "prompt": "The display name Drydock will use for this project. Edit to override the proposal.", "input": "text", "proposed": "ReadingList", "answer": "ReadingList" }, { "id": "short_description", "label": "Short Description", "prompt": "One-sentence description of what this project does. Edit to override the proposal.", "input": "textarea", "proposed": "A web application for maintaining an ordered list of books to read.", "answer": "A web application for maintaining an ordered list of books to read." } ] } === END ARTIFACT ===