Skip to content

Julenmendieta/MILAB 6793 cleanUI - #19

Merged
julenmendieta merged 6 commits into
mainfrom
julenmendieta/MILAB-6793_cleanUI
Sep 3, 2026
Merged

Julenmendieta/MILAB 6793 cleanUI#19
julenmendieta merged 6 commits into
mainfrom
julenmendieta/MILAB-6793_cleanUI

Conversation

@julenmendieta

@julenmendieta julenmendieta commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR streamlines the feature-integration UI terminology and removes the duplicate sample-status column from the wide QC table while retaining the canonical rollup in each sample report.

  • Renames navigation, page headings, settings labels, and explanatory copy around sample QC, tag QC, cell counts, and clonotype binding.
  • Removes the QC summary's duplicated status column, column specification, and custom renderer.
  • Filters zero-valued read-recovery chart segments and updates tests for the revised QC table contract.
  • Important touched terms:
    • Sample QC — per-sample read and processing measurements; renamed from “Per-sample QC,” with the wide table now containing measurements but no duplicated rollup column.
    • Quality rollup — the worst judged status among a sample's measurements; retained in sampleQcReport for the Main grid and sample detail, but removed from the wide QC table.
    • Tag QC — reagent/tag-level quality measurements and distributions; replaces the “Run quality” navigation terminology, with “Per-tag QC” used as the page heading.
    • Cell counts — per-cell feature-barcode measurements; replaces “Per-cell results” in navigation and “Per-cell tag counts” in the page heading.
    • Clonotype binding — the clonotype-by-antigen verdict surface previously called “Explore readout”; the page heading now reads “Clonotype tag binding.”
    • Baseline source — the comparator used to determine binding; its declared-control and per-tag-distribution descriptions are simplified.
    • Agreement threshold — the minimum cell-vote agreement needed for a settled clonotype verdict; the UI label and minimum were changed to 51%, although execution still supports fractional values immediately above 50%.
    • Read recovery — the split between usable, off-panel, and pattern-unmatched reads; zero-valued chart segments are now omitted.

Confidence Score: 4/5

The PR appears safe to merge after addressing two non-blocking UI contract inconsistencies in the QC copy and agreement-threshold range.

The status-column removal is internally coordinated across generation, import, and rendering, but one message still promises the removed field, and the agreement control no longer exposes the model's complete valid range.

Files Needing Attention: ui/src/pages/QcSummaryPage.vue, ui/src/pages/MainPage.vue

Important Files Changed

Filename Overview
software/per-cell-metrics/src/qc_rows.py Removes the duplicated sample rollup from the wide QC CSV while preserving all sample measurement columns.
workflow/src/column-specs.lib.tengo Removes the corresponding sampleStatus import specification so the workflow contract matches the generated CSV.
ui/src/pages/QcSummaryPage.vue Removes the status renderer, but leaves empty-state copy incorrectly promising a rolled-up status column.
ui/src/pages/MainPage.vue Simplifies labels and tooltips, but narrows the agreement control beyond the range accepted by the model and workflow.
ui/src/results.ts Omits zero-valued read-recovery segments; no concrete rendering failure was established.
model/src/index.ts Updates baseline guidance and top-level navigation labels without changing the underlying output routes.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  Reads[Feature-barcode reads] --> SampleQC[Sample QC measurements]
  SampleQC --> WideTable[Sample QC table]
  SampleQC --> Report[Canonical sample report]
  Report --> Main[Main Quality tag]
  Report --> Detail[Sample Quality Checks]
  Counts[Per-cell tag counts] --> Cells[Cell counts]
  Counts --> Verdicts[Clonotype binding]
  Verdicts --> TagQC[Tag QC]
Loading

Fix all with Greploop Fix All in Claude Code

Prompt To Fix All With AI
### Issue 1
ui/src/pages/QcSummaryPage.vue:27-28
**QC copy promises removed status**

The empty state says this table will carry each sample's rolled-up status, but this change removes that field from both the generated summary and its import specification. Users are therefore promised a status column that never appears.

### Issue 2
ui/src/pages/MainPage.vue:1028-1033
**Agreement range excludes valid values**

The new 51% minimum excludes fractional thresholds between 50% and 51%, even though model validation accepts every value strictly above 50% and the workflow compares the exact fraction. This prevents the settings control from representing the full execution-supported range, including stored values such as 50.5%.

```suggestion
            :min-value="50.001"
            :max-value="100"
            :step="1"
            clearable
            placeholder="50"
            label="Min agreement (>50%)"
```

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Reviews (1): Last reviewed commit: "Label renaming and code cleaning" | Re-trigger Greptile

Greptile also left 1 inline comment on this PR.

Context used (5)

Comment thread ui/src/pages/MainPage.vue Outdated
Comment on lines +1028 to +1033
:min-value="51"
:max-value="100"
:step="1"
clearable
label="Min agreement (>50%)"
placeholder="50"
label="Min agreement (≥51%)"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Agreement range excludes valid values

The new 51% minimum excludes fractional thresholds between 50% and 51%, even though model validation accepts every value strictly above 50% and the workflow compares the exact fraction. This prevents the settings control from representing the full execution-supported range, including stored values such as 50.5%.

Suggested change
:min-value="51"
:max-value="100"
:step="1"
clearable
label="Min agreement (>50%)"
placeholder="50"
label="Min agreement (≥51%)"
:min-value="50.001"
:max-value="100"
:step="1"
clearable
placeholder="50"
label="Min agreement (>50%)"
Prompt To Fix With AI
This is a comment left during a code review.
Path: ui/src/pages/MainPage.vue
Line: 1028-1033

Comment:
**Agreement range excludes valid values**

The new 51% minimum excludes fractional thresholds between 50% and 51%, even though model validation accepts every value strictly above 50% and the workflow compares the exact fraction. This prevents the settings control from representing the full execution-supported range, including stored values such as 50.5%.

```suggestion
            :min-value="50.001"
            :max-value="100"
            :step="1"
            clearable
            placeholder="50"
            label="Min agreement (>50%)"
```

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Fix in Claude Code

@julenmendieta
julenmendieta added this pull request to the merge queue Sep 3, 2026
Merged via the queue into main with commit da11810 Sep 3, 2026
14 checks passed
@julenmendieta
julenmendieta deleted the julenmendieta/MILAB-6793_cleanUI branch September 3, 2026 15:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant