# Kintsugi🍵 milestones We're excited to kick-off the Merge November sprint -- *Kintsugi* 🍵! Throughout November, we'll bring all EL and CL clients up to spec, perform initial interop exercises, and build a series of weekly devnets. All of this will culminate in the launch of a persistent devnet in December to observe (and break!) through the holidays. See the [Kintsugi🍵 meta-spec](https://hackmd.io/@n0ble/kintsugi-spec) for concrete spec targets. Note, there is a chance minor changes make it into the meta-spec week to week. We'll make any such changes abundantly clear prior to each devnet launch. You'll notice that these milestones look pretty similar to [Amphora milestones](https://hackmd.io/@tvanepps/amphora-milestones) and for good reason! That went exceptionally well, and with the updated specs, we want to approach this month with a similar rigor. [toc] ### Milestone tracker To track progress across all 10 clients (5 execution, 5 consensus), please create a Kintsugi🍵 tracking issue in your repo. We'll link to those issues here as well as track high-level milestones at a glance. As with Amphora, please do not waste other teams' time prior to implementing core specs and running all test vectors (**M1**). The milestones are designed to help capture complexity and iterate toward stable interop and testnets. *Please link to your primary tracking issue against the name of your client (first column).* #### Execution layer [teku-tracking]: https://github.com/ConsenSys/teku/issues/4504 [prysm-tracking]: https://prysmaticlabs.notion.site/Kintsugi-Sprint-Tracking-4bd719f9e7904d8ca625687b310acf26 [lh-pr]: https://github.com/sigp/lighthouse/issues/2830 [geth-pr]: https://github.com/MariusVanDerWijden/go-ethereum/pull/29 [geth-test-engine]: https://notes.ethereum.org/rmVErCfCRPKGqGkUe89-Kg?both [geth-test-4399]: https://notes.ethereum.org/dfVXr2h2TqWDKSXZaMwGTw?view [grandine-tracking]: https://github.com/sifraitech/grandine/issues/6 [ethereumjs-tracking-issue]: https://github.com/ethereumjs/ethereumjs-monorepo/issues/1551 [ethereumjs-pr]: https://github.com/ethereumjs/ethereumjs-monorepo/pull/1565 [nimbus-tracking]: https://github.com/status-im/nimbus-eth2/issues/3073 [mergemock]: https://github.com/protolambda/mergemock [nethermind-pr]: https://github.com/NethermindEth/nethermind/pull/3597 [nethermind-tracking-issue]:https://github.com/NethermindEth/nethermind/issues/3581 |Team|M0|M1|M2|M3|M4|M5|M6|Docs| |--|--|--|--|--|--|--|--|----| Besu |🍵|🍵|🍵 teku|🍵lighthouse <br> 🍵 teku <br>🍵 lodestar <br>|🍵 teku <br>🍵 lodestar <br> |🍵| | [Tracking Issue](https://github.com/hyperledger/besu/issues/3006) Erigon | 🍵| | | | | | | [Tracking Issue](https://github.com/ledgerwatch/erigon/issues/3078) EthereumJS |🍵|🍵| | | | | | [WIP PR][ethereumjs-pr]<br>[Tracking Issue][ethereumjs-tracking-issue] Geth |🍵| 🍵| 🍵 prysm <br> 🍵 Lodestar <br> 🍵 Lighthouse <br> 🍵 Nimbus|🍵 Lodestar <br> 🍵 Lighthouse <br> 🍵 Nimbus |🍵 Lodestar <br> 🍵 Lighthouse <br> 🍵 Nimbus <br> 🍵 Teku <br> 🍵 Prysm |🍵| | [WIP PR][geth-pr] <br> [Test-Cases][geth-test-engine] Nethermind |🍵|🍵 |🍵 Lodestar<br>🍵 Lighthouse <br> 🍵 Nimbus |🍵 Lodestar<br>🍵 Lighthouse |🍵 Lodestar<br>🍵 Lighthouse <br> 🍵 Nimbus <br> 🍵 Teku <br> 🍵 Prysm |🍵| | [WIP PR][nethermind-pr] <br>[Tracking issue][nethermind-tracking-issue] #### Consensus layer |Team|M0|M1|M2|M3|M4|M5|M6|Docs| |--|--|--|--|--|--|--|--|----| Grandine |🍵|🍵|🍵 Geth| | | | | [Tracking issue][grandine-tracking] Lighthouse |🍵|🍵|🍵 Geth<br>🍵 Nethermind | | 🍵 Nethermind <br> 🍵 Geth|🍵| | [Tracking PR][lh-pr] Lodestar |🍵|🍵| 🍵 Nethermind <br> 🍵 Geth | |🍵 Nethermind <br> 🍵 Geth |🍵| | [Tracking issue](https://github.com/ChainSafe/lodestar/issues/3410) Nimbus |🍵|🍵|🍵 geth <br> 🍵 Nethermind |🍵 Geth | 🍵 Geth <br> 🍵 Nethermind |🍵| | [Tracking][nimbus-tracking] Prysm |🍵|🍵|🍵 Geth | |🍵 Geth <br> 🍵 Nethermind |🍵| | [Tracking][prysm-tracking] Teku |🍵|🍵|🍵 Geth |🍵 Teku+Geth <br> 🍵 Lighthouse+Geth|🍵 Geth <br>🍵 Nethermind |🍵| | [Tracking][teku-tracking] ### Milestones - **M0**: *Implementation started* - Signify that implementation of the Kintsugi🍵 meta-spec has started by creating a tracking issue and linking in the above table - **M1**: *Spec Implemented* - EL/CL: pass all released consensus test vectors - Run against [`mergemock`](https://github.com/protolambda/mergemock) - geth based [Engine API test cases][geth-test-engine] (not yet updated to Kintsugi v2) - EL: geth based [EIP 4399 test cases][geth-test-4399] - EL: additional [4399 test cases](https://github.com/marioevz/kintsugi_testing/tree/main/tests/EIP4399) - Other tests to be released asap - **M2**: *1-to-1 Interop* -- One EL and one CL team pair off for basic interop testing - Perform the following with at least two separate teams: - run 1:1 devnet without transition (`TTD == 0`) - run 1:1 devnet with transition (`TTD > 10`) - Send simple EL TXs (ETH transfers) which are successfully executed on chain - Bonus: run EIP-4399 TXs - Record teams interop'd with alongside 🍵 in milestone table -- e.g. "🍵 lodestar, teku" - **M3**: *Many-to-Many Interop* -- 2 or more EL and CL teams perform interop testing - Run many:many devnet with transition (`TTD > 50`) - Send EL TXs that transfer ETH and deploy a contract which are successfully executed on chain - Record teams and devnet config/results in separate issue - **M4**: *Weekly devnet* -- Weekly devnet build for more in depth testing - Starting in the second week of November, EF devops (Pari, etc) will lead a devnet build on Thursdays. This devnet (if successful) will remain up until the following Thursday - Once passing **M3**, join the weekly devnet - To pass **M4**, client team *must* be on the devnet during the Merge transition process and process EL TXs - *Note*: Increasingly complex EL TXs will be sent on weekly devnets, testing EIP-4399 - **M5**: *All-to-All persistent testnet* -- All ready EL and CL teams create a long-lived devnet first week of december - Run many:many devnet with transition (`TTD > 100`) - Keep the devnet up through the holidays for continuous testing and fun - Create basic README for the public to connect - **M6**: *Kintsugi🍵 code released* -- clients release Kintsugi🍵 code for public consumption - Merge Kintsugi🍵 code into main branch - Create basic README, ideally with a CLI flag, for the public to connect to persistent testnet - Release Kintsugi🍵 for public consumption ### Office Hours 🕰 Every week, we'll hold Kintsugi🍵 office hours as part of the AllCoreDevs and Consensus Layer calls. The first 30-45 minutes of each call will be dedicated to team updates, issue/blocker discussion and next steps for Kintsugi🍵. The calls are each held fortnightly on alternating weeks with the Consensus Layer call happening next, on November 4 (Thursday) 14:00 UTC, and the AllCoreDevs call happening the following week November 12 14:00 UTC. Note that these calls are "fixed" in UTC and do not move with DST start/end. You can subscribe to them on Google Calendar [here](https://calendar.google.com/calendar/u/1?cid=Y191cGFvZm9uZzhtZ3JtcmtlZ243aWM3aGs1c0Bncm91cC5jYWxlbmRhci5nb29nbGUuY29t).