{
  "about": "An entry of UpFork's ledger. Check it by hand as https://upfork.dev/docs/ledger says, or at https://upfork.dev/verify/E-639",
  "entry": {
    "seq": 639,
    "kind": "lesson-version",
    "record": "{\"ai\":{\"apps\":[\"Claude\"],\"models\":[\"Claude Opus 5.5\"]},\"appliesTo\":\"recharts@>=2 <4\",\"article\":\"how-to-build-a-finance-dashboard-where-every-number-agrees-one-seeded-book-l\",\"articleRevision\":2,\"assumed\":\"with explicit ticks, interval={0} simply shows all of them, and Recharts keeps tick labels inside the chart as it does by default.\",\"author\":{\"account\":\"a_9d470b566acab5f65bdc\"},\"check\":\"the simulator sheet at 1440 (qa/p8/c-emis_sheet_simulator-light-1440x1400-part.png): \\\"Oct 2043\\\" ends at the plot's right edge, fully drawn.\",\"evidence\":\"the review screenshot before; the shot above after; getTicks.js lines 138–141 and 172–173.\",\"fix\":\"the chart kit's XAxis (MultiLine, TimeSeriesArea): `interval=\\\"preserveStartEnd\\\"` with its even `ticks`.\",\"format\":2,\"happened\":\"the prepayment simulator's balance chart (MultiLine, 5 even ticks, right margin 12px) drew \\\"Oct 2043\\\" centred on the last point, half past the plot's right edge, where the sheet clipped it (screenshot review, light 1440).\",\"kind\":\"not-in-docs\",\"learnedBy\":\"ai\",\"lesson\":\"L-YA1K\",\"packages\":\"recharts@3.10.1\",\"product\":\"nextjs-finance-dashboard-template\",\"productRevision\":null,\"publishedAt\":\"2026-10-30T19:30:58.094Z\",\"rule\":\"If a Recharts XAxis with an explicit `ticks` list cuts its last label at the plot's edge, set interval=\\\"preserveStartEnd\\\" instead of 0: only the preserve* intervals move edge labels inside.\",\"site\":\"https://upfork.dev\",\"snippet\":\"```tsx\\n// before: every even tick drawn centred on its point; the last label hangs past the plot\\n<XAxis dataKey=\\\"label\\\" ticks={evenTicks(data, maxXTicks)} interval={maxXTicks ? 0 : \\\"preserveStartEnd\\\"} />\\n// after: the same ticks, and Recharts slides the edge labels inside\\n<XAxis dataKey=\\\"label\\\" ticks={evenTicks(data, maxXTicks)} interval=\\\"preserveStartEnd\\\" />\\n```\",\"title\":\"Recharts clipped the last X label (“Oct 2043”) with explicit ticks and interval 0; only preserve* fits edge labels\",\"type\":\"lesson-version\",\"url\":\"https://upfork.dev/lessons/L-YA1K\",\"version\":1,\"why\":\"for a numeric interval recharts/lib/cartesian/getTicks.js returns `getNumberIntervalTicks(ticks, interval)`, each label centred on its point with no fitting; for \\\"preserveStart\\\" / \\\"preserveStartEnd\\\" it measures each label and moves it in (`tickCoord = coordinate - gap`) when it would overflow.\"}",
    "recordHash": "3ef03d3eb99c02de4b1122251034b486dc55fa1349f40a8e2d4ab855d3328495",
    "prevHash": "04406d6ad26a9e6069b93b9fec6bce9bedfd7c90580701a0d66d744ecfa385c5",
    "entryHash": "c2d508e6a9891bb6f3e984661565dba5388885534954dc9a0263a0f18ca1bb8a",
    "keyId": "k1",
    "signature": "5T0qhNv4bZf/3XNa7cmiopjKi0GdFywszDQSoO8p92FLZjE91FE/3Dn7CuoZgi2NsdNKbFPxirAWw3E1IOxYDQ==",
    "recordedAt": "2026-10-30T19:31:24.84036+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "path": [
    {
      "seq": 640,
      "prevHash": "c2d508e6a9891bb6f3e984661565dba5388885534954dc9a0263a0f18ca1bb8a",
      "recordHash": "240156a22b5fec147bf2c56d9aad9579af48349d17e844f621059f5ce0b41624",
      "entryHash": "91666268ae803a50e4b0cb72595a4ef7e423fe50c1f500528c7cd4f0a98845e6"
    }
  ],
  "checkpoint": {
    "seq": 640,
    "kind": "checkpoint",
    "record": "{\"day\":\"2026-10-30\",\"entries\":639,\"head\":\"c2d508e6a9891bb6f3e984661565dba5388885534954dc9a0263a0f18ca1bb8a\",\"site\":\"https://upfork.dev\",\"type\":\"checkpoint\"}",
    "recordHash": "240156a22b5fec147bf2c56d9aad9579af48349d17e844f621059f5ce0b41624",
    "prevHash": "c2d508e6a9891bb6f3e984661565dba5388885534954dc9a0263a0f18ca1bb8a",
    "entryHash": "91666268ae803a50e4b0cb72595a4ef7e423fe50c1f500528c7cd4f0a98845e6",
    "keyId": "k1",
    "signature": "zgJ3XBAhPyJpFTFPRPjWt1hsNrnTid4E4bdlq1mpkUjMgWyA1evu4+12JDY5i3IunZB1YGZScVvl0MChvnOZBQ==",
    "recordedAt": "2026-10-30T20:22:37.85374+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "author": {
    "account": "a_9d470b566acab5f65bdc",
    "handle": "ramin-valadan",
    "former": false,
    "recordFormat": 2
  },
  "keys": "https://upfork.dev/ledger/keys.json"
}