diff --git a/.clang-format b/.clang-format
index ce06cfd..28e3328 100644
--- a/.clang-format
+++ b/.clang-format
@@ -6,55 +6,62 @@
 AlignConsecutiveAssignments: false
 AlignConsecutiveDeclarations: false
 AlignEscapedNewlines: Right
-AlignOperands:   true
-AlignTrailingComments: true
+AlignOperands:  Align
+AlignTrailingComments:
+  Kind: Always
+  OverEmptyLines: 1
 AllowAllParametersOfDeclarationOnNextLine: true
-AllowShortBlocksOnASingleLine: false
+AllowShortBlocksOnASingleLine: Empty
 AllowShortCaseLabelsOnASingleLine: false
-AllowShortFunctionsOnASingleLine: None
-AllowShortIfStatementsOnASingleLine: false
+AllowShortFunctionsOnASingleLine: Empty
+AllowShortIfStatementsOnASingleLine: Never
+AllowShortLambdasOnASingleLine: true
 AllowShortLoopsOnASingleLine: false
 AlwaysBreakAfterReturnType: None
 AlwaysBreakBeforeMultilineStrings: false
 AlwaysBreakTemplateDeclarations: Yes
 BinPackArguments: true
 BinPackParameters: true
+BitFieldColonSpacing: None
 BraceWrapping:
   AfterCaseLabel:  true
   AfterClass:      true
   AfterControlStatement: true
   AfterEnum:       true
+  AfterExternBlock: true
   AfterFunction:   true
   AfterNamespace:  true
   AfterObjCDeclaration: true
   AfterStruct:     true
   AfterUnion:      true
-  AfterExternBlock: true
   BeforeCatch:     true
   BeforeElse:      true
+  BeforeLambdaBody: false
+  BeforeWhile:     false
   IndentBraces:    false
   SplitEmptyFunction:   false
   SplitEmptyRecord:     false
   SplitEmptyNamespace:  false
+BreakAfterAttributes: Never
 BreakBeforeBinaryOperators: None
 BreakBeforeBraces: Custom
 BreakBeforeTernaryOperators: true
 BreakConstructorInitializers: AfterColon
 BreakInheritanceList: AfterColon
-BreakStringLiterals: true
+BreakStringLiterals: false
 ColumnLimit:     80
 CommentPragmas:  '^ IWYU pragma:'
 CompactNamespaces: false
-ConstructorInitializerAllOnOneLineOrOnePerLine: false
 ConstructorInitializerIndentWidth: 4
 ContinuationIndentWidth: 4
 Cpp11BracedListStyle: true
 DerivePointerAlignment: false
-PointerAlignment: Left
 DisableFormat:   false
-ExperimentalAutoDetectBinPacking: false
 FixNamespaceComments: true
-ForEachMacros:   [ foreach, Q_FOREACH, BOOST_FOREACH ]
+ForEachMacros:
+  - foreach
+  - Q_FOREACH
+  - BOOST_FOREACH
 IncludeBlocks: Regroup
 IncludeCategories:
   - Regex:           '^[<"](gtest|gmock)'
@@ -74,9 +81,14 @@
   - Regex:           '.*'
     Priority:        6
 IndentCaseLabels: true
+IndentExternBlock: NoIndent
+IndentRequiresClause: true
 IndentWidth:     4
 IndentWrappedFunctionNames: true
-KeepEmptyLinesAtTheStartOfBlocks: true
+InsertNewlineAtEOF: true
+KeepEmptyLinesAtTheStartOfBlocks: false
+LambdaBodyIndentation: Signature
+LineEnding: LF
 MacroBlockBegin: ''
 MacroBlockEnd:   ''
 MaxEmptyLinesToKeep: 1
@@ -84,14 +96,23 @@
 ObjCBlockIndentWidth: 2
 ObjCSpaceAfterProperty: false
 ObjCSpaceBeforeProtocolList: true
-PenaltyBreakBeforeFirstCallParameter: 19
+PackConstructorInitializers: BinPack
+PenaltyBreakAssignment: 25
+PenaltyBreakBeforeFirstCallParameter: 50
 PenaltyBreakComment: 300
 PenaltyBreakFirstLessLess: 120
 PenaltyBreakString: 1000
+PenaltyBreakTemplateDeclaration: 10
 PenaltyExcessCharacter: 1000000
 PenaltyReturnTypeOnItsOwnLine: 60
