References
Status: [verified] = source consulted online (date when known); [unverified] = known reference not yet consulted, to be confirmed before any @see. local/see-references rejects in lint any @see pointing to an [unverified] row. The text of each page read online is kept in the local source library (sources); this page keeps only what the project uses from it.
Shapes and corner radius
| ID | Reference | Used for | Status |
|---|---|---|---|
REF-FIGMA-CR | Figma Plugin API — cornerRadius: number | figma.mixed: "This property can return figma.mixed if different vertices have different values"; a rectangle can also set each of its four corners. https://developers.figma.com/docs/plugins/api/properties/nodes-cornerradius | radius per vertex; cap at half the edge; Mixed value (F03) | [verified] 2026-10-11 |
REF-WAI-APG-LISTBOX | W3C WAI, ARIA Authoring Practices Guide — Listbox pattern, multi-select keyboard: Space toggles the focused option; Shift + Space (optional) selects the contiguous options from the most recently selected one to the focused one; Control + A (optional) selects all. No mouse modifiers stated. https://www.w3.org/WAI/ARIA/apg/patterns/listbox/ | selection of several rows of the list of points: range and toggle (F03) | [verified] 2026-10-11 |
REF-APPLE-SELECT | Apple, macOS User Guide — "Select items on your Mac screen": "Press and hold the Command key, then click the items (they don't need to be next to each other)"; adjacent items: "Click the first item, then press the Shift key and click the last item. All items in between are included in the selection"; "Command-click the item" to deselect one. https://support.apple.com/en-euro/guide/mac-help/mchlp1378/12.0/mac | Shift + click range and Cmd + click toggle in a list (F03) | [verified] 2026-10-11 |
REF-INKSCAPE-NODE-TOOL | Inkscape Beginners' Guide 1.1 — "Editing Paths with the Node Tool": activate the Node tool (F2 or N), "Click on the path to select it"; "a node's position is marked by a square, circle or diamond handle on the line that represents the path". https://inkscape-manuals.readthedocs.io/en/1.1/editing-paths.html | an explicit points mode entered by a tool, handles on the vertices of the selected path (F03) | [verified] 2026-10-11 |
REF-INKSCAPE-OBJECT-TO-PATH | Inkscape Beginners' Guide (1.1 manual, page footer 1.0) — "Editing Nodes on a Geometrical Shape": a rectangle, ellipse, star or spiral drawn with a shape tool "is a shape, and not a path", changed only by its own handles; converted with "Path ‣ Object to path"; "A shape can always be converted to a path, but a path can never be converted back into an object!" https://inkscape-manuals.readthedocs.io/en/1.1/objects-to-paths.html | converting a polygon to a free shape by a deliberate action, no way back (F08) | [verified] 2026-10-11 |
REF-INKSCAPE-NODE-OPS | Inkscape Beginners' Guide 1.3 — "Node Tool Options": Insert new node: "If you need to add more nodes, or want to insert a node right in the middle between two other nodes, you can click on the path segment or select multiple nodes, then use this button"; Delete selected nodes, "Select the node(s) and then either use the Del key, or use this button". What the path becomes after a deletion is not stated. https://inkscape-manuals.readthedocs.io/en/1.3/node-operations.html | a button and the Delete key to add and delete points (F08) | [verified] 2026-10-11 |
REF-MATHWORLD-MIDPOINT | E. W. Weisstein, "Midpoint", MathWorld: "The point on a line segment dividing it into two segments of equal length"; for A = (x₁, y₁), B = (x₂, y₂), M = ((x₁ + x₂)/2, (y₁ + y₂)/2). https://mathworld.wolfram.com/Midpoint.html | the point added in the middle of an edge (F08) | [verified] 2026-10-11 |
REF-FIGMA-ALIGN | Figma Plugin API — counterAxisAlignItems: "MIN" | "MAX" | "CENTER" | "BASELINE", how an auto-layout frame aligns its children on the counter axis. https://developers.figma.com/docs/plugins/api/properties/nodes-counteraxisalignitems/ | min / center / max naming of an alignment | [verified] 2026-10-11 |
REF-WAI-APG-RADIO | W3C WAI, ARIA Authoring Practices Guide — Radio Group pattern, keyboard: Tab moves into the group (onto the checked button); Right and Down Arrow move to and check the next button, Left and Up the previous, wrapping. https://www.w3.org/WAI/ARIA/apg/patterns/radio/ | keyboard of the anchor grid (F07) | [verified] 2026-10-11 |
REF-FIGMA-AUTO-LAYOUT | Figma Help Center, "Guide to auto layout": an alignment box in the right panel; click it, then the arrow keys set the alignment. https://help.figma.com/hc/en-us/articles/360040451373-Guide-to-auto-layout | alignment control set by click or arrow keys (F07); the 3 × 3 grid is the Product Owner's choice | [verified] 2026-10-11 |
REF-CSS-BR | W3C, CSS Backgrounds and Borders Level 3, §4.5 Overlapping Curves: "Let f = min(Lᵢ/Sᵢ)", Sᵢ the sum of the two radii of a side, Lᵢ its length; "if f < 1, then all corner radii are reduced by multiplying them by f". https://www.w3.org/TR/css-backgrounds-3/ ; history: https://www.w3.org/Style/CSS/Tracker/issues/29 | proportional reduction of radii | [verified] 2026-10-08 |
REF-GG-FILLET | R. D. Miller, "Joining Two Lines with a Circular Arc Fillet", in Graphics Gems, A. Glassner (ed.), Academic Press, 1990 | fillet geometry, setback r/tan(θ/2) | [unverified] — not found online; replaced by DERIV-fillet-setback |
REF-INKSCAPE-POLYGON | Inkscape Beginners' Guide — "Stars and Polygons": a polygon mode, a "Corners" field for the number of corners (no range stated), rounding and randomizing by dragging handles with Shift or Alt. https://inkscape-manuals.readthedocs.io/en/latest/stars-and-polygons.html | regular polygon tool (functional reference; its Bézier rounding, star mode and randomizing are not kept) | [verified] 2026-10-09 |
REF-MATHWORLD-REGULAR-POLYGON | E. W. Weisstein, "Regular Polygon", MathWorld: side a = 2R sin(π/n) (2), inradius r = ½ a cot(π/n) (3), r = R cos(π/n) (4), R the circumradius. https://mathworld.wolfram.com/RegularPolygon.html | inradius of a regular polygon: radius of its maximal rounding | [verified] 2026-10-11 |
REF-MATHWORLD-ROOT-OF-UNITY | E. W. Weisstein, "Root of Unity", MathWorld: the nth roots of unity e^(2πik/n) form a regular polygon with n sides, each vertex on the unit circle. https://mathworld.wolfram.com/RootofUnity.html | vertices of a regular polygon, equally spaced by 2π/n | [verified] 2026-10-11 |
REF-MATHWORLD-EULER-FORMULA | E. W. Weisstein, "Euler Formula", MathWorld: e^(ix) = cos x + i sin x (1). https://mathworld.wolfram.com/EulerFormula.html | a root of unity in cosine and sine | [verified] 2026-10-11 |
REF-OPENSTAX-UNIT-CIRCLE | J. Abramson, Algebra and Trigonometry 2e, OpenStax, §7.3 "Unit Circle": for the point (x, y) of the unit circle at central angle t, cos t = x and sin t = y. https://openstax.org/books/algebra-and-trigonometry-2e/pages/7-3-unit-circle | vertex coordinates from their angle | [verified] 2026-10-12 |
REF-MATHWORLD-INCIRCLE | E. W. Weisstein, "Incircle", MathWorld: a circle tangent to each side of a polygon; it exists and is unique for regular polygons. https://mathworld.wolfram.com/Incircle.html | maximal rounding of a regular polygon = its incircle | [verified] 2026-10-11 |
REF-MATHWORLD-STADIUM | E. W. Weisstein, "Stadium", MathWorld: "A stadium, also called a discorectangle, obround, or sausage body, is a geometric figure consisting of a rectangle" with top and bottom lengths a "whose ends are capped off with semicircles of radius r". https://mathworld.wolfram.com/Stadium.html | the capsule of the round shape (F10) | [verified] 2026-10-12 |
REF-WIKI-EQUILATERAL-POLYGON | Wikipedia, "Equilateral polygon": "an equilateral polygon is a polygon which has all sides of the same length"; "An equilateral quadrilateral must be convex; this polygon is a rhombus"; "A convex equilateral pentagon can be described by two consecutive angles". https://en.wikipedia.org/wiki/Equilateral_polygon | F06, the stretched polygon (note 0011) | [verified] 2026-10-12 |
REF-ADOBE-LIVE-SHAPES | Adobe, "Live shapes" (Illustrator tutorial), live polygon: "You can scale polygons non-uniformly without losing their live characteristics"; "To return a shape to an equal-sided polygon, click Make Sides Equal". https://www.adobe.com/learn/illustrator/web/live-shapes | F06, the stretched polygon (note 0011) | [verified] 2026-10-12 |
REF-OOXML-ISSUE-465 | openooxml/betteroffice, issue #465 (secondary source): the preset hexagon and octagon of ECMA-376 measure their insets from ss, the shorter side; octagon "a = pin 0 adj 50000, x1 = ss·a/100000", the same inset on both axes. https://github.com/openooxml/betteroffice/issues/465 | F06, the stretched polygon (note 0011) | [verified] 2026-10-12 |
REF-ECMA-376 | Ecma International, ECMA-376 Office Open XML File Formats, Part 1, presetShapeDefinitions.xml (preset shapes hexagon, octagon) | F06, the stretched polygon (note 0011) | [unverified] |
REF-INKSCAPE-SHAPEBUILDER | Inkscape 1.3 release notes — Shape Builder Tool (on-canvas boolean tool). https://wiki.inkscape.org/wiki/Release_notes/1.3 | shape builder | [verified] |
REF-INKSCAPE-BOOL | Inkscape Beginners' Guide — Boolean Operations. https://inkscape-manuals.readthedocs.io/en/1.1/boolean-operations.html | semantics of boolean operations | [verified] |
Vectors and angles
| ID | Reference | Used for | Status |
|---|---|---|---|
REF-CARROLL-2013 | D. Carroll, E. Hankins, E. Köse, I. Sterling, "A Survey of the Differential Geometry of Discrete Curves", 2013, arXiv:1311.5862, §2: θ is "the measure of the angle between neighboring "tangent vectors""; "θ measures the turning of an N-gon at a vertex"; curvatures (2/ℓ) sin(θ/2), (2/ℓ) tan(θ/2), θ/ℓ. https://arxiv.org/abs/1311.5862 | F06, the stretched polygon (note 0011) | [verified] 2026-10-12 |
REF-CRANE-DISCRETE-CURVES | K. Crane, "Discrete Curves", lecture 11, CMU 15-458 Discrete Differential Geometry, Spring 2021, "Fundamental Theorem of Discrete Plane Curves": "Up to rigid motions, a regular discrete plane curve is uniquely determined by its edge lengths and turning angles"; recovered by summing turning angles, then unit tangents. https://brickisland.net/DDGSpring2021/wp-content/uploads/2020/03/DDG_11_DiscreteCurves.pdf | F06, the stretched polygon (note 0011) | [verified] 2026-10-12 |
REF-MATHWORLD-AFFINE | E. W. Weisstein, "Affine Transformation", MathWorld: "any transformation that preserves collinearity" "and ratios of distances"; "it does not necessarily preserve angles or lengths". https://mathworld.wolfram.com/AffineTransformation.html | F06, the stretched polygon (note 0011) | [verified] 2026-10-12 |
REF-MATHWORLD-VECTOR-ADDITION | E. W. Weisstein, "Vector Addition", MathWorld: component form A+B = (a₁+b₁, …, aₙ+bₙ). https://mathworld.wolfram.com/VectorAddition.html | vector difference in components; moving a point (add) | [verified] 2026-10-12 |
REF-MATHWORLD-VECTOR-DIFFERENCE | E. W. Weisstein, "Vector Difference", MathWorld: A − B = A + (−B). https://mathworld.wolfram.com/VectorDifference.html | edge vectors | [verified] 2026-10-08 |
REF-MATHWORLD-DOT | E. W. Weisstein, "Dot Product", MathWorld: A·B = AₓBₓ + A_yB_y = ‖A‖‖B‖cos θ. https://mathworld.wolfram.com/DotProduct.html | dot product | [verified] 2026-10-08 |
REF-MATHWORLD-PERP-DOT | E. W. Weisstein, "Perp Dot Product", MathWorld: a⊥·b = |a| |b| sin θ, a⊥ = a rotated 90° to the left. https://mathworld.wolfram.com/PerpDotProduct.html | 2D cross product, sine of a turn | [verified] 2026-10-08 |
REF-MATHWORLD-VECTOR-NORM | E. W. Weisstein, "Vector Norm", MathWorld: L2-norm ‖x‖ = √(x₁² + … + xₙ²). https://mathworld.wolfram.com/VectorNorm.html | edge length | [verified] 2026-10-08 |
REF-MATHWORLD-UNIT-VECTOR | E. W. Weisstein, "Unit Vector", MathWorld: vector of the same direction as a nonzero v, v̂ = v / ‖v‖. https://mathworld.wolfram.com/UnitVector.html | edge direction | [verified] 2026-10-08 |
REF-MATHWORLD-ROTATION-MATRIX | E. W. Weisstein, "Rotation Matrix", MathWorld: rotation of a vector by a counterclockwise angle θ, x′ = x cos θ − y sin θ, y′ = x sin θ + y cos θ. https://mathworld.wolfram.com/RotationMatrix.html | quarter turn (x, y) ↦ (−y, x) | [verified] 2026-10-08 |
REF-OPENSTAX-CALC3-VECTORS | G. Strang, E. Herman, Calculus Volume 3, OpenStax, §2.1 "Vectors in the Plane": scalar multiplication kv = ⟨kx₁, ky₁⟩, addition v + w = ⟨x₁ + x₂, y₁ + y₂⟩. https://openstax.org/books/calculus-volume-3/pages/2-1-vectors-in-the-plane | scaling a vector | [verified] 2026-10-09 |
REF-MDN-ATAN2 | MDN, Math.atan2(y, x): counter-clockwise angle in [−π, π] between the positive x-axis and (x, y). https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/atan2 | signed angle from sine and cosine | [verified] 2026-10-12 |
REF-MDN-ACOS | MDN, Math.acos(x): "The inverse cosine (angle in radians between 0 and π, inclusive) of x. If x is less than -1 or greater than 1, returns NaN". https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/acos | F06, the closing side of a stretched polygon | [verified] 2026-10-12 |
REF-MDN-REMAINDER | MDN, Remainder (%): "It always takes the sign of the dividend"; "To obtain a modulo in JavaScript, in place of n % d, use ((n % d) + d) % d". https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Remainder | an angle kept from 0 to 359 (F04) | [verified] 2026-10-11 |
Euclidean geometry
| ID | Reference | Used for | Status |
|---|---|---|---|
REF-EUCLID-I32 | Euclid, Elements, Book I, Proposition 32 (angles of a triangle sum to two right angles), ed. D. E. Joyce, Clark University. https://mathcs.clarku.edu/~djoyce/elements/bookI/propI32.html | angle at the fillet center | [verified] 2026-10-08 |
REF-EUCLID-III16 | Euclid, Elements, Book III, Proposition 16, porism (a line at right angles to a radius at its end touches the circle), ed. D. E. Joyce. https://mathcs.clarku.edu/~djoyce/elements/bookIII/propIII16.html | tangency of the fillet | [verified] 2026-10-08 |
REF-EUCLID-III18 | Euclid, Elements, Book III, Proposition 18 (the radius to the point of contact is perpendicular to the tangent), ed. D. E. Joyce. https://mathcs.clarku.edu/~djoyce/elements/bookIII/propIII18.html | right angle at the tangent point | [verified] 2026-10-11 |
REF-EUCLID-I8 | Euclid, Elements, Book I, Proposition 8 (two triangles with three sides equal have equal angles), ed. D. E. Joyce, Clark University. https://mathcs.clarku.edu/~djoyce/elements/bookI/propI8.html | the incircle's center is on each bisector | [verified] 2026-10-11 |
REF-EUCLID-I47 | Euclid, Elements, Book I, Proposition 47 (Pythagoras: the square on the hypotenuse equals the sum of the squares on the other sides), ed. D. E. Joyce. https://mathcs.clarku.edu/~djoyce/elements/bookI/propI47.html | equal legs of two right triangles sharing their hypotenuse | [verified] 2026-10-11 |
REF-EUCLID-IV4 | Euclid, Elements, Book IV, Proposition 4 (inscribed circle: center on the angle bisectors, equal perpendiculars to the sides), ed. D. E. Joyce. https://mathcs.clarku.edu/~djoyce/elements/bookIV/propIV4.html | fillet center on the bisector | [verified] 2026-10-08 |
REF-MATHWORLD-TANGENT | E. W. Weisstein, "Tangent", MathWorld: tan θ = opposite / adjacent in a right triangle. https://mathworld.wolfram.com/Tangent.html | setback from the right triangle | [verified] 2026-10-08 |
REF-WIKIBOOKS-HORIZONTAL-CURVES | Wikibooks, Fundamentals of Transportation — Horizontal Curves: T = R tan(Δ/2), Δ supplement of the interior angle between the tangents. https://en.wikibooks.org/wiki/Fundamentals_of_Transportation/Horizontal_Curves | cross-check of the setback formula (level 6, never alone) | [verified] 2026-10-08 |
Computational geometry
| ID | Reference | Used for | Status |
|---|---|---|---|
REF-MATHWORLD-BISECTION | E. W. Weisstein, "Bisection", MathWorld: "a root bracketing procedure for iteratively converging on a solution which is known to lie inside some interval"; |r_n − r| ≤ 2^(−n)(b − a) < ε, n > (ln(b − a) − ln ε) / ln 2. https://mathworld.wolfram.com/Bisection.html | F06, the stretched polygon (note 0011) | [verified] 2026-10-12 |
REF-VTKM-EDGE-RATIO | VTK-m, CellEdgeRatioMetric.h: "The edge ratio of a cell is defined as the length (magnitude) of the longest cell edge" "divided by the length of the shortest cell edge"; quadrilateral acceptable range [1, 1.3], full range [1, FLOAT_MAX]. https://docs-m.vtk.org/latest/CellEdgeRatioMetric_8h_source.html | F06, the stretched polygon (note 0011) | [verified] 2026-10-12 |
REF-VERDICT-2007 | P. P. Pébay, P. M. Knupp, D. Thompson, The Verdict Geometric Quality Library, Sandia National Laboratories, SAND2007-1751, 2006, DOI 10.2172/901967 | F06, the stretched polygon (note 0011) | [unverified] |
REF-MARTINEZ-2009 | F. Martínez, A. J. Rueda, F. R. Feito, "A new algorithm for computing Boolean operations on polygons", Computers & Geosciences 35(6):1177–1185, 2009. DOI 10.1016/j.cageo.2008.08.009 | booleans | [verified] |
REF-GREINER-HORMANN | G. Greiner, K. Hormann, "Efficient clipping of arbitrary polygons", ACM TOG 17(2):71–83, 1998 | booleans (alternative) | [unverified] |
REF-SHEWCHUK-1997 | J. R. Shewchuk, "Adaptive Precision Floating-Point Arithmetic and Fast Robust Geometric Predicates", Discrete & Computational Geometry 18(3):305–363, 1997 | robust orientation predicates | [unverified] |
REF-KETTNER-2008 | L. Kettner, K. Mehlhorn, S. Pion, S. Schirra, C. Yap, "Classroom examples of robustness problems in geometric computations", Computational Geometry 40(1):61–78, 2008 | numerical pitfalls of predicates | [unverified] |
REF-DEBERG | M. de Berg, O. Cheong, M. van Kreveld, M. Overmars, Computational Geometry: Algorithms and Applications, 3rd ed., Springer, 2008 | sweep line, segment intersections | [unverified] |
REF-OROURKE | J. O'Rourke, Computational Geometry in C, 2nd ed., Cambridge University Press, 1998 | primitives, orientation | [unverified] |
REF-SCHNEIDER-EBERLY | P. Schneider, D. Eberly, Geometric Tools for Computer Graphics, Morgan Kaufmann, 2003 | line/circle, circle/circle intersections | [unverified] |
REF-BOURKE-CIRCLES | P. Bourke, "Intersection of two circles" / "Intersection of a line and a sphere". http://paulbourke.net/geometry/circlesphere/ | intersection formulas | [unverified] |
REF-CHEN-MCMAINS-2005 | X. Chen, S. McMains, "Polygon offsetting by computing winding numbers", ASME IDETC/CIE 2005 | contour offset | [unverified] |
REF-CLIPPER2 | A. Johnson, Clipper2 (polygon booleans and offset), Boost license. https://github.com/AngusJohnson/Clipper2 | reference implementation, read only | [unverified] |
REF-PAPERJS | Paper.js — boolean operations on paths, MIT license. http://paperjs.org | reference implementation, read only | [unverified] |
REF-HOBBY-1999 | J. D. Hobby, "Practical segment intersection with finite precision output", Computational Geometry 13(4):199–214, 1999 | snap rounding (destructive booleans) | [unverified] |
SVG
| ID | Reference | Used for | Status |
|---|---|---|---|
REF-SVG2-PATHS | W3C, SVG 2 — Paths: §9.3.3 moveto, §9.3.4 closepath, §9.3.5 lineto, §9.3.8 elliptical arc A rx ry x-axis-rotation large-arc-flag sweep-flag x y (sweep-flag 1: "positive-angle" direction; large-arc-flag 1: larger sweep), §9.3.9 grammar (flag ::= "0" | "1", wsp). https://www.w3.org/TR/SVG2/paths.html | d syntax, M L A Z commands | [verified] 2026-10-11 |
REF-SVG2-SHAPES | W3C, SVG 2 — Basic Shapes, §10.2 rect, used values of rx and ry: step 3.1 "If the absolute rx (after the above steps) is greater than half of the used width", "then the used value of rx is half of the used width"; step 3.2 the same for ry and the height. https://www.w3.org/TR/SVG2/shapes.html | functional reference: a rounded rectangle whose radius is capped at half its side (F10) | [verified] 2026-10-12 |
REF-SVG2-PAINT | W3C, SVG 2 — Painting (stroke-linejoin, stroke-miterlimit, stroke-linecap, stroke-dasharray). https://www.w3.org/TR/SVG2/painting.html | joins, caps, dashes | [unverified] |
REF-SVG2-IMPLNOTE | W3C, SVG 2 — Implementation Notes: B.2.1 endpoint parameterization (fA = 1 for an arc of more than 180°, fS = 1 for increasing angles), B.2.5 out-of-range radii (zero radius → straight line, radii scaled up when too small). https://www.w3.org/TR/SVG2/implnote.html | generating the A command | [verified] 2026-10-08 |
REF-SVG2-COORDS | W3C, SVG 2 — Coordinate Systems, §8.4: initial user coordinate system with the origin at the top left, "the positive x-axis pointing towards the right, the positive y-axis pointing down"; §8.2 equivalent transform of a viewport (step 7 meet: "set the larger of scale-x and scale-y to the smaller"; steps 11–14: add (e-width − vb-width × scale-x) / 2 for xMid, the whole of it for xMax, the same in y); §8.7 preserveAspectRatio (xMin…: align the min-x of the viewBox with the smallest X of the viewport; xMax…: its min-x + width with the maximum X). §8.2 steps 5–6: "Initialize scale-x to e-width/vb-width", scale-y likewise; steps 7–8 apply only "If align is not 'none'" (one scale per axis otherwise). §8.10 bounding boxes: "the tightest fitting rectangle aligned with the axes of that element's user coordinate system"; the object bounding box "contains only an element's geometric shape" (no stroke); "A call to getBBox on the element will return the same rectangle as if the element were rendered". https://www.w3.org/TR/SVG2/coords.html | screen frame, direction of angles; uniform fit and nine alignments (F07); per-axis stretch of a free shape (F09); straight box of a turned shape (F04) | [verified] 2026-10-11 |
REF-CSS-TRANSFORMS | W3C, CSS Transforms Module Level 1: §3 transform rendering model — "Start with the identity matrix", "Translate by the computed X and Y of transform-origin", "Multiply by each of the transform functions in transform property from left to right", "Translate by the negated computed X and Y values of transform-origin"; §9.1 scale(sx, sy) "specifies a 2D scale operation by the [sx,sy] scaling vector". §9.1 rotate(): "specifies a 2D rotation by the angle specified in the parameter about the origin of the element"; "rotate(90deg) would cause elements to appear rotated one-quarter of a turn in the clockwise direction". https://www.w3.org/TR/css-transforms-1/ | stretching a free shape about the top-left of its box (F09); a positive angle turns clockwise on screen (F04) | [verified] 2026-10-11 |
REF-SVG11-TRANSFORM | W3C, SVG 1.1 (Second Edition) — Coordinate Systems, Transformations and Units: §7.4 "Rotation about the origin is equivalent to the matrix … or [cos(a) sin(a) -sin(a) cos(a) 0 0]"; §7.6 rotate(<rotate-angle> [<cx> <cy>]), "a rotation by <rotate-angle> degrees about a given point", equivalent to translate(<cx>, <cy>) rotate(<rotate-angle>) translate(-<cx>, -<cy>); §7.3 the positive y-axis pointing down. https://www.w3.org/TR/SVG11/coords.html | a point turned about the center of its box (F04) | [verified] 2026-10-11 |
REF-SVG-STROKES | W3C, SVG Strokes — Editor's Draft, stroke-alignment property (center / inner / outer). https://svgwg.org/specs/strokes/ | outline alignment | [verified] |
REF-SVGWG-957 | w3c/svgwg issue #957, alignment behavior in design tools (open contours). https://lists.w3.org/Archives/Public/public-svg-issues/2024Nov/0005.html | alignment ignored on open contours | [verified] |
DOM
| ID | Reference | Used for | Status |
|---|---|---|---|
REF-MDN-CREATEELEMENTNS | MDN, Document.createElementNS() — SVG namespace http://www.w3.org/2000/svg, required in an HTML document. https://developer.mozilla.org/en-US/docs/Web/API/Document/createElementNS | creating SVG elements | [verified] 2026-10-07 |
Pipes and routing
| ID | Reference | Used for | Status |
|---|---|---|---|
REF-WYBROW-2009 | M. Wybrow, K. Marriott, P. J. Stuckey, "Orthogonal connector routing", GD 2009, LNCS 5849, pp. 219–231, Springer 2010. DOI 10.1007/978-3-642-11805-0_22 | optimal orthogonal routing avoiding objects | [verified] |
REF-MARRIOTT-2014 | K. Marriott, P. J. Stuckey, M. Wybrow, "Seeing Around Corners: Fast Orthogonal Connector Routing", Diagrams 2014. DOI 10.1007/978-3-662-44043-8_4 | 1-bend visibility graph, fast routing | [verified] |
REF-LIBAVOID | libavoid (Adaptagrams). https://www.adaptagrams.org/documentation/libavoid.html | reference implementation (C++, read only) | [verified] |
Industrial diagram conventions
| ID | Reference | Used for | Status |
|---|---|---|---|
REF-PID-LECTURE | Course material "Chemical Process Diagrams" (BFD/PFD/P&ID conventions) | horizontal/vertical lines, crossings | [verified] — secondary source |
REF-EDRAW-PID | Edraw, "Layout of P&ID". https://edrawsoft.com/layout-of-pid.html | left → right flow, line weight hierarchy | [verified] — secondary source |
REF-TOGHRAEI | M. Toghraei, Piping and Instrumentation Diagram Development, Wiley / AIChE, 2019 (ch. 4: general rules, crossings) | P&ID conventions | [verified] — table of contents only |
REF-ISA-INTECH-2019 | ISA, InTech May/June 2019, "ISA Certified Control Systems Technician (CCST) program" question: "The diamond symbol was first defined for safety instrumented systems with the release of ANSI/ISA 5.1-2009". https://www.isa.org/intech-home/2019/may-june/departments/isa-certified-control-systems-technician-ccst-prog | ISA-5.1 has a "diamond" symbol (in a box, for a safety instrumented system); its geometry is not stated | [verified] 2026-10-09 — question page, not the standard |
REF-ISO-10628 | ISO 10628-2:2012, diagrams for the chemical and petrochemical industry — graphical symbols. https://www.iso.org/standard/51841.html | equipment symbols | [unverified] — paid; informative parts read by research 0004: no polygon found |
REF-ISA-5-1 | ANSI/ISA-5.1, Instrumentation Symbols and Identification: 2009 edition (Table 5.1.1, instrument and function symbols) now historical, replaced by ISA-5.1-2022 then ANSI/ISA-5.1-2024 (tables renumbered). https://webstore.ansi.org/Standards/ISA/ansiisa2009 | instrument and sensor symbols; polygons used (Q19) | [unverified] — paid; preview (cover, contents) read by research 0004 only |
REF-ISA-101 | ANSI/ISA-101.01, Human Machine Interfaces for Process Automation Systems | synoptic HMI design | [unverified] |
REF-IEC-60617 | IEC 60617, graphical symbols for diagrams, online database: S00052 junction box (hexagon), S00054 connection box (octagon), S00806 delta winding (equilateral triangle), S00812 six-phase polygon winding (hexagon standing on a vertex). https://library.iec.ch/grasymb/grasymb.nsf/(SysSymbol)/S00054 | polygons used in electrical symbols (Q19) | [verified] 2026-10-09 — read by research 0004 (symbol pages); not re-read by Claude Code (HTTP 403) |
Interaction
| ID | Reference | Used for | Status |
|---|---|---|---|
REF-INKSCAPE-SNAP | Inkscape 1.2 release notes — alignment & distribution snapping. https://wiki.inkscape.org/wiki/Release_notes/1.2 ; MR #3294 https://gitlab.com/inkscape/inkscape/-/merge_requests/3294 | alignment guides, equal-spacing snapping, priorities | [verified] |
REF-INKSCAPE-SELECTOR | Inkscape Beginners' Guide — "The Selector Tool": "Each selected object is framed with a dashed line (known as the bounding box)"; to rotate, "select it, then click it again", drag a corner arrow; "The cross in the middle of the box is the rotation center. It can be moved." https://inkscape-manuals.readthedocs.io/en/latest/selector-tool.html | straight box shown dashed, turning about the center (F04); movable center (E02) | [verified] 2026-10-11 |
REF-FIGMA-ROTATION | Figma Plugin API — rotation: "The rotation of the node in degrees. Returns values from -180 to 180"; "Identical to Math.atan2(-m10, m00) in the relativeTransform matrix"; "The rotation is with respect to the top-left of the object". https://developers.figma.com/docs/plugins/api/properties/nodes-rotation/ | functional reference only: the project keeps 0 to 359, clockwise, about the center (Product Owner, F04) | [verified] 2026-10-11 |
REF-GOF | E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns, Addison-Wesley, 1994 — Command pattern | undo / redo | [unverified] |
Tooling and coding practices
Sources of the tooling decisions (ADR-0009 to ADR-0016). Summary: research note 0001.
| ID | Reference | Used for | Status |
|---|---|---|---|
REF-FOWLER-FUNCTION-LENGTH | M. Fowler, "Function Length", bliki, 2016. https://martinfowler.com/bliki/FunctionLength.html | separating intention from implementation; very short functions | [verified] 2026-10-07 |
REF-BECK-SBPP | K. Beck, Smalltalk Best Practice Patterns, Prentice Hall, 1997 — "Composed Method" pattern (one level of abstraction per method). Publisher page: https://www.informit.com/store/smalltalk-best-practice-patterns-9780132852111 | long procedures = sequence of named steps | [verified] 2026-10-07 — book confirmed, content through secondary sources (J. Kerievsky, Refactoring to Patterns, ch. 7 "Compose Method") |
REF-NIST-500-235 | A. H. Watson, T. J. McCabe, Structured Testing: A Testing Methodology Using the Cyclomatic Complexity Metric, NIST Special Publication 500-235, 1996. https://www.nist.gov/node/665971 | cyclomatic complexity; threshold 10, tolerated up to 15 | [verified] 2026-10-07 |
REF-MCCABE-1976 | T. J. McCabe, "A Complexity Measure", IEEE Transactions on Software Engineering SE-2(4):308–320, 1976 | definition of cyclomatic complexity | [unverified] |
REF-BERNHARDT-FCIS | G. Bernhardt, "Functional Core, Imperative Shell", Destroy All Software screencast, 2012. https://www.destroyallsoftware.com/screencasts/catalog/functional-core-imperative-shell | pure core / effectful shell split | [verified] 2026-10-07 — page and title; content through a secondary description |
REF-TS-DECORATORS | TypeScript Handbook — Decorators (class declarations, methods, accessors, properties, parameters only). https://www.typescriptlang.org/docs/handbook/decorators.html | a free function cannot be decorated | [verified] 2026-10-07 |
REF-TC39-DECORATORS | TC39, proposal-decorators (stage 3: classes and class elements). https://github.com/tc39/proposal-decorators | same, ECMAScript standard side | [verified] 2026-10-07 |
REF-PRETTIER-LINTERS | Prettier — Integrating with Linters (eslint-config-prettier recommended; eslint-plugin-prettier-like plugins discouraged). https://prettier.io/docs/integrating-with-linters | ADR-0013 | [verified] 2026-10-07 |
REF-PRETTIER-CONFIG | Prettier — Configuration File, EditorConfig section (end_of_line, indent_style, indent_size/tab_width, max_line_length). https://prettier.io/docs/configuration | .editorconfig as single source | [verified] 2026-10-07 |
REF-ESLINT-TS-CONFIG | ESLint — Configuration Files, "TypeScript Configuration Files" (jiti ≥ 2.2.0, or experimental native flag). https://eslint.org/docs/latest/use/configure/configuration-files | eslint.config.ts | [verified] 2026-10-07 |
REF-TKDODO-BARRELS | TkDodo, "Please Stop Using Barrel Files". https://tkdodo.eu/blog/please-stop-using-barrel-files | costs of barrels (level-6 source: context only) | [verified] 2026-10-07 — title |
REF-ATLASSIAN-BARRELS | Atlassian Engineering, "Faster builds when removing barrel files". https://www.atlassian.com/blog/atlassian-engineering/faster-builds-when-removing-barrel-files | costs of barrels at scale (context only) | [verified] 2026-10-07 — title |
REF-ANGULAR-STYLE | Angular — Style guide ("Prefer focusing source files on a single concept"; "Match file names to the TypeScript identifier within"). https://angular.dev/style-guide | one concept per file, file named after it | [verified] 2026-10-08 |
REF-AIRBNB-STYLE | Airbnb JavaScript Style Guide — 7.7–7.9 (default parameters), 23.6–23.7 (file name matches the export). https://github.com/airbnb/javascript | file naming, default parameters | [verified] 2026-10-08 |
REF-GOOGLE-TS-STYLE | Google TypeScript Style Guide — named exports only; "Use default parameters sparingly"; initializers without side effects. https://google.github.io/styleguide/tsguide.html | exports, default parameters | [verified] 2026-10-08 |
REF-VITEPRESS | VitePress — Vite & Vue powered static site generator, used by the Vite and Vitest documentation. https://vitepress.dev/ | documentation site | [verified] 2026-10-08 |
REF-TYPEDOC-MARKDOWN | typedoc-plugin-markdown and typedoc-vitepress-theme — TypeDoc output as Markdown for VitePress. https://typedoc-plugin-markdown.org/plugins/vitepress | API reference pages | [verified] 2026-10-08 — through search results |
REF-CONVENTIONAL-COMMITS | Conventional Commits 1.0.0. https://www.conventionalcommits.org/en/v1.0.0/ | commit message format (commitlint) | [verified] 2026-10-08 |
Documentation and method
| ID | Reference | Used for | Status |
|---|---|---|---|
REF-DIATAXIS | D. Procida, Diátaxis — tutorials, how-to guides, reference, explanation; reference "describes, as succinctly as possible" and links to explanation. https://diataxis.fr/ , https://diataxis.fr/reference/ | page types, austere API reference | [verified] 2026-10-08 |
REF-GOOGLE-DEV-STYLE | Google developer documentation style guide — highlights (present tense, second person, sentence-case headings, code font). https://developers.google.com/style/highlights | writing style | [verified] 2026-10-08 |
REF-SCRUM-GUIDE | K. Schwaber, J. Sutherland, The Scrum Guide, 2020 — refinement, items ready when doable within one sprint, work items of one day or less, Definition of Done, Product Owner is one person; Sprint Review inspects the outcome with stakeholders, Retrospective plans ways to increase quality and effectiveness. https://scrumguides.org/scrum-guide.html | backlog rules, review and retrospective | [verified] 2026-10-08 |
REF-SAFE-STORY | Scaled Agile Framework — Story: user stories (value to the end user) and enabler stories (exploration, architecture, infrastructure, compliance). https://framework.scaledagile.com/story | story types | [verified] 2026-10-08 — public summary only |
REF-HUMANIZING-SPLITTING | Humanizing Work — Guide to Splitting User Stories (INVEST, vertical slices, 6 to 10 stories per sprint). https://www.humanizingwork.com/the-humanizing-work-guide-to-splitting-user-stories/ | story quality and splitting | [verified] 2026-10-08 |
Working with a coding agent
Sources of the agent working environment (ADR-0021). Summary: research note 0002.
| ID | Reference | Used for | Status |
|---|---|---|---|
REF-CC-BEST-PRACTICES | Anthropic, Claude Code documentation — Best practices: verification the agent can run, explore → plan → code, short instruction file, hooks for what must always happen, skills, independent reviewer subagent. https://code.claude.com/docs/en/best-practices | agent workflow, auditor | [verified] 2026-10-08 |
REF-CC-MEMORY | Anthropic, Claude Code documentation — How Claude remembers your project: CLAUDE.md under 200 lines, path-scoped rules in .claude/rules/, imports; AGENTS.md read by other tools, shared with Claude through an @AGENTS.md import at the top of CLAUDE.md, Claude-specific instructions below it. https://code.claude.com/docs/en/memory | CLAUDE.md size, rules | [verified] 2026-10-13 |
REF-CC-SKILLS | Anthropic, Claude Code documentation — Skills: .claude/skills/<name>/SKILL.md, description-based loading, /name invocation, disable-model-invocation. https://code.claude.com/docs/en/skills | procedures as skills | [verified] 2026-10-08 |
REF-CC-HOOKS | Anthropic, Claude Code documentation — Hooks reference: events (PreToolUse, SessionStart…), matchers, exit code 2 blocks and feeds stderr back, project .claude/settings.json; PostToolUse and PostToolUseFailure give duration_ms (tool execution time, permission prompts excluded); async: true runs a hook in the background. https://code.claude.com/docs/en/hooks | guard, session and metrics hooks | [verified] 2026-10-12 |
REF-CC-STATUSLINE | Anthropic, Claude Code documentation — Status line: a command receiving the session JSON on stdin (transcript_path, cost.total_duration_ms, context_window.*, rate_limits.*), refreshInterval in seconds, ANSI colors allowed, no API tokens used. https://code.claude.com/docs/en/statusline | status line (RET-001) | [verified] 2026-10-12 |
REF-CCSTATUSLINE | ccstatusline, a customizable status line for Claude Code: model name, git branch, token usage, weekly usage, session duration, multi-line layouts, Powerline style. https://github.com/sirmalloc/ccstatusline | status line (RET-001) | [verified] 2026-10-13 |
REF-NODE-TS | Node.js documentation — Modules: TypeScript: with type stripping, "file extensions are mandatory in import statements" (import './file.ts'); allowImportingTsExtensions lets tsc check them; Node.js does not read tsconfig.json. https://nodejs.org/api/typescript.html | hooks and scripts run by Node.js | [verified] 2026-10-12 |
REF-SQLITE-FTS5 | SQLite, "SQLite FTS5 Extension": a virtual table module for full-text search; bm25(), "the better the match, the numerically smaller the value"; snippet() and highlight(); the porter and unicode61 tokenizers. https://www.sqlite.org/fts5.html | local source library (ADR-0039) | [verified] 2026-10-12 |
REF-NODE-SQLITE | Node.js documentation — SQLite: the built-in node:sqlite module, DatabaseSync (renamed Database in later versions), prepare, all, get, run; no flag since v22.13. https://nodejs.org/api/sqlite.html | local source library (ADR-0039) | [verified] 2026-10-12 |
REF-MCP-TRANSPORTS | Model Context Protocol specification 2025-06-18 — Transports: stdio, the client launches the server, JSON-RPC messages delimited by newlines on stdin and stdout, logs on stderr. https://modelcontextprotocol.io/specification/2025-06-18/basic/transports | library MCP server (ADR-0039) | [verified] 2026-10-12 |
REF-MCP-TOOLS | Model Context Protocol specification 2025-06-18 — Tools: tools/list (name, description, inputSchema), tools/call returning content and isError. https://modelcontextprotocol.io/specification/2025-06-18/server/tools | library MCP server (ADR-0039) | [verified] 2026-10-12 |
REF-MCP-LIFECYCLE | Model Context Protocol specification 2025-06-18 — Lifecycle: initialize with protocolVersion, capabilities, serverInfo, then notifications/initialized. https://modelcontextprotocol.io/specification/2025-06-18/basic/lifecycle | library MCP server (ADR-0039) | [verified] 2026-10-12 |
REF-CC-MCP | Anthropic, Claude Code documentation — MCP: project servers in .mcp.json at the root, approved once; ${CLAUDE_PROJECT_DIR:-.} in their arguments. https://code.claude.com/docs/en/mcp | library MCP server (ADR-0039) | [verified] 2026-10-12 |
REF-CC-SUBAGENTS | Anthropic, Claude Code documentation — Subagents: .claude/agents/*.md, fresh context, tools allowlist, model, loads CLAUDE.md. https://code.claude.com/docs/en/sub-agents | auditor subagent | [verified] 2026-10-08 |
REF-ANTHROPIC-CONTEXT | Anthropic Engineering, Effective context engineering for AI agents — finite attention budget, structured notes outside the context, just-in-time retrieval, compaction, subagents. https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents | session-start state | [verified] 2026-10-08 |
REF-BOCKELER-SDD | B. Böckeler (Thoughtworks), Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl, martinfowler.com, 2025-10-15 — spec-first / spec-anchored / spec-as-source, critiques. https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html | positioning of the backlog | [verified] 2026-10-08 |
REF-AGENTS-MD | AGENTS.md — open format of instructions for coding agents, Agentic AI Foundation (Linux Foundation). https://agents.md/ | not adopted (one agent) | [verified] 2026-10-08 |
Verification
Sources of the verification tools (ADR-0022). Summary: research note 0002.
| ID | Reference | Used for | Status |
|---|---|---|---|
REF-QUICKCHECK | K. Claessen, J. Hughes, QuickCheck: a lightweight tool for random testing of Haskell programs, ICFP 2000 — properties tested on random input, suited to small composed pure functions. https://www.cs.tufts.edu/comp/150FP/archive/john-hughes/quick.pdf | property-based testing | [verified] 2026-10-08 — title, authors, abstract read |
REF-FASTCHECK-PBT | fast-check documentation — What is property-based testing: property, arbitraries, shrinking, seeded reproducibility. https://fast-check.dev/docs/introduction/what-is-property-based-testing/ | property-based testing tool | [verified] 2026-10-08 |
REF-GOOGLE-MUTATION | G. Petrović, M. Ivanković, State of Mutation Testing at Google, ICSE-SEIP 2018 — mutants on covered, non-arid lines, surfaced in code review. https://research.google/pubs/state-of-mutation-testing-at-google/ | mutation testing practice | [verified] 2026-10-08 — abstract page |
REF-STRYKER-6210 | stryker-js issue 6210 — Vitest 5: the runner's per-test name filter matches nothing, every covered mutant survives (open). https://github.com/stryker-mutator/stryker-js/issues/6210 | mutation tool deferred | [verified] 2026-10-08 — open |
REF-LYCHEE-ACTION | lycheeverse/lychee-action — link checker GitHub Action: fail, jobSummary, .lycheeignore, scheduled runs. https://github.com/lycheeverse/lychee-action | weekly link check | [verified] 2026-10-08 |
Process and cadences
Sources of the inspection cadence (ADR-0023).
| ID | Reference | Used for | Status |
|---|---|---|---|
REF-KANBAN-GUIDE | S. and A. Bartel (Flow.Hamburg) with Kanban University, The Official Guide to The Kanban Method — feedback loops through regular meetings called cadences; "it is the purpose that matters". https://kanban.university/kanban-guide/ | cadences without iterations | [verified] 2026-10-08 — cadence names in figures not read |
REF-FITNESS-FUNCTIONS | P. Paul, R. Wang (Thoughtworks), Fitness function-driven development, 2019-01-11 — tests that measure how close the architecture is to its aims. https://www.thoughtworks.com/en-us/insights/articles/fitness-function-driven-development | evolvability review | [verified] 2026-10-08 |
REF-GH-PROJECTS | GitHub Docs — About Projects: table, board and roadmap views, custom fields, automation, two-way sync with issues and pull requests. https://docs.github.com/en/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects | backlog tool, not adopted | [verified] 2026-10-08 |
Writing and presentation
Sources of the writing rules and of the repository presentation.
| ID | Reference | Used for | Status |
|---|---|---|---|
REF-MS-STYLE | Microsoft Writing Style Guide — Top 10 tips for style and voice: fewer words, get to the point, sentence-style capitalization, no end punctuation in headings, serial comma, start with a verb. https://learn.microsoft.com/en-us/style-guide/top-10-tips-style-voice | voice rules | [verified] 2026-10-08 |
REF-WTD-STYLE | Write the Docs — Style guides: a single reference of decisions, consistency lowers the reader's cognitive load; public guides listed. https://www.writethedocs.org/guide/writing/style-guides/ | role of the writing page | [verified] 2026-10-08 |
REF-NNG-SCANNING | J. Nielsen, "How Users Read on the Web", Nielsen Norman Group: "79 percent of our test users always scanned any new page"; highlighted keywords, meaningful subheadings, bulleted lists, one idea per paragraph, inverted pyramid, half the word count; concise, scannable and objective text gave "124% better usability". https://www.nngroup.com/articles/how-users-read-on-the-web/ | writing rules | [verified] 2026-10-12 |
REF-GOOGLE-LISTS | Google developer documentation style guide — Lists: numbered lists for sequences, bulleted lists for sets without order, description lists for terms; introduce a list with a complete sentence; "a single item isn't really a list"; tables for structured data with several properties. https://developers.google.com/style/lists | writing rules | [verified] 2026-10-12 |
REF-GOOGLE-IMAGES | Google developer documentation style guide — Figures and other images: images only for what words express badly, SVG when possible, alt text under 155 characters without "Image of", minimal text inside figures. https://developers.google.com/style/images | writing rules | [verified] 2026-10-12 |
REF-GITLAB-TOPICS | GitLab documentation — Topic types: concept, task, reference, troubleshooting (CTRT); titles under 70 characters, never "Overview" or "Introduction". https://docs.gitlab.com/development/documentation/topic_types/ | writing rules | [verified] 2026-10-12 |
REF-VITEPRESS-MARKDOWN | VitePress — Markdown extensions: custom containers (::: tip), GitHub-flavored alerts (> [!NOTE], [!TIP], [!IMPORTANT], [!WARNING], [!CAUTION]) rendered as callouts. https://vitepress.dev/guide/markdown | writing rules | [verified] 2026-10-12 |
REF-MERMAID | Mermaid — "a JavaScript based diagramming and charting tool that renders Markdown-inspired text definitions"; its API reads the definitions and renders them into SVG. https://mermaid.js.org/intro/ | diagrams of the docs | [verified] 2026-10-13 |
REF-GH-DIAGRAMS | GitHub Docs — Creating diagrams: "To create a Mermaid diagram, add Mermaid syntax inside a fenced code block with the mermaid language identifier". https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-diagrams | diagrams of the docs | [verified] 2026-10-13 |
REF-PLAIN-LANGUAGE | U.S. GSA, Digital.gov — Plain language guide series: principles, writing, design and testing for understanding. https://digital.gov/guides/plain-language | guide pages, guided tests | [verified] 2026-10-08 — series index |
REF-GH-README | GitHub Docs — About READMEs: what the project does, why it is useful, how to start, where to get help, who maintains it. https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-readmes | README | [verified] 2026-10-08 |
REF-GH-COMMUNITY | GitHub Docs — Creating a default community health file: code of conduct, contributing, security, support, issue templates. https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file | community files | [verified] 2026-10-08 |
REF-GH-PR-ACCESS | GitHub Docs — Disabling pull requests: Settings → General → Features → Pull requests, "Collaborators only" or disabled; collaborators of a personal repository are invited users. https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/disabling-pull-requests | external pull requests | [verified] 2026-10-08 |
REF-ISO29148-QUALITY | S. Lubos et al., Leveraging LLMs for the Quality Assurance of Software Requirements, 2024, Table I — the nine ISO/IEC/IEEE 29148 characteristics of an individual requirement (appropriate, complete, conforming, correct, feasible, necessary, singular, unambiguous, verifiable). https://arxiv.org/html/2408.10886 | acceptance criteria as requirements | [verified] 2026-10-08 — secondary source; the standard itself not read |
Git, GitHub and releases
Sources of the branch model, the checks and the release flow (ADR-0028, ADR-0038).
| ID | Reference | Used for | Status |
|---|---|---|---|
REF-GH-AUTO-MERGE | GitHub Docs — Automatically merging a pull request: merges once all required reviews and status checks pass; must be enabled for the repository. https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request | autonomous runs | [verified] 2026-10-08 |
REF-GH-RULESETS | GitHub Docs — Creating rulesets for a repository: target branches by fnmatch pattern (* does not cross /), required status checks, up-to-date branches. https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/creating-rulesets-for-a-repository | feature branch ruleset | [verified] 2026-10-08 |
REF-GH-PROTECTED-BRANCHES | GitHub Docs — About protected branches: with "Require branches to be up to date before merging", the branch must be up to date with the base branch before merging. https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches | develop branch, one CI (ADR-0038) | [verified] 2026-10-12 |
REF-GH-MERGE-METHODS | GitHub Docs — About merge methods on GitHub: "rebase and merge" always updates the committer information and creates new commit SHAs. https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/about-merge-methods-on-github | merge commit from develop into main (ADR-0038) | [verified] 2026-10-12 |
REF-GH-REQUIRED-CHECKS | GitHub Docs — Troubleshooting required status checks: a job skipped by a conditional reports "Success"; a workflow skipped by branch or path filtering stays "Pending" and blocks merging; checks must pass on the latest commit. https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks | release pull request skips the CI (ADR-0038) | [verified] 2026-10-12 |
REF-GH-MERGE-QUEUE | GitHub Docs — Managing a merge queue: keeps a busy branch from being broken by incompatible changes, the same benefits as "Require branches to be up to date" without refreshing each branch. https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-a-merge-queue | not adopted (one writer, ADR-0038) | [verified] 2026-10-12 |
REF-GH-CODEQL-TRIGGERS | GitHub Docs — Customizing your advanced setup for code scanning: the default workflow scans every push to the default branch, pull requests (their merge commit) and weekly; pull request alerts come from comparing with the target branch's analysis. https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning | CodeQL triggers (ADR-0038) | [verified] 2026-10-12 |
REF-GH-CLI-MERGE | GitHub CLI source, pkg/cmd/pr/merge/merge.go: autoMerge: opts.AutoMergeEnable && !isImmediatelyMergeable(pr.MergeStateStatus) — with --auto, a pull request already mergeable is merged at once. https://github.com/cli/cli/blob/trunk/pkg/cmd/pr/merge/merge.go | story auto-merge without required checks (ADR-0038) | [verified] 2026-10-12 |
REF-GITFLOW | V. Driessen, "A successful Git branching model" (2010, note of reflection 2020): master always production-ready, each merge into it a release; develop the integration branch; feature branches from develop; --no-ff merges; for continuous delivery a simpler flow, git-flow kept for explicitly versioned software. https://nvie.com/posts/a-successful-git-branching-model/ | develop branch (ADR-0038) | [verified] 2026-10-12 |
REF-NCU-COOLDOWN | npm-check-updates 23, ncu --help: --cooldown <period> sets a minimum age for versions considered for upgrade (7d, 12h, 30m), reducing the risk of compromised packages. https://github.com/raineorshine/npm-check-updates#cooldown | dependency cooldown (ADR-0038) | [verified] 2026-10-12 |
REF-DEPENDABOT-OPTIONS | GitHub Docs — Dependabot options reference: cooldown (default-days, semver-major-days, semver-minor-days, semver-patch-days, include, exclude); target-branch for version updates, security updates keep the default branch. https://docs.github.com/en/code-security/dependabot/working-with-dependabot/dependabot-options-reference | Dependabot into develop (ADR-0038) | [verified] 2026-10-12 |