SearchingMan commited on
Commit
bcd319e
·
verified ·
1 Parent(s): 3d43669

Add model card, workflows, and verified release evidence

Browse files
README.md CHANGED
@@ -94,6 +94,10 @@ A ready-to-use API/comfy-cli workflow is provided at
94
  It defaults to Whole W8A8 + INT8 T5. Change the diffusion-model and/or T5
95
  filename to test another combination.
96
 
 
 
 
 
97
  ## Paired quality evaluation
98
 
99
  Twenty 1024×1024 images were generated per pipeline with identical prompts, seeds, sampler, scheduler, guidance, steps, CLIP-L, and VAE. Metrics compare final 8-bit RGB images to Original BF16.
 
94
  It defaults to Whole W8A8 + INT8 T5. Change the diffusion-model and/or T5
95
  filename to test another combination.
96
 
97
+ A maintained copy is available in the general
98
+ [`comfy-workflows`](https://github.com/kgonia/comfy-workflows/blob/master/FLUX1_Dev_ConvRot_API.json)
99
+ repository for direct API use.
100
+
101
  ## Paired quality evaluation
102
 
103
  Twenty 1024×1024 images were generated per pipeline with identical prompts, seeds, sampler, scheduler, guidance, steps, CLIP-L, and VAE. Metrics compare final 8-bit RGB images to Original BF16.
release_manifest.json CHANGED
@@ -1,9 +1,9 @@
1
  {
2
  "schema_version": 1,
3
- "status": "ready_for_local_verification",
4
  "created_at": "2026-07-20T16:40:30Z",
5
  "suggested_repo_id": "SearchingMan/FLUX.1-dev-ConvRot",
6
- "remote_status": "not_created",
7
  "base_model": {
8
  "repo_id": "black-forest-labs/FLUX.1-dev",
9
  "revision": "3de623fc3c33e44ffbe2bad470d0f45bccf2eb21",
 
1
  {
2
  "schema_version": 1,
3
+ "status": "verified_private_uploaded",
4
  "created_at": "2026-07-20T16:40:30Z",
5
  "suggested_repo_id": "SearchingMan/FLUX.1-dev-ConvRot",
6
+ "remote_status": "private",
7
  "base_model": {
8
  "repo_id": "black-forest-labs/FLUX.1-dev",
9
  "revision": "3de623fc3c33e44ffbe2bad470d0f45bccf2eb21",
release_verification.json CHANGED
@@ -34,7 +34,7 @@
34
  "model_hashes_verified": true,
35
  "overview_sha256": "3af42bd633bd813f806ff8652a23e21b133004b012ef509656ce336914e914d0",
36
  "quality_source_grid_manifest_sha256": "22354490f79e3126d129098ad14d4baa07fbba43d8f9f9d4a2862f4a385b914d",
37
- "remote_status": "not_created",
38
  "schema_version": 1,
39
  "status": "PASS",
40
  "suggested_repo_id": "SearchingMan/FLUX.1-dev-ConvRot",
@@ -51,9 +51,9 @@
51
  "sha256": "89032e53e2394d6c57571ff9040feab2c0035836d0bb1bf5ea778f8436014c0a"
52
  },
53
  {
54
- "bytes": 8682,
55
  "path": "README.md",
56
- "sha256": "e89065eda3304345d8ea7b751013646277347f6ee78a7482d9eecd1294112175"
57
  },
58
  {
59
  "bytes": 1546,
@@ -81,9 +81,9 @@
81
  "sha256": "bfaa7cfcd14e55460cac0a63e6293ccc9bc6f25d31e2fd882d7c087f39e85bfc"
82
  },
83
  {
84
- "bytes": 4058,
85
  "path": "release_manifest.json",
86
- "sha256": "c90982a897a7ebdbf1938e9c0ad1486ba095eb41ad854467bb701b317a4c7a2b"
87
  },
88
  {
89
  "bytes": 7160,
@@ -91,14 +91,14 @@
91
  "sha256": "e38c568d5d2797fc6f70a0e7e2eca75e5e0a981c85652126e2ed575f55b7fa8d"
92
  },
93
  {
94
- "bytes": 6261,
95
  "path": "scripts/upload.py",
96
- "sha256": "7717d9a996bdc76c80fe81b022d381b9c5720de1cd0e8cc8ed864efc405990c5"
97
  },
98
  {
99
- "bytes": 7812,
100
  "path": "scripts/verify_release.py",
101
- "sha256": "b90a5074b0a4349c6cceba0461b95d3814f291b4a7309484eec03389962dac85"
102
  },
103
  {
104
  "bytes": 1848,
@@ -106,5 +106,5 @@
106
  "sha256": "b369b4acd6111fbb7549724eaeebf3c3325dad244590078f1428de44f1b2ac6e"
107
  }
108
  ],
109
- "verified_at": "2026-07-20T16:53:14+00:00"
110
  }
 
34
  "model_hashes_verified": true,
35
  "overview_sha256": "3af42bd633bd813f806ff8652a23e21b133004b012ef509656ce336914e914d0",
36
  "quality_source_grid_manifest_sha256": "22354490f79e3126d129098ad14d4baa07fbba43d8f9f9d4a2862f4a385b914d",
37
+ "remote_status": "private",
38
  "schema_version": 1,
39
  "status": "PASS",
40
  "suggested_repo_id": "SearchingMan/FLUX.1-dev-ConvRot",
 
51
  "sha256": "89032e53e2394d6c57571ff9040feab2c0035836d0bb1bf5ea778f8436014c0a"
52
  },
53
  {
54
+ "bytes": 8862,
55
  "path": "README.md",
56
+ "sha256": "1d705cabefc08431994f5cf69c272a9c979ac15856592f50742330596bea33e0"
57
  },
58
  {
59
  "bytes": 1546,
 
81
  "sha256": "bfaa7cfcd14e55460cac0a63e6293ccc9bc6f25d31e2fd882d7c087f39e85bfc"
82
  },
83
  {
84
+ "bytes": 4051,
85
  "path": "release_manifest.json",
86
+ "sha256": "0efc3908ee7c944ca9e498ab844df6dc0107c15e3ac41792386891f766daa97f"
87
  },
88
  {
89
  "bytes": 7160,
 
91
  "sha256": "e38c568d5d2797fc6f70a0e7e2eca75e5e0a981c85652126e2ed575f55b7fa8d"
92
  },
93
  {
94
+ "bytes": 6664,
95
  "path": "scripts/upload.py",
96
+ "sha256": "9662e578a9ed19ccbee0976094975a82c40645cb77ba30714cb17800a73999c3"
97
  },
98
  {
99
+ "bytes": 7868,
100
  "path": "scripts/verify_release.py",
101
+ "sha256": "b85b80ed1fea4db1231396090e2cec28204c9eb5351d9481fdadaa0b2d9ffbc2"
102
  },
103
  {
104
  "bytes": 1848,
 
106
  "sha256": "b369b4acd6111fbb7549724eaeebf3c3325dad244590078f1428de44f1b2ac6e"
107
  }
108
  ],
