diff --git a/docs/overview.md b/docs/overview.md
index dc4e1836..c4526955 100644
--- a/docs/overview.md
+++ b/docs/overview.md
@@ -50,7 +50,7 @@ Once the proposal has gone through each of these delays, it is then directed to
```mermaid
graph TD;
D["On-chain DAO vote
(14 days, extendable by 2 days)"];
- D -->|"Passes, Constitutional AIP"| E["L2 waiting period
(3 days)"];
+ D -->|"Passes, Constitutional AIP"| E["L2 waiting period
(8 days)"];
E --> F["L2-to-L1 message
(~ 1 week)"];
F --> G["L1 waiting period
(3 days)"];
G --> H["Execution target"];
diff --git a/docs/roundtrip-governance.png b/docs/roundtrip-governance.png
index 51ea6b7f..014151bc 100644
Binary files a/docs/roundtrip-governance.png and b/docs/roundtrip-governance.png differ
diff --git a/docs/security-council-election-flow.md b/docs/security-council-election-flow.md
index 75ee56d1..38f29a1a 100644
--- a/docs/security-council-election-flow.md
+++ b/docs/security-council-election-flow.md
@@ -6,6 +6,6 @@ graph TD
A["Nominee selection (7 days)"] --> B["Compliance check by foundation (14 days)"]
B --> C["Member election (21 days)"]
C --> D["Security council manager (0 days)"]
- D --> E["L2 Timelock (3 days)\nWithdrawal period (~1 week)\nL1 Timelock (3 days)"]
+ D --> E["L2 Timelock (8 days)\nWithdrawal period (~1 week)\nL1 Timelock (3 days)"]
E --> F["Individual council updates (0 days)"]
```
\ No newline at end of file
diff --git a/scripts/proposals/CoreGovTimelockUpdateDelayEightDay/CoreGovTimelockUpdateDelayEightDay.json b/scripts/proposals/CoreGovTimelockUpdateDelayEightDay/CoreGovTimelockUpdateDelayEightDay.json
new file mode 100644
index 00000000..d6548206
--- /dev/null
+++ b/scripts/proposals/CoreGovTimelockUpdateDelayEightDay/CoreGovTimelockUpdateDelayEightDay.json
@@ -0,0 +1,12 @@
+{
+ "actionChainIds": [
+ 42161
+ ],
+ "actionAddresses": [
+ "0x5B947D8bF197467be7ef381b7cAfEE0A7B35737A"
+ ],
+ "arbSysSendTxToL1Args": {
+ "l1Timelock": "0xE6841D92B0C345144506576eC13ECf5103aC7f49",
+ "calldata": "0x8f2a0bb000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000da537a8813f50264f91f9a2f8abcd15373495e15278e7fe7cfa90e0892f8c300000000000000000000000000000000000000000000000000000000000003f4800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a723c008e76e379c55599d2e4d93879beafda79c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f000000000000000000000000cf57572261c7c2bcf21ffd220ea7d1a27d40a82700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000841cff79cd0000000000000000000000005b947d8bf197467be7ef381b7cafee0a7b35737a00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000004b147f40c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
+ }
+}
\ No newline at end of file
diff --git a/scripts/proposals/CoreGovTimelockUpdateDelayEightDay/generate.bash b/scripts/proposals/CoreGovTimelockUpdateDelayEightDay/generate.bash
new file mode 100755
index 00000000..658f1e0f
--- /dev/null
+++ b/scripts/proposals/CoreGovTimelockUpdateDelayEightDay/generate.bash
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+# CoreGovTimelockUpdateDelayEightDayAction 0x5B947D8bF197467be7ef381b7cAfEE0A7B35737A
+
+yarn gen:proposalData \
+ --govChainProviderRPC https://arb1.arbitrum.io/rpc \
+ --actionChainIds 42161 \
+ --actionAddresses 0x5B947D8bF197467be7ef381b7cAfEE0A7B35737A \
+ --writeToJsonPath ./scripts/proposals/CoreGovTimelockUpdateDelayEightDay/CoreGovTimelockUpdateDelayEightDay.json
\ No newline at end of file
diff --git a/src/gov-action-contracts/AIPs/CoreGovTimelockUpdateDelayEightDayAction.sol b/src/gov-action-contracts/AIPs/CoreGovTimelockUpdateDelayEightDayAction.sol
new file mode 100644
index 00000000..11b7c349
--- /dev/null
+++ b/src/gov-action-contracts/AIPs/CoreGovTimelockUpdateDelayEightDayAction.sol
@@ -0,0 +1,29 @@
+// SPDX-License-Identifier: Apache-2.0
+pragma solidity 0.8.16;
+
+import "../address-registries/L2AddressRegistryInterfaces.sol";
+
+/// @notice Updates the delay of the core gov timelock to 8 days
+/// and sets the new constitution hash
+contract CoreGovTimelockUpdateDelayEightDayAction {
+ IL2AddressRegistry public constant govAddressRegistry = IL2AddressRegistry(0x56C4E9Eb6c63aCDD19AeC2b1a00e4f0d7aBda9d3);
+ uint256 public constant delay = 86400 * 8;
+ bytes32 public constant newConstitutionHash =
+ 0x28faf2acba9b3ff80ec484e3d5646931eeef40568b1b7c38dbe52b890bfd7938;
+
+ function perform() external {
+ govAddressRegistry.coreGovTimelock().updateDelay(delay);
+ require(
+ govAddressRegistry.coreGovTimelock().getMinDelay() == delay,
+ "CoreGovTimelockUpdateDelayAction: Timelock delay"
+ );
+
+ IArbitrumDAOConstitution arbitrumDaoConstitution =
+ govAddressRegistry.arbitrumDAOConstitution();
+ arbitrumDaoConstitution.setConstitutionHash(newConstitutionHash);
+ require(
+ arbitrumDaoConstitution.constitutionHash() == newConstitutionHash,
+ "CoreGovTimelockUpdateDelayAction: new constitution hash not set"
+ );
+ }
+}