Add Scene 7 claim report workflow
This commit is contained in:
+13
-14
@@ -65,27 +65,27 @@ The narrative layer — campaigns, NPC cutscenes, the admin authoring panel, and
|
||||
|
||||
## Milestone 5: claim-driven case report
|
||||
|
||||
The purpose of this milestone is the gameplay loop, not a knowledge graph: the player connects two exhibits, explains that one specific thread with a luggage-tag Claim, and later discovers that their accumulated explanations have become a nearly complete case report.
|
||||
The purpose of this milestone is the gameplay loop, not a knowledge graph: a Claim is a pinned proposition, source exhibits connect to it with red thread, and each thread's luggage-tag text explains how that source supports the Claim. Those explanations become the evidence section of the Case Report.
|
||||
|
||||
### 5.1 Lock the gameplay and temporal rules
|
||||
- [ ] Define a Claim as an entity owned by exactly one investigative thread; a thread has zero or one Claim. (The text associated with a claim can prove multiple points, handed by the text.
|
||||
- [ ] Keep untagged threads as ordinary connections that do not appear in the report.
|
||||
- [ ] Use the same Claim text on the luggage tag and in the report. Editing either presentation updates the same database value.
|
||||
- [x] Define a Claim as an independent pinned Exhibit which can receive one or more supporting document threads.
|
||||
- [x] Treat a claim-to-document thread label as an evidentiary statement; new threads begin with `Proof that…`.
|
||||
- [x] Use the same persisted connection statement on the luggage tag and in the report.
|
||||
- [ ] Derive the Claim date from the earliest non-null temporal date of its two endpoint exhibits; never use `created_at` or the current time.
|
||||
- [ ] Use Event `occurred_at` and a Document's primary timeline date as direct endpoint dates. For a Folder, use the earliest dated contained Document. Leave a Claim undated when neither endpoint supplies a date.
|
||||
- [ ] Place undated Claims after dated Claims in the initial report order while keeping them fully editable and reorderable.
|
||||
- [ ] Treat the derived date as the initial chronological suggestion only. Manual report ordering must not rewrite exhibit or Claim dates.
|
||||
### 5.2 Add normalized persistence
|
||||
|
||||
- [ ] Add a `claims` table with a unique foreign key to `exhibit_connections`, text, tag style, position percentage, lateral offset, and timestamps.
|
||||
- [ ] Move luggage-tag-specific text and placement fields out of `exhibit_connections`; retain curve tightness and endpoints on the connection.
|
||||
- [ ] Add one level-owned `case_report` and normalized `case_report_claims` rows with explicit `sort_order`.
|
||||
- [ ] Assign stable, level-local display numbers to cite exhibits as `Exhibit 3` independently of board position, z-index, or report order.
|
||||
- [x] Add normalized `claim_exhibits` as an Exhibit subtype; Claims are not encoded as connection labels.
|
||||
- [ ] Move luggage-tag presentation fields out of `exhibit_connections`; retain evidentiary statement, curve tightness, and endpoints on the connection.
|
||||
- [x] Add one board-owned `case_report` plus immutable level-owned submissions and normalized submission issues.
|
||||
- [x] Assign stable, board-local display numbers to cite exhibits as `Exhibit 3` independently of board position, z-index, or report order.
|
||||
- [ ] Enforce same-board ownership for the Claim's connection, both endpoint exhibits, report, and report membership.
|
||||
- [ ] Delete a Claim and its report membership transactionally when its luggage tag is removed, while retaining the now-untagged thread.
|
||||
- [ ] Delete both the Claim and connection when the thread itself is removed.
|
||||
- [ ] Clone board-owned Claims with fresh IDs during template creation and instantiation; rebuild level report membership against the cloned Claim IDs.
|
||||
- [ ] Make reset discard player-created Claims and restore exactly the Claims present in the source template version.
|
||||
- [x] Clone board-owned Claims with fresh IDs during template creation and instantiation.
|
||||
- [x] Make reset discard player-created Claims/report submissions and restore exactly the source template report configuration.
|
||||
- [ ] Keep uploaded binary evidence in MinIO. Reports and Claims reference Document exhibits and asset metadata; they never duplicate or embed asset bytes.
|
||||
|
||||
### 5.3 Expose a focused API contract
|
||||
@@ -109,16 +109,16 @@ The purpose of this milestone is the gameplay loop, not a knowledge graph: the p
|
||||
### 5.5 Build the typewriter case report
|
||||
The end goal is that a case report is prepopulated by the claims the player made during the investigation so that a skeleon of the case solution is present. The player must simply edit the case report and submit it.
|
||||
|
||||
- [ ] Add **Case Report** as a primary menu item and implement it as a persistent board view, separate from exhibits and the timeline.
|
||||
- [x] Add **Case Report** as a primary menu item and implement its first persistent report surface, separate from exhibits and the timeline.
|
||||
- [ ] Provide an empty state that explains that explaining red threads will create the report, without revealing a solution or forcing a tutorial.
|
||||
- [ ] Initially arrange Claim rows chronologically by derived date, using the order parameters on the claim as tie-breaker and undated Claims last, below a horizontal rule that says (missing date)
|
||||
- [ ] Render each row as a typewritten Claim with its date and endpoint citations, for example: `14.10.1987 — Maria Voss redirected the shipment. Exhibits 4 and 7.`
|
||||
- [x] Render the Scene 7 Claim with typewritten, stable Exhibit citations and editable date/source provenance.
|
||||
- [ ] It needs to be possible to add free text before and after the claims. Coloured inline text (use span elements) have a specific class and id can be edited
|
||||
- [ ] -Make Claim text editable inline. Persist through the Claim API so the luggage tag updates immediately.
|
||||
- [ ] Support pointer and keyboard reordering of Claim rows and persist the resulting explicit report order into order column of the claim.
|
||||
- [ ] Clicking a Claim must minimize the report as appropriate, center its thread, and briefly illuminate the curve and luggage tag.
|
||||
- [ ] Clicking an exhibit citation must locate and highlight that exhibit using the existing tray/board locator treatment.
|
||||
- [ ] Ensure the report is legible and operable on portrait mobile layouts as well as desktop.
|
||||
- [x] Ensure the first Case Report surface is legible and operable on portrait mobile layouts as well as desktop.
|
||||
- [ ] Add restrained typewriter, paper, and ink feedback while respecting reduced-motion preferences.
|
||||
|
||||
### 5.6 Test the reasoning loop
|
||||
@@ -140,4 +140,3 @@ The end goal is that a case report is prepopulated by the claims the player made
|
||||
### Milestone 5 definition of done
|
||||
A player can connect exhibits, explain each connection with a luggage-tag Claim, discover those exact words in a chronological typewriter report, improve and reorder the Claims, follow every citation back to the board, reload without loss, and reset safely to the template. No LLM is required for this experience to work.
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user