diff --git a/include/tosa_generated.h b/include/tosa_generated.h
index bd56e4e..5079f1b 100644
--- a/include/tosa_generated.h
+++ b/include/tosa_generated.h
@@ -1999,7 +1999,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) &&
@@ -2025,7 +2025,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) {
@@ -2044,7 +2044,7 @@
     int32_t _major = 0,
     int32_t _minor = 30,
     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 695c530..301adb8 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 30
 #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 10372e4..a07068a 100644
--- a/python/serializer/tosa_serializer.py
+++ b/python/serializer/tosa_serializer.py
@@ -32,7 +32,7 @@
 TOSA_VERSION_MAJOR = 0
 TOSA_VERSION_MINOR = 30
 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 bdac948..4665aa3 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, 30)
 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 b342103..fef1f5e 100644
--- a/schema/tosa.fbs
+++ b/schema/tosa.fbs
@@ -281,7 +281,7 @@
   _major: int32 = 0;
   _minor: int32 = 30;
   _patch: int32 = 0;
-  _draft: bool = true;
+  _draft: bool = false;
 }
 
 table TosaTensor {
