ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s

This commit is contained in:
2026-08-20 13:12:50 +00:00
commit b119135836
10275 changed files with 3284984 additions and 0 deletions
@@ -0,0 +1,13 @@
Blender 4.3.2
build date: 2024-12-17
build time: 02:14:25
build commit date: 2024-12-16
build commit time: 21:10
build hash: 32f5fdce0a0a
build branch: blender-v4.3-release
build platform: Darwin
build type: Release
build c flags: -Wall -Werror=implicit-function-declaration -Werror=return-type -Wno-tautological-compare -Wno-unknown-pragmas -Wno-char-subscripts -Wstrict-prototypes -Wmissing-prototypes -Wunused-parameter -Wundef -Wundef-prefix -Werror=unguarded-availability-new -mmacosx-version-min=11.2 -Xclang -fopenmp -I'/Users/blender/git/blender-v430/blender.git/lib/macos_arm64/openmp/include' -std=gnu11 -pipe -funsigned-char -fno-strict-aliasing -ffp-contract=off
build c++ flags: -Wall -Wc++20-designator -Wno-tautological-compare -Wno-unknown-pragmas -Wno-char-subscripts -Wno-overloaded-virtual -Wno-sign-compare -Wno-invalid-offsetof -Wno-suggest-override -Wundef -Wundef-prefix -Wunused-parameter -Wmismatched-tags -Werror=unguarded-availability-new -mmacosx-version-min=11.2 -ftemplate-depth=1024 -Xclang -fopenmp -I'/Users/blender/git/blender-v430/blender.git/lib/macos_arm64/openmp/include' -pipe -funsigned-char -fno-strict-aliasing -ffp-contract=off
build link flags: -fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework Metal -framework QuartzCore -framework Accelerate -liconv -Wl,-unexported_symbols_list,'/Users/blender/git/blender-v430/blender.git/source/creator/symbols_apple.map' -Xlinker -no_warn_duplicate_libraries
build system: CMake
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