+PenaltyIndentedWhitespace: 1
+PointerAlignment: Left
+QualifierAlignment: Left
+ReferenceAlignment: Left
 ReflowComments:  true
-SortIncludes:    true
+RequiresClausePosition: OwnLine
+RequiresExpressionIndentation: Keyword
+SortIncludes: CaseSensitive
 SortUsingDeclarations: true
 SpaceAfterCStyleCast: false
 SpaceAfterTemplateKeyword: true
@@ -103,12 +124,13 @@
 SpaceBeforeRangeBasedForLoopColon: true
 SpaceInEmptyParentheses: false
 SpacesBeforeTrailingComments: 1
-SpacesInAngles:  false
+SpacesInAngles: Never
 SpacesInContainerLiterals: true
 SpacesInCStyleCastParentheses: false
 SpacesInParentheses: false
 SpacesInSquareBrackets: false
-Standard:        Cpp11
+Standard:        Latest
 TabWidth:        4
 UseTab:          Never
 ...
+
diff --git a/include/error_monitors/base_gpio_monitor.hpp b/include/error_monitors/base_gpio_monitor.hpp
index 1da5580..5592f59 100644
--- a/include/error_monitors/base_gpio_monitor.hpp
+++ b/include/error_monitors/base_gpio_monitor.hpp
@@ -39,8 +39,7 @@
 
     AssertValue assertValue;
 
