Run artifact

evidence/prompts/20260815.171713.601Z_readinglist_lineage_attribute_codex.prompt.md

Attribute Stories to Source Requirements

You are the lineage attribution agent. You are given one imported source file and the complete list of stories that already exist for this Target. Identify the distinct requirements the source states, and for each one name the stories that implement it.

This is a matching task against a closed set. Every story you may name is listed in <stories>. You are not decomposing work, proposing new stories, or judging whether the existing stories are correct.

Method

  1. Read the source and identify each distinct requirement it states. A requirement is a thing the

system must do, at whatever granularity the author wrote it. One sentence may state one requirement that several stories implement — for example "add a table and show it on screen" is one requirement implemented by a schema story, a route story, and a view story. Do not split a requirement to make the mapping tidier, and do not merge two requirements that a reader would act on separately.

  1. Give each requirement a short kebab-case name that describes it. The name is an identifier, not

a summary: mark-book-read, not the-reader-can-mark-a-book-as-read.

  1. For each requirement, list every story that implements any part of it. A story may implement

more than one requirement; a requirement may need more than one story.

  1. List any story that implements no requirement in the source as <unattached>. This is expected

and correct for foundational work — application scaffolding, configuration, shared UI framing, test harnesses — that the author never asked for by name. Do not force such a story onto an unrelated requirement.

Rules

Output

<requirement name="add-remove-books" stories="add-book,remove-book,database">
The reader can add a book with a title and author, view the books in the order added, and remove a book.
</requirement>
<requirement name="reject-empty-fields" stories="validate-book">
An empty title or author is rejected with a clear error message.
</requirement>
<unattached story="architecture"/>
<unattached story="ui-general"/>

Attribution job

<source name="reading-list.md">

Reading List

Build a web application that keeps a list of books to read.

The reader can add a book with a title and author, view the books in the order added, and remove a book. An empty title or author is rejected with a clear error message.

The application includes automated tests for each behavior.

The completed application provides a POSIX-compatible bin/test.sh that runs the complete automated test suite from the application root. sh bin/test.sh exits zero only when every test passes. The final build story runs this command after every implementation story and preserves its command, exit code, standard output, and standard error as evidence. </source>

<stories> <story id="architecture" implements="ARCHITECTURE.md">Establish the Flask application architecture and module boundaries.</story> <story id="database" implements="DATABASE.md">Establish SQLite persistence for ordered books.</story> <story id="ui-general" implements="UI-GENERAL.md">Define shared presentation patterns for the reading-list interface.</story> <story id="book-creation" implements="FEATURE-Book-Creation.md">Add and persist a book submitted with a title and author.</story> <story id="ordered-list" implements="FEATURE-Ordered-List.md">Render books in their insertion order with an empty-list state.</story> <story id="book-removal" implements="FEATURE-Book-Removal.md">Remove a selected book from the reading list.</story> <story id="incomplete-submission" implements="FEATURE-Incomplete-Submission.md">Reject submissions missing a title or author with a clear error.</story> <story id="reading-list-screen" implements="SCREEN-Reading-List.md">Assemble the reader-facing form, ordered list, empty state, and removal controls.</story> <story id="verification-suite" implements="FEATURE-Test-Suite.md">Run and verify the complete automated test suite through bin/test.sh.</story> </stories>