Repository navigation
chore(release): F11, a code base ready for curves - #163
Closed
AlexandreGallais wants to merge 57 commits into
Closed
AlexandreGallais wants to merge 57 commits into
AlexandreGallais wants to merge 57 commits into
Conversation
The report keeps the essentials on one row; each one is saved in the Git directory, and the Turns section of npm run metrics lists them all for the retrospective. Refs: RET-001.T3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The theme waits for the page font and draws the diagrams one at a time, so that Mermaid measures the labels with the font they are shown in; wrapped labels and a wider padding. A test keeps each label line at 32 characters or fewer, cut with <br/>. Refs: RET-001.T3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs: RET-001 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…inal Time and tokens run from the Product Owner's prompt after the agent last ended its turn, the same figures as the session report; a compaction or a message sent mid-turn stays in the turn. A call interrupted before the turn is no longer shown as running. Refs: RET-001.T3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What helped and hurt the Product Owner recorded; the site theme draws diagrams in a queue, without disabling a lint rule. Closes: RET-001 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…inutes scripts/watch-task.ts follows a background task's output under Monitor and prints a line only on a stall, a resume, the end or the time limit; the agent runs long commands in the background instead of waiting. A call running over 5 minutes shows in red. Transcripts are kept 3650 days so that every retrospective reads its tokens; the metrics page lists where each record lives. Refs: RET-001 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…es a task end A background task's notification is not the Product Owner's prompt: the status line and the session report no longer start a new turn on it. The watchdog reads every new line, so it sees the end pattern even when the task's exit line follows, and ends when the task exits. Refs: RET-001 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ADR-0041: the metrics, the transcripts and the source library hold raw messages and local paths; `npm run records:save` copies them into a private repository beside this one, commits and pushes. Compared with a submodule (URL and moving commit in the public tree) and an ignored folder inside (every tool must skip it). Run at each session end and each retrospective. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The guard now also denies `git commit -n`, `HUSKY=0`, `core.hooksPath`, a `+branch` refspec and Git commands written with `git -C <path>`. The session-start hook counts a feature as started from its first story in progress, and removes the files of calls left running for a day. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The tag `archive/f10-round-shape` was deleted when the history restarted; note 0010 now points to `refs/pull/139/head` and to the bundle in the private records. The metrics limits name the records as the backup. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
F11: one path writer, `contourToPathData` removed from the public API; the folder limit comes from SP-010; VAL-010 shows figures before and after, without a guided test; curves stay out of F11. Refs: F11 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Product Owner started the run on F11. Refs: F11 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The turn's time is written to the second (12 min 05 s), so the line visibly refreshes each second. The tokens still grow by steps: Claude Code writes a request's usage only once its answer is complete; the metrics page says so. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ADR-0044 supersedes ADR-0041's place: the records repository moves from beside the project to records/ inside it, its own Git repository listed in .gitignore. ESLint, Prettier, secretlint and WebStorm skip it; the script's default folder follows. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ped at the stop Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nds its turn It said active and kept counting after the last answer: the end of the turn was read but not shown. The tally keeps when the turn ended; the line then shows your turn and the last turn's time, stopped. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs: SP-010.T1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tests stay beside their module; folders split by theme; shape types stay at the root of their layer so that subfolders never form a cycle. Refs: SP-010.T2 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ADR-0042, the Product Owner's choice at the end of SP-010: folders named by business theme, 15 modules a signal checked by a test with listed exceptions, shape types at the root of their layer, the playground split by panel. F11's criterion 4 and EN-022 follow it. Refs: SP-010.T3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs: SP-010.T3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The review found that `free-shape.ts` beside `free-shape/` cannot both be imported, and that `import-x/no-cycle` ignores type imports. The Product Owner chose to keep each shape's type in its folder. Counts, the colocation source and EN-022's tasks corrected. Refs: SP-010.T3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Closes: SP-010 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
alignmentFactor: the mirrored alignment takes the rest of the room. boxAspect: unchanged by a translation, grows by a vertical stretch. cornerSetbacks: the radius at every corner of any rectangle. edgeFactors: in [0, 1], the reduced setbacks fit their edge. hasLength: a segment of integer points is kept exactly when they differ. Refs: EN-020.T1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Properties for isSoundStretch, mirrorAcrossAxis, stretchedRightHalf, stretchedSideDirections, stretchScale and turningAngles. The fitness test now reads each function's own test file, so a property written for a caller no longer counts; its list of exceptions is gone. Refs: EN-020.T2 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The fitness test fails on an empty list and ignores commented-out properties; a reversed polygon is unsound; turning angles checked vertex by vertex and on a 3-4-5 triangle; hasLength meets equal ends; the right half closes and rises; the odd closure, λ = 1 and the growth with λ for the side directions; a round trip for stretchScale; tight factors, reversed setbacks, mirror and alignment bounds. Refs: EN-020.T2 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Closes: EN-020 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The helpers each test file kept for typing, clicking, reading and opening the page (11 copies of `text`, 10 of `type` in 3 variants) now live once in `playground/user-actions/`, and fail at once on an element the page lacks instead of skipping it. The radius-field tests set their mixed radii through Points mode, no longer through the page's attributes. Barrels allowed in playground subfolders; procedure verbs choose, click and type added. Refs: EN-021.T1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The rectangle of US-001 as points or corners (3 variants), expectPoints (6 copies, 4 variants), the shoelace area (2), a free shape from points and radii side by side (2), integer points (10) and triangles (2) for properties now live once in `tests/geometry-fixtures.ts`, outside the library's barrels. Every expected value is unchanged. Refs: EN-021.T2 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`contourToPathData` is removed: `contourPiecesToPathData` is the only writer of path data, its tests compare with written-out path data, and `SEPARATOR` and `CLOSE_PATH` are declared once. A rounded contour builds each corner's triple once (`cornerTriples`) and its turning angle once, shared by the clamp (`clampedRadii`) and the fillets: `filletArc` and `cornerSetbacks` take the angle, `turningAngles` takes the triples. Every drawing is unchanged. BREAKING CHANGE: `contourToPathData` is removed from the public API; `filletArc(corner, angle, radius)`, `cornerSetbacks(corners, angles)` and `turningAngles(triples)` take the turning angles or the triples. Refs: EN-021.T3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
After the auditor's and the verifier's reviews: the playground tests no longer keep a local helper that skips a missing element (`field`, `radiusField`, `pressDelete`, `addPoint`, raw `?.click()`); new actions `openServedPage`, `commitField`, `pressKey`, `readDisplay`, `readPressedState`, `selectChoice`, and `chooseOption` fails on a missing option. The last rectangles and integer points of the library's tests use the fixtures, which get their own test. New cases kill mutations that survived: the concave fillet of an L shape, the 3-4-5 triangle clamped to its incircle, arc radii in corner order. The test actions leave the playground's coverage; the conventions name `tests/` and `playground/user-actions/`; the JSDoc gap of the unused-imports rule goes to the improvement log. Refs: EN-021.T3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Closes: EN-021 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The barrels scope names the playground's subfolders since EN-021; a second session's worktree runs `npm ci`, never a link to the main `node_modules`, or no Git hook runs (seen at EN-020's push). Refs: CHK-010.T1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs: CHK-010.T1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Light evolvability check: sizes before EN-022, mutations found by hand, the property check, the playground panels importing both ways, the worktree hooks, the run's reviews. Figures checked by the auditor. Refs: CHK-010.T2 Closes: CHK-010 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ADR-0042: `src/model/` in one folder per shape, its type inside (rectangle, regular-polygon, free-shape) and per concern (radii, placement, selection); `src/geometry/` in rounded-corners, box and polygon, the shared types at its root; `src/math/` past 15 modules, its vector arithmetic in `vector/` with the `Vector` type. Files moved with `git mv`, imports rewritten to their canonical paths, barrels per folder. No behavior changed: the same 830 tests pass. Refs: EN-022.T1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`toolbar/`, `shape/`, `points/`, `position/`, `drawing/`, `guided-test/`, the steps of the guided test in `guided-steps/`, the page's own reading and writing in `page/`; the entry, the mounting and the update stay at the root. Value imports between panels go one way. Skills and the demo template name the steps' new paths. Refs: EN-022.T2 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`tests/folders.test.ts` fails on a folder of `src/` or `playground/` past 15 modules that `docs/conventions/files.md` does not list with its reason, and on a listed folder no longer past it (mutation-checked). The conventions page gives the layout of ADR-0042 and its one exception, the playground's user actions. Refs: EN-022.T3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
After the audit of EN-022: a listed folder's count must be its true count; the conventions name what sits at the roots (`listenToInputs`, `boundingBox`, `ALIGNMENTS`) and their example tree uses current paths. Refs: EN-022.T3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The story records why the layout departs from the research note: math past 15 split into `vector/`, `polygon/`, `hasLength` in rounded corners, 8 playground folders so that panels import one way; `page/` is a question for the Product Owner. Closes: EN-022 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ared After the audit of F11: the folder and barrel checks fail on a scan without subfolders, and the barrel check reads the playground; the fixtures get tests for decimals, the negative half of integer points, the spread of triangles and a free shape's box; `loadPage` is shared by `openPage` and `openServedPage` and tested without its script tag; the playground tests read values and texts through the shared actions, and choose an anchor cell with `chooseRadio`; `clampedRadii` gets a case of unequal edge factors; fitness filters barrels by file name. Refs: AUD-010.T1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Conventions without non-existent paths and with the list of repository tests in one place; the playground tests' rules as a list; the worktree step without incident history; note 0012's retained choices as a table; F11, EN-022 and CHK-010 worded as they stand. Refs: AUD-010.T2 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Findings with their evidence and action, the sources the round shape's spike needs, and the light evolvability check. Refs: AUD-010.T3 Closes: AUD-010 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The modules left beside theme folders move into themes: math/angle, math/bisection, math/precision, the point beside the vector; geometry/box gets the alignment, anchor, bounding box and size, geometry/contour the arc, segment, contour piece, corner and cyclicItem. The two tests at the root of src/model go to selection and placement. In the playground, the wiring of the panels moves into mount/, and each test of the whole page sits in the folder of the panel it exercises. Refs: EN-023.T1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Folders now carry the names of docs/domain, the same in each layer: corner-radius (was rounded-corners and model/radii), regular-polygon (was polygon), and the box split into layout-box (the layout box of Q21: alignment, anchor, fit, stretch, size) and placement (the straight box and the turn, beside model/placement). Refs: EN-023.T2 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ADR-0043 supersedes ADR-0042: folders are named after the domains of docs/domain, a folder holds modules or domain folders, never both, and 15 modules stay a signal. The new rule local/folder-layout reports a file beside folders and an unlisted folder past the signal, in the editor; the folder test keeps its list and docs/conventions/files.md equal. Conventions, the story EN-023 and three rows of the feedback log follow. Refs: EN-023.T3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From the review of EN-023: isAnchor and isModelSize go to model/layout-box, boxAspect to geometry/regular-polygon, the angle's field to playground/position. local/folder-layout skips hidden and tool folders; its tests cover the boundary, the barrel, a nested listed path and the data of each message. The folder test checks that the rule is on for src and playground, and walks the tree for the files the lint does not read. EN-023 done. Refs: EN-023.T4 Closes: EN-023 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
[F11.AC1] no test file declares a shared helper again; [F11.AC2] one writer of path data, its separator and close command declared once; [F11.AC3] one pass over the corners of a rounded contour; the folder and property checks tagged [F11.AC4] and [F11.AC5]. Each new check was made to fail once. An improvement row: unicorn's prefer-iterator-concat writes code Node.js 24 cannot run. Refs: VAL-010.T1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The guide's page for F11: no drawing changed, so a table of figures (largest folder, property tests, repeated helpers, path writers, tests), the domains of each layer, and three checks the Product Owner can do in the editor. VAL-010 in progress, its test card written; the feature plan names the test of each criterion. Refs: VAL-010.T2 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs: VAL-010.T2 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Product Owner read the demo page, checked the folders in the editor and saw the lint refuse a file beside folders; the code is trusted to the audits. Remarks routed: a short text in the playground at every validation (run skill), a short page for a feature without drawing (improvement log), a draft F12 for points on a curve with handles in E14. The criteria of F11 are traced to tagged tests, the project-wide tests included. AGENTS.md's state follows. Refs: VAL-010.T3 Closes: VAL-010, F11 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
watch-task's --until is plain text now, the start of a line, not a pattern built from the command line (js/regex-injection); its output file is read in one step, no existence check before (file-system-race). library-html removes tags and comments until none is left (incomplete-multi-character-sanitization). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Decided with the Product Owner: F12 comes before F10; a point keeps its corner radius under its handles and gets it back when they are removed, with a clear switch between the two modes; new points start in the mirrored angle and length mode. How a handle is typed (x and y, angle and length, pasted Bézier data, others) goes to the spike, every method to be built and tried (Q32). SP-011 drafted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Deletes the local branches merged into develop or deleted on GitHub, prunes, and reports what is left; the run skill calls it as soon as the feature pull request is merged and after the release. A feedback row, and an open item to look for a cleaner run workflow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CodeQL still read the repeated replacement as an incomplete sanitization; tags and comments are now cut out by splitting on their marks, a mark never closed kept as text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release: F11, a code base ready for curves
Feature
local/folder-layout; a property test for every math and geometry function; shared test helpers; one path writer; one pass per corner. No drawing changes.contourToPathDataremoved from the public API (usecontourPiecesToPathData): the next version is 0.2.0.Tooling and process
records/, ignored by Git (ADR-0041, ADR-0044);npm run records:save.commit -n,HUSKY=0,core.hooksPath,+refspecpushes).🤖 Generated with Claude Code