diff --git a/include/tosa_generated.h b/include/tosa_generated.h
index 5a7ddba..27e7abe 100644
--- a/include/tosa_generated.h
+++ b/include/tosa_generated.h
@@ -2024,7 +2024,7 @@
     return GetField<int32_t>(VT__PATCH, 0);
   }
   bool _draft() const {
-    return GetField<uint8_t>(VT__DRAFT, 1) != 0;
+    return GetField<uint8_t>(VT__DRAFT, 0) != 0;
   }
   bool Verify(flatbuffers::Verifier &verifier) const {
     return VerifyTableStart(verifier) &&
@@ -2050,7 +2050,7 @@
     fbb_.AddElement<int32_t>(Version::VT__PATCH, _patch, 0);
   }
   void add__draft(bool _draft) {
-    fbb_.AddElement<uint8_t>(Version::VT__DRAFT, static_cast<uint8_t>(_draft), 1);
+    fbb_.AddElement<uint8_t>(Version::VT__DRAFT, static_cast<uint8_t>(_draft), 0);
   }
   explicit VersionBuilder(flatbuffers::FlatBufferBuilder &_fbb)
         : fbb_(_fbb) {
@@ -2069,7 +2069,7 @@
     int32_t _major = 0,
     int32_t _minor = 23,
     int32_t _patch = 0,
-    bool _draft = true) {
+    bool _draft = false) {
   VersionBuilder builder_(_fbb);
   builder_.add__patch(_patch);
   builder_.add__minor(_minor);
diff --git a/include/tosa_serialization_handler.h b/include/tosa_serialization_handler.h
index 61c02db..b67c002 100644
--- a/include/tosa_serialization_handler.h
+++ b/include/tosa_serialization_handler.h
@@ -30,7 +30,7 @@
 #define TOSA_VERSION_MAJOR 0
 #define TOSA_VERSION_MINOR 23
 #define TOSA_VERSION_PATCH 0
-#define TOSA_VERSION_DRAFT true
+#define TOSA_VERSION_DRAFT false
 #define TENSOR_BUFFER_FORCE_ALIGNMENT 8
 
 namespace tosa
diff --git a/python/tosa/Version.py b/python/tosa/Version.py
index 1b32d18..f12715d 100644
--- a/python/tosa/Version.py
+++ b/python/tosa/Version.py
@@ -50,11 +50,11 @@
         o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(10))
         if o != 0:
             return bool(self._tab.Get(flatbuffers.number_types.BoolFlags, o + self._tab.Pos))
-        return True
+        return False
 
 def VersionStart(builder): builder.StartObject(4)
 def VersionAdd_major(builder, Major): builder.PrependInt32Slot(0, Major, 0)
 def VersionAdd_minor(builder, Minor): builder.PrependInt32Slot(1, Minor, 23)
 def VersionAdd_patch(builder, Patch): builder.PrependInt32Slot(2, Patch, 0)
-def VersionAdd_draft(builder, Draft): builder.PrependBoolSlot(3, Draft, 1)
+def VersionAdd_draft(builder, Draft): builder.PrependBoolSlot(3, Draft, 0)
 def VersionEnd(builder): return builder.EndObject()
diff --git a/python/tosa_serializer.py b/python/tosa_serializer.py
index 3d0019e..c250305 100644
--- a/python/tosa_serializer.py
+++ b/python/tosa_serializer.py
@@ -39,7 +39,7 @@
 TOSA_VERSION_MAJOR = 0
 TOSA_VERSION_MINOR = 23
 TOSA_VERSION_PATCH = 0
-TOSA_VERSION_DRAFT = True
+TOSA_VERSION_DRAFT = False
 TOSA_VERSION = [TOSA_VERSION_MAJOR,
                 TOSA_VERSION_MINOR,
                 TOSA_VERSION_PATCH,
diff --git a/schema/tosa.fbs b/schema/tosa.fbs
index 8977f59..885eb62 100644
--- a/schema/tosa.fbs
+++ b/schema/tosa.fbs
@@ -283,7 +283,7 @@
   _major: int32 = 0;
   _minor: int32 = 23;
   _patch: int32 = 0;
-  _draft: bool = true;
+  _draft: bool = false;
 }
 
 table TosaTensor {
