diff --git a/include/tosa_generated.h b/include/tosa_generated.h
index edbc98e..df60b14 100644
--- a/include/tosa_generated.h
+++ b/include/tosa_generated.h
@@ -1959,7 +1959,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) &&
@@ -1985,7 +1985,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) {
@@ -2004,7 +2004,7 @@
     int32_t _major = 0,
     int32_t _minor = 40,
     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 21d841a..83d81d0 100644
--- a/include/tosa_serialization_handler.h
+++ b/include/tosa_serialization_handler.h
@@ -29,7 +29,7 @@
 #define TOSA_VERSION_MAJOR 0
 #define TOSA_VERSION_MINOR 40
 #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/serializer/tosa_serializer.py b/python/serializer/tosa_serializer.py
index 11eed1c..c723617 100644
--- a/python/serializer/tosa_serializer.py
+++ b/python/serializer/tosa_serializer.py
@@ -32,7 +32,7 @@
 TOSA_VERSION_MAJOR = 0
 TOSA_VERSION_MINOR = 40
 TOSA_VERSION_PATCH = 0
-TOSA_VERSION_DRAFT = True
+TOSA_VERSION_DRAFT = False
 TOSA_VERSION = [
     TOSA_VERSION_MAJOR,
     TOSA_VERSION_MINOR,
diff --git a/python/tosa/Version.py b/python/tosa/Version.py
index 689f2df..ea62385 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, 40)
 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/schema/tosa.fbs b/schema/tosa.fbs
index 6480648..c28a35a 100644
--- a/schema/tosa.fbs
+++ b/schema/tosa.fbs
@@ -278,7 +278,7 @@
   _major: int32 = 0;
   _minor: int32 = 40;
   _patch: int32 = 0;
-  _draft: bool = true;
+  _draft: bool = false;
 }
 
 table TosaTensor {
