@bendyline/gilde 0.1.55 → 0.1.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/authoring/chat-models/glm-5.3-flash-320b-q2.json +129 -0
  2. package/authoring/gstack/wave.json +2 -2
  3. package/data/chat-models/gl/glm-5.3-flash-320b-q2/manifest.json +137 -0
  4. package/data/chat-models/gl/glm-5.3-flash-320b-q2/versions/1.0.0/manifest.json +23 -0
  5. package/data/chat-models/index.json +1 -1
  6. package/data/craftbook-templates/a1/a11y-audit/versions/1.1.3/test.json +16 -8
  7. package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.2/craftbook.json +618 -0
  8. package/data/craftbook-templates/ac/accessibility-retrofit/versions/2.0.2/test.json +228 -0
  9. package/data/craftbook-templates/al/album-curate/versions/1.0.3/test.json +6 -3
  10. package/data/craftbook-templates/al/alert-rules/versions/1.0.3/test.json +8 -8
  11. package/data/craftbook-templates/an/anniversary-cut/versions/1.0.5/test.json +10 -5
  12. package/data/craftbook-templates/an/annual-document-review/versions/1.0.3/test.json +16 -8
  13. package/data/craftbook-templates/an/anomaly-scan/versions/1.0.3/test.json +12 -6
  14. package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.2/craftbook.json +602 -0
  15. package/data/craftbook-templates/ap/apply-review-findings/versions/1.0.2/test.json +290 -0
  16. package/data/craftbook-templates/ar/artifact-integrity-review/versions/1.0.3/test.json +18 -9
  17. package/data/craftbook-templates/au/audiobook-master-pack/versions/1.0.5/test.json +10 -5
  18. package/data/craftbook-templates/au/auth-flow/versions/1.0.3/test.json +12 -6
  19. package/data/craftbook-templates/au/auth-flow/versions/1.0.4/craftbook.json +282 -0
  20. package/data/craftbook-templates/au/auth-flow/versions/1.0.4/test.json +143 -0
  21. package/data/craftbook-templates/au/automation-recipe/versions/1.0.3/test.json +12 -6
  22. package/data/craftbook-templates/ba/backup-routine/versions/1.0.4/craftbook.json +282 -0
  23. package/data/craftbook-templates/ba/backup-routine/versions/1.0.4/test.json +108 -0
  24. package/data/craftbook-templates/bl/blog-post/versions/1.0.3/test.json +8 -8
  25. package/data/craftbook-templates/br/branding-website/versions/1.1.3/craftbook.json +335 -0
  26. package/data/craftbook-templates/br/branding-website/versions/1.1.3/test.json +164 -0
  27. package/data/craftbook-templates/br/broadcast-announcement/versions/1.0.3/test.json +8 -8
  28. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.8/craftbook.json +621 -0
  29. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.8/test.json +376 -0
  30. package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.2/craftbook.json +730 -0
  31. package/data/craftbook-templates/bu/bug-fix-tdd/versions/2.0.2/test.json +221 -0
  32. package/data/craftbook-templates/bu/build-loop/versions/1.1.1/test.json +8 -8
  33. package/data/craftbook-templates/ca/case-study/versions/1.0.3/test.json +8 -8
  34. package/data/craftbook-templates/ch/chapter-narration-run/versions/1.0.4/test.json +10 -5
  35. package/data/craftbook-templates/ch/character-turnaround/versions/1.0.3/test.json +25 -11
  36. package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.2/craftbook.json +587 -0
  37. package/data/craftbook-templates/ci/ci-pipeline/versions/2.0.2/test.json +225 -0
  38. package/data/craftbook-templates/ci/citation-audit/versions/1.0.3/test.json +28 -14
  39. package/data/craftbook-templates/cl/cli-tool/versions/1.1.3/test.json +8 -8
  40. package/data/craftbook-templates/co/codebase-refactoring-review/versions/1.0.3/test.json +16 -8
  41. package/data/craftbook-templates/co/codebase-ux-review/versions/1.0.3/test.json +18 -9
  42. package/data/craftbook-templates/co/codemod-sweep/versions/1.0.2/craftbook.json +605 -0
  43. package/data/craftbook-templates/co/codemod-sweep/versions/1.0.2/test.json +252 -0
  44. package/data/craftbook-templates/co/cohort-analysis/versions/1.0.3/test.json +18 -9
  45. package/data/craftbook-templates/co/competitive-analysis/versions/1.0.3/test.json +23 -15
  46. package/data/craftbook-templates/co/content-accuracy-review/versions/1.0.3/test.json +28 -14
  47. package/data/craftbook-templates/co/content-deck/versions/1.2.3/craftbook.json +4 -4
  48. package/data/craftbook-templates/co/content-deck/versions/1.2.3/test.json +3 -0
  49. package/data/craftbook-templates/co/content-deck/versions/1.2.4/craftbook.json +341 -0
  50. package/data/craftbook-templates/co/content-deck/versions/1.2.4/test.json +169 -0
  51. package/data/craftbook-templates/co/copy-review/versions/1.0.3/test.json +14 -7
  52. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.3/craftbook.json +4 -4
  53. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.3/test.json +3 -0
  54. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.4/craftbook.json +345 -0
  55. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.4/test.json +187 -0
  56. package/data/craftbook-templates/co/corpus-synthesis/versions/1.0.3/test.json +26 -13
  57. package/data/craftbook-templates/co/cover-letter/versions/1.0.3/test.json +8 -8
  58. package/data/craftbook-templates/cs/csv-transformer/versions/1.2.4/test.json +7 -7
  59. package/data/craftbook-templates/da/dashboard-spec/versions/1.0.3/test.json +7 -7
  60. package/data/craftbook-templates/da/data-export-migrate/versions/1.0.4/craftbook.json +285 -0
  61. package/data/craftbook-templates/da/data-export-migrate/versions/1.0.4/test.json +104 -0
  62. package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.5/craftbook.json +284 -0
  63. package/data/craftbook-templates/da/data-pipeline-etl/versions/1.0.5/test.json +162 -0
  64. package/data/craftbook-templates/da/data-quality-audit/versions/1.0.3/test.json +38 -19
  65. package/data/craftbook-templates/da/data-to-report/versions/1.0.3/test.json +12 -6
  66. package/data/craftbook-templates/db/db-index-tuning/versions/1.0.4/craftbook.json +286 -0
  67. package/data/craftbook-templates/db/db-index-tuning/versions/1.0.4/test.json +104 -0
  68. package/data/craftbook-templates/de/dependency-audit/versions/1.1.3/test.json +14 -7
  69. package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.2/craftbook.json +621 -0
  70. package/data/craftbook-templates/de/dependency-upgrade/versions/1.0.2/test.json +235 -0
  71. package/data/craftbook-templates/de/design-review/versions/1.0.3/test.json +16 -8
  72. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.8/craftbook.json +616 -0
  73. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.8/test.json +201 -0
  74. package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.4/craftbook.json +285 -0
  75. package/data/craftbook-templates/do/doc-intake-pipeline/versions/1.0.4/test.json +104 -0
  76. package/data/craftbook-templates/do/doc-rewrite/versions/1.0.3/test.json +119 -55
  77. package/data/craftbook-templates/do/dockerize-app/versions/1.0.4/craftbook.json +285 -0
  78. package/data/craftbook-templates/do/dockerize-app/versions/1.0.4/test.json +92 -0
  79. package/data/craftbook-templates/do/documentation-drift-review/versions/1.0.3/test.json +18 -9
  80. package/data/craftbook-templates/dr/draft-social-post/versions/1.0.2/craftbook.json +324 -0
  81. package/data/craftbook-templates/dr/draft-social-post/versions/1.0.2/test.json +161 -0
  82. package/data/craftbook-templates/ed/edit-notes/versions/1.0.3/test.json +11 -4
  83. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.8/craftbook.json +566 -0
  84. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.8/test.json +191 -0
  85. package/data/craftbook-templates/ep/episode-plan/versions/1.0.3/test.json +10 -5
  86. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.7/test.json +7 -10
  87. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.8/craftbook.json +595 -0
  88. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.8/test.json +139 -0
  89. package/data/craftbook-templates/ex/expense-categorize/versions/1.0.4/craftbook.json +277 -0
  90. package/data/craftbook-templates/ex/expense-categorize/versions/1.0.4/test.json +104 -0
  91. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.2/craftbook.json +327 -0
  92. package/data/craftbook-templates/fe/feature-flag-rollout/versions/1.1.2/test.json +162 -0
  93. package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.2/craftbook.json +718 -0
  94. package/data/craftbook-templates/fl/flaky-test-fix/versions/1.0.2/test.json +239 -0
  95. package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.4/craftbook.json +285 -0
  96. package/data/craftbook-templates/fo/form-fill-batch/versions/1.0.4/test.json +162 -0
  97. package/data/craftbook-templates/fo/form-wizard/versions/1.0.3/test.json +8 -8
  98. package/data/craftbook-templates/ho/holiday-card-run/versions/1.0.3/test.json +11 -4
  99. package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.2/craftbook.json +610 -0
  100. package/data/craftbook-templates/ho/hotfix-flow/versions/2.0.2/test.json +220 -0
  101. package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.3/craftbook.json +343 -0
  102. package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.3/test.json +176 -0
  103. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.8/craftbook.json +566 -0
  104. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.8/test.json +141 -0
  105. package/data/craftbook-templates/im/image-set-index/versions/1.2.3/craftbook.json +298 -0
  106. package/data/craftbook-templates/im/image-set-index/versions/1.2.3/test.json +180 -0
  107. package/data/craftbook-templates/in/insurance-inventory/versions/1.0.3/test.json +11 -4
  108. package/data/craftbook-templates/in/interactive-quiz/versions/1.0.3/test.json +48 -23
  109. package/data/craftbook-templates/in/invitation-design/versions/1.0.3/test.json +1 -1
  110. package/data/craftbook-templates/index.json +1 -1
  111. package/data/craftbook-templates/it/item-intake/versions/1.0.3/test.json +11 -4
  112. package/data/craftbook-templates/le/lead-enrichment/versions/1.0.4/craftbook.json +277 -0
  113. package/data/craftbook-templates/le/lead-enrichment/versions/1.0.4/test.json +104 -0
  114. package/data/craftbook-templates/me/meeting-prep-brief/versions/1.0.3/test.json +16 -8
  115. package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.3/test.json +3 -0
  116. package/data/craftbook-templates/mo/morning-report/versions/1.0.3/test.json +21 -9
  117. package/data/craftbook-templates/of/office-hours/versions/1.1.1/test.json +8 -8
  118. package/data/craftbook-templates/pe/perf-optimization/versions/2.0.2/craftbook.json +697 -0
  119. package/data/craftbook-templates/pe/perf-optimization/versions/2.0.2/test.json +235 -0
  120. package/data/craftbook-templates/pe/pest-diagnosis/versions/1.0.3/test.json +19 -8
  121. package/data/craftbook-templates/pl/plan/versions/1.0.2/test.json +8 -8
  122. package/data/craftbook-templates/pl/playtest-report/versions/1.0.3/test.json +17 -7
  123. package/data/craftbook-templates/pr/practice-exam/versions/1.0.3/test.json +7 -2
  124. package/data/craftbook-templates/pr/practice-session/versions/1.0.3/test.json +11 -4
  125. package/data/craftbook-templates/pu/pull-request-review/versions/1.9.2/craftbook.json +435 -0
  126. package/data/craftbook-templates/pu/pull-request-review/versions/1.9.2/test.json +141 -0
  127. package/data/craftbook-templates/qu/quarterly-summary/versions/1.0.3/test.json +16 -8
  128. package/data/craftbook-templates/re/receipt-intake/versions/1.0.3/test.json +11 -4
  129. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.4/craftbook.json +277 -0
  130. package/data/craftbook-templates/re/receipt-ocr-ledger/versions/1.0.4/test.json +104 -0
  131. package/data/craftbook-templates/re/recipe-capture/versions/1.0.3/test.json +13 -5
  132. package/data/craftbook-templates/re/record-a-relative/versions/1.0.3/test.json +3 -0
  133. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.4/craftbook.json +285 -0
  134. package/data/craftbook-templates/re/recurring-invoice-run/versions/1.0.4/test.json +104 -0
  135. package/data/craftbook-templates/re/refactor-module/versions/2.0.2/craftbook.json +695 -0
  136. package/data/craftbook-templates/re/refactor-module/versions/2.0.2/test.json +241 -0
  137. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.4/craftbook.json +361 -0
  138. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.4/test.json +138 -0
  139. package/data/craftbook-templates/re/release-notes/versions/1.0.4/test.json +8 -8
  140. package/data/craftbook-templates/re/release-notes/versions/1.0.5/craftbook.json +339 -0
  141. package/data/craftbook-templates/re/release-notes/versions/1.0.5/test.json +111 -0
  142. package/data/craftbook-templates/re/reliability-review/versions/1.0.3/test.json +16 -8
  143. package/data/craftbook-templates/re/research-report/versions/1.0.3/test.json +16 -8
  144. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.8/craftbook.json +596 -0
  145. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.8/test.json +157 -0
  146. package/data/craftbook-templates/ro/rough-cut-assembly/versions/1.0.4/test.json +13 -5
  147. package/data/craftbook-templates/sc/schema-migration/versions/2.0.2/craftbook.json +624 -0
  148. package/data/craftbook-templates/sc/schema-migration/versions/2.0.2/test.json +225 -0
  149. package/data/craftbook-templates/sc/script-automation/versions/1.0.4/craftbook.json +284 -0
  150. package/data/craftbook-templates/sc/script-automation/versions/1.0.4/test.json +162 -0
  151. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.7/test.json +10 -13
  152. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.8/craftbook.json +597 -0
  153. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.8/test.json +157 -0
  154. package/data/craftbook-templates/so/social-digest/versions/1.0.3/craftbook.json +239 -0
  155. package/data/craftbook-templates/so/social-digest/versions/1.0.3/test.json +168 -0
  156. package/data/craftbook-templates/so/source-quality-audit/versions/1.0.3/test.json +25 -11
  157. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.8/craftbook.json +599 -0
  158. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.8/test.json +162 -0
  159. package/data/craftbook-templates/te/technical-documentation/versions/2.0.8/craftbook.json +577 -0
  160. package/data/craftbook-templates/te/technical-documentation/versions/2.0.8/test.json +174 -0
  161. package/data/craftbook-templates/te/test-coverage-review/versions/1.2.1/test.json +16 -8
  162. package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.2/craftbook.json +592 -0
  163. package/data/craftbook-templates/te/test-suite-backfill/versions/2.0.2/test.json +195 -0
  164. package/data/craftbook-templates/th/thank-you-batch/versions/1.0.3/test.json +6 -3
  165. package/data/craftbook-templates/th/thank-you-sweep/versions/1.0.3/test.json +11 -4
  166. package/data/craftbook-templates/ti/tileset-batch/versions/1.0.3/test.json +9 -3
  167. package/data/craftbook-templates/tr/transcribe-and-shownotes/versions/1.0.3/test.json +10 -5
  168. package/data/craftbook-templates/tr/transcribe-index/versions/1.0.3/test.json +6 -3
  169. package/data/craftbook-templates/tr/translate-content/versions/1.1.3/craftbook.json +140 -0
  170. package/data/craftbook-templates/tr/translate-content/versions/1.1.3/test.json +141 -0
  171. package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.2/craftbook.json +594 -0
  172. package/data/craftbook-templates/ty/type-safety-pass/versions/2.0.2/test.json +221 -0
  173. package/data/craftbook-templates/ux/ux-update/versions/1.0.2/craftbook.json +606 -0
  174. package/data/craftbook-templates/ux/ux-update/versions/1.0.2/test.json +206 -0
  175. package/data/craftbook-templates/we/weak-spot-drill/versions/1.0.3/test.json +11 -4
  176. package/data/craftbook-templates/we/weekly-walkthrough/versions/1.0.3/test.json +21 -9
  177. package/data/craftbook-templates/wh/whitepaper/versions/1.0.3/test.json +16 -8
  178. package/data/craftbook-templates/ye/year-in-review/versions/1.0.3/test.json +8 -4
  179. package/data/project-types/index.json +1 -1
  180. package/data/project-types/ju/just-chat/manifest.json +1 -1
  181. package/data/project-types/ju/just-chat/versions/1.0.1/about.md +5 -0
  182. package/data/project-types/ju/just-chat/versions/1.0.1/manifest.json +19 -0
  183. package/package.json +1 -1
  184. package/schemas/chat-model-identity.schema.json +27 -0
  185. package/schemas/chat-model-version.schema.json +22 -0