@@ -0,0 +1,334 @@
{
"request": "Cut out the shot of the large white rabbit walking alone in the sunny meadow, slow it to 1.5x duration, and add the subtitle BIG BUNNY along the bottom.",
"target": "the single continuous shot showing the large white rabbit walking alone in a sunny green meadow, after the ONE BIG RABBIT title and before the THREE RODENTS title",
"coarse_interval_s": 10,
"coarse_frames": [
{
"timestamp_s": 0.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/coarse/frame-000.00.png",
"sha256": "cdd5c7f27f84347a40eb467c356c5a2fda3facdad9057f246034e355b89dcfdd",
"bytes": 1580
},
{
"timestamp_s": 10.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/coarse/frame-010.00.png",
"sha256": "bdf01683fab23e1e98099d0f6e19596eabcd96ddb1c643b3d0c6749b5f2995a9",
"bytes": 288771
},
{
"timestamp_s": 20.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/coarse/frame-020.00.png",
"sha256": "713c2f7a5db41b01640dbae71ef4d5057c382dd1480d9e31bcc3f6d05c9da52b",
"bytes": 183618
},
{
"timestamp_s": 30.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/coarse/frame-030.00.png",
"sha256": "ce5d5733e716607000f9d6aef75dbb9b31279dd50e7db7c6c1e714819624224a",
"bytes": 264372
},
{
"timestamp_s": 31.495,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/coarse/frame-031.50.png",
"sha256": "57e555d305ac18228155454935f9a411a9e21ccc092348997f8e3299d4011b89",
"bytes": 40146
}
],
"coarse_result": {
"start": 10.0,
"end": 20.0,
"reason": "The 10.00s frame shows a large white rabbit standing alone in a sunny green meadow with a backdrop of mountains and clouds. The next frame at 20.00s transitions to three rodents in a different setting, indicating the rabbit shot is continuous between these timestamps."
},
"fine_interval_s": 1,
"fine_window": [
5,
25
],
"fine_frames": [
{
"timestamp_s": 5.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-005.00.png",
"sha256": "7bf0f2f437e8781ac96e6a27b41f975189c3784dbd3368672d43fd4b2d92813a",
"bytes": 451029
},
{
"timestamp_s": 6.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-006.00.png",
"sha256": "618ee855deb607995c0be98d0a64db5614c4f851837af105e0672822947fe361",
"bytes": 451002
},
{
"timestamp_s": 7.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-007.00.png",
"sha256": "40e9724ee1834abee7d12002cd83a4120738b0ffd0a294741c25c2135edb02b8",
"bytes": 196294
},
{
"timestamp_s": 8.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-008.00.png",
"sha256": "1da6191f1a0c6ccc987a8e5d0682d7e664aa4ce8b8ce31d232bec5ae695b0c4e",
"bytes": 25229
},
{
"timestamp_s": 9.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-009.00.png",
"sha256": "c0358569f2defb8cfdcd0c73393fc2e75cab6168920819a7c0d28395389132b7",
"bytes": 26259
},
{
"timestamp_s": 10.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-010.00.png",
"sha256": "bdf01683fab23e1e98099d0f6e19596eabcd96ddb1c643b3d0c6749b5f2995a9",
"bytes": 288771
},
{
"timestamp_s": 11.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-011.00.png",
"sha256": "c1abe47a8bd0e10472b75a472cea78ff24613c64ccc74ffba9b566d71336c4f4",
"bytes": 290263
},
{
"timestamp_s": 12.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-012.00.png",
"sha256": "5833475f37ad6ccc7f98c953193368b11c4f3390d1633e224b0a43514c7aa2ec",
"bytes": 23585
},
{
"timestamp_s": 13.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-013.00.png",
"sha256": "f14dca5370861a1b1f1ee95d1e00172314f27e60ec9f3451a16e08efb46cabf4",
"bytes": 24310
},
{
"timestamp_s": 14.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-014.00.png",
"sha256": "ab5ed49e0a1267d80e53bc524db96a521aedf419d4a2e766463bd58fc2cbd96a",
"bytes": 290328
},
{
"timestamp_s": 15.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-015.00.png",
"sha256": "101c7a220045bdad559ffabcf2345a307c4b2a8ace71c1f289f861cb5ac8dfcf",
"bytes": 337454
},
{
"timestamp_s": 16.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-016.00.png",
"sha256": "6b674c7689ae86485ce112daa9a14cbd4334d3c41cbc12bcc8a06b0c34c3d0bd",
"bytes": 118937
},
{
"timestamp_s": 17.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-017.00.png",
"sha256": "44134f20bffcd9fb57c3ca421a7be03fa2596962423a955140bf44e3d5c2582b",
"bytes": 24201
},
{
"timestamp_s": 18.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-018.00.png",
"sha256": "bf44d8b974343063293c92d2933edd0e9a711802d44753f5c0c8b4f4cf3406aa",
"bytes": 25412
},
{
"timestamp_s": 19.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-019.00.png",
"sha256": "7d2fdecd1cff9d025880e069d111c9e8aa0c488dd1e570b62f5147a136543271",
"bytes": 78776
},
{
"timestamp_s": 20.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-020.00.png",
"sha256": "713c2f7a5db41b01640dbae71ef4d5057c382dd1480d9e31bcc3f6d05c9da52b",
"bytes": 183618
},
{
"timestamp_s": 21.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-021.00.png",
"sha256": "c9758159919eb5f8612e3af01258d1c7792d446ca5c08add2ff3dcd3b97e7617",
"bytes": 96371
},
{
"timestamp_s": 22.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-022.00.png",
"sha256": "54b41278b256654341515bee8f7adb3166bdb15c90f3da9f7f47eb72cad77d33",
"bytes": 192864
},
{
"timestamp_s": 23.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-023.00.png",
"sha256": "3e49ae19ac287a5acdcff0db46d93d3ca77f98d039d9c53f07210466a323b5b3",
"bytes": 22428
},
{
"timestamp_s": 24.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-024.00.png",
"sha256": "6eb1ae362db441052be6685922270fcd86572c8b223e99a41a519424ac113c0d",
"bytes": 24410
},
{
"timestamp_s": 25.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/fine/frame-025.00.png",
"sha256": "354595be0073fcaed614da1ff41177f01e54f74b63f5614ed5033a9c00e0a773",
"bytes": 211411
}
],
"fine_result": {
"start": 9.0,
"end": 12.0,
"reason": "The large white rabbit is shown alone in a sunny green meadow with mountains and pink clouds at 10.00s and 11.00s, between the 'ONE BIG RABBIT' title (ends at 9.00s) and 'THREE RODENTS' title (starts at 12.00s), with consistent visual elements indicating a single continuous shot."
},
"ground_truth": {
"start": 9.08,
"end": 11.2
},
"start_error_s": 0.08,
"end_error_s": 0.8,
"reviewer_driven_refinements": [
{
"round": 1,
"prior_interval": [
9.0,
12.0
],
"source_frames": [
{
"timestamp_s": 8.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-008.00.png",
"sha256": "1da6191f1a0c6ccc987a8e5d0682d7e664aa4ce8b8ce31d232bec5ae695b0c4e",
"bytes": 25229
},
{
"timestamp_s": 8.25,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-008.25.png",
"sha256": "fc4e9dfec0220c38b50fa199c95332eba6ad403d683042318e059c8cc0d06d57",
"bytes": 26862
},
{
"timestamp_s": 8.5,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-008.50.png",
"sha256": "23520885852103457d35c7f97617da0090763888261c4b5003793c6d6b48b070",
"bytes": 27408
},
{
"timestamp_s": 8.75,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-008.75.png",
"sha256": "a26f15eb86f4d0633cc3f6ed4659e500e3480d6a93703bd961d920d58cb22dcb",
"bytes": 27826
},
{
"timestamp_s": 9.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-009.00.png",
"sha256": "c0358569f2defb8cfdcd0c73393fc2e75cab6168920819a7c0d28395389132b7",
"bytes": 26259
},
{
"timestamp_s": 9.25,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-009.25.png",
"sha256": "23b0a10b6440ac809301ebdae5ef3e174440c51c1bdbe1e341daa1811b32b6ec",
"bytes": 281564
},
{
"timestamp_s": 9.5,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-009.50.png",
"sha256": "b1534ad39b5d73921220488351b56de61e387f02d0d2d63007bba0947dde64c8",
"bytes": 282016
},
{
"timestamp_s": 9.75,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-009.75.png",
"sha256": "ac5db4099b689927bb0e3b91f6d9a402b5c28576b0c759a8c8430ea090ede3f0",
"bytes": 281200
},
{
"timestamp_s": 10.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-010.00.png",
"sha256": "bdf01683fab23e1e98099d0f6e19596eabcd96ddb1c643b3d0c6749b5f2995a9",
"bytes": 288771
},
{
"timestamp_s": 10.25,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-010.25.png",
"sha256": "077c87cb4d94b1d0647968b48fd9ae3dfe73b3b83e7052b718b0c2a1638884e9",
"bytes": 290424
},
{
"timestamp_s": 10.5,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-010.50.png",
"sha256": "1702da4cdbf746a8f5b3b3ea1dbbe20065810e896cf5eead3b4e0e899a95ace6",
"bytes": 290739
},
{
"timestamp_s": 10.75,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-010.75.png",
"sha256": "f4b896f7e565cbe8753020129ce1d2420ef7fa1d7d5e35274a544cb91ecefc05",
"bytes": 290790
},
{
"timestamp_s": 11.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-011.00.png",
"sha256": "c1abe47a8bd0e10472b75a472cea78ff24613c64ccc74ffba9b566d71336c4f4",
"bytes": 290263
},
{
"timestamp_s": 11.25,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-011.25.png",
"sha256": "bd9c57afa81fbcb2dfd6aa1fafe0e4bfcd3da4e13b69b8086234b26906923bb1",
"bytes": 22691
},
{
"timestamp_s": 11.5,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-011.50.png",
"sha256": "7a00b9b759b7ea49228504de9b4481be13a24b86bba9284899c48ee6c39c24f6",
"bytes": 24009
},
{
"timestamp_s": 11.75,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-011.75.png",
"sha256": "42f8c635d8ec11df1d542340fe5bb977a9d9799878937ecac77366bfa2fd3897",
"bytes": 24402
},
{
"timestamp_s": 12.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-012.00.png",
"sha256": "5833475f37ad6ccc7f98c953193368b11c4f3390d1633e224b0a43514c7aa2ec",
"bytes": 23585
},
{
"timestamp_s": 12.25,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-012.25.png",
"sha256": "5459ffd9787260f9f96f16464e7a8842c5535f4a725eaee8d7b6f114a0ff6e45",
"bytes": 24966
},
{
"timestamp_s": 12.5,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-012.50.png",
"sha256": "47974ae09fd7f2f4affdf06dba5aa92e16dca70da873cd1f631171f46e8dccf9",
"bytes": 25722
},
{
"timestamp_s": 12.75,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-012.75.png",
"sha256": "cd6c95353c889323e7af0f0768a65c310ce0d4cc7aa2651b83a528805ddbd10f",
"bytes": 26543
},
{
"timestamp_s": 13.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-013.00.png",
"sha256": "f14dca5370861a1b1f1ee95d1e00172314f27e60ec9f3451a16e08efb46cabf4",
"bytes": 24310
}
],
"result": {
"start": 9.25,
"end": 11.0,
"reason": "visual boundary evidence"
}
}
],
"final_interval": [
9.25,
11.0
],
"final_start_error_s": 0.17,
"final_end_error_s": 0.2
}
@@ -0,0 +1,390 @@
{
"schema_version": "1.0",
"experiment": "5-6",
"run_id": "exp5-6-real-blender-20260730-055102",
"generated_at_utc": "2026-07-29T22:02:57Z",
"provider": "ark",
"model": "doubao-seed-1-6-250615",
"source_url": "https://download.blender.org/peach/trailer/trailer_480p.mov",
"source_sha256": "36801b74638c12be9aa587e93cd18edfc9bc51a1c089ab2a19ee42beed9f497d",
"blender_binary": "/Applications/Blender.app/Contents/MacOS/Blender",
"blender_version": "Blender 4.3.2",
"localization": {
"predicted": [
9.25,
11.0
],
"ground_truth": [
9.08,
11.2
],
"errors_s": [
0.17,
0.2
],
"reviewer_driven_refinement_rounds": 1
},
"final_video": {
"path": "final.mp4",
"sha256": "1b90aaecbddb60ec1bef6b02757c7467a59284f3cb35fb195e5e0c1d512e42b4",
"probe": {
"programs": [],
"stream_groups": [],
"streams": [
{
"index": 0,
"codec_name": "h264",
"codec_type": "video",
"width": 854,
"height": 480,
"r_frame_rate": "25/1"
},
{
"index": 1,
"codec_name": "aac",
"codec_type": "audio",
"sample_rate": "48000",
"channels": 2,
"r_frame_rate": "0/0"
}
],
"format": {
"format_name": "mov,mp4,m4a,3gp,3g2,mj2",
"duration": "2.645000",
"size": "318571"
}
}
},
"model_call_count": 13,
"gates": {
"pinned_real_public_multiscene_source": true,
"coarse_real_vision_about_10_seconds": true,
"fine_real_vision_every_1_second": true,
"start_boundary_error_le_3s": true,
"end_boundary_error_le_3s": true,
"model_generated_blender_python": true,
"actual_blender_execution": true,
"reviewer_rejected_bad_edit": true,
"reviewer_triggered_correction": true,
"reviewer_accepted_corrected_pixels": true,
"subtitle_visually_verified": true,
"slow_motion_duration_verified": true,
"final_format_and_quality": true,
"raw_receipts_usage_latency_complete": true
},
"artifacts": {
"blender_logs/corrected-final-attempt-1.log": {
"sha256": "80f96d1d2a6a49e260e9809317dc40299e05181394e5b3110141d71b986551b5",
"bytes": 593
},
"blender_logs/corrected-final-attempt-2.log": {
"sha256": "2fec44809211c67c31f5885b50ba0dd0625eec50361ad8eb0697fa99b2f8d012",
"bytes": 419
},
"blender_logs/corrected-final-attempt-4.log": {
"sha256": "c1605819fd5a3dc505bbbee8a51646d821da2d7e69ca160211fc3d0ff129ba18",
"bytes": 5790
},
"blender_logs/corrected-final-refinement-1-attempt-1.log": {
"sha256": "41c72db03b43c429a5f21f1988725285ad35f85ce6ac0706ad5b0947b3caeed2",
"bytes": 606
},
"blender_logs/corrected-final-refinement-1-attempt-2.log": {
"sha256": "71c23904c15612460d1ab33812e111a758e0b02da56db2b28eeb079d2f418a0c",
"bytes": 3431
},
"blender_logs/negative-control-attempt-1.log": {
"sha256": "dd986adbcefdb8e98a7e4e919d5f9d373c47edb8c6b93db48b933dc17de81f58",
"bytes": 5790
},
"blender_version.txt": {
"sha256": "00e6c06c282a7115cc4f1aaf9a3c8ff7e7d09f25f0f15f32568baa0815f662b4",
"bytes": 1641
},
"final.mp4": {
"sha256": "1b90aaecbddb60ec1bef6b02757c7467a59284f3cb35fb195e5e0c1d512e42b4",
"bytes": 318571
},
"frames/boundary-refinement-1/frame-008.00.png": {
"sha256": "1da6191f1a0c6ccc987a8e5d0682d7e664aa4ce8b8ce31d232bec5ae695b0c4e",
"bytes": 25229
},
"frames/boundary-refinement-1/frame-008.25.png": {
"sha256": "fc4e9dfec0220c38b50fa199c95332eba6ad403d683042318e059c8cc0d06d57",
"bytes": 26862
},
"frames/boundary-refinement-1/frame-008.50.png": {
"sha256": "23520885852103457d35c7f97617da0090763888261c4b5003793c6d6b48b070",
"bytes": 27408
},
"frames/boundary-refinement-1/frame-008.75.png": {
"sha256": "a26f15eb86f4d0633cc3f6ed4659e500e3480d6a93703bd961d920d58cb22dcb",
"bytes": 27826
},
"frames/boundary-refinement-1/frame-009.00.png": {
"sha256": "c0358569f2defb8cfdcd0c73393fc2e75cab6168920819a7c0d28395389132b7",
"bytes": 26259
},
"frames/boundary-refinement-1/frame-009.25.png": {
"sha256": "23b0a10b6440ac809301ebdae5ef3e174440c51c1bdbe1e341daa1811b32b6ec",
"bytes": 281564
},
"frames/boundary-refinement-1/frame-009.50.png": {
"sha256": "b1534ad39b5d73921220488351b56de61e387f02d0d2d63007bba0947dde64c8",
"bytes": 282016
},
"frames/boundary-refinement-1/frame-009.75.png": {
"sha256": "ac5db4099b689927bb0e3b91f6d9a402b5c28576b0c759a8c8430ea090ede3f0",
"bytes": 281200
},
"frames/boundary-refinement-1/frame-010.00.png": {
"sha256": "bdf01683fab23e1e98099d0f6e19596eabcd96ddb1c643b3d0c6749b5f2995a9",
"bytes": 288771
},
"frames/boundary-refinement-1/frame-010.25.png": {
"sha256": "077c87cb4d94b1d0647968b48fd9ae3dfe73b3b83e7052b718b0c2a1638884e9",
"bytes": 290424
},
"frames/boundary-refinement-1/frame-010.50.png": {
"sha256": "1702da4cdbf746a8f5b3b3ea1dbbe20065810e896cf5eead3b4e0e899a95ace6",
"bytes": 290739
},
"frames/boundary-refinement-1/frame-010.75.png": {
"sha256": "f4b896f7e565cbe8753020129ce1d2420ef7fa1d7d5e35274a544cb91ecefc05",
"bytes": 290790
},
"frames/boundary-refinement-1/frame-011.00.png": {
"sha256": "c1abe47a8bd0e10472b75a472cea78ff24613c64ccc74ffba9b566d71336c4f4",
"bytes": 290263
},
"frames/boundary-refinement-1/frame-011.25.png": {
"sha256": "bd9c57afa81fbcb2dfd6aa1fafe0e4bfcd3da4e13b69b8086234b26906923bb1",
"bytes": 22691
},
"frames/boundary-refinement-1/frame-011.50.png": {
"sha256": "7a00b9b759b7ea49228504de9b4481be13a24b86bba9284899c48ee6c39c24f6",
"bytes": 24009
},
"frames/boundary-refinement-1/frame-011.75.png": {
"sha256": "42f8c635d8ec11df1d542340fe5bb977a9d9799878937ecac77366bfa2fd3897",
"bytes": 24402
},
"frames/boundary-refinement-1/frame-012.00.png": {
"sha256": "5833475f37ad6ccc7f98c953193368b11c4f3390d1633e224b0a43514c7aa2ec",
"bytes": 23585
},
"frames/boundary-refinement-1/frame-012.25.png": {
"sha256": "5459ffd9787260f9f96f16464e7a8842c5535f4a725eaee8d7b6f114a0ff6e45",
"bytes": 24966
},
"frames/boundary-refinement-1/frame-012.50.png": {
"sha256": "47974ae09fd7f2f4affdf06dba5aa92e16dca70da873cd1f631171f46e8dccf9",
"bytes": 25722
},
"frames/boundary-refinement-1/frame-012.75.png": {
"sha256": "cd6c95353c889323e7af0f0768a65c310ce0d4cc7aa2651b83a528805ddbd10f",
"bytes": 26543
},
"frames/boundary-refinement-1/frame-013.00.png": {
"sha256": "f14dca5370861a1b1f1ee95d1e00172314f27e60ec9f3451a16e08efb46cabf4",
"bytes": 24310
},
"frames/coarse/frame-000.00.png": {
"sha256": "cdd5c7f27f84347a40eb467c356c5a2fda3facdad9057f246034e355b89dcfdd",
"bytes": 1580
},
"frames/coarse/frame-010.00.png": {
"sha256": "bdf01683fab23e1e98099d0f6e19596eabcd96ddb1c643b3d0c6749b5f2995a9",
"bytes": 288771
},
"frames/coarse/frame-020.00.png": {
"sha256": "713c2f7a5db41b01640dbae71ef4d5057c382dd1480d9e31bcc3f6d05c9da52b",
"bytes": 183618
},
"frames/coarse/frame-030.00.png": {
"sha256": "ce5d5733e716607000f9d6aef75dbb9b31279dd50e7db7c6c1e714819624224a",
"bytes": 264372
},
"frames/coarse/frame-031.50.png": {
"sha256": "57e555d305ac18228155454935f9a411a9e21ccc092348997f8e3299d4011b89",
"bytes": 40146
},
"frames/final-review/frame-000.35.png": {
"sha256": "ba21afabc4197a93b06d4d78ed6f2dff568601b2b94425856efaf5606e49b9bb",
"bytes": 229388
},
"frames/final-review/frame-002.25.png": {
"sha256": "389dd8b56fbc2d21af80ebb8f55895602050601915d1b19274e04d2e5678be47",
"bytes": 245324
},
"frames/final-review/frame-004.15.png": {
"sha256": "261fbc9ee0b8784f1d4a1f84b34489c5baf3824b6467c82a7673e4b836f97cf0",
"bytes": 36595
},
"frames/final-review-refinement-1/frame-000.35.png": {
"sha256": "318985a482450fd2a6f49a6fb7c03799fb1667ed7cf976b3a46ad8a8d66ed99c",
"bytes": 230155
},
"frames/final-review-refinement-1/frame-001.32.png": {
"sha256": "2513be4492f64f354e1879bfac985b549453051fd99bf32a881d67b87a7313b4",
"bytes": 244323
},
"frames/final-review-refinement-1/frame-002.29.png": {
"sha256": "f23ba046874e6929a86e2186ed0be38e7edda7913b288ab3df3b9cd1aa65cd14",
"bytes": 245024
},
"frames/fine/frame-005.00.png": {
"sha256": "7bf0f2f437e8781ac96e6a27b41f975189c3784dbd3368672d43fd4b2d92813a",
"bytes": 451029
},
"frames/fine/frame-006.00.png": {
"sha256": "618ee855deb607995c0be98d0a64db5614c4f851837af105e0672822947fe361",
"bytes": 451002
},
"frames/fine/frame-007.00.png": {
"sha256": "40e9724ee1834abee7d12002cd83a4120738b0ffd0a294741c25c2135edb02b8",
"bytes": 196294
},
"frames/fine/frame-008.00.png": {
"sha256": "1da6191f1a0c6ccc987a8e5d0682d7e664aa4ce8b8ce31d232bec5ae695b0c4e",
"bytes": 25229
},
"frames/fine/frame-009.00.png": {
"sha256": "c0358569f2defb8cfdcd0c73393fc2e75cab6168920819a7c0d28395389132b7",
"bytes": 26259
},
"frames/fine/frame-010.00.png": {
"sha256": "bdf01683fab23e1e98099d0f6e19596eabcd96ddb1c643b3d0c6749b5f2995a9",
"bytes": 288771
},
"frames/fine/frame-011.00.png": {
"sha256": "c1abe47a8bd0e10472b75a472cea78ff24613c64ccc74ffba9b566d71336c4f4",
"bytes": 290263
},
"frames/fine/frame-012.00.png": {
"sha256": "5833475f37ad6ccc7f98c953193368b11c4f3390d1633e224b0a43514c7aa2ec",
"bytes": 23585
},
"frames/fine/frame-013.00.png": {
"sha256": "f14dca5370861a1b1f1ee95d1e00172314f27e60ec9f3451a16e08efb46cabf4",
"bytes": 24310
},
"frames/fine/frame-014.00.png": {
"sha256": "ab5ed49e0a1267d80e53bc524db96a521aedf419d4a2e766463bd58fc2cbd96a",
"bytes": 290328
},
"frames/fine/frame-015.00.png": {
"sha256": "101c7a220045bdad559ffabcf2345a307c4b2a8ace71c1f289f861cb5ac8dfcf",
"bytes": 337454
},
"frames/fine/frame-016.00.png": {
"sha256": "6b674c7689ae86485ce112daa9a14cbd4334d3c41cbc12bcc8a06b0c34c3d0bd",
"bytes": 118937
},
"frames/fine/frame-017.00.png": {
"sha256": "44134f20bffcd9fb57c3ca421a7be03fa2596962423a955140bf44e3d5c2582b",
"bytes": 24201
},
"frames/fine/frame-018.00.png": {
"sha256": "bf44d8b974343063293c92d2933edd0e9a711802d44753f5c0c8b4f4cf3406aa",
"bytes": 25412
},
"frames/fine/frame-019.00.png": {
"sha256": "7d2fdecd1cff9d025880e069d111c9e8aa0c488dd1e570b62f5147a136543271",
"bytes": 78776
},
"frames/fine/frame-020.00.png": {
"sha256": "713c2f7a5db41b01640dbae71ef4d5057c382dd1480d9e31bcc3f6d05c9da52b",
"bytes": 183618
},
"frames/fine/frame-021.00.png": {
"sha256": "c9758159919eb5f8612e3af01258d1c7792d446ca5c08add2ff3dcd3b97e7617",
"bytes": 96371
},
"frames/fine/frame-022.00.png": {
"sha256": "54b41278b256654341515bee8f7adb3166bdb15c90f3da9f7f47eb72cad77d33",
"bytes": 192864
},
"frames/fine/frame-023.00.png": {
"sha256": "3e49ae19ac287a5acdcff0db46d93d3ca77f98d039d9c53f07210466a323b5b3",
"bytes": 22428
},
"frames/fine/frame-024.00.png": {
"sha256": "6eb1ae362db441052be6685922270fcd86572c8b223e99a41a519424ac113c0d",
"bytes": 24410
},
"frames/fine/frame-025.00.png": {
"sha256": "354595be0073fcaed614da1ff41177f01e54f74b63f5614ed5033a9c00e0a773",
"bytes": 211411
},
"frames/negative-review/frame-000.35.png": {
"sha256": "113732852a3ed623001cbef9e71c10af0b5f60753be8b1f41a14a578d97cee8e",
"bytes": 21114
},
"frames/negative-review/frame-002.25.png": {
"sha256": "c8965c10e2311c9752fbfccf9b268dff49100ab8e51cda96462ab831e0e6cbce",
"bytes": 44712
},
"frames/negative-review/frame-004.15.png": {
"sha256": "9cce535f13d961323b049feee88d0fc73e689502f4679d935d141588139470c8",
"bytes": 45469
},
"localization.json": {
"sha256": "8115c752005566290aff8fff47d8f47043fa677523d0293f08b2f1d10331a789",
"bytes": 16342
},
"negative_control.mp4": {
"sha256": "f4686fe209f7555644874aa8d1e6a6623a6add5b263f430f3ea2ab2a87b7cc04",
"bytes": 209061
},
"provider_receipts.checkpoint.json": {
"sha256": "a93a5d1cbbe403e92b7ecd7bc929d6ce0f6b49c5892b6bade1332ae4410ca09e",
"bytes": 88210
},
"provider_receipts.json": {
"sha256": "a93a5d1cbbe403e92b7ecd7bc929d6ce0f6b49c5892b6bade1332ae4410ca09e",
"bytes": 88210
},
"review.json": {
"sha256": "f5fc7e6bc94d01eb0daf3f2bea2be8000d029165b011d2d1229323da551285bc",
"bytes": 22176
},
"scripts/corrected-final-attempt-1.py": {
"sha256": "22622e294869673f1208a8e9f86d2cccfd927a980b1f126ff3dff1419d8dffeb",
"bytes": 2146
},
"scripts/corrected-final-attempt-2.py": {
"sha256": "3494f448c5eedffa860d43d1868c67735d7b2eed3705265cd54d88fb690e5d43",
"bytes": 2048
},
"scripts/corrected-final-attempt-3.py": {
"sha256": "ad139c38b88aa73881e1b4a993352c8acfe806143c56f33f3f8a931ca1f79395",
"bytes": 2372
},
"scripts/corrected-final-attempt-4.py": {
"sha256": "1b429705696a0cfaf93cad3292fd20ad3418472d552f4e8733be1f1f8bdcd19a",
"bytes": 1953
},
"scripts/corrected-final-refinement-1-attempt-1.py": {
"sha256": "2a093b9fd7eab1b389a773407b46154c514d4d2de74405eb981141affa90811f",
"bytes": 2117
},
"scripts/corrected-final-refinement-1-attempt-2.py": {
"sha256": "1a5546408058cf73635f6a4f4ca6ce0390420a1a58a7221ad3ed8805f34f5733",
"bytes": 2281
},
"scripts/negative-control-attempt-1.py": {
"sha256": "d2b626a4db0e6f47704eb395b76122fa82b389aaddc4040304726d6d6fd045d9",
"bytes": 2231
},
"source.mov": {
"sha256": "36801b74638c12be9aa587e93cd18edfc9bc51a1c089ab2a19ee42beed9f497d",
"bytes": 11061011
},
"source_evidence.json": {
"sha256": "9c6c34b89b43eef4697a5500fde897b7c5c0930459e677855cd568e6bcdd6164",
"bytes": 1379
}
},
"official_complete": true
}
@@ -0,0 +1,433 @@
{
"negative_control": {
"plan": {
"start": 0.0,
"end": 3.0,
"effects": [
"slowmo:1.5",
"subtitle:BIG BUNNY"
]
},
"render": {
"attempts": [
{
"attempt": 1,
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/negative-control-attempt-1.py",
"script_sha256": "d2b626a4db0e6f47704eb395b76122fa82b389aaddc4040304726d6d6fd045d9",
"blender_log": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/blender_logs/negative-control-attempt-1.log",
"blender_log_sha256": "dd986adbcefdb8e98a7e4e919d5f9d373c47edb8c6b93db48b933dc17de81f58",
"blender_exit_code": 0,
"blender_latency_s": 1.842,
"accepted": true
}
],
"accepted_script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/negative-control-attempt-1.py",
"output": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/negative_control.mp4"
},
"review": {
"pass": false,
"target_present": false,
"irrelevant_content_present": true,
"subtitle_visible": true,
"feedback": "All keyframes show title cards with 'THE PEACH OPEN MOVIE PROJECT PRESENTS' and 'BIG BUNNY' on a gray background; no large white rabbit in a sunny green meadow is visible. Target shot (rabbit in meadow) is absent, and irrelevant title card content is present."
},
"frames": [
{
"timestamp_s": 0.35,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/negative-review/frame-000.35.png",
"sha256": "113732852a3ed623001cbef9e71c10af0b5f60753be8b1f41a14a578d97cee8e",
"bytes": 21114
},
{
"timestamp_s": 2.251,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/negative-review/frame-002.25.png",
"sha256": "c8965c10e2311c9752fbfccf9b268dff49100ab8e51cda96462ab831e0e6cbce",
"bytes": 44712
},
{
"timestamp_s": 4.151,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/negative-review/frame-004.15.png",
"sha256": "9cce535f13d961323b049feee88d0fc73e689502f4679d935d141588139470c8",
"bytes": 45469
}
]
},
"correction_triggered": true,
"correction_rounds": [
{
"round": 0,
"kind": "initial_fine_localization",
"plan": {
"start": 9.0,
"end": 12.0,
"effects": [
"slowmo:1.5",
"subtitle:BIG BUNNY"
]
},
"render": {
"attempts": [
{
"attempt": 1,
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-attempt-1.py",
"script_sha256": "22622e294869673f1208a8e9f86d2cccfd927a980b1f126ff3dff1419d8dffeb",
"blender_log": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/blender_logs/corrected-final-attempt-1.log",
"blender_log_sha256": "80f96d1d2a6a49e260e9809317dc40299e05181394e5b3110141d71b986551b5",
"blender_exit_code": 0,
"blender_latency_s": 0.569,
"accepted": false
},
{
"attempt": 2,
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-attempt-2.py",
"script_sha256": "3494f448c5eedffa860d43d1868c67735d7b2eed3705265cd54d88fb690e5d43",
"blender_log": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/blender_logs/corrected-final-attempt-2.log",
"blender_log_sha256": "2fec44809211c67c31f5885b50ba0dd0625eec50361ad8eb0697fa99b2f8d012",
"blender_exit_code": 0,
"blender_latency_s": 0.596,
"accepted": false
},
{
"attempt": 3,
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-attempt-3.py",
"accepted": false,
"error": "Static safety/API validation failed: SyntaxError: unmatched ')' (<unknown>, line 11)"
},
{
"attempt": 4,
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-attempt-4.py",
"script_sha256": "1b429705696a0cfaf93cad3292fd20ad3418472d552f4e8733be1f1f8bdcd19a",
"blender_log": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/blender_logs/corrected-final-attempt-4.log",
"blender_log_sha256": "c1605819fd5a3dc505bbbee8a51646d821da2d7e69ca160211fc3d0ff129ba18",
"blender_exit_code": 0,
"blender_latency_s": 2.702,
"accepted": true
}
],
"accepted_script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-attempt-4.py",
"output": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4"
},
"review": {
"pass": false,
"target_present": true,
"irrelevant_content_present": true,
"subtitle_visible": true,
"feedback": "The third keyframe (timestamp=4.15s) contains the 'THREE RODENTS' title card on a gray background, which is irrelevant content and not part of the intended large white rabbit meadow shot. The first two keyframes show the target rabbit meadow shot with 'BIG BUNNY' subtitle, but the presence of the unrelated 'THREE RODENTS' title card violates the requirement for all frames to show the intended shot without title cards or unrelated scenes."
},
"frames": [
{
"timestamp_s": 0.35,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review/frame-000.35.png",
"sha256": "ba21afabc4197a93b06d4d78ed6f2dff568601b2b94425856efaf5606e49b9bb",
"bytes": 229388
},
{
"timestamp_s": 2.251,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review/frame-002.25.png",
"sha256": "389dd8b56fbc2d21af80ebb8f55895602050601915d1b19274e04d2e5678be47",
"bytes": 245324
},
{
"timestamp_s": 4.151,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review/frame-004.15.png",
"sha256": "261fbc9ee0b8784f1d4a1f84b34489c5baf3824b6467c82a7673e4b836f97cf0",
"bytes": 36595
}
]
},
{
"round": 1,
"kind": "reviewer_driven_quarter_second_refinement",
"prior_interval": [
9.0,
12.0
],
"source_frames": [
{
"timestamp_s": 8.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-008.00.png",
"sha256": "1da6191f1a0c6ccc987a8e5d0682d7e664aa4ce8b8ce31d232bec5ae695b0c4e",
"bytes": 25229
},
{
"timestamp_s": 8.25,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-008.25.png",
"sha256": "fc4e9dfec0220c38b50fa199c95332eba6ad403d683042318e059c8cc0d06d57",
"bytes": 26862
},
{
"timestamp_s": 8.5,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-008.50.png",
"sha256": "23520885852103457d35c7f97617da0090763888261c4b5003793c6d6b48b070",
"bytes": 27408
},
{
"timestamp_s": 8.75,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-008.75.png",
"sha256": "a26f15eb86f4d0633cc3f6ed4659e500e3480d6a93703bd961d920d58cb22dcb",
"bytes": 27826
},
{
"timestamp_s": 9.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-009.00.png",
"sha256": "c0358569f2defb8cfdcd0c73393fc2e75cab6168920819a7c0d28395389132b7",
"bytes": 26259
},
{
"timestamp_s": 9.25,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-009.25.png",
"sha256": "23b0a10b6440ac809301ebdae5ef3e174440c51c1bdbe1e341daa1811b32b6ec",
"bytes": 281564
},
{
"timestamp_s": 9.5,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-009.50.png",
"sha256": "b1534ad39b5d73921220488351b56de61e387f02d0d2d63007bba0947dde64c8",
"bytes": 282016
},
{
"timestamp_s": 9.75,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-009.75.png",
"sha256": "ac5db4099b689927bb0e3b91f6d9a402b5c28576b0c759a8c8430ea090ede3f0",
"bytes": 281200
},
{
"timestamp_s": 10.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-010.00.png",
"sha256": "bdf01683fab23e1e98099d0f6e19596eabcd96ddb1c643b3d0c6749b5f2995a9",
"bytes": 288771
},
{
"timestamp_s": 10.25,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-010.25.png",
"sha256": "077c87cb4d94b1d0647968b48fd9ae3dfe73b3b83e7052b718b0c2a1638884e9",
"bytes": 290424
},
{
"timestamp_s": 10.5,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-010.50.png",
"sha256": "1702da4cdbf746a8f5b3b3ea1dbbe20065810e896cf5eead3b4e0e899a95ace6",
"bytes": 290739
},
{
"timestamp_s": 10.75,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-010.75.png",
"sha256": "f4b896f7e565cbe8753020129ce1d2420ef7fa1d7d5e35274a544cb91ecefc05",
"bytes": 290790
},
{
"timestamp_s": 11.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-011.00.png",
"sha256": "c1abe47a8bd0e10472b75a472cea78ff24613c64ccc74ffba9b566d71336c4f4",
"bytes": 290263
},
{
"timestamp_s": 11.25,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-011.25.png",
"sha256": "bd9c57afa81fbcb2dfd6aa1fafe0e4bfcd3da4e13b69b8086234b26906923bb1",
"bytes": 22691
},
{
"timestamp_s": 11.5,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-011.50.png",
"sha256": "7a00b9b759b7ea49228504de9b4481be13a24b86bba9284899c48ee6c39c24f6",
"bytes": 24009
},
{
"timestamp_s": 11.75,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-011.75.png",
"sha256": "42f8c635d8ec11df1d542340fe5bb977a9d9799878937ecac77366bfa2fd3897",
"bytes": 24402
},
{
"timestamp_s": 12.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-012.00.png",
"sha256": "5833475f37ad6ccc7f98c953193368b11c4f3390d1633e224b0a43514c7aa2ec",
"bytes": 23585
},
{
"timestamp_s": 12.25,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-012.25.png",
"sha256": "5459ffd9787260f9f96f16464e7a8842c5535f4a725eaee8d7b6f114a0ff6e45",
"bytes": 24966
},
{
"timestamp_s": 12.5,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-012.50.png",
"sha256": "47974ae09fd7f2f4affdf06dba5aa92e16dca70da873cd1f631171f46e8dccf9",
"bytes": 25722
},
{
"timestamp_s": 12.75,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-012.75.png",
"sha256": "cd6c95353c889323e7af0f0768a65c310ce0d4cc7aa2651b83a528805ddbd10f",
"bytes": 26543
},
{
"timestamp_s": 13.0,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/boundary-refinement-1/frame-013.00.png",
"sha256": "f14dca5370861a1b1f1ee95d1e00172314f27e60ec9f3451a16e08efb46cabf4",
"bytes": 24310
}
],
"refinement": {
"start": 9.25,
"end": 11.0,
"reason": "visual boundary evidence"
},
"plan": {
"start": 9.25,
"end": 11.0,
"effects": [
"slowmo:1.5",
"subtitle:BIG BUNNY"
]
},
"render": {
"attempts": [
{
"attempt": 1,
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-refinement-1-attempt-1.py",
"script_sha256": "2a093b9fd7eab1b389a773407b46154c514d4d2de74405eb981141affa90811f",
"blender_log": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/blender_logs/corrected-final-refinement-1-attempt-1.log",
"blender_log_sha256": "41c72db03b43c429a5f21f1988725285ad35f85ce6ac0706ad5b0947b3caeed2",
"blender_exit_code": 0,
"blender_latency_s": 0.588,
"accepted": false
},
{
"attempt": 2,
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-refinement-1-attempt-2.py",
"script_sha256": "1a5546408058cf73635f6a4f4ca6ce0390420a1a58a7221ad3ed8805f34f5733",
"blender_log": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/blender_logs/corrected-final-refinement-1-attempt-2.log",
"blender_log_sha256": "71c23904c15612460d1ab33812e111a758e0b02da56db2b28eeb079d2f418a0c",
"blender_exit_code": 0,
"blender_latency_s": 1.285,
"accepted": true
}
],
"accepted_script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-refinement-1-attempt-2.py",
"output": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4"
},
"review": {
"pass": true,
"target_present": true,
"irrelevant_content_present": false,
"subtitle_visible": true,
"feedback": "All frames show the large white rabbit in the sunny green meadow (target present). No title cards ('ONE BIG RABBIT' or 'THREE RODENTS') or unrelated scenes are visible (no irrelevant content). The 'BIG BUNNY' subtitle is clearly overlaid near the bottom in all frames."
},
"frames": [
{
"timestamp_s": 0.35,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review-refinement-1/frame-000.35.png",
"sha256": "318985a482450fd2a6f49a6fb7c03799fb1667ed7cf976b3a46ad8a8d66ed99c",
"bytes": 230155
},
{
"timestamp_s": 1.323,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review-refinement-1/frame-001.32.png",
"sha256": "2513be4492f64f354e1879bfac985b549453051fd99bf32a881d67b87a7313b4",
"bytes": 244323
},
{
"timestamp_s": 2.295,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review-refinement-1/frame-002.29.png",
"sha256": "f23ba046874e6929a86e2186ed0be38e7edda7913b288ab3df3b9cd1aa65cd14",
"bytes": 245024
}
]
}
],
"corrected_final": {
"plan": {
"start": 9.25,
"end": 11.0,
"effects": [
"slowmo:1.5",
"subtitle:BIG BUNNY"
]
},
"render": {
"attempts": [
{
"attempt": 1,
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-refinement-1-attempt-1.py",
"script_sha256": "2a093b9fd7eab1b389a773407b46154c514d4d2de74405eb981141affa90811f",
"blender_log": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/blender_logs/corrected-final-refinement-1-attempt-1.log",
"blender_log_sha256": "41c72db03b43c429a5f21f1988725285ad35f85ce6ac0706ad5b0947b3caeed2",
"blender_exit_code": 0,
"blender_latency_s": 0.588,
"accepted": false
},
{
"attempt": 2,
"script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-refinement-1-attempt-2.py",
"script_sha256": "1a5546408058cf73635f6a4f4ca6ce0390420a1a58a7221ad3ed8805f34f5733",
"blender_log": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/blender_logs/corrected-final-refinement-1-attempt-2.log",
"blender_log_sha256": "71c23904c15612460d1ab33812e111a758e0b02da56db2b28eeb079d2f418a0c",
"blender_exit_code": 0,
"blender_latency_s": 1.285,
"accepted": true
}
],
"accepted_script": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/scripts/corrected-final-refinement-1-attempt-2.py",
"output": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4"
},
"review": {
"pass": true,
"target_present": true,
"irrelevant_content_present": false,
"subtitle_visible": true,
"feedback": "All frames show the large white rabbit in the sunny green meadow (target present). No title cards ('ONE BIG RABBIT' or 'THREE RODENTS') or unrelated scenes are visible (no irrelevant content). The 'BIG BUNNY' subtitle is clearly overlaid near the bottom in all frames."
},
"frames": [
{
"timestamp_s": 0.35,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review-refinement-1/frame-000.35.png",
"sha256": "318985a482450fd2a6f49a6fb7c03799fb1667ed7cf976b3a46ad8a8d66ed99c",
"bytes": 230155
},
{
"timestamp_s": 1.323,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review-refinement-1/frame-001.32.png",
"sha256": "2513be4492f64f354e1879bfac985b549453051fd99bf32a881d67b87a7313b4",
"bytes": 244323
},
{
"timestamp_s": 2.295,
"path": "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/frames/final-review-refinement-1/frame-002.29.png",
"sha256": "f23ba046874e6929a86e2186ed0be38e7edda7913b288ab3df3b9cd1aa65cd14",
"bytes": 245024
}
],
"probe": {
"programs": [],
"stream_groups": [],
"streams": [
{
"index": 0,
"codec_name": "h264",
"codec_type": "video",
"width": 854,
"height": 480,
"r_frame_rate": "25/1"
},
{
"index": 1,
"codec_name": "aac",
"codec_type": "audio",
"sample_rate": "48000",
"channels": 2,
"r_frame_rate": "0/0"
}
],
"format": {
"format_name": "mov,mp4,m4a,3gp,3g2,mj2",
"duration": "2.645000",
"size": "318571"
}
},
"expected_slowed_duration_s": 2.625,
"observed_duration_s": 2.645
}
}
@@ -0,0 +1,61 @@
import bpy
INPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov"
OUTPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4"
FPS = 25
START_SECONDS = 9.0
END_SECONDS = 12.0
# Calculate timing parameters
start_frame = int(round(START_SECONDS * FPS))
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
render_dur = int(round(dur_frames * 1.5))
# Setup scene
scene = bpy.context.scene
scene.sequence_editor_clear()
se = scene.sequence_editor_create()
# Create video and audio strips
movie = se.sequences.new_movie(name='clip', filepath=INPUT_PATH, channel=1,
frame_start=1 - start_frame)
sound = se.sequences.new_sound(name='audio', filepath=INPUT_PATH, channel=2,
frame_start=1 - start_frame)
# Trim media to interval
for strip in (movie, sound):
strip.frame_offset_start = start_frame
strip.frame_final_duration = dur_frames
# Apply slowmotion to video
speed = se.sequences.new_effect(name='slowmo', type='SPEED', channel=3,
frame_start=1, frame_end=1 + dur_frames, seq1=movie)
speed.use_default_fade = False
speed.speed_control = 'MULTIPLY'
speed.speed_factor = 1.0 / 1.5
movie.frame_final_duration = render_dur
# Add subtitle with background
text = se.sequences.new_effect(name='subtitle', type='TEXT', channel=4,
frame_start=1, frame_end=1 + render_dur)
text.text = 'BIG BUNNY'
text.location = (0.5, 0.12)
text.align_x = 'CENTER'
text.align_y = 'BOTTOM'
text.use_box = True
text.box_color = (0.0, 0.0, 0.0, 0.6)
# Configure render settings
scene.frame_start = 1
scene.frame_end = render_dur
scene.render.resolution_x = 854
scene.render.resolution_y = 480
scene.render.resolution_percentage = 100
scene.render.fps = FPS
scene.render.image_settings.file_format = 'MPEG4'
scene.render.image_settings.codec = 'H264'
scene.render.ffmpeg.audio_codec = 'AAC'
scene.render.filepath = OUTPUT_PATH
# Execute render
bpy.ops.render.render(animation=True)
@@ -0,0 +1,59 @@
import bpy
INPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov'
OUTPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4'
FPS = 25
START_SECONDS = 9.000
END_SECONDS = 12.000
# Calculate timing values
start_frame = int(round(START_SECONDS * FPS))
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
render_dur = int(round(dur_frames * 1.5))
# Setup scene
scene = bpy.context.scene
scene.sequence_editor_clear()
se = scene.sequence_editor_create()
# Add movie and audio strips
movie = se.sequences.new_movie(name='clip', filepath=INPUT_PATH, channel=1, frame_start=1 - start_frame)
sound = se.sequences.new_sound(name='audio', filepath=INPUT_PATH, channel=2, frame_start=1 - start_frame)
# Set trim for both strips
for strip in (movie, sound):
strip.frame_offset_start = start_frame
strip.frame_final_duration = dur_frames
# Add speed effect to movie
speed = se.sequences.new_effect(name='slowmo', type='SPEED', channel=3, frame_start=1, frame_end=1 + dur_frames, seq1=movie)
speed.use_default_fade = False
speed.speed_control = 'MULTIPLY'
speed.speed_factor = 1.0 / 1.5
movie.frame_final_duration = render_dur
# Add subtitle text strip
text = se.sequences.new_effect(name='subtitle', type='TEXT', channel=4, frame_start=1, frame_end=1 + render_dur)
text.text = 'BIG BUNNY'
text.location = (0.5, 0.12)
text.align_x = 'CENTER'
text.align_y = 'BOTTOM'
text.use_box = True
text.box_color = (0.0, 0.0, 0.0, 0.6)
# Render settings
scene.frame_start = 1
scene.frame_end = render_dur
scene.render.resolution_x = 854
scene.render.resolution_y = 480
scene.render.resolution_percentage = 100
scene.render.fps = FPS
scene.render.fps_base = 1.0
scene.render.filepath = OUTPUT_PATH
scene.render.file_format = 'FFMPEG'
scene.render.ffmpeg.format = 'MPEG4'
scene.render.ffmpeg.codec = 'H264'
scene.render.ffmpeg.audio_codec = 'AAC'
# Execute render
bpy.ops.render.render(animation=True)
@@ -0,0 +1,91 @@
import bpy
INPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov"
OUTPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4"
FPS = 25
START_SECONDS = 9.0
END_SECONDS = 12.0
# Calculate timing parameters
start_frame = int(round(START_SECONDS * FPS))
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS))))
render_dur = int(round(dur_frames * 1.5))
# Clear existing scene data
bpy.ops.sequencer.select_all(action='SELECT')
bpy.ops.sequencer.delete()
scene = bpy.context.scene
# Create sequence editor
se = scene.sequence_editor_create()
# Add movie and audio strips
movie = se.sequences.new_movie(
name='clip',
filepath=INPUT_PATH,
channel=1,
frame_start=1 - start_frame
)
sound = se.sequences.new_sound(
name='audio',
filepath=INPUT_PATH,
channel=2,
frame_start=1 - start_frame
)
# Set trim for both media strips
for strip in (movie, sound):
strip.frame_offset_start = start_frame
strip.frame_final_duration = dur_frames
# Add slowmotion effect to video
speed = se.sequences.new_effect(
name='slowmo',
type='SPEED',
channel=3,
frame_start=1,
frame_end=1 + dur_frames,
seq1=movie
)
speed.use_default_fade = False
speed.speed_control = 'MULTIPLY'
speed.speed_factor = 1.0 / 1.5
# Extend video duration to match slowed render time
movie.frame_final_duration = render_dur
# Add subtitle text with background box
text = se.sequences.new_effect(
name='subtitle',
type='TEXT',
channel=4,
frame_start=1,
frame_end=1 + render_dur
)
text.text = 'BIG BUNNY'
text.location = (0.5, 0.12)
text.align_x = 'CENTER'
text.align_y = 'BOTTOM'
text.use_box = True
text.box_color = (0.0, 0.0, 0.0, 0.6)
# Configure render settings
scene.render.resolution_x = 854
scene.render.resolution_y = 480
scene.render.resolution_percentage = 100
scene.render.fps = FPS
scene.render.fps_base = 1.0
# Configure output format
scene.render.image_settings.file_format = 'FFMPEG'
scene.render.ffmpeg.format = 'MPEG4'
scene.render.ffmpeg.codec = 'H264'
scene.render.ffmpeg.audio_codec = 'AAC'
scene.render.filepath = OUTPUT_PATH
# Set render frame range
scene.frame_start = 1
scene.frame_end = render_dur
# Execute render
bpy.ops.render.render(animation=True)
@@ -0,0 +1,55 @@
import bpy
INPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov"
OUTPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4"
FPS = 25
START_SECONDS = 9.000
END_SECONDS = 12.000
start_frame = int(round(START_SECONDS * FPS))
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
render_dur = int(round(dur_frames * 1.5))
scene = bpy.context.scene
se = scene.sequence_editor_create()
# Add movie and audio strips
movie = se.sequences.new_movie(name='clip', filepath=INPUT_PATH, channel=1, frame_start=1 - start_frame)
sound = se.sequences.new_sound(name='audio', filepath=INPUT_PATH, channel=2, frame_start=1 - start_frame)
# Set trim for both strips
for strip in (movie, sound):
strip.frame_offset_start = start_frame
strip.frame_final_duration = dur_frames
# Add speed effect for slow motion
speed = se.sequences.new_effect(name='slowmo', type='SPEED', channel=3, frame_start=1, frame_end=1 + dur_frames, seq1=movie)
speed.speed_control = 'MULTIPLY'
speed.speed_factor = 1.0 / 1.5
speed.use_default_fade = False
movie.frame_final_duration = render_dur
# Add subtitle text strip
text = se.sequences.new_effect(name='subtitle', type='TEXT', channel=4, frame_start=1, frame_end=1 + render_dur)
text.text = 'BIG BUNNY'
text.location = (0.5, 0.12)
text.align_x = 'CENTER'
text.align_y = 'BOTTOM'
text.use_box = True
text.box_color = (0, 0, 0, 0.6)
# Render settings
scene.frame_start = 1
scene.frame_end = render_dur
scene.render.resolution_x = 854
scene.render.resolution_y = 480
scene.render.fps = FPS
scene.render.fps_base = 1.0
scene.render.image_settings.file_format = 'FFMPEG'
scene.render.ffmpeg.format = 'MPEG4'
scene.render.ffmpeg.codec = 'H264'
scene.render.ffmpeg.audio_codec = 'AAC'
scene.render.filepath = OUTPUT_PATH
# Execute render
bpy.ops.render.render(animation=True)
@@ -0,0 +1,82 @@
import bpy
# Configuration
INPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov'
OUTPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4'
FPS = 25
START_SECONDS = 9.250
END_SECONDS = 11.000
# Calculate timing parameters
start_frame = int(round(START_SECONDS * FPS))
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
render_dur = int(round(dur_frames * 1.5))
# Setup scene
scene = bpy.context.scene
scene.sequence_editor_clear()
se = scene.sequence_editor_create()
# Add movie and sound strips
movie = se.sequences.new_movie(
name='clip',
filepath=INPUT_PATH,
channel=1,
frame_start=1 - start_frame
)
sound = se.sequences.new_sound(
name='audio',
filepath=INPUT_PATH,
channel=2,
frame_start=1 - start_frame
)
# Trim media strips
for strip in (movie, sound):
strip.frame_offset_start = start_frame
strip.frame_final_duration = dur_frames
# Add speed effect to movie
speed = se.sequences.new_effect(
name='slowmo',
type='SPEED',
channel=3,
frame_start=1,
frame_end=1 + dur_frames,
seq1=movie
)
speed.use_default_fade = False
speed.speed_control = 'MULTIPLY'
speed.speed_factor = 1.0 / 1.5
movie.frame_final_duration = render_dur
# Add subtitle text
text = se.sequences.new_effect(
name='subtitle',
type='TEXT',
channel=4,
frame_start=1,
frame_end=1 + render_dur
)
text.text = 'BIG BUNNY'
text.location = (0.5, 0.12)
text.align_x = 'CENTER'
text.align_y = 'BOTTOM'
text.use_box = True
text.box_color = (0.0, 0.0, 0.0, 0.6)
# Render settings
scene.frame_start = 1
scene.frame_end = render_dur
scene.render.resolution_x = 854
scene.render.resolution_y = 480
scene.render.resolution_percentage = 100
scene.render.fps = FPS
scene.render.fps_base = 1.0
scene.render.image_settings.file_format = 'MPEG4'
scene.render.image_settings.codec = 'H264'
scene.render.audio_codec = 'AAC'
scene.render.filepath = OUTPUT_PATH
# Execute render
bpy.ops.render.render(animation=True)
@@ -0,0 +1,89 @@
import bpy
# Configuration
INPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov'
OUTPUT_PATH = '/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/final.mp4'
FPS = 25
START_SECONDS = 9.250
END_SECONDS = 11.000
RENDER_SIZE = (854, 480)
# Calculate timing
start_frame = int(round(START_SECONDS * FPS))
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
render_dur = int(round(dur_frames * 1.5))
# Setup scene
scene = bpy.context.scene
scene.render.fps = FPS
scene.frame_start = 1
scene.frame_end = render_dur
# Clear default objects
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()
# Create sequence editor
se = scene.sequence_editor_create()
# Add movie strip
movie = se.sequences.new_movie(
name='clip',
filepath=INPUT_PATH,
channel=1,
frame_start=1 - start_frame
)
movie.frame_offset_start = start_frame
movie.frame_final_duration = dur_frames
# Add sound strip
sound = se.sequences.new_sound(
name='audio',
filepath=INPUT_PATH,
channel=2,
frame_start=1 - start_frame
)
sound.frame_offset_start = start_frame
sound.frame_final_duration = dur_frames
# Add speed effect to movie
speed = se.sequences.new_effect(
name='slowmo',
type='SPEED',
channel=3,
frame_start=1,
frame_end=1 + dur_frames,
seq1=movie
)
speed.use_default_fade = False
speed.speed_control = 'MULTIPLY'
speed.speed_factor = 1.0 / 1.5
movie.frame_final_duration = render_dur
# Add subtitle text
text = se.sequences.new_effect(
name='subtitle',
type='TEXT',
channel=4,
frame_start=1,
frame_end=1 + render_dur
)
text.text = 'BIG BUNNY'
text.location = (0.5, 0.12)
text.align_x = 'CENTER'
text.align_y = 'BOTTOM'
text.use_box = True
text.box_color = (0.0, 0.0, 0.0, 0.6)
# Render settings
scene.render.resolution_x = RENDER_SIZE[0]
scene.render.resolution_y = RENDER_SIZE[1]
scene.render.resolution_percentage = 100
scene.render.image_settings.file_format = 'FFMPEG'
scene.render.ffmpeg.format = 'MPEG4'
scene.render.ffmpeg.codec = 'H264'
scene.render.ffmpeg.audio_codec = 'AAC'
scene.render.filepath = OUTPUT_PATH
# Render animation
bpy.ops.render.render(animation=True)
@@ -0,0 +1,88 @@
import bpy
INPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/source.mov"
OUTPUT_PATH = "/Users/boj/book/ai-agent-book/chapter5/video-edit/validation/runs/exp5-6-real-blender-20260730-055102/negative_control.mp4"
FPS = 25
START_SECONDS = 0.000
END_SECONDS = 3.000
# Calculate timing parameters
start_frame = int(round(START_SECONDS * FPS))
dur_frames = max(1, int(round((END_SECONDS - START_SECONDS) * FPS)))
render_dur = int(round(dur_frames * 1.5))
# Scene setup
scene = bpy.context.scene
scene.render.fps = FPS
scene.render.fps_base = 1.0
scene.render.resolution_x = 854
scene.render.resolution_y = 480
scene.render.resolution_percentage = 100
# Render settings
scene.render.image_settings.file_format = 'FFMPEG'
scene.render.ffmpeg.format = 'MPEG4'
scene.render.ffmpeg.codec = 'H264'
scene.render.ffmpeg.audio_codec = 'AAC'
scene.render.filepath = OUTPUT_PATH
# Sequence editor setup
se = scene.sequence_editor_create()
# Add movie strip
movie = se.sequences.new_movie(
name='clip',
filepath=INPUT_PATH,
channel=1,
frame_start=1 - start_frame
)
movie.frame_offset_start = start_frame
movie.frame_final_duration = dur_frames
# Add sound strip
sound = se.sequences.new_sound(
name='audio',
filepath=INPUT_PATH,
channel=2,
frame_start=1 - start_frame
)
sound.frame_offset_start = start_frame
sound.frame_final_duration = dur_frames
# Add speed effect
speed = se.sequences.new_effect(
name='slowmo',
type='SPEED',
channel=3,
frame_start=1,
frame_end=1 + dur_frames,
seq1=movie
)
speed.use_default_fade = False
speed.speed_control = 'MULTIPLY'
speed.speed_factor = 1.0 / 1.5
# Extend movie duration for slowmo
movie.frame_final_duration = render_dur
# Add subtitle text
text = se.sequences.new_effect(
name='subtitle',
type='TEXT',
channel=4,
frame_start=1,
frame_end=1 + render_dur
)
text.text = 'BIG BUNNY'
text.location = (0.5, 0.12)
text.align_x = 'CENTER'
text.align_y = 'BOTTOM'
text.use_box = True
text.box_color = (0.0, 0.0, 0.0, 0.6)
# Set render frame range
scene.frame_start = 1
scene.frame_end = render_dur
# Render the animation
bpy.ops.render.render(animation=True)
@@ -0,0 +1,42 @@
{
"url": "https://download.blender.org/peach/trailer/trailer_480p.mov",
"title": "Big Buck Bunny trailer (Blender Foundation Peach Open Movie Project)",
"license": "Creative Commons Attribution 3.0",
"license_url": "https://creativecommons.org/licenses/by/3.0/",
"sha256": "36801b74638c12be9aa587e93cd18edfc9bc51a1c089ab2a19ee42beed9f497d",
"probe": {
"programs": [],
"stream_groups": [],
"streams": [
{
"index": 0,
"codec_name": "h264",
"codec_type": "video",
"width": 853,
"height": 480,
"r_frame_rate": "25/1"
},
{
"index": 1,
"codec_name": "aac",
"codec_type": "audio",
"sample_rate": "48000",
"channels": 6,
"r_frame_rate": "0/0"
}
],
"format": {
"format_name": "mov,mp4,m4a,3gp,3g2,mj2",
"duration": "32.995000",
"size": "11061011"
}
},
"naturally_occurring_scenes": true,
"ground_truth": {
"start": 9.08,
"end": 11.2,
"target": "the single continuous shot showing the large white rabbit walking alone in a sunny green meadow, after the ONE BIG RABBIT title and before the THREE RODENTS title",
"method": "Human-labeled target shot bounded by ffmpeg scene-change frames; source inspection found transitions at 9.08 and 11.20 seconds.",
"ffmpeg_scene_threshold": 0.35
}
}