109
+ "verified_at": "2026-07-22T10:18:06+00:00"
110
  }
scripts/upload.py CHANGED
@@ -29,6 +29,11 @@ def parse_args() -> argparse.Namespace:
29
  )
30
  parser.add_argument("--revision", default="main")
31
  parser.add_argument("--execute", action="store_true", help="Perform network writes; default is dry-run.")
 
 
 
 
 
32
  parser.add_argument(
33
  "--create-private",
34
  action="store_true",
@@ -98,6 +103,7 @@ def main() -> int:
98
  "repo_id": args.repo_id,
99
  "revision": args.revision,
100
  "create_private": args.create_private,
 
101
  "support_root": str(ROOT),
102
  "artifact_total_bytes": manifest["artifact_total_bytes"],
103
  "artifacts": [
@@ -149,8 +155,12 @@ def main() -> int:
149
  path_in_repo=".",
150
  revision=args.revision,
151
  allow_patterns=support_paths,
 
152
  commit_message="Add model card, workflows, and verified release evidence",
153
  )
 
 
 
154
  for artifact in manifest["artifacts"]:
155
  source = model_root / artifact["source_relative_path"]
156
  api.upload_file(
 
29
  )
30
  parser.add_argument("--revision", default="main")
31
  parser.add_argument("--execute", action="store_true", help="Perform network writes; default is dry-run.")
32
+ parser.add_argument(
33
+ "--support-only",
34
+ action="store_true",
35
+ help="Upload documentation/evidence only; do not re-upload model artifacts.",
36
+ )
37
  parser.add_argument(
38
  "--create-private",
39
  action="store_true",
 
103
  "repo_id": args.repo_id,
104
  "revision": args.revision,
105
  "create_private": args.create_private,
106
+ "support_only": args.support_only,
107
  "support_root": str(ROOT),
108
  "artifact_total_bytes": manifest["artifact_total_bytes"],
109
  "artifacts": [
 
155
  path_in_repo=".",
156
  revision=args.revision,
157
  allow_patterns=support_paths,
158
+ ignore_patterns=["**/__pycache__/**", "**/*.pyc"],
159
  commit_message="Add model card, workflows, and verified release evidence",
160
  )
161
+ if args.support_only:
162
+ print(f"Support-file upload complete: https://huggingface.co/{args.repo_id}")
163
+ return 0
164
  for artifact in manifest["artifacts"]:
165
  source = model_root / artifact["source_relative_path"]
166
  api.upload_file(
scripts/verify_release.py CHANGED
@@ -65,8 +65,11 @@ def verify_regular_file(path: Path) -> None:
65
  def main() -> int:
66
  args = parse_args()
67
  manifest = load_json(MANIFEST_PATH)
68
- require(manifest.get("status") == "ready_for_local_verification", "release status drift")
69
- require(manifest.get("remote_status") == "not_created", "unexpected remote-status claim")
 
 
 
70
  required = manifest.get("required_repository_files")
71
  artifacts = manifest.get("artifacts")
72
  if not isinstance(required, list):
 
65
  def main() -> int:
66
  args = parse_args()
67
  manifest = load_json(MANIFEST_PATH)
68
+ require(
69
+ manifest.get("status") in {"ready_for_local_verification", "verified_private_uploaded"},
70
+ "release status drift",
71
+ )
72
+ require(manifest.get("remote_status") in {"not_created", "private"}, "remote-status drift")
73
  required = manifest.get("required_repository_files")
74
  artifacts = manifest.get("artifacts")
75
  if not isinstance(required, list):