@@ -0,0 +1,138 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Release Artifact Sanity Check evidence-fixture eval",
4
+ "objective": "Verify that the craftbook reconciles release integrity, signing, and package-member evidence into a conservative go/no-go report without live services or executable artifacts.",
5
+ "tags": [
6
+ "corpus",
7
+ "release",
8
+ "security"
9
+ ],
10
+ "prompt": "Use the Release Artifact Sanity Check craftbook on the captured dry-run evidence in `source/release-artifacts/`. These fixtures describe artifacts and package contents but are deliberately non-executable; do not use the network or invent new verification results. Write the final report to `release-artifact-sanity-report.md`.",
11
+ "setup": {
12
+ "projectName": "Release Artifact Sanity Check Eval",
13
+ "about": "A self-contained release-artifact audit. The source folder contains captured hashes, signature-tool results, and safe package listings for Boreal Desk v2.4.0.",
14
+ "missionObjectives": "Use the Release Artifact Sanity Check craftbook, reconcile every supplied item, treat missing trust or coverage as NOT VERIFIED, and produce an evidence-backed release-artifact-sanity-report.md without network calls or executing package contents.",
15
+ "files": [
16
+ {
17
+ "path": "source/release-artifacts/release-v2.4.0.md",
18
+ "content": "# Boreal Desk v2.4.0\n\nTag: v2.4.0\nRelease URL: https://example.invalid/boreal/releases/v2.4.0\nTop-level uploaded artifacts: 3\n\n| Artifact | GitHub sha256 digest | Bytes |\n| --- | --- | ---: |\n| BorealDesk-2.4.0-macos.zip | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 4100 |\n| BorealDeskSetup-2.4.0.msi | bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb | 5200 |\n| BorealDesk-2.4.0.AppImage | dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd | 6300 |\n"
19
+ },
20
+ {
21
+ "path": "source/release-artifacts/SHA256SUMS",
22
+ "content": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa BorealDesk-2.4.0-macos.zip\nbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb BorealDeskSetup-2.4.0.msi\ndddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd BorealDesk-2.4.0.AppImage\n"
23
+ },
24
+ {
25
+ "path": "source/release-artifacts/computed-hashes.txt",
26
+ "content": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa BorealDesk-2.4.0-macos.zip\ncccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc BorealDeskSetup-2.4.0.msi\ndddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd BorealDesk-2.4.0.AppImage\n"
27
+ },
28
+ {
29
+ "path": "source/release-artifacts/signature-evidence.md",
30
+ "content": "# Captured signature verifier output\n\n- `BorealDesk-2.4.0-macos.zip` expanded app: `codesign --verify --deep --strict` exit 0; Developer ID Application signer Team ID BDESK12345; `spctl` accepted and reported notarized. Trusted Apple root chain captured.\n- `BorealDeskSetup-2.4.0.msi`: `Get-AuthenticodeSignature` Status = NotSigned.\n- `BorealDesk-2.4.0.AppImage`: detached signature produced `GOODSIG build@boreal.example`, but the fixture contains no trusted fingerprint or key-source record. Treat signer trust as NOT VERIFIED.\n"
31
+ },
32
+ {
33
+ "path": "source/release-artifacts/package-inventory.txt",
34
+ "content": "SAFE LISTING ONLY — DO NOT EXECUTE\nDeclared contained regular files: 12\n\nmacos/Boreal Desk.app/Contents/MacOS/BorealDesk | Mach-O arm64+x86_64 | executable | signature covered\nmacos/Boreal Desk.app/Contents/Frameworks/Electron Framework.framework/Electron Framework | Mach-O | signature covered\nmacos/Boreal Desk.app/Contents/Resources/app.asar | ASAR | data\nmacos/Boreal Desk.app/Contents/Resources/current -> ../../outside | symlink escapes package root\nwindows/BorealDesk.exe | PE32+ | executable | Authenticode NotSigned\nwindows/updater.exe | PE32+ | executable | Authenticode NotSigned\nwindows/config/defaults.env | text | contains API_TOKEN=demo-hardcoded-token\nwindows/LICENSE.txt | text\nlinux/BorealDesk | ELF x86_64 | executable | covered only by untrusted outer GOODSIG\nlinux/usr/lib/libcrypto.so.3 | ELF shared library\nlinux/resources/app.asar | ASAR | data\nlinux/updater | ELF x86_64 | executable | no inner signature evidence\n\nArchive preflight: no absolute or `..` entry names; one escaping symlink is listed above. Expansion ratio stayed below the supplied limit. Local malware scanner was unavailable in the captured environment.\n"
35
+ }
36
+ ],
37
+ "worker": {
38
+ "name": "Ada",
39
+ "role": "Release Security Reviewer"
40
+ }
41
+ },
42
+ "mocks": [],
43
+ "success": {
44
+ "summary": "The report reconciles all three artifacts and 12 package members, reaches NO-GO from the supplied integrity/signing/package blockers, and does not invent live verification.",
45
+ "deliverables": [
46
+ {
47
+ "path": "release-artifact-sanity-report.md",
48
+ "kind": "markdown-report",
49
+ "minBytes": 2000,
50
+ "checks": [
51
+ {
52
+ "kind": "contains",
53
+ "file": "release-artifact-sanity-report.md",
54
+ "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
55
+ "flags": "i"
56
+ },
57
+ {
58
+ "kind": "contains",
59
+ "file": "release-artifact-sanity-report.md",
60
+ "pattern": "NO-GO|NO GO",
61
+ "flags": "i",
62
+ "label": "derive a no-go decision from hard blockers"
63
+ },
64
+ {
65
+ "kind": "contains",
66
+ "file": "release-artifact-sanity-report.md",
67
+ "pattern": "BorealDeskSetup-2\\.4\\.0\\.msi[\\s\\S]{0,500}(?:mismatch|cccc|FAIL)|(?:mismatch|cccc|FAIL)[\\s\\S]{0,500}BorealDeskSetup-2\\.4\\.0\\.msi",
68
+ "flags": "i",
69
+ "label": "catch the Windows installer digest mismatch"
70
+ },
71
+ {
72
+ "kind": "contains",
73
+ "file": "release-artifact-sanity-report.md",
74
+ "pattern": "NotSigned|not signed|unsigned",
75
+ "flags": "i",
76
+ "label": "report missing Authenticode signing"
77
+ },
78
+ {
79
+ "kind": "contains",
80
+ "file": "release-artifact-sanity-report.md",
81
+ "pattern": "GOODSIG[\\s\\S]{0,300}(?:NOT VERIFIED|untrusted|trust)|(?:NOT VERIFIED|untrusted|trust)[\\s\\S]{0,300}GOODSIG",
82
+ "flags": "i",
83
+ "label": "distinguish signature presence from trusted identity"
84
+ },
85
+ {
86
+ "kind": "contains",
87
+ "file": "release-artifact-sanity-report.md",
88
+ "pattern": "Resources/current|escaping symlink|symlink escapes",
89
+ "flags": "i"
90
+ },
91
+ {
92
+ "kind": "contains",
93
+ "file": "release-artifact-sanity-report.md",
94
+ "pattern": "API_TOKEN|hardcoded-token|credential",
95
+ "flags": "i"
96
+ },
97
+ {
98
+ "kind": "contains",
99
+ "file": "release-artifact-sanity-report.md",
100
+ "pattern": "3\\s+(?:top-level\\s+)?artifacts|12\\s+(?:contained\\s+)?(?:regular\\s+)?files",
101
+ "flags": "i",
102
+ "label": "reconcile top-level and contained-file counts"
103
+ }
104
+ ]
105
+ }
106
+ ]
107
+ },
108
+ "rubric": {
109
+ "artifact": {
110
+ "path": "release-artifact-sanity-report.md",
111
+ "kind": "markdown"
112
+ },
113
+ "axes": [
114
+ {
115
+ "name": "coverage",
116
+ "description": "Every top-level artifact and all 12 supplied package members are reconciled."
117
+ },
118
+ {
119
+ "name": "integrity",
120
+ "description": "Digest comparisons are explicit and the Windows mismatch drives the decision."
121
+ },
122
+ {
123
+ "name": "authenticity",
124
+ "description": "Signature presence, cryptographic validity, and trusted signer identity are kept distinct."
125
+ },
126
+ {
127
+ "name": "package safety",
128
+ "description": "The escaping symlink, unsigned executables, hardcoded token, and unavailable scanner are handled conservatively."
129
+ }
130
+ ]
131
+ },
132
+ "qualityFocus": [
133
+ "complete artifact and package-member reconciliation",
134
+ "trust-aware signature verification",
135
+ "evidence-backed no-go decision",
136
+ "non-executing hostile-input inspection"
137
+ ]
138
+ }
@@ -76,20 +76,20 @@
76
76
  },
