Dashboard: Artifact organization by type and phase with relevance ordering #351

Open
opened 2026-04-15 08:44:09 +00:00 by mprihoda · 1 comment
mprihoda commented 2026-04-15 08:44:09 +00:00 (Migrated from github.com)

Layer: 2 — Navigation & Document Experience
Parent: #343

Problem

Artifacts are listed in a flat, unstructured way. When a worktree has many artifacts across multiple phases (analysis, review packets, release notes, diagrams), finding the right document requires scanning the full list. Artifacts also accumulate duplicates without relevance ordering (#200).

Solution

  1. Organize artifacts by type (analysis, phase context, review packet, release notes, diagrams) and/or by phase number
  2. Relevance ordering — most recent/relevant artifacts at the top, stale ones deprioritized
  3. Deduplicate — when artifacts are regenerated, show the latest version prominently
  • Incorporates #200 (artifacts accumulate with duplicates and lack relevance ordering)
**Layer:** 2 — Navigation & Document Experience **Parent:** #343 ## Problem Artifacts are listed in a flat, unstructured way. When a worktree has many artifacts across multiple phases (analysis, review packets, release notes, diagrams), finding the right document requires scanning the full list. Artifacts also accumulate duplicates without relevance ordering (#200). ## Solution 1. **Organize artifacts by type** (analysis, phase context, review packet, release notes, diagrams) and/or by phase number 2. **Relevance ordering** — most recent/relevant artifacts at the top, stale ones deprioritized 3. **Deduplicate** — when artifacts are regenerated, show the latest version prominently ## Related - Incorporates #200 (artifacts accumulate with duplicates and lack relevance ordering)
Member

Intake: needs-input
Workflow: -
Reason: the goal is not specified — the deduplication part is done (IW-715, 771e37ba), but the issue does not choose how to group, what "relevant" means, or which view changes
Analysis: - (no branch, no worktree)

1. What must group the artifacts, and where does the group of each artifact come from?

Each artifact on the card has only a label and a path (ReviewState.scala#L15-L18). The schema permits an optional category field (review-state.schema.json), but the dashboard does not read it. The issue says:

Organize artifacts by type (analysis, phase context, review packet, release notes, diagrams) and/or by phase number

  • a) Group by phase, then by type in each phase. Get both from the file name (phase-02-context.md, review-packet-phase-01.md). This needs no schema change and no workflow change. A file name that does not match a rule goes into an "Other" group.
  • b) The same groups, but each workflow writes the type into category. The groups are exact. This changes the plugin skills and old cards show no groups.
  • c) Group by type only.

Recommended: a): it works on the cards that exist now, and it changes the least.

2. What does "most relevant first" mean?

The dashboard shows artifacts in the order of the array. A replaced artifact keeps its position, so the array order is not the order of recency. The card records the current phase. Issue #200 (open) also proposes a separate attention_artifacts list that the workflow sets.

  • a) The current phase first, then the earlier phases newest first, then the documents that have no phase. This uses the phase field that the card already has.
  • b) Sort by file modification time. This needs a file-system read for each artifact on each render.
  • c) The workflow sets an attention list (#200 part 2). This needs a schema change and plugin skill changes.

Recommended: a): it uses data that is already on the card and it gives #200 part 2 no work to do.

3. Which view must show the grouped list?

The worktree card and the detail page use the same flat list (WorktreeCardRenderer.scala#L934-L949). The effort map puts this work after the sidebar of #350 (open). The #350 sidebar also lists "artifacts organized by type/phase".

  • a) Change the list that the card and the detail page use now. It ships now. Later, #350 uses the same grouping.
  • b) Wait for #350 and group only in its sidebar. This blocks this issue on #350.
  • c) The detail page only. The card keeps a short list of the current phase.

Recommended: a): one grouping function serves all views, and nothing waits.

Answer in a comment on this issue, per number, for example "1: a", or in your own words; intake reads it on its next iteration.

Intake: needs-input Workflow: - Reason: the goal is not specified — the deduplication part is done (IW-715, 771e37ba), but the issue does not choose how to group, what "relevant" means, or which view changes Analysis: - (no branch, no worktree) ### 1. What must group the artifacts, and where does the group of each artifact come from? Each artifact on the card has only a label and a path ([ReviewState.scala#L15-L18](https://code.iterative.works/iterative-works/iw-cli/src/branch/main/core/model/ReviewState.scala#L15-L18)). The schema permits an optional `category` field ([review-state.schema.json](https://code.iterative.works/iterative-works/iw-cli/src/branch/main/schemas/review-state.schema.json)), but the dashboard does not read it. The issue says: > Organize artifacts by type (analysis, phase context, review packet, release notes, diagrams) and/or by phase number - **a) Group by phase, then by type in each phase. Get both from the file name** (`phase-02-context.md`, `review-packet-phase-01.md`). This needs no schema change and no workflow change. A file name that does not match a rule goes into an "Other" group. - **b) The same groups, but each workflow writes the type into `category`.** The groups are exact. This changes the plugin skills and old cards show no groups. - **c) Group by type only.** **Recommended: a)**: it works on the cards that exist now, and it changes the least. ### 2. What does "most relevant first" mean? The dashboard shows artifacts in the order of the array. A replaced artifact keeps its position, so the array order is not the order of recency. The card records the current `phase`. Issue #200 (open) also proposes a separate `attention_artifacts` list that the workflow sets. - **a) The current phase first, then the earlier phases newest first, then the documents that have no phase.** This uses the `phase` field that the card already has. - **b) Sort by file modification time.** This needs a file-system read for each artifact on each render. - **c) The workflow sets an attention list (#200 part 2).** This needs a schema change and plugin skill changes. **Recommended: a)**: it uses data that is already on the card and it gives #200 part 2 no work to do. ### 3. Which view must show the grouped list? The worktree card and the detail page use the same flat list ([WorktreeCardRenderer.scala#L934-L949](https://code.iterative.works/iterative-works/iw-cli/src/branch/main/dashboard/jvm/src/presentation/views/WorktreeCardRenderer.scala#L934-L949)). The effort map puts this work after the sidebar of #350 (open). The #350 sidebar also lists "artifacts organized by type/phase". - **a) Change the list that the card and the detail page use now.** It ships now. Later, #350 uses the same grouping. - **b) Wait for #350 and group only in its sidebar.** This blocks this issue on #350. - **c) The detail page only. The card keeps a short list of the current phase.** **Recommended: a)**: one grouping function serves all views, and nothing waits. Answer in a comment on this issue, per number, for example "1: a", or in your own words; intake reads it on its next iteration.
Sign in to join this conversation.
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
iterative-works/iw-cli#351
No description provided.