Skip to content

E01 · F08 — Node editing ​

Benefit hypothesis: the designer reshapes any contour vertex by vertex.

Split from F03 (Product Owner, 2026-10-11).

Refined with the Product Owner on 2026-10-11 (started with /run), paused after SP-005 while F09 was done, resumed once Q27 was settled. The decisions after F09 below supersede the earlier ones where they differ (ADR-0032, ADR-0033).

Decided in refinement (Product Owner, 2026-10-11) ​

  • A regular polygon becomes a free shape by a dedicated button: it loses its number of corners and its anchor. Converting does not move it. Its vertices keep their exact, fractional coordinates and its radii.
  • A rectangle needs no conversion: its points are moved directly, as it loses nothing; it then becomes a free shape of 4 points with its radii, and putting the point back gives the same drawing.
  • A point moved lands on integers: only the points moved; the others keep their coordinates.
  • Width and height of a free shape are its bounding box: moving a point may change them.
  • Moving a point: by typing its x and y in the list of points. Dragging it on the drawing belongs to the editor applications (E02).
  • Adding a point: a button Add a point in the middle, active when two neighbouring points are selected; the new point is exactly in the middle, fractions allowed, so that the edge does not change; it has no rounding.
  • Deleting points: a Delete button and the Delete key, on a free shape or a rectangle; a shape keeps at least 3 points, the deletion is refused below with a message. A regular polygon is converted first: deleting one of its points is refused with a message saying to convert it.
  • Several points selected move together (for the editor applications, with dragging).
  • Not in F08, written for later: dragging points, stretching a shape by its width and height from a fixed point chosen in the 3 × 3 grid (as Inkscape), the warning shown when converting with a do not show again box (E02, editor applications); cutting, joining or deleting edges and adding connections between points (E03).

Decided after the spike (Product Owner, 2026-10-11) ​

  • Adding a point may change the drawing: it splits the edge, so a big rounding of a neighbouring corner may shrink. Accepted; the straight contour does not change.
  • Negative x and y are allowed: a position may be negative, a size may not.
  • Each point keeps its number, wherever it moves; the top-left, clockwise start of Q11 holds at creation only.
  • The rectangle is a free shape; the rectangle tool only creates it. Width and height of any free shape stay editable and stretch it, without loss. Done first, in F09.

Decided after F09 (Product Owner, 2026-10-11, Q27) ​

  • Fractions until edited: fractions are accepted until the user types a point, which then lands on integers; a converted polygon keeps its exact points and size (a hexagon in 100 × 100 is 100 × 86.60254) and does not move.
  • The x and y typed are those of the SVG, not of the shape's inner box; once a point is typed, the free shape keeps its points as drawn and its box becomes the one around them, so stretching stays without loss.
  • A point keeps its radius with it: the free shape stores corners (a point and its radius), not two lists (VAL-006).
  • A regular polygon is numbered from its base (the Product Owner's idea, left to the agent): point 1 is the right end of the flat base, point 2 its left end, then clockwise; the base corners keep their numbers, and their radii (F03.AC3), when the number of corners changes.

Settled at the validation (Q28) ​

  • Deleting a point of a free shape joins its two neighbours with a straight edge, so that the shape stays closed (a symbol's shape is a closed contour, shapes.md §1). Confirmed by the Product Owner at the validation (Q28).

Acceptance criteria ​

  1. A regular polygon is turned into a free shape by a button: the same points, exact, the same radii, the same drawing, its size the box around its points; it no longer has a number of corners nor an anchor.
  2. A point of a free shape (the rectangle included) is moved by typing its x and y, integers, in the coordinates of the SVG; the shape then keeps its points as drawn, and its width and height are the box around them.
  3. With two neighbouring points selected, a button adds a point exactly in the middle of their edge, without rounding, the edge unchanged.
  4. Selected points of a rectangle or a free shape are deleted by a button or the Delete key, their neighbours joined; at least 3 points remain, otherwise the deletion is refused with a message; on a regular polygon it is refused with a message to convert it first.
  5. A free shape stores corners, each a point and its radius; a regular polygon is numbered from the right end of its base, clockwise.

Stories ​

In delivery order.

IDTypeTitleStatus
SP-005SpikeResearch for F08done
EN-013EnablerA regular polygon numbered from its basedone
EN-011EnablerA free shape of corners, fractions until editeddone
US-014User storyConvert a polygon, move a point by its x, ydone
CHK-005CheckpointCheckpoint in the middle of F08done
US-015User storyAdd a point in the middle of an edgedone
US-016User storyDelete pointsdone
AUD-005AuditAudit F08: node editingdone
VAL-005ValidationValidate F08 on the reference casesdone

Feature plan ​

Acceptance criterionRealized byVerified by
1 — polygon converted by a button, unmovedEN-011, US-014[F08.AC1] tests, card, VAL-005
2 — a point moved by its x, y, on integersEN-011, US-014[F08.AC2] tests, card, VAL-005
3 — a point added in the middle of an edgeUS-015[F08.AC3] tests, card, VAL-005
4 — points deleted, 3 at leastEN-011, US-016[F08.AC4] tests, card, VAL-005
5 — corners stored, polygon numbered from its baseEN-011, EN-013[F08.AC5] tests, VAL-005