77
77
  "axes": [
78
78
  {
79
- "name": "safety",
80
- "description": "Dry-run posture is explicit: no real credentials, clear stop-before-side-effect boundary."
79
+ "name": "grounding",
80
+ "description": "Seeded facts appear faithfully and the source is cited."
81
81
  },
82
82
  {
83
- "name": "mapping",
84
- "description": "Fake endpoints/commands are mapped completely to the workflow steps."
83
+ "name": "structure",
84
+ "description": "Sections progress logically for the artifact class."
85
85
  },
86
86
  {
87
- "name": "signals",
88
- "description": "Success, failure, retry, and abort conditions are all defined."
87
+ "name": "completeness",
88
+ "description": "Required elements (risks, next actions, scope) are all present."
89
89
  },
90
90
  {
91
- "name": "containment",
92
- "description": "The plan cannot accidentally reach a real service from a mock context."
91
+ "name": "tone",
92
+ "description": "The register fits the audience and artifact class."
93
93
  }
94
94
  ]
95
95
  },
@@ -0,0 +1,339 @@
1
+ {
2
+ "id": "release-notes",
3
+ "name": "Release Notes",
4
+ "description": "Turn a raw set of merged commits, pull requests, and ticket IDs into polished, human-readable release notes for a versioned release — grouped by theme (Features, Improvements, Bug Fixes, Breaking Changes), written for users rather than engineers, with upgrade/migration callouts surfaced first. The ordering is deliberate: a developer gathers and de-noises the change inventory before any prose is written, a copywriter turns that inventory into benefit-led notes in a consistent voice, and a reviewer verifies every shipped change is represented and nothing internal-only or unreleased leaked in. Use this for GitHub Releases, product announcement posts, or the user-facing notes that ship alongside a tagged version.\n\nA gallery craftbook generated from an archetype spec. It runs\n`phase → (per-phase gate) → … → evaluate → (loop) → finish`. Each build\nphase that produces a checkable artifact is followed by a **runtime\ngate-checkpoint** — the runtime verifies the artifact and routes with no\nmodel turn, looping back to redo the phase on a miss. The final `evaluate`\nstep holds a static deliverable gate plus a reviewer QA pass. What it adds\nover the generic `build-loop`: a specialist role per phase, a\ndomain-correct ordering, and a concrete per-phase quality bar.\n\nDeliverables marked \"artifact\" land in the project's artifacts drawer (`write_artifact` / `read_artifact`), not the shipped workspace — review output is not product source.\n\nPhases:\n\n1. Gather the change inventory (developer) — collect and de-noise every shipped change since the last tag → gated on artifact `{{workPath}}/gather.md` (markdown-notes)\n2. Write the notes (copywriter) — turn the inventory into benefit-led, user-facing notes → gated on `release-notes.md` (markdown-doc)\n3. Review for completeness and tone (reviewer) — verify coverage, accuracy, and that nothing internal leaked → gated on artifact `{{workPath}}/review.md` (markdown-notes)\n\nThe gates never advance with an unmet criterion, and loop back to the\nowning phase to fix named gaps.\n",
5
+ "entryStepId": "gather",
6
+ "triggers": [
7
+ "write release notes",
8
+ "release notes for v2",
9
+ "what changed this release",
10
+ "draft release announcement",
11
+ "notes for the new version",
12
+ "cut a changelog",
13
+ "update CHANGELOG.md",
14
+ "roll unreleased into a version",
15
+ "stamp the changelog for v1.4",
16
+ "keep a changelog release",
17
+ "write a changelog",
18
+ "generate release notes",
19
+ "whats new writeup",
20
+ "changelog from commits",
21
+ "version notes"
22
+ ],
23
+ "paramSchema": {
24
+ "type": "object",
25
+ "properties": {
26
+ "workPath": {
27
+ "type": "string",
28
+ "title": "Working folder",
29
+ "description": "Per-task working folder in the artifacts drawer. Defaults to this task's own folder so runs never collide; override with a stable name when you deliberately want runs to share files.",
30
+ "default": "{{task.dir}}"
31
+ }
32
+ }
33
+ },
34
+ "steps": [
35
+ {
36
+ "id": "gather",
37
+ "name": "Gather the change inventory",
38
+ "description": "collect and de-noise every shipped change since the last tag",
39
+ "prompt": "1. Determine the version range: the last released tag (or last release date) up to HEAD/the release candidate. 2. Collect the raw inventory — merged PRs, commit subjects, and linked issue IDs (use git log, gh pr list --state merged, or the changelog source available to you). 3. Filter OUT noise that should never reach users: merge commits, dependency-bump-only commits, CI/build-config tweaks, lint/format-only commits, and anything not yet actually released. 4. Classify each remaining change into exactly one bucket: Features, Improvements, Bug Fixes, Breaking Changes. 5. Flag every Breaking Change and anything requiring a user action (config change, migration, new env var) — these get top billing later. 6. Good looks like: a deduplicated, categorized list where each item has a PR/issue reference and a one-line plain description, and every category is either populated or explicitly marked 'none'. Write an acceptance-criteria checklist (e.g. 'every shipped user-facing change appears exactly once', 'breaking changes are flagged with the required user action', 'no merge/dependency/CI-only noise', 'each item cites a PR or issue') plus the version range and the classified inventory to the notes file via write_task_note AND to {{workPath}}/gather.md.\n\nThe deliverable `{{workPath}}/gather.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
40
+ "suggestedRole": "developer",
41
+ "toolPolicy": {
42
+ "disallowBuiltinToolsets": [
43
+ "ai-apps",
44
+ "archives",
45
+ "audio",
46
+ "browser-automation",
47
+ "code-execution",
48
+ "craftbooks",
49
+ "data-tables",
50
+ "entity-intel",
51
+ "image-intel",
52
+ "images",
53
+ "role-delegation",
54
+ "role-delegation-escalation",
55
+ "security-intel",
56
+ "team-management",
57
+ "videos",
58
+ "web",
59
+ "workspace-fs-write"
60
+ ],
61
+ "outputMedium": "artifact",
62
+ "additionalOutputMedia": [
63
+ "task-note"
64
+ ]
65
+ },
66
+ "advanceWhen": {
67
+ "file": "{{workPath}}/gather.md",
68
+ "minBytes": 1,
69
+ "sniff": "nonempty",
70
+ "artifact": true
71
+ },
72
+ "gate": {
73
+ "at": "completion",
74
+ "checks": [
75
+ {
76
+ "kind": "minBytes",
77
+ "file": "{{workPath}}/gather.md",
78
+ "bytes": 120,
79
+ "artifact": true
80
+ },
81
+ {
82
+ "kind": "sniff",
83
+ "file": "{{workPath}}/gather.md",
84
+ "sniff": "nonempty",
85
+ "artifact": true
86
+ }
87
+ ],
88
+ "onReject": "gather",
89
+ "maxAttempts": 3
90
+ },
91
+ "next": "write"
92
+ },
93
+ {
94
+ "id": "write",
95
+ "name": "Write the notes",
96
+ "description": "turn the inventory into benefit-led, user-facing notes",
97
+ "prompt": "1. Open {{workPath}}/gather.md and write the release notes for HUMANS, not for the commit log — lead each item with the user-visible benefit, not the implementation. 2. Order the document: a one-paragraph highlights summary, then Breaking Changes / Upgrade Notes (with the exact action the user must take), then Features, Improvements, Bug Fixes. 3. Keep each line tight and parallel in voice; use the imperative or present tense consistently ('Adds…', 'Fixes…'). 4. Preserve the PR/issue references as links or trailing (#123) so readers can dig in. 5. Open with the version number and release date as an H1/H2. 6. Good looks like: a reader who has never seen the codebase understands what changed and what they must do, breaking changes are impossible to miss, and every inventory item from gather.md is represented. Write the notes to release-notes.md.\n\nBefore working, open the artifact input `{{workPath}}/gather.md` with `read_artifact`; do not look for it in the workspace.",
98
+ "suggestedRole": "copywriter",
99
+ "toolPolicy": {
100
+ "disallowBuiltinToolsets": [
101
+ "ai-apps",
102
+ "archives",
103
+ "audio",
104
+ "browser-automation",
105
+ "code-execution",
106
+ "craftbooks",
107
+ "data-tables",
108
+ "entity-intel",
109
+ "image-intel",
110
+ "images",
111
+ "role-delegation",
112
+ "role-delegation-escalation",
113
+ "security-intel",
114
+ "team-management",
115
+ "videos",
116
+ "web"
117
+ ],
118
+ "outputMedium": "workspace",
119
+ "additionalOutputMedia": [
120
+ "task-note"
121
+ ]
122
+ },
123
+ "consumes": [
124
+ {
125
+ "file": "{{workPath}}/gather.md",
126
+ "artifact": true
127
+ }
128
+ ],
129
+ "advanceWhen": {
130
+ "file": "release-notes.md",
131
+ "minBytes": 1,
132
+ "sniff": "nonempty"
133
+ },
134
+ "gate": {
135
+ "at": "completion",
136
+ "checks": [
137
+ {
138
+ "kind": "minBytes",
139
+ "file": "release-notes.md",
140
+ "bytes": 500
141
+ }
142
+ ],
143
+ "scripts": [
144
+ {
145
+ "name": "checkContains",
146
+ "scope": "standard",
147
+ "inputs": {
148
+ "file": "release-notes.md",
149
+ "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
150
+ "flags": "i"
151
+ }
152
+ }
153
+ ],
154
+ "onReject": "write",
155
+ "maxAttempts": 3
156
+ },
157
+ "next": "review"
158
+ },
159
+ {
160
+ "id": "review",
161
+ "name": "Review for completeness and tone",
162
+ "description": "verify coverage, accuracy, and that nothing internal leaked",
163
+ "prompt": "1. Cross-check release-notes.md against {{workPath}}/gather.md: every classified item must appear, and nothing must appear that was filtered as noise or is unreleased. 2. Verify Breaking Changes are at the top with a concrete user action, not buried. 3. Check the voice is consistent and benefit-led, version + date are present, and references resolve. 4. Confirm no internal-only details (private ticket chatter, internal service names, secrets, profanity) leaked into a public document. 5. Write a PASS/FAIL against each acceptance criterion from gather.md, listing any specific gap. 6. If anything fails, the fix happens back in the write phase. Write your findings to {{workPath}}/review.md.\n\nBefore working, open the artifact input `{{workPath}}/gather.md` with `read_artifact`; do not look for it in the workspace.\n\nThe deliverable `{{workPath}}/review.md` lands in the project's artifacts drawer — write it with `write_artifact` and read it back with `read_artifact`; the shipped workspace stays untouched.",
164
+ "suggestedRole": "reviewer",
165
+ "toolPolicy": {
166
+ "disallowBuiltinToolsets": [
167
+ "ai-apps",
168
+ "archives",
169
+ "audio",
170
+ "browser-automation",
171
+ "code-execution",
172
+ "craftbooks",
173
+ "data-tables",
174
+ "entity-intel",
175
+ "git",
176
+ "image-intel",
177
+ "images",
178
+ "role-delegation",
179
+ "role-delegation-escalation",
180
+ "security-intel",
181
+ "team-management",
182
+ "videos",
183
+ "web",
184
+ "workspace-fs-write"
185
+ ],
186
+ "outputMedium": "artifact"
187
+ },
188
+ "consumes": [
189
+ {
190
+ "file": "{{workPath}}/gather.md",
191
+ "artifact": true
192
+ },
193
+ {
194
+ "file": "release-notes.md"
195
+ }
196
+ ],
197
+ "advanceWhen": {
198
+ "file": "{{workPath}}/review.md",
199
+ "minBytes": 1,
200
+ "sniff": "nonempty",
201
+ "requireChange": true,
202
+ "artifact": true
203
+ },
204
+ "gate": {
205
+ "at": "completion",
206
+ "checks": [
207
+ {
208
+ "kind": "minBytes",
209
+ "file": "release-notes.md",
210
+ "bytes": 500
211
+ },
212
+ {
213
+ "kind": "citationsResolve",
214
+ "file": "{{workPath}}/review.md",
215
+ "minCitations": 2,
216
+ "artifact": true
217
+ }
218
+ ],
219
+ "scripts": [
220
+ {
221
+ "name": "checkContains",
222
+ "scope": "standard",
223
+ "inputs": {
224
+ "file": "release-notes.md",
225
+ "pattern": "(?:^|\\n)#{1,3}\\s+\\S",
226
+ "flags": "i"
227
+ }
228
+ }
229
+ ],
230
+ "onReject": "review",
231
+ "maxAttempts": 4
232
+ },
233
+ "next": "evaluate"
234
+ },
235
+ {
236
+ "id": "evaluate",
237
+ "name": "Evaluate",
238
+ "description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
239
+ "prompt": "Review `{{workPath}}/review.md` against the original scope: every claim cites a real path, the severities and priorities are defensible, and nothing important in scope was skipped. Open the underlying files for at least the top findings; do not grade from the report's own summary. If a finding cannot be verified, say so explicitly.\n\nWrite your review to the artifact `{{workPath}}/review.md` with one `write_artifact` call: what you checked, what held, what did not (as a findings table with columns `| Severity | File | Line | Problem | Fix |` when anything needs fixing), ending with exactly `Verdict: PASS` or `Verdict: REVISE`. The gate enforces the verdict: a well-formed REVISE is routed back to the `review` step automatically with your findings. On PASS, `advance_task_step` to `finish`.",
240
+ "suggestedRole": "reviewer",
241
+ "toolPolicy": {
242
+ "disallowBuiltinToolsets": [
243
+ "ai-apps",
244
+ "archives",
245
+ "audio",
246
+ "browser-automation",
247
+ "code-execution",
248
+ "craftbooks",
249
+ "data-tables",
250
+ "entity-intel",
251
+ "git",
252
+ "image-intel",
253
+ "images",
254
+ "role-delegation",
255
+ "role-delegation-escalation",
256
+ "security-intel",
257
+ "team-management",
258
+ "videos",
259
+ "web",
260
+ "workspace-fs-write"
261
+ ],
262
+ "outputMedium": "artifact"
263
+ },
264
+ "consumes": [
265
+ {
266
+ "file": "release-notes.md"
267
+ }
268
+ ],
269
+ "gate": {
270
+ "at": "completion",
271
+ "checks": [
272
+ {
273
+ "kind": "minBytes",
274
+ "file": "{{workPath}}/review.md",
275
+ "bytes": 300,
276
+ "artifact": true
277
+ },
278
+ {
279
+ "kind": "contains",
280
+ "file": "{{workPath}}/review.md",
281
+ "pattern": "Verdict:\\s*(?:PASS|REVISE)",
282
+ "flags": "i",
283
+ "label": "explicit PASS or REVISE verdict",
284
+ "artifact": true
285
+ }
286
+ ],
287
+ "scripts": [
288
+ {
289
+ "name": "checkFixReview",
290
+ "scope": "standard",
291
+ "inputs": {
292
+ "taskRef": "{{task.ref}}",
293
+ "reviewPath": "{{workPath}}/review.md",
294
+ "fixStepId": "review"
295
+ }
296
+ }
297
+ ],
298
+ "onReject": "evaluate",
299
+ "maxAttempts": 4
300
+ },
301
+ "next": "finish"
302
+ },
303
+ {
304
+ "id": "finish",
305
+ "name": "Finish",
306
+ "description": "All acceptance criteria met. Stamp a short summary and report DONE.",
307
+ "prompt": "Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.",
308
+ "suggestedRole": "developer",
309
+ "toolPolicy": {
310
+ "disallowBuiltinToolsets": [
311
+ "ai-apps",
312
+ "archives",
313
+ "artifacts",
314
+ "audio",
315
+ "browser-automation",
316
+ "code-execution",
317
+ "craftbooks",
318
+ "data-tables",
319
+ "entity-intel",
320
+ "git",
321
+ "image-intel",
322
+ "images",
323
+ "role-delegation",
324
+ "role-delegation-escalation",
325
+ "security-intel",
326
+ "team-management",
327
+ "videos",
328
+ "web",
329
+ "workspace-fs-write"
330
+ ],
331
+ "outputMedium": "task-note"
332
+ },
333
+ "terminal": true
334
+ }
335
+ ],
336
+ "version": "1.0.5",
337
+ "releasedAt": "2026-09-05T03:30:00Z",
338
+ "minGezelVersion": "1.26236"
339
+ }
@@ -0,0 +1,111 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Public release notes from noisy change inventory",
4
+ "objective": "Measure whether the release-notes craftbook gathers, de-noises, classifies, and writes benefit-led release notes with breaking changes up front.",
5
+ "tags": [
6
+ "corpus"
7
+ ],
8
+ "prompt": "In the `Release Notes Eval` project, read `source/change-inventory.md` and write `release-notes.md` for HarborCRM 3.8.0 dated 2026-06-28. Include Highlights, Breaking Changes / Upgrade Notes, Features, Improvements, and Bug Fixes. Preserve PR references, exclude internal-only noise, and make the breaking config action impossible to miss.",
9
+ "setup": {
10
+ "projectName": "Release Notes Eval",
11
+ "about": "Self-contained eval project for release-notes. The raw change inventory is seeded in workspace/source/change-inventory.md.",
12
+ "missionObjectives": "Write public release notes from a noisy change inventory, preserving user-facing changes and references while excluding internal-only noise.",
13
+ "files": [
14
+ {
15
+ "path": "source/change-inventory.md",
16
+ "content": "# HarborCRM 3.8.0 change inventory\n\n- PR #812 Feature: adds saved invoice filters for finance teams.\n- PR #817 Improvement: webhook retry queue now shows next retry time in the admin panel.\n- PR #823 Breaking: integrations must rename env var `HC_WEBHOOK_SECRET` to `PAYMENTS_WEBHOOK_SECRET` before deploy.\n- PR #829 Bug fix: fixes duplicate customer merge suggestions after CSV import.\n- PR #831 Internal: renamed reducer files in the billing package.\n- PR #832 CI-only: upgraded lint runner and prettier config.\n- PR #835 Dependency bump only: patch-level dev dependency update.\n"
17
+ }
18
+ ],
19
+ "worker": {
20
+ "name": "Rina",
21
+ "role": "Copywriter"
22
+ }
23
+ },
24
+ "mocks": [],
25
+ "success": {
26
+ "summary": "workspace/release-notes.md has version/date, public sections, PR references, all user-facing changes, a prominent breaking action, and excludes internal/CI/dependency noise.",
27
+ "deliverables": [
28
+ {
29
+ "path": "release-notes.md",
30
+ "kind": "markdown-doc",
31
+ "minBytes": 1500,
32
+ "checks": [
33
+ {
34
+ "kind": "contains",
35
+ "file": "release-notes.md",
36
+ "pattern": "HarborCRM|3\\.8\\.0|2026-06-28"
37
+ },
38
+ {
39
+ "kind": "contains",
40
+ "file": "release-notes.md",
41
+ "pattern": "Highlights|Breaking Changes|Upgrade Notes|Features|Improvements|Bug Fixes",
42
+ "flags": "i"
43
+ },
44
+ {
45
+ "kind": "contains",
46
+ "file": "release-notes.md",
47
+ "pattern": "#812|#817|#823|#829",
48
+ "flags": "i"
49
+ },
50
+ {
51
+ "kind": "contains",
52
+ "file": "release-notes.md",
53
+ "pattern": "saved invoice filters|retry queue|duplicate customer merge",
54
+ "flags": "i"
55
+ },
56
+ {
57
+ "kind": "contains",
58
+ "file": "release-notes.md",
59
+ "pattern": "HC_WEBHOOK_SECRET|PAYMENTS_WEBHOOK_SECRET|before deploy|breaking",
60
+ "flags": "i"
61
+ },
62
+ {
63
+ "kind": "notContains",
64
+ "file": "release-notes.md",
65
+ "pattern": "reducer|lint runner|prettier|dependency bump|#831|#832|#835",
66
+ "flags": "i"
67
+ }
68
+ ]
69
+ }
70
+ ]
71
+ },
72
+ "rubric": {
73
+ "artifact": {
74
+ "path": "release-notes.md",
75
+ "kind": "markdown"
76
+ },
77
+ "axes": [
78
+ {
79
+ "name": "safety",
80
+ "description": "Dry-run posture is explicit: no real credentials, clear stop-before-side-effect boundary."
81
+ },
82
+ {
83
+ "name": "mapping",
84
+ "description": "Fake endpoints/commands are mapped completely to the workflow steps."
85
+ },
86
+ {
87
+ "name": "signals",
88
+ "description": "Success, failure, retry, and abort conditions are all defined."
89
+ },
90
+ {
91
+ "name": "containment",
92
+ "description": "The plan cannot accidentally reach a real service from a mock context."
93
+ }
94
+ ]
95
+ },
96
+ "qualityFocus": [
97
+ "de-noising",
98
+ "benefit-led notes",
99
+ "breaking action visibility"
100
+ ],
101
+ "extensions": {
102
+ "legacySimulators": [
103
+ {
104
+ "id": "release-notes-fake-service-fixture",
105
+ "kind": "data-source",
106
+ "status": "implemented",
107
+ "description": "Seeded local fake service contract replacing live CLIs, HTTP APIs, credentials, and side effects."
108
+ }
109
+ ]
110
+ }
111
+ }