Add .gitea/workflows/ci.yml: tests, ruff check, ruff format --check and mypy on
every push and pull request, with Python 3.13 on ubuntu-latest.
Two things in the first draft would have failed:
- It installed the dev tools with `pip install -e ".[dev]"`, but the project
declares them as a dependency group, not an extra. pip only warns and exits 0,
so pytest, ruff and mypy were missing and the first step died with "No module
named pytest". It now runs `pip install -e . --group dev`.
- The 10 test cases that use Tk need a display, which a CI runner does not have.
The workflow now installs xvfb and python3-tk and runs the tests with
xvfb-run, so the display requirement accepted on RC-006 still holds. No test
code changes.
Checked locally: the YAML parses to the intended eight steps, the install line
gives all three tools in a clean environment, and the test, lint, format and
type commands pass as written. The Linux display steps have not run yet; they
need a runner.
Replace the bare title with a README that follows templates/README-template.md:
overview with the parts of the repository, requirements, setup, run, tests,
license (GNU Affero General Public License v3.0), links and an appendix of the
project documents.
The setup command (pip install -e . --group dev) was tested in a clean virtual
environment: it installs the pinned dependencies and the dev tools, and all 40
tests pass there. The README passes framework/scripts/check-readme.sh.
The framework is a private repository, so the README links to the framework/
submodule entry instead of its pages. AGENTS.md, the dictionary, the
traceability matrix and governance rows are left out because those documents
are not in the repository.
Add milestone MIL-003 Visible Colours (due 2026-10-10): a contrast measure and a
faint-colour filter in the palette extraction, with their tests, a real run
that rechecks SC1 to SC8, and the code review. Five Go criteria and six plain
technical tasks, no use cases.
Revise PP-001: the MIL-003 gateway in the schedule and the Gantt chart, the new
scope item, the dependency on MIL-001 and MIL-002, and a plan risk. Accepted by
S01 in chat.
Record the review of MIL-003 as RC-008 (verdict Go, terms and Tasks wording
confirmed by S01).
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).
Close Action Item 2 of RC-006: S01 accepted that 10 of the 33 test functions
(10 of 40 test cases) need a display for Tk, while the other 23 functions (30
cases) run anywhere. The code and the tests do not change.
Only the pale palette colours remain open on RC-006, and they do not block the
verdict.
Add a Gateway Decisions section to PP-001: S01 decided Go on both gateways on
2026-10-08, ahead of the planned 2026-10-09 and 2026-10-14, because every Go
criterion was already met. Each row names the criteria, the review record
(RC-005, RC-006) and the merged pull request (#14, #16).
Close the reference-image open issue, which has been resolved since S01
supplied the image on 2026-10-07. The two open decisions on RC-006 (the display
requirement of the tests, the pale palette colours) did not block either gate.
Review the code of MIL-002 against QC-PY-001: 12 of 13 criteria apply and all
pass, criterion 10 is N-A (no Design Class Diagram). Verdict Go, confirmed by
S01. That is the last Go criterion of MIL-002.
Two decisions stay open and do not block the verdict: the tests need a display
for Tk, and a few pale palette colours are faint on the white background.
Closes#13
Task: MIL-002#7
MIL-002 tasks 1 to 6.
- Add create_pen, which hides the turtle, lifts the pen and switches the screen
to 0 to 255 colours.
- Add dot_positions: 100 dot centres in 10 rows of 10, 50 apart, centred on the
origin so the painting fits the default window.
- Add draw_dots, which draws a size-20 dot at every position in a colour chosen
from the palette, and raises ValueError for an empty palette.
- Add main: draw with the palette of the reference image, then wait for a click
with exitonclick. Animation is off while drawing and the screen updates once,
which takes the drawing from 21.1 to 0.35 seconds (SC6 allows 30).
- Add 22 tests: pen setup, positions and spacing, dots on a recording fake pen
and on a real turtle, no trail, and the order of main's steps. All tests share
one hidden Tk window, because starting Tk per test fails now and then on
Windows.
Closes#7Closes#8Closes#9Closes#10Closes#11Closes#12
Task: MIL-002#1
Task: MIL-002#2
Task: MIL-002#3
Task: MIL-002#4
Task: MIL-002#5
Task: MIL-002#6
Remove AGENTS.md, .claude/skills and .agents/skills from the repository. They
are local tooling: bash framework/scripts/install-skills.sh recreates the skill
copies, and each clone keeps all three out of git through .git/info/exclude.
The files stay in the history of main; this commit only stops tracking them.
Replace `pending` in the Version History of BC-001, SA-001, PP-001, MIL-001,
MIL-002 and RC-001 to RC-005 with links to the commits that introduced the rows.
MIL-001 tasks 1 to 6.
- Pin the toolchain and tool configuration in pyproject.toml: Python 3.13,
colorgram.py 1.2.0, and ruff, mypy (strict) and pytest as dev tools.
- Add is_white_shade and remove_white_shades (threshold 240) with tests that
pin the boundary at 239 and 240.
- Add extract_palette, which reads the reference image with colorgram and drops
white shades, with tests on synthetic images and on the reference image.
- Add the reference image assets/20260524_132700.jpg and a note on it.
- Record the code review against QC-PY-001 as RC-005 (verdict Go).
Closes#1Closes#2Closes#3Closes#4Closes#5Closes#6
Task: MIL-001#1
Task: MIL-001#2
Task: MIL-001#3
Task: MIL-001#4
Task: MIL-001#5
Task: MIL-001#6
Add the Business Case (BC-001), Stakeholder Analysis (SA-001), Project Plan
(PP-001) and two milestones: MIL-001 Colour Palette and MIL-002 Spot Painting.
Record their reviews as RC-001 to RC-004 (all Go, self-review accepted by S01).
The PO language is English and the domain is IT. The milestones and their 13
tasks are synced as Gitea milestones 68 and 69 and issues #1 to #13.
Mount the framework as a submodule at framework/ (v0.4.0), add AGENTS.md and
the installed skill copies for Codex CLI (.agents/skills) and Claude Code
(.claude/skills).