Conversation
Adopt @keyobs/dx-flow for husky hooks, commitlint, and release scripts (branch protection on main, .env guard, tsc pre-commit, tests before push to develop). Biome is removed right after setup; oxlint stays the linter/formatter.
Add zod, three/@react-three/fiber/@react-three/drei, ml-pca for the Grid -> FeatureExtractor -> GeometryDescriptor -> PCA -> point cloud spike (ADR-0002). Wire vitest into vite.config.ts and add test/test:run scripts so dx-flow's pre-push hook has something to run.
Official FDJ export (~680 draws, 2020-02 to 2026-08), served from public/ per ADR-0001 (client-side-only, dataset committed to the repo). Feeds the ADR-0002 vertical spike and, later, /draws.
Grid enforces the V1 invariants (5 distinct numbers 1-50, 2 distinct
stars 1-12, normalized ascending order) via a zod schema. Draw extends
it with the historical-draw fields (id, date, source). Scaffolds
domain/{grid,draw}/ per the V1 architecture.
Reads the already-sorted boules_gagnantes_en_ordre_croissant / etoiles_gagnantes_en_ordre_croissant columns and routes them through parseGrid so every parsed Draw carries the same distinctness/range guarantees as a hand-entered Grid.
extractFeatures computes the V1 minimum feature set (sum/range/stats, decade buckets, entropy, parity, gaps, consecutive/same-units/>31 counts, star sum/diff/parity) from a Grid alone, with a stable key order (FEATURE_KEYS) for downstream vectorization. buildGeometryDescriptor reshapes that into the exact V1-spec GeometryDescriptor shape.
buildSpatialEmbeddings runs every draw's FeatureVector through ml-pca (centered + scaled, matching V3's StandardScaler default) and takes PC1/PC2/PC3 as x/y/z. density/outlierScore/nearestNeighbors are stubbed (0/0/[]) since clustering and density are DiscoveryModel (V3) work, explicitly deferred by ADR-0002 - only the SpatialEmbedding shape and position are real here.
App fetches the FDJ CSV, parses it, builds SpatialEmbeddings, and hands them to PointCloudScene (@react-three/fiber Canvas + OrbitControls, one point per draw at its PCA coordinates). Closes the ADR-0002 spike: Grid -> FeatureExtractor -> GeometryDescriptor -> PCA -> point cloud. Lives in src/spike/, separate from the real pages/geometry and features/eurospace that will replace it later.
Installed without its bundled browser download; driven against the system google-chrome-stable binary to visually confirm the spike's point cloud actually renders (WebGL context, no console/page errors). Pulls forward the Playwright dependency already planned in specs_v1.md.
react-router, @tanstack/react-query, recharts, d3 for the V1 pages; sass for CSS Modules; @testing-library/react + jest-dom + jsdom for component tests. Switch vitest to the jsdom environment (needed for Testing Library) and fix the two existing tests that resolved the real CSV path via import.meta.url, which jsdom no longer serves as a file:// URL - process.cwd()-relative resolution works under both environments.
total + always-exposed components: Jaccard on numbers/stars, decade bucket L1 distance, normalized sum diff, normalized mean gap diff, parity diff. distance(x,x)=0 and symmetry are covered by tests; buildGeometryDescriptor already did the buckets/gaps/parity work so this reuses it instead of recomputing.
…emporal/confidence) evaluateGrid(grid, history) computes: - structure: 1 - mean distance to the 20 nearest historical draws, with sum/amplitude percentile, decade-signature and parity match rate as factors - originality: penalizes human-pick patterns (consecutive numbers, same-units pairs, multiples of five, <=31-only numbers) - purely descriptive, never framed as changing draw probability - temporal: mean distance to draws inside each TemporalWindow (1/3/6/12/25/50/all), averaged with no window privileged - matches the spec's explicit warning that 6 has no special status - confidence: inverse coefficient of variation of the nearest-neighbor distances (tight neighbor cluster = stable diagnosis) Also adds findNearestNeighbors (generic k-NN over GeometryDescriptors, reusable by /geometry) and classifyReading for the structure x originality reading matrix. Scoring formulas are a reasonable, honest first pass - not spec'd exactly - flagged for adjustment.
createCsvDrawRepository implements getLatest/getAll/getByDate against a fetched CSV, parsed once and cached in memory. src/application/ drawRepository.ts wires the single app-wide instance pages will consume through TanStack Query.
…ariations Each variation stays tied to the original grid (per-number nearest valid replacement) rather than producing a fixed universal output: structurally-common swaps toward the most frequent historical number in the same decade bucket, balanced spreads one number per decade (+ one odd/one even star), anti-share swaps out <=31 and multiples-of- five numbers. None is framed as more likely to be drawn - every valid Grid keeps the same theoretical probability.
…routes AppLayout renders the nav (evaluation/draws/geometry) and an always-visible non-predictive disclaimer footer (data-testid for E2E). / redirects to /evaluation. The ADR-0002 spike moves from src/App.tsx to pages/spike/SpikePage.tsx, reachable at /spike so it stays a working regression check until V4's features/eurospace replaces it. Evaluation/draws/geometry pages are placeholders, filled in by the next commits.
Zod-validated 5-number + 2-star form (plain button + ChangeEvent handlers, no FormEvent), draw history via TanStack Query + drawRepository, then evaluateGrid + classifyReading render the four score cards (each showing its factors) and the reading-matrix label. generateVariations surfaces the three variations with an explicit non-predictive note. "Locate in EuroSpace" stays out entirely until V4. Smoke-tested end to end: fill form -> evaluate -> 4 cards + 3 variations render, no console errors.
Table via drawRepository.getAll(): date, numbers, stars, sum, amplitude, parity, decade-signature, and distance to the chronologically previous draw (computeGeometryDistance between consecutive GeometryDescriptors). Defaults to the 50 most recent draws with a toggle to the full 680-draw history. Smoke-tested: row counts, toggle, and the oldest draw correctly showing no previous distance, no console errors.
Recharts scatter for sum x amplitude and sum x standard deviation, a decade-signature histogram, a gap-map arrow chain for the most recent draw, and its 10 nearest historical neighbors by GeometryDistance. The "proximity graph" bullet from the spec is implemented as this neighbor list rather than a literal network graph - same underlying distance data, simpler for V1, flagged as a simplification. Visually verified: scatter clusters realistically around sum~130/amplitude~35, no console errors.
…hree V1 pages renderWithProviders + a shared real-CSV fetch fixture back EvaluationPage/DrawsPage/GeometryPage tests. Also fixes a real gap: vitest globals were off, so @testing-library/react's auto-cleanup never registered and DOM from one test leaked into the next within the same file - added an explicit cleanup() in testSetup's afterEach.
tsc --noEmit against the root tsconfig.json checked zero files: that config only has `references`, which tsc ignores outside --build mode. Every "typecheck" run this session silently passed without checking anything. Switched check to `tsc -b` (project-references build mode, which the sub-configs already mark noEmit so nothing gets emitted). Running it for real surfaced genuine errors: test files under src/ use node:fs/node:path/process, which tsconfig.app.json's `types` didn't include - added "node" alongside "vite/client". Full project now type-checks clean under the command that actually runs the checker.
The dx-flow pre-commit template ran tsc --noEmit against the root tsconfig.json, which also checks zero files (see previous commit) - every pre-commit "Type checking..." pass this session was a silent no-op. Switched to tsc -b to match the now-fixed check script.
@playwright/test drives the system Chrome (channel: 'chrome', no bundled browser download) against a webServer-managed dev instance. The spec fills the evaluation form, checks the 4 score cards + 3 variations + disclaimer render, navigates to /geometry via the nav, and checks the gap map + nearest neighbors render there too - the V1 acceptance criterion "saisie -> évaluation -> géométrie en E2E". Passes end to end; webServer shuts down cleanly after the run.
…arlo mulberry32 - deterministic, same seed always gives the same sequence. Backs Strategy proposal tie-breaking and the Monte Carlo baseline in the upcoming walk-forward backtester (V2 reproducibility requirement).
8 rule kinds cover every V2-spec category except "zone géométrique" (needs a real DiscoveryModel embedding, V3+): number-frequency (fréquences/rareté via signed weight), above-31, repeat-from-previous, recency, star-frequency are additive [0,1]-scored preferences; decade-spread, sum-range, parity-target are bounded greedy adjustments applied after the initial top-5/top-2 selection. Seeded via createSeededRandom for reproducibility. Always returns a valid Grid.
countMatches(a, b) for numbers/stars intersection size, and prizeRank(matchedNumbers, matchedStars) mapping to the 13 official tiers (null when nothing is won). Backs the walk-forward backtester's per-step metrics.
For each date T in the requested range, proposeGrid only ever sees sortedAscending.slice(0, index) - draws at or after T, including any beyond the range itself, can never influence T's proposal. Verified directly: running the same test range against the full 680-draw history vs a history truncated right after the range produces identical proposals, proving draws after the range have zero effect (the spec's "toute fuite future est une erreur bloquante"). Also reproducible by seed and reports a valid empty result for a range with no draws.
5 baselines (uniform-random, fixed-grid, frequent/rare-numbers, geometric-no-temporal) all reuse proposeGrid with a specific rule set - fixed-grid is the one exception, a constant Grid. Generalized runWalkForwardBacktest to take a plain (history) => Grid function instead of a Strategy, so baselines share the exact same walk-forward loop rather than a parallel implementation. runMonteCarloComparison runs N seeded uniform-random backtests and reports the tested strategy's percentile against that distribution - "no advantage detected" near the 50th percentile is an expected, valid outcome. Found a real perf bug while measuring: 500 Monte Carlo samples over a 200-step range took 24s, because scoreNumbers/scoreStars always did O(history) precomputation (frequency counts, recency gaps) even when no rule used it - the uniform-random baseline (rules: []) paid that cost on every single step for nothing. Guarded the precomputation behind which rule kinds are actually present: 24s -> 1.3s for the same run. (First attempt at the guard also skipped the cheap 'above-31' rule's own scoring loop by mistake - caught by proposeGrid.test.ts's above-31 test failing immediately, fixed by only guarding the precomputation, not the rule loop itself.)
…ing detection splitDateRanges chronologically slices sorted history into train (oldest)/validation/test (most recent) by ratio - chronological, not random, so test never precedes train, consistent with the walk-forward no-leakage principle. detectOverfitting flags a >0.75 mean-matched- numbers gap between train and validation/test; "test beats train" and "all three comparable" both correctly report no overfitting signal.
…eriment runExperiment wires the V2 pipeline into the spec's exact Experiment/ExperimentResult/EvaluatedGrid shapes: splitDateRanges for train/validation/test, walk-forward backtest on each, detectOverfitting across them, compareBaselines + runMonteCarloComparison on the test range, and one WindowComparison per requested TemporalWindow (windows span from latestDrawDate(draws), independent of the train/val/test split - "6 has no privileged status" applies here too). generatedGrids carry precomputed features/geometry per spec's note that V4 should project them without recomputing the backtest. datasetVersion/modelVersion are simple placeholder constants - no real versioning infra yet, flagged as a simplification.
Strategy builder (toggle the 8 rule kinds, weight/params inline), train/validation/test % split, temporal-window multi-select, seed and Monte Carlo sample count, run button -> runExperiment. Results show the overfitting warning (when triggered), test metrics, baseline comparison table, Monte Carlo percentile + histogram, per-window comparison, and the generated-grids table for date-level inspection. JSON export via a Blob download (no backend, per ADR-0001). Multiple experiments accumulate in a session-local comparison list. Smoke-tested end to end: toggled extra rules incl. sum-range/decade- spread, selected extra windows, ran two experiments, confirmed all tables/chart populate and the comparison list grows - zero console errors. The repeated proposed grids across nearby dates in the generated-grids table are expected: with 580+ historical draws already accumulated, one more draw barely shifts frequency rankings, so a frequency-driven strategy is naturally stable step to step - not a bug. Not implemented (flagged, not gold-plated): true backtest cancellation/AbortSignal and Web Workers - a full run finishes in roughly a second at this dataset size (see the perf fix in the baselines/Monte Carlo commit), so there's nothing to cancel or offload yet.
Renders without crashing, and once history loads and discoverStructure runs, families and the null-hypothesis comparison panel populate.
…per-variation scores
Addresses devdx/fix.md:
1. Number/star inputs now color live as the user types: green when the
value is within range (1-50 for numbers, 1-12 for stars - fix.md
said 1-10 for stars, kept 1-12 since that's the actual EuroMillions
rule already enforced everywhere else in the app; flagging in case
1-10 was actually intended), red when out of range. Hit a real CSS
cascade bug along the way: .starInput's own border-color was
winning over .inputInvalid/.inputValid under some conditions since
combined-class order isn't reliably reflected in Vite's dev-time
CSS injection - fixed with !important on the state-override classes
(verified against getComputedStyle, not just visually).
2. Each score card now has a plain-language description at the bottom
(what "Structure historique" etc. actually means), and factor keys
like "window_1"/"sumPercentile" are now shown as readable French
labels ("Sur 1 an", "Percentile de la somme") via a lookup table in
ScoreCard - domain code stays untouched, only the presentation layer
translates.
3. Each variation now shows an explanatory sentence (anti-partage's
sharing-reduction rationale, kept alongside the existing "doesn't
change your odds" disclaimer already above the list) and its own
4 scores (Structure/Originalité/Temporalité/Confiance), computed via
evaluateGrid on that variation's grid, displayed compactly with
color-coded dots matching each ScoreCard's accent.
Verified in a real browser: live coloring confirmed via
getComputedStyle (not just screenshot), all descriptions/labels render,
per-variation scores populate. All 114 unit/component tests and both
E2E specs still pass.
…rence A Grid needs 5 distinct numbers and 2 distinct stars; validityClass now checks the earlier entries in the same array (numbers or stars separately) and marks a repeated value invalid regardless of it being in range - only the first occurrence of a value can be green. Verified with getComputedStyle: typing 7 twice keeps the first green and turns the second red, same for stars.
… point, readable gap map
Addresses the new /geometry section of devdx/fix.md:
1. A "grille de référence" banner at the top of the page shows the
reference grid's numbers/stars as Bubbles, so it's always visible
while scrolling through the charts below.
2. A plain-language description under every chart/section title
(what "Somme x Écart-type" etc. actually shows).
3. Both scatter charts now overlay a second Scatter series containing
just the reference grid's own point, rendered as a bigger
outlined dot in a distinct accent color - clearly distinguishable
from the rest of the historical cloud.
4. "Carte des écarts" rebuilt: the old plain-text chain
("26 —3→ 29 —6→...") looked like it might already be showing a
grid and a variation together - it wasn't, it was just one grid's
own gaps, which is exactly the confusion that prompted this fix.
Now it shows two clearly labeled NumberChain rows (grid numbers as
round Bubbles linked by gap-labeled arrows): the reference grid
(highlighted variant) and one of its proposed variations (plain
variant), so the two shapes are visually comparable and distinct.
New reusable src/components/bubble/: Bubble (a single round
number/star display, visually matching /evaluation's input bubbles
but non-interactive) and NumberChain (Bubbles + gap arrows). Also
extracted VARIATION_LABELS/VARIATION_DESCRIPTIONS out of
EvaluationPage into application/variationLabels.ts so /geometry reuses
the same text instead of duplicating it.
Verified in a real browser (bubble counts, screenshots of the banner/
gap-map/full page) - zero console errors. All 116 unit/component
tests and both E2E specs still pass.
…elector The reference grid on /geometry was silently just the latest historical draw, disconnected from whatever the user typed on /evaluation, and none of the charts marked it with a visually distinct color. Persist the last evaluated grid to localStorage and let /geometry pick between it, the latest draw, or a free-form grid typed directly on the page; give the reference grid a dedicated accent color across all charts, add legends, a decade-histogram marker, and a visual nearest-neighbors list. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…versioned Track CLAUDE.md, the skills (.agents/skills + .claude/skills symlinks), CONTEXT.md and docs/adr/ - they were sitting on disk but .gitignore's blanket ".claude" rule kept CLAUDE.md itself from ever being committed. settings.local.json stays out via the user's global gitignore. Prepares the ground for .claude/agents/ and .agents/workflows/ (agent-integration). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Turns a feature/architecture request into a plan for this repo before any code is written: explores real usage instead of assuming from naming, consults domain-modeling for domain vocabulary, calibrates exploration depth and blocking questions to the stakes, and only treats a decision as settled once the user has explicitly confirmed it. Crash-tested blind against the src/ modularization brief in devdx/new-architecture.md (twice - once exposing a stale file pointer it correctly refused to guess around) before tightening the prompt's positive-guidance gaps. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Identifies which tests are worth writing for a given diff or plan, anchored on this repo's own testing conventions (coverage target on the pure domain/analysis layer, the named scientific invariants, colocated Vitest style, Playwright for user journeys) rather than generic advice. Advisory only, same read-only tool set as architect - produces a prioritized list, never test files. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Reviews a diff against this repo's own documented conventions in CLAUDE.md (component style, file naming, import order, domain purity, data-testid patterns, premature-abstraction avoidance) rather than generic bug-hunting, which /code-review already covers. Read-only, reports via ReportFindings, anchors every finding to a citable rule - completes the architect/test-strategist/quality-reviewer trio from evolution.md's feature workflow diagram. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Ties architect, grill-me, test-strategist, and quality-reviewer into the plan -> challenge -> human validation -> implement -> test -> review -> validate -> (ADR if it earned one) sequence sketched in evolution.md. Entry test for when to bother with the full sequence at all: can you already name every touched file and confirm none is imported outside the one feature you're changing - a checkable bar instead of "use judgment" or "if it feels obvious." Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ooter Adds the CI gate this repo's Vercel deployment (ADR-0001) relies on: a reusable test.yml (check/lint/test:run), ci.yml as the required check on push to main/develop and on every PR, and simulate-deploy.yml as a build-only dry run on develop pushes - mirroring the pocket-pbt pattern, adapted for a flat repo with no monorepo filters and no custom deploy job, since Vercel's own Git integration (not the CLI) builds and deploys on push once code reaches its production branch. Also: vercel.json's SPA rewrite (react-router routes would 404 on reload without it), packageManager pin (pnpm/action-setup needs it to resolve a version), .vercel added to .gitignore, and a read-only deploy-troubleshooter agent that diagnoses a failed run from its actual log output instead of guessing from the workflow file's intent. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
develop now gets its own real deployment (tests -> build -> GitHub Pages) instead of a build-only dry run, so there's a working staging environment independent of Vercel before code reaches main - redundancy across two separate platforms rather than relying on one. GitHub Pages serves from a /izeetok/ subpath (no custom domain), unlike Vercel's root domain, so both the Vite base and the router's basename now read from VITE_BASE_PATH (set only in the Pages build job; unset everywhere else keeps root-relative paths). Also copies index.html to 404.html in that build - Pages has no server-side rewrites, so client-side routes need the fallback trick Vercel's vercel.json rewrite already handles for main. deploy-troubleshooter updated to know about both targets and where each one's logs actually live. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…20 actions pnpm install was failing in CI with a 401 on @keyobs/dx-flow: locally it resolves through the dev's own ~/.npmrc token, which CI has no equivalent of. Inject the token into .npmrc at runtime from a new GH_PACKAGES_TOKEN repo secret (read:packages PAT) instead of committing an env-interpolated auth line - that would have shadowed everyone's working local token the moment NODE_AUTH_TOKEN isn't exported, which it isn't by default. Also pins engines.node to 24.x (matching actual dev machines, not the 22 the old workflow happened to hardcode) and replaces the Node20-era actions/checkout@v4 + actions/setup-node@v4 + pnpm/action-setup@v4 with actions/checkout@v7 + pnpm/setup@v2 (the latter is pnpm's own recommended replacement for action-setup on pnpm v11+, and installs the Node runtime in the same step). Bumps upload-pages-artifact and deploy-pages to v5 for the same Node24 reason before they warn too. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
dx-flow granted izeetok Actions access on the @keyobs/dx-flow package, so the automatic per-run GITHUB_TOKEN can now authenticate to npm.pkg.github.com (GitHub Packages requires a token even for public packages, unlike npmjs - it's not a private-package thing). Drops the GH_PACKAGES_TOKEN secret this would otherwise have required someone to create and rotate; adds permissions: packages: read to both workflows so that token actually carries package-read scope. Also fixed pnpm/setup's install:true default, which would have run pnpm install before the auth line was appended and hit the same 401 again. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ci.yml and deploy-develop-pages.yml both triggered on push to develop, each independently calling test.yml - two parallel test runs per push. ci.yml only needs to cover push to main (defense in depth alongside Vercel's native deploy) and pull_request (the required check for merges into either branch); deploy-develop-pages.yml already gates its own build+deploy with the same test job on develop pushes. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Reusable-workflow permissions are capped by the caller's own
permissions block, not just by what the callee requests. test.yml asks
for packages: read (to install @keyobs/dx-flow), but ci.yml - which
also calls test.yml - only granted contents: read, so GitHub rejected
the call outright ("packages: read... but is only allowed packages:
none"). deploy-develop-pages.yml already had this right; ci.yml didn't.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
With "Include administrators" enabled on main's branch protection, nobody can push there without going through a PR - the required check already ran against the PR's head commit via pull_request before any merge is possible. Running it again on the resulting push to main was pure duplicate work with no bypass scenario left to guard against. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…omain root DEFAULT_CSV_URL and SpikePage's own copy of it were hardcoded to /results/euromillions_202002.csv, which only resolves on a root deploy (Vercel). On GitHub Pages (served from /izeetok/), every page that loads draws - /draws, /evaluation, /geometry, /laboratory, /discovery - 404'd fetching it. Both now build the URL from Vite's import.meta.env.BASE_URL, the same mechanism already used for the router's basename, so it resolves correctly under any base path. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…cal draws Adds findExactMatch, a pure domain helper comparing a Grid against Draw history for an exact numbers+stars match - kept separate from evaluateGrid's four scores since this is a binary historical fact, not a continuous score, and mixing it in would collapse two different kinds of information into one. Surfaces it on /evaluation next to the reading-matrix line, with copy that keeps the app's non-predictive stance: a repeat draw doesn't change future odds, and the "never appeared" case is scoped to the CSV's actual coverage (since Feb 2020) rather than claiming EuroMillions history at large. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…s aside findNumbersOnlyMatches finds every past draw sharing the same 5 numbers regardless of stars - a looser, more frequent match than the exact one. Shown as a separate banner, only when there's no full exact match already (that message already covers the stronger case), listing every date it happened rather than just the first, since a repeat within 680 draws - while rare - isn't impossible. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
EvaluationPage always started blank even though evaluatedGridRepository already persisted the grid for /geometry's benefit - navigating away and back lost both the form input and the results. GridInputForm gets an optional initialGrid prop (used only by /evaluation for now; /geometry's free-form input is unaffected) to seed its digit inputs on mount, and EvaluationPage lazily initializes its grid state from the repository instead of null. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Drafts CHANGELOG.md from conventional commits since the last tag and recommends a semver bump (patch/minor/major) with reasoning - neither of which any existing tooling does. dx-flow's own release:* scripts only bump package.json and tag; there's no changelog generation anywhere in the repo. Stops at the draft: never runs pnpm release:*, npm version, or git tag itself, matching the read-only-except-explicit family convention already established for the other agents. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Replaces the unused Vite boilerplate with an actual README: what the app is and isn't (non-predictive), stack, commands, deployment targets and links, current src/ layout, and the versioned .claude/agents + .agents/skills + .agents/workflows setup. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
First entry, drafted by release-manager from the full commit history (no prior tag existed). Recommends a minor bump: the release is dominated by feat commits (grid domain, evaluation, /evaluation, /draws, /geometry, /laboratory, /discovery, agent tooling, CI/CD) with no breaking-change marker anywhere in the log. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
It drafted a first CHANGELOG.md that was accurate but far too verbose (every sub-parameter and count spelled out per bullet), and separately once reported the file as written without ever having called Write - composed the text in its own reasoning and asserted a result it hadn't produced. Both caught by re-reading the actual file after the fact. Adds: one line per entry, no sub-detail dump; and read the file back after writing it, report only what's confirmed on disk. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Was tracking only grill-with-docs; the other three skills already versioned under .agents/skills/ (domain-modeling, grill-me, grilling) were installed but never recorded in the lockfile. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
No description provided.