|
25 | 25 | "SolverForge crate target 0.19.3", |
26 | 26 | "solverforge-ui 0.7.0" |
27 | 27 | ], |
| 28 | + "src/docs/solverforge-ui/index.md" => [ |
| 29 | + "solverforge-ui 0.8.0", |
| 30 | + "solverforge-cli 2.2.3", |
| 31 | + "solverforge-ui 0.7.0", |
| 32 | + "/sf/sf.0.8.0.css", |
| 33 | + "SF.version" |
| 34 | + ], |
| 35 | + "src/docs/solverforge-ui/integration-assets.md" => [ |
| 36 | + "solverforge-ui 0.8.0", |
| 37 | + "solverforge_ui::assets::version()", |
| 38 | + "SF.version", |
| 39 | + "onFailure", |
| 40 | + "onCancelled" |
| 41 | + ], |
| 42 | + "src/docs/solverforge-ui/components.md" => [ |
| 43 | + "content: { unsafeHtml:", |
| 44 | + "tabs[].content.unsafeHtml" |
| 45 | + ], |
| 46 | + "src/docs/solverforge-ui/scheduling-views.md" => [ |
| 47 | + "isWeekend", |
| 48 | + "non-zero layout dimensions", |
| 49 | + "unsafePopupHtml" |
| 50 | + ], |
| 51 | + "src/reference/lifecycle-pause-resume-contract.md" => [ |
| 52 | + "solverforge-ui 0.8.0" |
| 53 | + ], |
| 54 | + "src/_posts/releases/2026-09-15-solverforge-ui-0-8-x.md" => [ |
| 55 | + "`0.8.0` | 2026-09-15", |
| 56 | + "SF.version", |
| 57 | + "solverforge_ui::assets::version()" |
| 58 | + ], |
28 | 59 | "src/docs/status-and-roadmap.md" => [ |
29 | 60 | "solverforge 0.19.4", |
30 | 61 | "solverforge-py 0.6.6", |
31 | 62 | "solverforge-cli 2.2.3", |
32 | | - "solverforge-hospital@2.0.6", |
33 | | - "solverforge-lessons@2.0.6", |
34 | | - "solverforge-deliveries@2.0.6", |
35 | | - "solverforge-fsr@2.0.7" |
| 63 | + "solverforge-ui 0.8.0", |
| 64 | + "solverforge-hospital@2.0.7", |
| 65 | + "solverforge-lessons@2.0.7", |
| 66 | + "solverforge-deliveries@2.0.7", |
| 67 | + "solverforge-fsr@2.0.8" |
36 | 68 | ], |
37 | 69 | "src/docs/getting-started/solverforge-hospital-use-case.md" => [ |
38 | | - "solverforge-hospital@2.0.6", |
39 | | - "solverforge 0.19.3" |
| 70 | + "solverforge-hospital@2.0.7", |
| 71 | + "solverforge 0.19.4" |
40 | 72 | ], |
41 | 73 | "src/docs/getting-started/solverforge-lessons-use-case.md" => [ |
42 | | - "solverforge-lessons@2.0.6", |
43 | | - "solverforge 0.19.3" |
| 74 | + "solverforge-lessons@2.0.7", |
| 75 | + "solverforge 0.19.4" |
44 | 76 | ], |
45 | 77 | "src/docs/getting-started/solverforge-deliveries-use-case.md" => [ |
46 | | - "solverforge-deliveries@2.0.6", |
47 | | - "solverforge 0.19.3" |
| 78 | + "solverforge-deliveries@2.0.7", |
| 79 | + "solverforge 0.19.4" |
48 | 80 | ], |
49 | 81 | "src/docs/getting-started/solverforge-fsr-use-case.md" => [ |
50 | | - "solverforge-fsr@2.0.7", |
51 | | - "solverforge 0.19.3" |
| 82 | + "solverforge-fsr@2.0.8", |
| 83 | + "solverforge 0.19.4" |
52 | 84 | ], |
53 | 85 | "src/_posts/releases/2026-07-17-solverforge-0-19-x.md" => [ |
54 | 86 | "`0.19.4` | 2026-08-11", |
55 | 87 | "`0.19.3` | 2026-07-29", |
56 | | - "`0.19.2` | 2026-07-19" |
| 88 | + "`0.19.2` | 2026-07-19", |
| 89 | + "solverforge-hospital@2.0.7" |
57 | 90 | ], |
58 | 91 | "src/_posts/releases/2026-07-13-solverforge-python-0-6-x.md" => [ |
59 | 92 | "`0.6.6` | 2026-08-11", |
|
66 | 99 | "src/docs/solverforge/index.md" => ["solverforge 0.19.1", "solverforge-cli 2.2.2"], |
67 | 100 | "src/docs/solverforge-python/index.md" => ["solverforge-py 0.6.3", "solverforge==0.6.3"], |
68 | 101 | "src/docs/solverforge-cli/command-reference.md" => ["solverforge-cli 2.2.2", "crate target 0.15.2"], |
69 | | - "src/docs/status-and-roadmap.md" => ["solverforge-py 0.6.3", "solverforge 0.19.1", "solverforge-cli 2.2.2` package"] |
| 102 | + "src/docs/status-and-roadmap.md" => [ |
| 103 | + "solverforge-py 0.6.3", |
| 104 | + "solverforge 0.19.1", |
| 105 | + "solverforge-cli 2.2.2` package", |
| 106 | + "solverforge-hospital@2.0.6", |
| 107 | + "solverforge-lessons@2.0.6", |
| 108 | + "solverforge-deliveries@2.0.6", |
| 109 | + "solverforge-fsr@2.0.7" |
| 110 | + ], |
| 111 | + "src/docs/getting-started/solverforge-hospital-use-case.md" => ["solverforge-hospital@2.0.6"], |
| 112 | + "src/docs/getting-started/solverforge-lessons-use-case.md" => ["solverforge-lessons@2.0.6"], |
| 113 | + "src/docs/getting-started/solverforge-deliveries-use-case.md" => ["solverforge-deliveries@2.0.6"], |
| 114 | + "src/docs/getting-started/solverforge-fsr-use-case.md" => ["solverforge-fsr@2.0.7"] |
70 | 115 | }.freeze |
71 | 116 |
|
72 | 117 | failures = [] |
|
85 | 130 | end |
86 | 131 |
|
87 | 132 | FORBIDDEN_TEXT.each do |relative_path, needles| |
88 | | - text = File.read(File.join(ROOT, relative_path)) |
| 133 | + path = File.join(ROOT, relative_path) |
| 134 | + unless File.file?(path) |
| 135 | + failures << "missing file: #{relative_path}" |
| 136 | + next |
| 137 | + end |
| 138 | + |
| 139 | + text = File.read(path) |
89 | 140 | needles.each do |needle| |
90 | 141 | failures << "#{relative_path} still contains #{needle.inspect}" if text.include?(needle) |
91 | 142 | end |
|
0 commit comments