-    virtual void logEvent()
-    {}
+    virtual void logEvent() {}
 
     bool requestEvents()
     {
@@ -53,11 +52,11 @@
 
         try
         {
-            line.request({"host-error-monitor",
-                          gpiod::line_request::EVENT_BOTH_EDGES,
-                          assertValue == AssertValue::highAssert
-                              ? 0
-                              : gpiod::line_request::FLAG_ACTIVE_LOW});
+            line.request(
+                {"host-error-monitor", gpiod::line_request::EVENT_BOTH_EDGES,
+                 assertValue == AssertValue::highAssert
+                     ? 0
+                     : gpiod::line_request::FLAG_ACTIVE_LOW});
         }
         catch (std::exception&)
         {
@@ -116,8 +115,7 @@
         logEvent();
     }
 
-    virtual void deassertHandler()
-    {}
+    virtual void deassertHandler() {}
 
   private:
     void waitForEvent()
@@ -171,8 +169,7 @@
     BaseGPIOMonitor(boost::asio::io_context& io,
                     std::shared_ptr<sdbusplus::asio::connection> conn,
                     const std::string& signalName, AssertValue assertValue) :
-        BaseMonitor(io, conn, signalName),
-        event(io), assertValue(assertValue)
+        BaseMonitor(io, conn, signalName), event(io), assertValue(assertValue)
     {
         if (!requestEvents())
         {
diff --git a/include/error_monitors/base_gpio_poll_monitor.hpp b/include/error_monitors/base_gpio_poll_monitor.hpp
index 189efb3..05edae9 100644
--- a/include/error_monitors/base_gpio_poll_monitor.hpp
+++ b/include/error_monitors/base_gpio_poll_monitor.hpp
@@ -45,8 +45,7 @@
     size_t pollingTimeMs;
     size_t timeoutMs;
 
-    virtual void logEvent()
-    {}
+    virtual void logEvent() {}
 
     bool requestEvents()
     {
@@ -59,11 +58,11 @@
 
         try
         {
-            line.request({"host-error-monitor",
-                          gpiod::line_request::EVENT_BOTH_EDGES,
-                          assertValue == AssertValue::highAssert
-                              ? 0
-                              : gpiod::line_request::FLAG_ACTIVE_LOW});
+            line.request(
+                {"host-error-monitor", gpiod::line_request::EVENT_BOTH_EDGES,
+                 assertValue == AssertValue::highAssert
+                     ? 0
+                     : gpiod::line_request::FLAG_ACTIVE_LOW});
         }
         catch (std::exception&)
         {
@@ -110,8 +109,7 @@
         logEvent();
     }
 
-    virtual void deassertHandler()
-    {}
+    virtual void deassertHandler() {}
 
   private:
     void flushEvents()
@@ -213,9 +211,8 @@
                 // completion.
                 if (ec != boost::asio::error::operation_aborted)
                 {
-                    std::cerr << signalName
-                              << " polling async_wait failed: " << ec.message()
-                              << "\n";
+                    std::cerr << signalName << " polling async_wait failed: "
+                              << ec.message() << "\n";
                 }
                 return;
             }
@@ -228,9 +225,9 @@
                         std::shared_ptr<sdbusplus::asio::connection> conn,
                         const std::string& signalName, AssertValue assertValue,
                         size_t pollingTimeMs, size_t timeoutMs) :
-        BaseMonitor(io, conn, signalName),
-        pollingTimer(io), event(io), assertValue(assertValue),
-        pollingTimeMs(pollingTimeMs), timeoutMs(timeoutMs)
+        BaseMonitor(io, conn, signalName), pollingTimer(io), event(io),
+        assertValue(assertValue), pollingTimeMs(pollingTimeMs),
+        timeoutMs(timeoutMs)
     {
         if (!requestEvents())
         {
diff --git a/include/error_monitors/base_monitor.hpp b/include/error_monitors/base_monitor.hpp
index 2bb0908..33147cf 100644
--- a/include/error_monitors/base_monitor.hpp
+++ b/include/error_monitors/base_monitor.hpp
@@ -35,15 +35,13 @@
     BaseMonitor(boost::asio::io_context& io,
                 std::shared_ptr<sdbusplus::asio::connection> conn,
                 const std::string& signalName) :
-        valid(false),
-        io(io), conn(conn), signalName(signalName)
+        valid(false), io(io), conn(conn), signalName(signalName)
 
     {
         std::cerr << "Initializing " << signalName << " Monitor\n";
     }
 
-    virtual void hostOn()
-    {}
+    virtual void hostOn() {}
 
     bool isValid()
     {
diff --git a/include/error_monitors/cpld_crc_monitor.hpp b/include/error_monitors/cpld_crc_monitor.hpp
index f10cf40..de40d4c 100644
--- a/include/error_monitors/cpld_crc_monitor.hpp
+++ b/include/error_monitors/cpld_crc_monitor.hpp
@@ -52,9 +52,9 @@
         // Request GPIO input
         try
         {
-            cpuPresenceLine.request({"host-error-monitor",
-                                     gpiod::line_request::DIRECTION_INPUT,
-                                     gpiod::line_request::FLAG_ACTIVE_LOW});
+            cpuPresenceLine.request(
+                {"host-error-monitor", gpiod::line_request::DIRECTION_INPUT,
+                 gpiod::line_request::FLAG_ACTIVE_LOW});
         }
         catch (std::exception&)
         {
@@ -90,8 +90,7 @@
                    std::shared_ptr<sdbusplus::asio::connection> conn,
                    const std::string& signalName, const size_t cpuNum,
                    const std::string& cpuPresenceName) :
-        BaseGPIOMonitor(io, conn, signalName, assertValue),
-        cpuNum(cpuNum)
+        BaseGPIOMonitor(io, conn, signalName, assertValue), cpuNum(cpuNum)
     {
         if (!getCPUPresence(cpuPresenceName))
         {
diff --git a/include/error_monitors/cpu_early_error_monitor.hpp b/include/error_monitors/cpu_early_error_monitor.hpp
index 44ac41e..8c283f8 100644
--- a/include/error_monitors/cpu_early_error_monitor.hpp
+++ b/include/error_monitors/cpu_early_error_monitor.hpp
@@ -40,8 +40,7 @@
     CPUEarlyErrorMonitor(boost::asio::io_context& io,
                          std::shared_ptr<sdbusplus::asio::connection> conn,
                          const std::string& signalName, const size_t cpuNum) :
-        BaseGPIOMonitor(io, conn, signalName, assertValue),
-        cpuNum(cpuNum)
+        BaseGPIOMonitor(io, conn, signalName, assertValue), cpuNum(cpuNum)
     {
         if (valid)
         {
diff --git a/include/error_monitors/cpu_mismatch_monitor.hpp b/include/error_monitors/cpu_mismatch_monitor.hpp
index ffdc104..a0fe255 100644
--- a/include/error_monitors/cpu_mismatch_monitor.hpp
+++ b/include/error_monitors/cpu_mismatch_monitor.hpp
@@ -53,9 +53,9 @@
         // Request GPIO input
         try
         {
-            cpuMismatchLine.request({"host-error-monitor",
-                                     gpiod::line_request::DIRECTION_INPUT,
-                                     0}); // 0 indicates ACTIVE_HIGH
+            cpuMismatchLine.request(
+                {"host-error-monitor", gpiod::line_request::DIRECTION_INPUT,
+                 0}); // 0 indicates ACTIVE_HIGH
         }
         catch (std::exception&)
         {
@@ -94,8 +94,7 @@
     CPUMismatchMonitor(boost::asio::io_context& io,
                        std::shared_ptr<sdbusplus::asio::connection> conn,
                        const std::string& signalName, const size_t cpuNum) :
-        BaseMonitor(io, conn, signalName),
-        cpuNum(cpuNum)
+        BaseMonitor(io, conn, signalName), cpuNum(cpuNum)
     {
         // Request GPIO input
         if (!requestCPUMismatchInput())
diff --git a/include/error_monitors/cpu_presence_monitor.hpp b/include/error_monitors/cpu_presence_monitor.hpp
index 49ab043..1962b8b 100644
--- a/include/error_monitors/cpu_presence_monitor.hpp
+++ b/include/error_monitors/cpu_presence_monitor.hpp
@@ -59,9 +59,9 @@
         // Request GPIO input
         try
         {
-            cpuPresenceLine.request({"host-error-monitor",
-                                     gpiod::line_request::DIRECTION_INPUT,
-                                     gpiod::line_request::FLAG_ACTIVE_LOW});
+            cpuPresenceLine.request(
+                {"host-error-monitor", gpiod::line_request::DIRECTION_INPUT,
+                 gpiod::line_request::FLAG_ACTIVE_LOW});
         }
         catch (const std::exception&)
         {
@@ -87,8 +87,7 @@
     CPUPresenceMonitor(boost::asio::io_context& io,
                        std::shared_ptr<sdbusplus::asio::connection> conn,
                        const std::string& signalName, const size_t cpuNum) :
-        BaseMonitor(io, conn, signalName),
-        cpuNum(cpuNum)
+        BaseMonitor(io, conn, signalName), cpuNum(cpuNum)
     {
         if (!getCPUPresence(signalName))
         {
diff --git a/include/error_monitors/cpu_thermtrip_monitor.hpp b/include/error_monitors/cpu_thermtrip_monitor.hpp
index 41ca1b6..147db81 100644
--- a/include/error_monitors/cpu_thermtrip_monitor.hpp
+++ b/include/error_monitors/cpu_thermtrip_monitor.hpp
@@ -53,8 +53,7 @@
                         std::shared_ptr<sdbusplus::asio::connection> conn,
                         const std::string& signalName, const size_t cpuNum,
                         const std::string& customName = std::string()) :
-        BaseGPIOMonitor(io, conn, signalName, assertValue),
-        cpuNum(cpuNum)
+        BaseGPIOMonitor(io, conn, signalName, assertValue), cpuNum(cpuNum)
     {
         sdbusplus::asio::object_server server =
             sdbusplus::asio::object_server(conn);
diff --git a/include/error_monitors/err_pin_monitor.hpp b/include/error_monitors/err_pin_monitor.hpp
index 95cfb2e..e1b8954 100644
--- a/include/error_monitors/err_pin_monitor.hpp
+++ b/include/error_monitors/err_pin_monitor.hpp
@@ -71,8 +71,7 @@
     ErrPinMonitor(boost::asio::io_context& io,
                   std::shared_ptr<sdbusplus::asio::connection> conn,
                   const std::string& signalName, const size_t errPin) :
-        BaseGPIOMonitor(io, conn, signalName, assertValue),
-        errPin(errPin)
+        BaseGPIOMonitor(io, conn, signalName, assertValue), errPin(errPin)
     {
         if (valid)
         {
diff --git a/include/error_monitors/mcerr_monitor.hpp b/include/error_monitors/mcerr_monitor.hpp
index 98eca7e..4c6145d 100644
--- a/include/error_monitors/mcerr_monitor.hpp
+++ b/include/error_monitors/mcerr_monitor.hpp
@@ -39,8 +39,7 @@
         const std::string& signalName,
         const host_error_monitor::base_gpio_monitor::AssertValue assertValue,
         const size_t cpuNum) :
-        BaseGPIOMonitor(io, conn, signalName, assertValue),
-        cpuNum(cpuNum)
+        BaseGPIOMonitor(io, conn, signalName, assertValue), cpuNum(cpuNum)
     {
         if (valid)
         {
diff --git a/include/error_monitors/mem_thermtrip_monitor.hpp b/include/error_monitors/mem_thermtrip_monitor.hpp
index 52c091b..caf8b0f 100644
--- a/include/error_monitors/mem_thermtrip_monitor.hpp
+++ b/include/error_monitors/mem_thermtrip_monitor.hpp
@@ -48,8 +48,7 @@
                         std::shared_ptr<sdbusplus::asio::connection> conn,
                         const std::string& signalName, const size_t cpuNum,
                         const std::string& customName = std::string()) :
-        BaseGPIOMonitor(io, conn, signalName, assertValue),
-        cpuNum(cpuNum)
+        BaseGPIOMonitor(io, conn, signalName, assertValue), cpuNum(cpuNum)
     {
         sdbusplus::asio::object_server server =
             sdbusplus::asio::object_server(conn);
diff --git a/include/error_monitors/memhot_monitor.hpp b/include/error_monitors/memhot_monitor.hpp
index 824895f..ba6bd71 100644
--- a/include/error_monitors/memhot_monitor.hpp
+++ b/include/error_monitors/memhot_monitor.hpp
@@ -42,8 +42,7 @@
     MemhotMonitor(boost::asio::io_context& io,
                   std::shared_ptr<sdbusplus::asio::connection> conn,
                   const std::string& signalName, const size_t cpuNum) :
-        BaseGPIOMonitor(io, conn, signalName, assertValue),
-        cpuNum(cpuNum)
+        BaseGPIOMonitor(io, conn, signalName, assertValue), cpuNum(cpuNum)
     {
         if (valid)
         {
diff --git a/include/error_monitors/prochot_monitor.hpp b/include/error_monitors/prochot_monitor.hpp
index ad18aaa..32f59c4 100644
--- a/include/error_monitors/prochot_monitor.hpp
+++ b/include/error_monitors/prochot_monitor.hpp
@@ -42,8 +42,7 @@
     ProchotMonitor(boost::asio::io_context& io,
                    std::shared_ptr<sdbusplus::asio::connection> conn,
                    const std::string& signalName, const size_t cpuNum) :
-        BaseGPIOMonitor(io, conn, signalName, assertValue),
-        cpuNum(cpuNum)
+        BaseGPIOMonitor(io, conn, signalName, assertValue), cpuNum(cpuNum)
     {
         if (valid)
         {
diff --git a/include/error_monitors/vr_hot_monitor.hpp b/include/error_monitors/vr_hot_monitor.hpp
index 3fecffd..b168eb0 100644
--- a/include/error_monitors/vr_hot_monitor.hpp
+++ b/include/error_monitors/vr_hot_monitor.hpp
@@ -40,8 +40,7 @@
     VRHotMonitor(boost::asio::io_context& io,
                  std::shared_ptr<sdbusplus::asio::connection> conn,
                  const std::string& signalName, const std::string& vrName) :
-        BaseGPIOMonitor(io, conn, signalName, assertValue),
-        vrName(vrName)
+        BaseGPIOMonitor(io, conn, signalName, assertValue), vrName(vrName)
     {
         if (valid)
         {
diff --git a/include/host_error_monitor.hpp b/include/host_error_monitor.hpp
index 86f2e2d..4480256 100644
--- a/include/host_error_monitor.hpp
+++ b/include/host_error_monitor.hpp
@@ -73,9 +73,8 @@
     warmReset,
 };
 
-static inline void
-    handleRecovery(RecoveryType recovery,
-                   std::shared_ptr<sdbusplus::asio::connection> conn)
+static inline void handleRecovery(
+    RecoveryType recovery, std::shared_ptr<sdbusplus::asio::connection> conn)
 {
     switch (recovery)
     {
@@ -176,9 +175,8 @@
         "xyz.openbmc_project.BeepCode", "Beep", uint8_t(beepPriority));
 }
 
-[[maybe_unused]] static inline void
-    checkErrPinCPUs([[maybe_unused]] const size_t errPin,
-                    std::bitset<MAX_CPUS>& errPinCPUs)
+[[maybe_unused]] static inline void checkErrPinCPUs(
+    [[maybe_unused]] const size_t errPin, std::bitset<MAX_CPUS>& errPinCPUs)
 {
     errPinCPUs.reset();
 #ifdef LIBPECI
