Add objective O6 and criterion SC8 to the Business Case: visible colours

Drawing the first painting from a photograph showed colours that pass the
white-shade rule (SC3) but are still faint on the white background. Add O6
(every dot clearly visible: drop palette colours whose contrast with white is
below 2.0) and SC8, plus the WCAG contrast standard, an In Scope item, a risk
row and the Problem Statement sentence. SC3 is unchanged and still holds.

The limit of 2.0 was chosen by S01 from the measured palette of the reference
image: 8 of its 30 colours fall below it and the next is at 2.56, so 22 remain.

Record the delta re-review as RC-007 (verdict Go, terms confirmed by S01).
This commit is contained in:
2026-10-08 00:45:19 +08:00
parent dde1b8429f
commit 701feb1e52
3 changed files with 82 additions and 4 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ document of a type. `Primary File` may contain a glob (e.g.
| SA | Stakeholder Analysis | docs/stakeholder-analysis.md | 002 | | SA | Stakeholder Analysis | docs/stakeholder-analysis.md | 002 |
| PP | Project Plan | docs/project-plan.md | 002 | | PP | Project Plan | docs/project-plan.md | 002 |
| MIL | Milestone / Gateway | docs/milestones/*.md | 003 | | MIL | Milestone / Gateway | docs/milestones/*.md | 003 |
| RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 007 | | RC | SQA Review Record | docs/sqa/reviews/rc-*.md | 008 |
## Languages ## Languages
+13 -3
View File
@@ -11,7 +11,8 @@
## Version History ## Version History
| Date | Status | Author | Reviewer | Change | Commit | | Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- | | --- | --- | --- | --- | --- | --- |
| 2026-10-07 | Accepted | Jens Tirsvad Nielsen | S01 | Initial version | [b823d1f] | | 2026-10-07 | Deprecated | Jens Tirsvad Nielsen | S01 | Initial version | [b823d1f] |
| 2026-10-08 | Accepted | Jens Tirsvad Nielsen | S01 | Added objective O6 and criterion SC8 (every dot clearly visible), the contrast standard, and a risk | pending |
--- ---
@@ -35,6 +36,9 @@ proceed.
- **Quality standards:** every quality criterion is tagged with an ISO/IEC - **Quality standards:** every quality criterion is tagged with an ISO/IEC
25010:2023 characteristic. The code is reviewed against `qc-programming-python` 25010:2023 characteristic. The code is reviewed against `qc-programming-python`
before the pull request. before the pull request.
- **Contrast:** the contrast ratio of the Web Content Accessibility Guidelines
(WCAG) 2.x, computed from relative luminance: 1.0 for a colour identical to
white and 21.0 for black.
- **Source requirements:** the course lecture "The Hirst Painting Project - **Source requirements:** the course lecture "The Hirst Painting Project
Part 2 - Drawing the Dots" (a written summary of the lecture is the only Part 2 - Drawing the Dots" (a written summary of the lecture is the only
source supplied; the reference image is not). source supplied; the reference image is not).
@@ -46,6 +50,8 @@ Without one, the loops, the `turtle` positioning logic and the colour handling
taught in the lecture stay theory. The lecture itself names the usual taught in the lecture stay theory. The lecture itself names the usual
failures: a visible trail between dots, a missing last dot, white shades in failures: a visible trail between dots, a missing last dot, white shades in
the palette that make dots invisible, and a slow, visibly drawing turtle. the palette that make dots invisible, and a slow, visibly drawing turtle.
Drawing the first painting from a photograph showed one more: faint colours
that pass the white-shade rule but still hardly show on the white background.
## Business Opportunity ## Business Opportunity
@@ -63,6 +69,7 @@ so the effort the framework adds can be judged against the size of the work.
| O3 | Colour every dot by a random choice from that palette. | | O3 | Colour every dot by a random choice from that palette. |
| O4 | Keep the finished painting on screen until the user clicks, and present it cleanly: turtle hidden, no trail between dots. | | O4 | Keep the finished painting on screen until the user clicks, and present it cleanly: turtle hidden, no trail between dots. |
| O5 | Deliver the work through the framework: plan and issues first, then code reviewed against `qc-programming-python` (`RC-*` verdict `Go`) before the pull request. | | O5 | Deliver the work through the framework: plan and issues first, then code reviewed against `qc-programming-python` (`RC-*` verdict `Go`) before the pull request. |
| O6 | Keep every dot clearly visible on the white background: drop palette colours whose contrast with white is below 2.0. |
## Scope ## Scope
@@ -70,6 +77,7 @@ so the effort the framework adds can be judged against the size of the work.
- One Python program using the standard `turtle` module, the `random` module and the `colorgram` library. - One Python program using the standard `turtle` module, the `random` module and the `colorgram` library.
- Extraction of the palette from one reference image, with white shades removed. - Extraction of the palette from one reference image, with white shades removed.
- Removal of faint colours from the palette: colours whose contrast with white is below 2.0.
- Drawing of the 10 by 10 dot grid: dot size, spacing, row change and heading handling. - Drawing of the 10 by 10 dot grid: dot size, spacing, row change and heading handling.
- Screen handling: `exitonclick`, hiding the turtle, pen up between dots, drawing speed. - Screen handling: `exitonclick`, hiding the turtle, pen up between dots, drawing speed.
- The framework documents the plan-first workflow requires for this work (Business Case, Stakeholder Analysis, Project Plan, milestones), and the review records for them and for the code. - The framework documents the plan-first workflow requires for this work (Business Case, Stakeholder Analysis, Project Plan, milestones), and the review records for them and for the code.
@@ -86,7 +94,7 @@ so the effort the framework adds can be judged against the size of the work.
### Tangible Benefits ### Tangible Benefits
- A working program that produces the painting described in O1 to O4. - A working program that produces the painting described in O1 to O4, with every dot clearly visible (O6).
- A reviewed codebase with a recorded review (`RC-*`) against the Python checklist. - A reviewed codebase with a recorded review (`RC-*`) against the Python checklist.
- A traceable record from objective to milestone to issue to code. - A traceable record from objective to milestone to issue to code.
@@ -112,6 +120,7 @@ framework that the repository is built on.
| SC5 | Clean result (O4) | Turtle hidden at the end; no line drawn between dots; window stays open until a click | Visual check of one full run | | SC5 | Clean result (O4) | Turtle hidden at the end; no line drawn between dots; window stays open until a click | Visual check of one full run |
| SC6 | Run time (O4) | The full painting is drawn in 30 seconds or less | Timed run on the developer machine (value confirmed by S01) | | SC6 | Run time (O4) | The full painting is drawn in 30 seconds or less | Timed run on the developer machine (value confirmed by S01) |
| SC7 | Review gate (O5) | `RC-*` for the code has verdict `Go`; the pull request closes every issue it completes | Review record and pull request description | | SC7 | Review gate (O5) | `RC-*` for the code has verdict `Go`; the pull request closes every issue it completes | Review record and pull request description |
| SC8 | Visible colours (O6) | 0 palette colours with a contrast ratio against white below 2.0; SC3 still holds for the final palette (at least 2 colours) | Print of the extracted palette with the contrast of every colour, checked against the limit (value chosen by S01) |
## Risks ## Risks
@@ -121,6 +130,7 @@ framework that the repository is built on.
| `colorgram` or the `turtle` graphical toolkit (Tk) cannot be installed or does not run on the developer machine | The program cannot be run or checked | Check both in the first task of the palette phase, before any other work depends on them | | `colorgram` or the `turtle` graphical toolkit (Tk) cannot be installed or does not run on the developer machine | The program cannot be run or checked | Check both in the first task of the palette phase, before any other work depends on them |
| White or near-white shades stay in the palette | Dots are invisible on the white background, so SC1 looks failed | SC3 sets an explicit threshold and is checked on the printed palette | | White or near-white shades stay in the palette | Dots are invisible on the white background, so SC1 looks failed | SC3 sets an explicit threshold and is checked on the printed palette |
| Off-by-one errors: last dot of a row or the last row missing, or a trail drawn | SC1 or SC5 fails | SC1 counts the dots and SC5 checks for a trail; both are verified in the code review | | Off-by-one errors: last dot of a row or the last row missing, or a trail drawn | SC1 or SC5 fails | SC1 counts the dots and SC5 checks for a trail; both are verified in the code review |
| The contrast cut-off removes too many colours | The painting looks dull | The limit of 2.0 sits in a gap in the palette of the reference image: 8 of its 30 colours fall below it, and the palest colour kept has a contrast of 2.56, so 22 remain. SC3 still requires at least 2, and S01 judges the picture in the timed run |
| Framework process outweighs the size of the work | Schedule slips and the exercise stops being a small one | Keep to two phases and plain tasks; no use cases or design artifacts (see Out of Scope) | | Framework process outweighs the size of the work | Schedule slips and the exercise stops being a small one | Keep to two phases and plain tasks; no use cases or design artifacts (see Out of Scope) |
| The only named reviewer is also the author | Reviews are not independent, as the review process requires | S01 accepted a documented self-review on 2026-10-07; each review record states it | | The only named reviewer is also the author | Reviews are not independent, as the review process requires | S01 accepted a documented self-review on 2026-10-07; each review record states it |
@@ -158,7 +168,7 @@ Roles, power and interest are in [SA-001]; they are not repeated here.
| Stakeholder ID (SA) | Interest in this project | | Stakeholder ID (SA) | Interest in this project |
| --- | --- | | --- | --- |
| S01 | Owner of all objectives (O1 to O5); accepts the work and answers the open questions above | | S01 | Owner of all objectives (O1 to O6); accepts the work and answers the open questions above |
## Recommendation ## Recommendation
@@ -0,0 +1,68 @@
# Review Record: Business Case BC-001, objective O6 (delta)
## Metadata
| Key | Value |
| --- | --- |
| ID | RC-007 |
| CrossReference | [BC-001], [RC-001], [SA-001], [QC-BC-001], [QC-LANG-001] |
## Version History
| Date | Status | Author | Reviewer | Change | Commit |
| --- | --- | --- | --- | --- | --- |
| 2026-10-08 | Accepted | Jens Tirsvad Nielsen | S01 | Initial version (draft prepared by the assistant for S01 to confirm)<br>Terms confirmed by S01, verdict `Go` | pending |
---
## Artifact Under Review
- Instance reviewed: [BC-001], the revision of 2026-10-08 (second row of its Version History)
- Checklist used: [QC-BC-001], together with [QC-LANG-001] because the Business Case is written in the PO language
- Scope: delta re-review of criteria 2, 3, 4, 5 and 6 of [QC-BC-001] and criteria 3, 4, 5, 9 and 10 of [QC-LANG-001]. Reason: the revision adds objective O6, success criterion SC8, a scope item, a risk row, the contrast standard (WCAG) and a sentence in the Problem Statement, and it changes the Stakeholders row from "O1 to O5" to "O1 to O6". Earlier record: [RC-001], which passed every criterion on the first version. The other criteria are untouched by the revision and keep their earlier result: [QC-BC-001] 1 (cost-benefit), 7 (assumptions and constraints) and 8 (recommendation), and [QC-LANG-001] 1, 2, 6, 7 and 8 (metadata, headings, no translated twin, no change of language)
- Language and domain: en / it (the artifact's Metadata rows)
- Language reviewer: none. S01 reads English and knows the IT domain. S01 is also the author; S01 accepted a documented self-review on 2026-10-07 (see [RC-001], Action Item 1)
**Status of this record:** final. The assistant read the revised Business
Case against the criteria above; S01 confirmed the open point on 2026-10-08
and the verdict is `Go`.
**Stakeholder Analysis:** [SA-001] is not revised. S01's concern "The result looks clean and the window stays open until a click" (Usability) already covers O6, and every concern still traces to an objective, so its own checklist result is unchanged.
**Evidence for SC8 and the risk row:** the palette of the reference image was measured on 2026-10-08 with the WCAG contrast ratio against white. The 30 colours range from 1.22 to 15.85; the eight palest lie between 1.22 and 1.96, the next colour is at 2.56, so a limit of 2.0 removes 8 and keeps 22. The limit was chosen by S01 on 2026-10-08.
## Checklist Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 2 | Risks are identified with documented impact and mitigation | Pass | The Risks table now has 7 rows; the new row (the contrast cut-off removes too many colours) has the impact "The painting looks dull" and a mitigation with figures from the measurement above |
| 3 | Success criteria are measurable, stating explicit targets rather than vague aspirations | Pass | SC8 states a target (0 palette colours with a contrast ratio against white below 2.0) and a measure (the printed palette with the contrast of every colour). It is consistent with SC3, which still holds for the final palette |
| 4 | Scope explicitly separates In Scope vs Out of Scope | Pass | The new In Scope item names the faint-colour removal and its limit; Out of Scope is unchanged and still distinct (no other parameters, no interface, no packaging) |
| 5 | Stakeholders are cross-referenced to Stakeholder Analysis IDs rather than re-described inline | Pass | The Stakeholders table still cites S01 only, now for "O1 to O6"; the new text refers to S01 by ID |
| 6 | Methodology and quality-standard foundation are stated explicitly (e.g. ISO/IEC 25010, Larman) | Pass | The Methodological and Standards Foundation gains a "Contrast" bullet naming the WCAG 2.x contrast ratio computed from relative luminance, with its two reference values (1.0 for white, 21.0 for black) |
## Language and Domain Results
| # | Criterion | Status | Evidence/Notes |
| --- | --- | --- | --- |
| 3 | The content (prose and table cells) is written in the stated language | Pass | The new prose and table cells are English |
| 4 | The register matches the one the registry gives for the artifact type | Pass | Registry gives IT Executive English for BC. The new objective, criterion and risk state decisions and targets; the technical definition (relative luminance) is confined to the standards bullet where a standard belongs |
| 5 | Domain terms are the PO terms of the domain's dictionary, with no synonyms | Pass | S01 confirmed on 2026-10-07 that no dictionary is needed. The new term *faint colour* is used in every new place (Problem Statement, In Scope, Risks) and is defined by SC8 as a contrast below 2.0; *white shade* keeps its meaning from SC3 |
| 9 | A reviewer competent in the domain, and in the language, has confirmed that the domain terms are used correctly | Pass | S01 confirmed on 2026-10-08 that the new terms *faint colour* and *contrast ratio* are used correctly (Action Item 1). S01 is also the author; the self-review was accepted on 2026-10-07 |
| 10 | Abbreviations are spelled out on first use, in the stated language | Pass | WCAG is spelled out at its first use ("Web Content Accessibility Guidelines (WCAG) 2.x"); O6 and SC8 are defined by their tables |
## Overall Verdict
Go — every criterion in the delta passes. S01 confirmed on 2026-10-08 that the new terms *faint colour* and *contrast ratio* are used correctly, so [QC-LANG-001] criterion 9 is closed and the action item is closed. The revision of [BC-001] can be `Accepted`, after which the new phase can be planned against O6 and SC8.
## Action Items
| # | Action | Owner | Due |
| --- | --- | --- | --- |
| 1 | Confirm that the new terms *faint colour* and *contrast ratio* are used correctly (QC-LANG-001 criterion 9). **Closed 2026-10-08:** S01 confirmed both terms | S01 | 2026-10-09 |
---
[BC-001]: ../../business-case.md
[RC-001]: ./rc-001-business-case.md
[SA-001]: ../../stakeholder-analysis.md
[QC-BC-001]: ../../../framework/qc/qc-business-case.md
[QC-LANG-001]: ../../../framework/qc/qc-language-domain.md