vibey 0.1.0__tar.gz

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 (345) hide show
  1. vibey-0.1.0/.github/workflows/ci.yml +83 -0
  2. vibey-0.1.0/.github/workflows/publish-to-pypi.yml +74 -0
  3. vibey-0.1.0/.github/workflows/release-please.yml +22 -0
  4. vibey-0.1.0/.gitignore +15 -0
  5. vibey-0.1.0/.importlinter +58 -0
  6. vibey-0.1.0/.pre-commit-config.yaml +33 -0
  7. vibey-0.1.0/.python-version +1 -0
  8. vibey-0.1.0/.release-please-manifest.json +3 -0
  9. vibey-0.1.0/.vibey/handoff/m10-to-claudeloop +36 -0
  10. vibey-0.1.0/.vibey/handoff/m6-to-agyloop +102 -0
  11. vibey-0.1.0/CHANGELOG.md +82 -0
  12. vibey-0.1.0/COVERAGE_STATUS.md +231 -0
  13. vibey-0.1.0/HANDOFF.md +483 -0
  14. vibey-0.1.0/PKG-INFO +135 -0
  15. vibey-0.1.0/README.md +111 -0
  16. vibey-0.1.0/SECURITY.md +62 -0
  17. vibey-0.1.0/docs/architecture/decisions/0001-orchestrate-do-not-reimplement.md +54 -0
  18. vibey-0.1.0/docs/architecture/decisions/0002-postgres-not-sqlite.md +62 -0
  19. vibey-0.1.0/docs/architecture/decisions/0003-event-sourced-ledger.md +62 -0
  20. vibey-0.1.0/docs/architecture/decisions/0004-no-loss-gate-on-handoff.md +79 -0
  21. vibey-0.1.0/docs/architecture/decisions/0005-smooth-weighted-round-robin.md +76 -0
  22. vibey-0.1.0/docs/architecture/decisions/0006-normalized-effort-ladder.md +78 -0
  23. vibey-0.1.0/docs/architecture/decisions/0007-rotate-at-boundaries.md +59 -0
  24. vibey-0.1.0/docs/architecture/decisions/0008-worktree-isolation.md +65 -0
  25. vibey-0.1.0/docs/architecture/decisions/0009-human-gates-are-parked-jobs.md +73 -0
  26. vibey-0.1.0/docs/architecture/decisions/0010-review-loopback-routing.md +72 -0
  27. vibey-0.1.0/docs/architecture/decisions/0011-agent-surface-provisioning.md +73 -0
  28. vibey-0.1.0/docs/architecture/decisions/0012-deploy-is-a-separate-cli.md +78 -0
  29. vibey-0.1.0/docs/architecture/decisions/0013-deployment-is-a-three-phase-stage-set.md +119 -0
  30. vibey-0.1.0/docs/architecture/decisions/0014-optional-visual-design-and-deployment-opt-in.md +184 -0
  31. vibey-0.1.0/docs/plans/architecture-and-roadmap.md +1162 -0
  32. vibey-0.1.0/docs/plans/data-model.md +583 -0
  33. vibey-0.1.0/docs/plans/domain-model.md +645 -0
  34. vibey-0.1.0/docs/plans/fleet-program-runbook.md +553 -0
  35. vibey-0.1.0/docs/plans/handoff-protocol.md +506 -0
  36. vibey-0.1.0/docs/plans/implementation-plan.md +308 -0
  37. vibey-0.1.0/docs/plans/phase-protocols.md +706 -0
  38. vibey-0.1.0/docs/plans/rotation-and-engines.md +455 -0
  39. vibey-0.1.0/migrations/0001_project.sql +18 -0
  40. vibey-0.1.0/migrations/0002_event.sql +65 -0
  41. vibey-0.1.0/migrations/0003_job.sql +44 -0
  42. vibey-0.1.0/migrations/0004_work_item.sql +21 -0
  43. vibey-0.1.0/migrations/0005_open_item.sql +19 -0
  44. vibey-0.1.0/migrations/0006_handoff.sql +22 -0
  45. vibey-0.1.0/migrations/0007_engine_health_rotation.sql +32 -0
  46. vibey-0.1.0/migrations/0008_human_gate_artifact_budget.sql +41 -0
  47. vibey-0.1.0/migrations/0009_event_produced_at.sql +36 -0
  48. vibey-0.1.0/migrations/0010_visual_design_phase.sql +4 -0
  49. vibey-0.1.0/migrations/0011_deployment_stage_set_phases.sql +4 -0
  50. vibey-0.1.0/pyproject.toml +72 -0
  51. vibey-0.1.0/release-please-config.json +12 -0
  52. vibey-0.1.0/src/vibey/__init__.py +1 -0
  53. vibey-0.1.0/src/vibey/application/__init__.py +0 -0
  54. vibey-0.1.0/src/vibey/application/azure_port.py +25 -0
  55. vibey-0.1.0/src/vibey/application/build_decompose_handler.py +99 -0
  56. vibey-0.1.0/src/vibey/application/build_engine_run.py +49 -0
  57. vibey-0.1.0/src/vibey/application/build_implement_handler.py +180 -0
  58. vibey-0.1.0/src/vibey/application/build_integrate_handler.py +125 -0
  59. vibey-0.1.0/src/vibey/application/build_kickoff.py +24 -0
  60. vibey-0.1.0/src/vibey/application/build_verify_handler.py +137 -0
  61. vibey-0.1.0/src/vibey/application/conformance.py +196 -0
  62. vibey-0.1.0/src/vibey/application/deploy_acceptance_handler.py +132 -0
  63. vibey-0.1.0/src/vibey/application/deploy_design_handler.py +100 -0
  64. vibey-0.1.0/src/vibey/application/deploy_execute_handler.py +171 -0
  65. vibey-0.1.0/src/vibey/application/deploy_review_handler.py +144 -0
  66. vibey-0.1.0/src/vibey/application/deploy_review_routing.py +166 -0
  67. vibey-0.1.0/src/vibey/application/design.py +180 -0
  68. vibey-0.1.0/src/vibey/application/design_acceptance.py +112 -0
  69. vibey-0.1.0/src/vibey/application/design_handler.py +188 -0
  70. vibey-0.1.0/src/vibey/application/design_research_handler.py +45 -0
  71. vibey-0.1.0/src/vibey/application/design_spec.py +109 -0
  72. vibey-0.1.0/src/vibey/application/design_synthesis_handler.py +56 -0
  73. vibey-0.1.0/src/vibey/application/dto.py +189 -0
  74. vibey-0.1.0/src/vibey/application/handoff_orchestration.py +71 -0
  75. vibey-0.1.0/src/vibey/application/interfaces/__init__.py +125 -0
  76. vibey-0.1.0/src/vibey/application/interfaces/azure.py +66 -0
  77. vibey-0.1.0/src/vibey/application/interfaces/build.py +69 -0
  78. vibey-0.1.0/src/vibey/application/interfaces/design.py +59 -0
  79. vibey-0.1.0/src/vibey/application/interfaces/engines.py +68 -0
  80. vibey-0.1.0/src/vibey/application/interfaces/gates.py +25 -0
  81. vibey-0.1.0/src/vibey/application/interfaces/ledger.py +79 -0
  82. vibey-0.1.0/src/vibey/application/interfaces/observability.py +17 -0
  83. vibey-0.1.0/src/vibey/application/interfaces/projects.py +34 -0
  84. vibey-0.1.0/src/vibey/application/interfaces/queue.py +104 -0
  85. vibey-0.1.0/src/vibey/application/interfaces/review.py +39 -0
  86. vibey-0.1.0/src/vibey/application/interfaces/system.py +11 -0
  87. vibey-0.1.0/src/vibey/application/interfaces/visual.py +26 -0
  88. vibey-0.1.0/src/vibey/application/job_dispatcher.py +18 -0
  89. vibey-0.1.0/src/vibey/application/ports.py +28 -0
  90. vibey-0.1.0/src/vibey/application/review_collect_handler.py +130 -0
  91. vibey-0.1.0/src/vibey/application/review_demo_handler.py +158 -0
  92. vibey-0.1.0/src/vibey/application/review_deployment_choice_handler.py +136 -0
  93. vibey-0.1.0/src/vibey/application/review_triage_handler.py +143 -0
  94. vibey-0.1.0/src/vibey/application/seed_prompt.py +77 -0
  95. vibey-0.1.0/src/vibey/application/text_verdict_fallback.py +79 -0
  96. vibey-0.1.0/src/vibey/application/verdict_extraction.py +180 -0
  97. vibey-0.1.0/src/vibey/application/visual_acceptance.py +87 -0
  98. vibey-0.1.0/src/vibey/application/visual_handler.py +79 -0
  99. vibey-0.1.0/src/vibey/application/visual_spec.py +27 -0
  100. vibey-0.1.0/src/vibey/application/worker.py +112 -0
  101. vibey-0.1.0/src/vibey/bootstrap.py +142 -0
  102. vibey-0.1.0/src/vibey/cli/__init__.py +0 -0
  103. vibey-0.1.0/src/vibey/cli/errors.py +97 -0
  104. vibey-0.1.0/src/vibey/cli/main.py +788 -0
  105. vibey-0.1.0/src/vibey/domain/__init__.py +0 -0
  106. vibey-0.1.0/src/vibey/domain/briefing.py +122 -0
  107. vibey-0.1.0/src/vibey/domain/budget.py +31 -0
  108. vibey-0.1.0/src/vibey/domain/capacity.py +31 -0
  109. vibey-0.1.0/src/vibey/domain/circuit.py +92 -0
  110. vibey-0.1.0/src/vibey/domain/command_guard.py +115 -0
  111. vibey-0.1.0/src/vibey/domain/config.py +218 -0
  112. vibey-0.1.0/src/vibey/domain/deployment.py +439 -0
  113. vibey-0.1.0/src/vibey/domain/effort.py +65 -0
  114. vibey-0.1.0/src/vibey/domain/engine.py +78 -0
  115. vibey-0.1.0/src/vibey/domain/errors.py +60 -0
  116. vibey-0.1.0/src/vibey/domain/handoff.py +159 -0
  117. vibey-0.1.0/src/vibey/domain/job.py +40 -0
  118. vibey-0.1.0/src/vibey/domain/ledger.py +134 -0
  119. vibey-0.1.0/src/vibey/domain/media.py +114 -0
  120. vibey-0.1.0/src/vibey/domain/noloss.py +303 -0
  121. vibey-0.1.0/src/vibey/domain/phase.py +343 -0
  122. vibey-0.1.0/src/vibey/domain/plan.py +94 -0
  123. vibey-0.1.0/src/vibey/domain/projections.py +288 -0
  124. vibey-0.1.0/src/vibey/domain/prompt_shield.py +84 -0
  125. vibey-0.1.0/src/vibey/domain/provision.py +82 -0
  126. vibey-0.1.0/src/vibey/domain/review.py +240 -0
  127. vibey-0.1.0/src/vibey/domain/rotation.py +148 -0
  128. vibey-0.1.0/src/vibey/domain/scope_guard.py +103 -0
  129. vibey-0.1.0/src/vibey/domain/spec.py +65 -0
  130. vibey-0.1.0/src/vibey/domain/verbosity.py +80 -0
  131. vibey-0.1.0/src/vibey/domain/visual.py +64 -0
  132. vibey-0.1.0/src/vibey/domain/worktree.py +31 -0
  133. vibey-0.1.0/src/vibey/infrastructure/__init__.py +0 -0
  134. vibey-0.1.0/src/vibey/infrastructure/azure/__init__.py +6 -0
  135. vibey-0.1.0/src/vibey/infrastructure/azure/adapter.py +130 -0
  136. vibey-0.1.0/src/vibey/infrastructure/azure/iac.py +84 -0
  137. vibey-0.1.0/src/vibey/infrastructure/build/__init__.py +0 -0
  138. vibey-0.1.0/src/vibey/infrastructure/build/automated_review_runner.py +69 -0
  139. vibey-0.1.0/src/vibey/infrastructure/build/gate_runner.py +32 -0
  140. vibey-0.1.0/src/vibey/infrastructure/config_loader.py +7 -0
  141. vibey-0.1.0/src/vibey/infrastructure/container/__init__.py +10 -0
  142. vibey-0.1.0/src/vibey/infrastructure/container/config.py +30 -0
  143. vibey-0.1.0/src/vibey/infrastructure/container/runtime.py +93 -0
  144. vibey-0.1.0/src/vibey/infrastructure/context_writer.py +19 -0
  145. vibey-0.1.0/src/vibey/infrastructure/db/__init__.py +0 -0
  146. vibey-0.1.0/src/vibey/infrastructure/db/build_ledger.py +38 -0
  147. vibey-0.1.0/src/vibey/infrastructure/db/design_ledger.py +54 -0
  148. vibey-0.1.0/src/vibey/infrastructure/db/design_spec_repository.py +55 -0
  149. vibey-0.1.0/src/vibey/infrastructure/db/engine_health_repository.py +99 -0
  150. vibey-0.1.0/src/vibey/infrastructure/db/handoff_repository.py +112 -0
  151. vibey-0.1.0/src/vibey/infrastructure/db/human_gate_repository.py +103 -0
  152. vibey-0.1.0/src/vibey/infrastructure/db/job_repository.py +254 -0
  153. vibey-0.1.0/src/vibey/infrastructure/db/ledger_repository.py +130 -0
  154. vibey-0.1.0/src/vibey/infrastructure/db/migrator.py +85 -0
  155. vibey-0.1.0/src/vibey/infrastructure/db/notifier.py +50 -0
  156. vibey-0.1.0/src/vibey/infrastructure/db/project_repository.py +104 -0
  157. vibey-0.1.0/src/vibey/infrastructure/db/review_ledger.py +44 -0
  158. vibey-0.1.0/src/vibey/infrastructure/db/visual_inventory_repository.py +73 -0
  159. vibey-0.1.0/src/vibey/infrastructure/engines/__init__.py +0 -0
  160. vibey-0.1.0/src/vibey/infrastructure/engines/argv.py +23 -0
  161. vibey-0.1.0/src/vibey/infrastructure/engines/classify.py +209 -0
  162. vibey-0.1.0/src/vibey/infrastructure/engines/claudeloop_design.py +195 -0
  163. vibey-0.1.0/src/vibey/infrastructure/engines/claudeloop_process.py +197 -0
  164. vibey-0.1.0/src/vibey/infrastructure/engines/descriptors.py +184 -0
  165. vibey-0.1.0/src/vibey/infrastructure/engines/plan_writer.py +20 -0
  166. vibey-0.1.0/src/vibey/infrastructure/engines/scripted.py +182 -0
  167. vibey-0.1.0/src/vibey/infrastructure/engines/scripted_design.py +76 -0
  168. vibey-0.1.0/src/vibey/infrastructure/engines/scripted_visual.py +37 -0
  169. vibey-0.1.0/src/vibey/infrastructure/engines/tailer.py +119 -0
  170. vibey-0.1.0/src/vibey/infrastructure/git/__init__.py +0 -0
  171. vibey-0.1.0/src/vibey/infrastructure/git/clean_env.py +37 -0
  172. vibey-0.1.0/src/vibey/infrastructure/git/integration_branch.py +47 -0
  173. vibey-0.1.0/src/vibey/infrastructure/git/worktree_manager.py +126 -0
  174. vibey-0.1.0/src/vibey/infrastructure/interfaces/__init__.py +34 -0
  175. vibey-0.1.0/src/vibey/infrastructure/ledger/__init__.py +0 -0
  176. vibey-0.1.0/src/vibey/infrastructure/ledger/full_ledger_writer.py +64 -0
  177. vibey-0.1.0/src/vibey/infrastructure/ledger/redact.py +63 -0
  178. vibey-0.1.0/src/vibey/infrastructure/logging.py +181 -0
  179. vibey-0.1.0/src/vibey/infrastructure/notify/__init__.py +14 -0
  180. vibey-0.1.0/src/vibey/infrastructure/notify/desktop.py +48 -0
  181. vibey-0.1.0/src/vibey/infrastructure/notify/events.py +34 -0
  182. vibey-0.1.0/src/vibey/infrastructure/notify/service.py +46 -0
  183. vibey-0.1.0/src/vibey/infrastructure/notify/webhook.py +61 -0
  184. vibey-0.1.0/src/vibey/infrastructure/otel.py +239 -0
  185. vibey-0.1.0/src/vibey/infrastructure/provision/__init__.py +0 -0
  186. vibey-0.1.0/src/vibey/infrastructure/provision/agent_surface.py +82 -0
  187. vibey-0.1.0/src/vibey/infrastructure/review_artifact_writer.py +43 -0
  188. vibey-0.1.0/src/vibey/tui/__init__.py +17 -0
  189. vibey-0.1.0/src/vibey/tui/dashboard.py +455 -0
  190. vibey-0.1.0/tests/__init__.py +0 -0
  191. vibey-0.1.0/tests/application/__init__.py +0 -0
  192. vibey-0.1.0/tests/application/fakes.py +221 -0
  193. vibey-0.1.0/tests/application/test_automated_review.py +199 -0
  194. vibey-0.1.0/tests/application/test_azure_port.py +135 -0
  195. vibey-0.1.0/tests/application/test_build_decompose_handler.py +125 -0
  196. vibey-0.1.0/tests/application/test_build_implement_handler.py +339 -0
  197. vibey-0.1.0/tests/application/test_build_integrate_handler.py +158 -0
  198. vibey-0.1.0/tests/application/test_build_verify_handler.py +175 -0
  199. vibey-0.1.0/tests/application/test_conformance.py +258 -0
  200. vibey-0.1.0/tests/application/test_deploy_design_and_acceptance.py +483 -0
  201. vibey-0.1.0/tests/application/test_deploy_execute_handler.py +384 -0
  202. vibey-0.1.0/tests/application/test_deploy_review_handlers.py +293 -0
  203. vibey-0.1.0/tests/application/test_deploy_review_routing.py +353 -0
  204. vibey-0.1.0/tests/application/test_deployment_opt_in_handoff.py +317 -0
  205. vibey-0.1.0/tests/application/test_design.py +110 -0
  206. vibey-0.1.0/tests/application/test_design_acceptance.py +144 -0
  207. vibey-0.1.0/tests/application/test_design_handler.py +242 -0
  208. vibey-0.1.0/tests/application/test_design_research_handler.py +67 -0
  209. vibey-0.1.0/tests/application/test_design_spec.py +118 -0
  210. vibey-0.1.0/tests/application/test_design_synthesis_handler.py +97 -0
  211. vibey-0.1.0/tests/application/test_handoff_orchestration.py +206 -0
  212. vibey-0.1.0/tests/application/test_interfaces_convention.py +134 -0
  213. vibey-0.1.0/tests/application/test_job_dispatcher.py +23 -0
  214. vibey-0.1.0/tests/application/test_reentrant_design.py +109 -0
  215. vibey-0.1.0/tests/application/test_review_collect_handler.py +269 -0
  216. vibey-0.1.0/tests/application/test_review_demo_handler.py +209 -0
  217. vibey-0.1.0/tests/application/test_review_deployment_choice.py +392 -0
  218. vibey-0.1.0/tests/application/test_review_loopback_routing.py +256 -0
  219. vibey-0.1.0/tests/application/test_review_triage_handler.py +276 -0
  220. vibey-0.1.0/tests/application/test_seed_prompt.py +105 -0
  221. vibey-0.1.0/tests/application/test_text_verdict_fallback.py +114 -0
  222. vibey-0.1.0/tests/application/test_verdict_extraction.py +239 -0
  223. vibey-0.1.0/tests/application/test_visual_acceptance.py +159 -0
  224. vibey-0.1.0/tests/application/test_visual_handler.py +110 -0
  225. vibey-0.1.0/tests/application/test_visual_spec.py +41 -0
  226. vibey-0.1.0/tests/application/test_worker.py +201 -0
  227. vibey-0.1.0/tests/cli/__init__.py +0 -0
  228. vibey-0.1.0/tests/cli/test_deploy_cli.py +190 -0
  229. vibey-0.1.0/tests/cli/test_errors_and_logging.py +159 -0
  230. vibey-0.1.0/tests/cli/test_main.py +114 -0
  231. vibey-0.1.0/tests/cli/test_main_integration.py +210 -0
  232. vibey-0.1.0/tests/cli/test_operational_commands.py +704 -0
  233. vibey-0.1.0/tests/domain/__init__.py +0 -0
  234. vibey-0.1.0/tests/domain/test_briefing.py +258 -0
  235. vibey-0.1.0/tests/domain/test_budget.py +56 -0
  236. vibey-0.1.0/tests/domain/test_capacity.py +40 -0
  237. vibey-0.1.0/tests/domain/test_circuit.py +94 -0
  238. vibey-0.1.0/tests/domain/test_command_guard.py +88 -0
  239. vibey-0.1.0/tests/domain/test_config.py +177 -0
  240. vibey-0.1.0/tests/domain/test_deployment_domain.py +195 -0
  241. vibey-0.1.0/tests/domain/test_domain_purity.py +101 -0
  242. vibey-0.1.0/tests/domain/test_effort.py +71 -0
  243. vibey-0.1.0/tests/domain/test_engine.py +93 -0
  244. vibey-0.1.0/tests/domain/test_errors.py +45 -0
  245. vibey-0.1.0/tests/domain/test_handoff.py +149 -0
  246. vibey-0.1.0/tests/domain/test_iac_evaluation.py +65 -0
  247. vibey-0.1.0/tests/domain/test_job.py +64 -0
  248. vibey-0.1.0/tests/domain/test_ledger.py +137 -0
  249. vibey-0.1.0/tests/domain/test_media.py +185 -0
  250. vibey-0.1.0/tests/domain/test_noloss.py +595 -0
  251. vibey-0.1.0/tests/domain/test_phase.py +539 -0
  252. vibey-0.1.0/tests/domain/test_phase_deployment_guard.py +52 -0
  253. vibey-0.1.0/tests/domain/test_phase_m10.py +213 -0
  254. vibey-0.1.0/tests/domain/test_plan.py +119 -0
  255. vibey-0.1.0/tests/domain/test_progressive_exposure.py +45 -0
  256. vibey-0.1.0/tests/domain/test_projections.py +344 -0
  257. vibey-0.1.0/tests/domain/test_prompt_shield.py +60 -0
  258. vibey-0.1.0/tests/domain/test_provision.py +110 -0
  259. vibey-0.1.0/tests/domain/test_retry_ladder.py +118 -0
  260. vibey-0.1.0/tests/domain/test_review.py +199 -0
  261. vibey-0.1.0/tests/domain/test_review_qa.py +104 -0
  262. vibey-0.1.0/tests/domain/test_review_triage.py +149 -0
  263. vibey-0.1.0/tests/domain/test_rotation.py +312 -0
  264. vibey-0.1.0/tests/domain/test_scope_guard.py +97 -0
  265. vibey-0.1.0/tests/domain/test_spec.py +71 -0
  266. vibey-0.1.0/tests/domain/test_verbosity.py +60 -0
  267. vibey-0.1.0/tests/domain/test_verification_contract.py +86 -0
  268. vibey-0.1.0/tests/domain/test_visual.py +58 -0
  269. vibey-0.1.0/tests/domain/test_worktree.py +35 -0
  270. vibey-0.1.0/tests/infrastructure/__init__.py +0 -0
  271. vibey-0.1.0/tests/infrastructure/azure/test_azure_adapter.py +136 -0
  272. vibey-0.1.0/tests/infrastructure/azure/test_iac_validator.py +93 -0
  273. vibey-0.1.0/tests/infrastructure/container/__init__.py +1 -0
  274. vibey-0.1.0/tests/infrastructure/container/test_runtime.py +175 -0
  275. vibey-0.1.0/tests/infrastructure/db/__init__.py +0 -0
  276. vibey-0.1.0/tests/infrastructure/db/conftest.py +68 -0
  277. vibey-0.1.0/tests/infrastructure/db/test_build_implement_end_to_end.py +165 -0
  278. vibey-0.1.0/tests/infrastructure/db/test_chaos.py +128 -0
  279. vibey-0.1.0/tests/infrastructure/db/test_design_interview_end_to_end.py +139 -0
  280. vibey-0.1.0/tests/infrastructure/db/test_design_ledger.py +33 -0
  281. vibey-0.1.0/tests/infrastructure/db/test_design_spec_repository.py +51 -0
  282. vibey-0.1.0/tests/infrastructure/db/test_end_to_end_forced_rotation.py +258 -0
  283. vibey-0.1.0/tests/infrastructure/db/test_engine_health_repository.py +214 -0
  284. vibey-0.1.0/tests/infrastructure/db/test_handoff_repository.py +186 -0
  285. vibey-0.1.0/tests/infrastructure/db/test_human_gate_repository.py +100 -0
  286. vibey-0.1.0/tests/infrastructure/db/test_job_repository.py +310 -0
  287. vibey-0.1.0/tests/infrastructure/db/test_ledger_repository.py +213 -0
  288. vibey-0.1.0/tests/infrastructure/db/test_migrator.py +132 -0
  289. vibey-0.1.0/tests/infrastructure/db/test_notifier.py +82 -0
  290. vibey-0.1.0/tests/infrastructure/db/test_project_repository.py +91 -0
  291. vibey-0.1.0/tests/infrastructure/db/test_review_ledger.py +31 -0
  292. vibey-0.1.0/tests/infrastructure/db/test_visual_inventory_end_to_end.py +72 -0
  293. vibey-0.1.0/tests/infrastructure/db/test_visual_inventory_repository.py +66 -0
  294. vibey-0.1.0/tests/infrastructure/engines/__init__.py +0 -0
  295. vibey-0.1.0/tests/infrastructure/engines/golden/agyloop_high.txt +1 -0
  296. vibey-0.1.0/tests/infrastructure/engines/golden/agyloop_low.txt +1 -0
  297. vibey-0.1.0/tests/infrastructure/engines/golden/agyloop_max.txt +1 -0
  298. vibey-0.1.0/tests/infrastructure/engines/golden/agyloop_standard.txt +1 -0
  299. vibey-0.1.0/tests/infrastructure/engines/golden/agyloop_trivial.txt +1 -0
  300. vibey-0.1.0/tests/infrastructure/engines/golden/claudeloop_high.txt +1 -0
  301. vibey-0.1.0/tests/infrastructure/engines/golden/claudeloop_low.txt +1 -0
  302. vibey-0.1.0/tests/infrastructure/engines/golden/claudeloop_max.txt +1 -0
  303. vibey-0.1.0/tests/infrastructure/engines/golden/claudeloop_standard.txt +1 -0
  304. vibey-0.1.0/tests/infrastructure/engines/golden/claudeloop_trivial.txt +1 -0
  305. vibey-0.1.0/tests/infrastructure/engines/golden/codexloop_high.txt +1 -0
  306. vibey-0.1.0/tests/infrastructure/engines/golden/codexloop_low.txt +1 -0
  307. vibey-0.1.0/tests/infrastructure/engines/golden/codexloop_max.txt +1 -0
  308. vibey-0.1.0/tests/infrastructure/engines/golden/codexloop_standard.txt +1 -0
  309. vibey-0.1.0/tests/infrastructure/engines/golden/codexloop_trivial.txt +1 -0
  310. vibey-0.1.0/tests/infrastructure/engines/golden/cursorloop_high.txt +1 -0
  311. vibey-0.1.0/tests/infrastructure/engines/golden/cursorloop_low.txt +1 -0
  312. vibey-0.1.0/tests/infrastructure/engines/golden/cursorloop_max.txt +1 -0
  313. vibey-0.1.0/tests/infrastructure/engines/golden/cursorloop_standard.txt +1 -0
  314. vibey-0.1.0/tests/infrastructure/engines/golden/cursorloop_trivial.txt +1 -0
  315. vibey-0.1.0/tests/infrastructure/engines/test_argv.py +80 -0
  316. vibey-0.1.0/tests/infrastructure/engines/test_classify.py +158 -0
  317. vibey-0.1.0/tests/infrastructure/engines/test_claudeloop_design.py +175 -0
  318. vibey-0.1.0/tests/infrastructure/engines/test_claudeloop_process.py +496 -0
  319. vibey-0.1.0/tests/infrastructure/engines/test_descriptors.py +66 -0
  320. vibey-0.1.0/tests/infrastructure/engines/test_plan_writer.py +40 -0
  321. vibey-0.1.0/tests/infrastructure/engines/test_scripted.py +251 -0
  322. vibey-0.1.0/tests/infrastructure/git/__init__.py +0 -0
  323. vibey-0.1.0/tests/infrastructure/git/test_clean_env.py +34 -0
  324. vibey-0.1.0/tests/infrastructure/git/test_integration_branch.py +104 -0
  325. vibey-0.1.0/tests/infrastructure/git/test_worktree_manager.py +216 -0
  326. vibey-0.1.0/tests/infrastructure/ledger/__init__.py +0 -0
  327. vibey-0.1.0/tests/infrastructure/ledger/test_full_ledger_writer.py +110 -0
  328. vibey-0.1.0/tests/infrastructure/ledger/test_redact.py +70 -0
  329. vibey-0.1.0/tests/infrastructure/notify/__init__.py +1 -0
  330. vibey-0.1.0/tests/infrastructure/notify/test_notifications.py +171 -0
  331. vibey-0.1.0/tests/infrastructure/notify/test_publishers.py +167 -0
  332. vibey-0.1.0/tests/infrastructure/provision/__init__.py +0 -0
  333. vibey-0.1.0/tests/infrastructure/provision/test_agent_surface.py +142 -0
  334. vibey-0.1.0/tests/infrastructure/test_automated_review_runner.py +107 -0
  335. vibey-0.1.0/tests/infrastructure/test_config_loader.py +12 -0
  336. vibey-0.1.0/tests/infrastructure/test_context_writer.py +23 -0
  337. vibey-0.1.0/tests/infrastructure/test_logging.py +119 -0
  338. vibey-0.1.0/tests/infrastructure/test_otel.py +191 -0
  339. vibey-0.1.0/tests/infrastructure/test_review_artifact_writer.py +102 -0
  340. vibey-0.1.0/tests/system/__init__.py +1 -0
  341. vibey-0.1.0/tests/system/test_delivery_stage_set.py +1096 -0
  342. vibey-0.1.0/tests/test_bootstrap.py +118 -0
  343. vibey-0.1.0/tests/tui/__init__.py +1 -0
  344. vibey-0.1.0/tests/tui/test_dashboard.py +371 -0
  345. vibey-0.1.0/uv.lock +1424 -0
@@ -0,0 +1,83 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main, develop]
6
+ pull_request:
7
+ branches: [main, develop]
8
+
9
+ jobs:
10
+ uv-lock:
11
+ name: uv.lock is in sync with pyproject.toml
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ - uses: astral-sh/setup-uv@v3
16
+ with:
17
+ enable-cache: true
18
+ - name: Set up Python
19
+ run: uv python install 3.12
20
+ - run: uv lock --check
21
+
22
+ gates:
23
+ needs: [uv-lock]
24
+ runs-on: ubuntu-latest
25
+ services:
26
+ postgres:
27
+ image: postgres:17
28
+ env:
29
+ POSTGRES_USER: vibey
30
+ POSTGRES_PASSWORD: vibey
31
+ POSTGRES_DB: vibey_test
32
+ ports:
33
+ - 5432:5432
34
+ options: >-
35
+ --health-cmd pg_isready
36
+ --health-interval 5s
37
+ --health-timeout 5s
38
+ --health-retries 10
39
+ env:
40
+ VIBEY_TEST_DATABASE_URL: postgresql://vibey:vibey@localhost:5432/vibey_test
41
+ steps:
42
+ - uses: actions/checkout@v4
43
+
44
+ - name: Install uv
45
+ uses: astral-sh/setup-uv@v3
46
+ with:
47
+ enable-cache: true
48
+
49
+ - name: Set up Python
50
+ run: uv python install 3.12
51
+
52
+ - name: Install dependencies
53
+ run: uv sync --extra dev
54
+
55
+ - name: Gate 1 - ruff check
56
+ run: uv run ruff check .
57
+
58
+ - name: Gate 2 - ruff format --check
59
+ run: uv run ruff format --check .
60
+
61
+ - name: Gate 3 - mypy --strict
62
+ run: uv run mypy --strict src/vibey
63
+
64
+ - name: Gate 4a - pytest domain layer (100% coverage)
65
+ run: uv run pytest -q -p no:cacheprovider --cov=vibey.domain --cov-branch --cov-report=term-missing --cov-fail-under=100
66
+
67
+ - name: Gate 4b - pytest application layer (100% coverage)
68
+ run: uv run pytest -q -p no:cacheprovider --cov=vibey.application --cov-branch --cov-report=term-missing --cov-fail-under=100
69
+
70
+ - name: Gate 4c - pytest infrastructure layer (100% coverage)
71
+ run: uv run pytest -q -p no:cacheprovider --cov=vibey.infrastructure --cov-branch --cov-report=term-missing --cov-fail-under=100
72
+
73
+ - name: Gate 4d - pytest CLI layer (100% coverage)
74
+ run: uv run pytest -q -p no:cacheprovider --cov=vibey.cli --cov-branch --cov-report=term-missing --cov-fail-under=100
75
+
76
+ - name: Gate 5 - lint-imports (onion contract)
77
+ run: uv run lint-imports
78
+
79
+ - name: Gate 6 - bandit
80
+ run: uv run bandit -q -r src/vibey
81
+
82
+ - name: Gate 7 - pip-audit
83
+ run: uv run pip-audit
@@ -0,0 +1,74 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+ inputs:
8
+ repository:
9
+ description: Package index to publish to
10
+ required: true
11
+ type: choice
12
+ default: testpypi
13
+ options:
14
+ - testpypi
15
+ - pypi
16
+
17
+ permissions:
18
+ contents: read
19
+
20
+ jobs:
21
+ build:
22
+ name: Build distribution
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+ - uses: actions/setup-python@v5
27
+ with:
28
+ python-version: "3.12"
29
+ - uses: astral-sh/setup-uv@v6
30
+ - name: Use the TestPyPI project name
31
+ if: github.event_name == 'workflow_dispatch' && inputs.repository == 'testpypi'
32
+ run: sed -i '0,/^name = "vibey"$/s//name = "vibey-dev"/' pyproject.toml
33
+ - run: uv build
34
+ - uses: actions/upload-artifact@v4
35
+ with:
36
+ name: python-package-distributions
37
+ path: dist/
38
+ if-no-files-found: error
39
+
40
+ publish-testpypi:
41
+ name: Publish to TestPyPI
42
+ if: github.event_name == 'workflow_dispatch' && inputs.repository == 'testpypi'
43
+ needs: build
44
+ runs-on: ubuntu-latest
45
+ environment:
46
+ name: testpypi
47
+ url: https://test.pypi.org/p/vibey-dev
48
+ permissions:
49
+ id-token: write
50
+ steps:
51
+ - uses: actions/download-artifact@v4
52
+ with:
53
+ name: python-package-distributions
54
+ path: dist/
55
+ - uses: pypa/gh-action-pypi-publish@release/v1
56
+ with:
57
+ repository-url: https://test.pypi.org/legacy/
58
+
59
+ publish-pypi:
60
+ name: Publish to PyPI
61
+ if: github.event_name == 'release' || inputs.repository == 'pypi'
62
+ needs: build
63
+ runs-on: ubuntu-latest
64
+ environment:
65
+ name: pypi
66
+ url: https://pypi.org/p/vibey
67
+ permissions:
68
+ id-token: write
69
+ steps:
70
+ - uses: actions/download-artifact@v4
71
+ with:
72
+ name: python-package-distributions
73
+ path: dist/
74
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,22 @@
1
+ name: release-please
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+
7
+ permissions:
8
+ contents: write
9
+ pull-requests: write
10
+
11
+ jobs:
12
+ release-please:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: googleapis/release-please-action@v4
16
+ with:
17
+ # Repo default branch is develop (gitflow), but releases must
18
+ # target main only — without this, release-please opens its
19
+ # release PR against develop and nothing ever gets tagged.
20
+ target-branch: main
21
+ config-file: release-please-config.json
22
+ manifest-file: .release-please-manifest.json
vibey-0.1.0/.gitignore ADDED
@@ -0,0 +1,15 @@
1
+ __pycache__/
2
+ *.pyc
3
+ .venv/
4
+ .pytest_cache/
5
+ .mypy_cache/
6
+ .ruff_cache/
7
+ .coverage
8
+ .coverage.*
9
+ htmlcov/
10
+ *.egg-info/
11
+ /dist/
12
+ /build/
13
+ .claudeloop/
14
+ .vibey/plans/
15
+ .agyloop/
@@ -0,0 +1,58 @@
1
+ [importlinter]
2
+ root_packages =
3
+ vibey
4
+ include_external_packages = True
5
+
6
+ [importlinter:contract:onion-layers]
7
+ name = Onion architecture layering
8
+ type = layers
9
+ layers =
10
+ cli
11
+ tui
12
+ infrastructure
13
+ application
14
+ domain
15
+ containers =
16
+ vibey
17
+
18
+
19
+ [importlinter:contract:domain-independence]
20
+ name = domain imports nothing but stdlib and itself
21
+ type = forbidden
22
+ source_modules =
23
+ vibey.domain
24
+ forbidden_modules =
25
+ vibey.application
26
+ vibey.infrastructure
27
+ vibey.cli
28
+ vibey.tui
29
+ asyncpg
30
+ psycopg
31
+ httpx
32
+ typer
33
+ structlog
34
+ pydantic
35
+ textual
36
+
37
+ [importlinter:contract:application-independence]
38
+ name = application does not import infrastructure, cli, or tui
39
+ type = forbidden
40
+ source_modules =
41
+ vibey.application
42
+ forbidden_modules =
43
+ vibey.infrastructure
44
+ vibey.cli
45
+ vibey.tui
46
+
47
+ # The interfaces packages are the bottom of their layer: they declare the
48
+ # seams, so they must never import the code that consumes them.
49
+ [importlinter:contract:interfaces-declare-only]
50
+ name = Interfaces declare seams, never consume them
51
+ type = forbidden
52
+ source_modules =
53
+ vibey.application.interfaces
54
+ forbidden_modules =
55
+ vibey.infrastructure
56
+ vibey.cli
57
+ vibey.tui
58
+ vibey.bootstrap
@@ -0,0 +1,33 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ rev: v0.16.3
4
+ hooks:
5
+ - id: ruff
6
+ args: [--fix]
7
+ - id: ruff-format
8
+
9
+ - repo: local
10
+ hooks:
11
+ - id: mypy
12
+ name: mypy --strict
13
+ entry: uv run mypy --strict src/vibey
14
+ language: system
15
+ pass_filenames: false
16
+
17
+ - id: lint-imports
18
+ name: import-linter onion contract
19
+ entry: uv run lint-imports
20
+ language: system
21
+ pass_filenames: false
22
+
23
+ - id: domain-purity
24
+ name: domain purity + full test suite
25
+ entry: uv run pytest
26
+ language: system
27
+ pass_filenames: false
28
+
29
+ - repo: https://github.com/compilerla/conventional-pre-commit
30
+ rev: v3.4.0
31
+ hooks:
32
+ - id: conventional-pre-commit
33
+ stages: [commit-msg]
@@ -0,0 +1 @@
1
+ 3.12
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.1.0"
3
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "schema_version": 1,
3
+ "reason": "quota_switch",
4
+ "produced_at": "2026-08-15T07:22:00.000000+00:00",
5
+ "run_id": "20260815T062627Z-982b0b6b",
6
+ "meta": {
7
+ "run_id": "20260815T062627Z-982b0b6b",
8
+ "cwd": "/Users/adam/git/vibey",
9
+ "started_at": "2026-08-15T06:26:27.929015+00:00",
10
+ "plan_path": "/Users/adam/git/vibey/.vibey/plans/m8-m10-agyloop.md",
11
+ "status": "stopped",
12
+ "phase": "RUNNING",
13
+ "model": "gemini-2.5-flash",
14
+ "effort": "high",
15
+ "preset": "medium",
16
+ "capacity": "Available"
17
+ },
18
+ "status": {
19
+ "phase": "RUNNING",
20
+ "status": "stopped",
21
+ "turns_spent": 12,
22
+ "dollars_spent": 0.0,
23
+ "model": "gemini-2.5-flash",
24
+ "effort": "high",
25
+ "preset": "medium",
26
+ "capacity": "Available"
27
+ },
28
+ "summary": "Completed Milestone M8 (8.1-8.5), Milestone M9 (9.1-9.6), and Milestone M10 through Task 10.11 (Tasks 10.1-10.11 committed). Only tasks 10.12 (deployment CLI surfaces) and 10.13 (system test suite for deployment stages) remain to finalize M10.",
29
+ "savepoints": [
30
+ {
31
+ "sha": "30532194ff751859ae35c7e1fec69ef55ba45d16",
32
+ "label": "task-10.11",
33
+ "at": "2026-08-15T07:18:00+00:00"
34
+ }
35
+ ]
36
+ }
@@ -0,0 +1,102 @@
1
+ {
2
+ "schema_version": 1,
3
+ "reason": "manual",
4
+ "produced_at": "2026-08-15T05:42:21.697278+00:00",
5
+ "run_id": "20260815T050628Z-c3b3796a",
6
+ "meta": {
7
+ "run_id": "20260815T050628Z-c3b3796a",
8
+ "pid": 86412,
9
+ "cwd": "/Users/adam/git/vibey",
10
+ "started_at": "2026-08-15T05:06:28.964725+00:00",
11
+ "session_id": "41b4834f-ba19-4880-9249-a12b28127ddc",
12
+ "plan_path": "/Users/adam/git/vibey/.vibey/plans/m6-remainder.md",
13
+ "status": "stopped",
14
+ "phase": "FAILED",
15
+ "attempt": 0,
16
+ "waiting_until": "2026-08-15T05:49:59.937524+00:00",
17
+ "model": "claude-opus-4-6",
18
+ "effort": "high",
19
+ "preset": "medium",
20
+ "capacity": "WindowExhausted"
21
+ },
22
+ "status": {
23
+ "phase": "FAILED",
24
+ "status": "stopped",
25
+ "session_id": "41b4834f-ba19-4880-9249-a12b28127ddc",
26
+ "attempt": 0,
27
+ "turns_spent": null,
28
+ "dollars_spent": null,
29
+ "probe_count": null,
30
+ "started_waiting_at": null,
31
+ "waiting_until": "2026-08-15T05:49:59.937524+00:00",
32
+ "model": "claude-opus-4-6",
33
+ "effort": "high",
34
+ "preset": "medium",
35
+ "capacity": "WindowExhausted"
36
+ },
37
+ "resources": {
38
+ "attachments": [],
39
+ "folders": [],
40
+ "skills": [],
41
+ "plugins": [],
42
+ "connectors": {},
43
+ "github": {},
44
+ "web_search": false,
45
+ "deep_research": false,
46
+ "permission_mode": "bypass",
47
+ "cwd": "/Users/adam/git/vibey",
48
+ "attachment_inventory": []
49
+ },
50
+ "memories": {
51
+ "items": []
52
+ },
53
+ "artifacts": [],
54
+ "plan": {
55
+ "plan_path": "/Users/adam/git/vibey/.vibey/plans/m6-remainder.md",
56
+ "remaining_items": [],
57
+ "remaining_work": []
58
+ },
59
+ "profile": {
60
+ "model": "claude-opus-4-6",
61
+ "effort": "high",
62
+ "preset": "medium"
63
+ },
64
+ "permission_mode": "bypass",
65
+ "cwd": "/Users/adam/git/vibey",
66
+ "budget": {
67
+ "turns_spent": null,
68
+ "dollars_spent": null,
69
+ "max_turns": null,
70
+ "max_dollars": null,
71
+ "max_attempts": null
72
+ },
73
+ "savepoints": [
74
+ {
75
+ "run_id": "20260815T050628Z-c3b3796a",
76
+ "n": 1,
77
+ "ref": "refs/claudeloop/20260815T050628Z-c3b3796a/1",
78
+ "sha": "27c13d171f2619672a8e82c6685599491402e2e2",
79
+ "label": "turn-1",
80
+ "at": "2026-08-15T05:19:54.472091+00:00",
81
+ "plan_item": null,
82
+ "committed": false,
83
+ "subject": null,
84
+ "path_count": 0
85
+ }
86
+ ],
87
+ "paths": {
88
+ "events": "events.jsonl",
89
+ "audit": "audit.jsonl",
90
+ "bus": "bus.jsonl",
91
+ "status": "status.json",
92
+ "stop_summary": "stop-summary.md",
93
+ "savepoints": "savepoints.jsonl"
94
+ },
95
+ "claude_session": {
96
+ "found": true,
97
+ "session_id": "41b4834f-ba19-4880-9249-a12b28127ddc",
98
+ "transcript_path": "/Users/adam/.claude/projects/-Users-adam-git-vibey/41b4834f-ba19-4880-9249-a12b28127ddc.jsonl",
99
+ "project_dir": "/Users/adam/.claude/projects/-Users-adam-git-vibey",
100
+ "transcript_copied": "snapshots/claude/41b4834f-ba19-4880-9249-a12b28127ddc.jsonl"
101
+ }
102
+ }
@@ -0,0 +1,82 @@
1
+ # Changelog
2
+
3
+ ## [0.1.0](https://github.com/adammatthewsteinberger/vibey/compare/vibey-v0.1.0...vibey-v0.1.0) (2026-08-16)
4
+
5
+
6
+ ### Features
7
+
8
+ * add structured logging, a -v ladder, and operator-facing errors ([53ca473](https://github.com/adammatthewsteinberger/vibey/commit/53ca473c29c7d00cb196e6d6abba5c701cf55ff2))
9
+ * **azure:** implement AzureClientPort and mutation-guarded adapter (task 10.4) ([34f43c4](https://github.com/adammatthewsteinberger/vibey/commit/34f43c470b491ee844b24ac34e0a152b009cc77d))
10
+ * **build:** agent-surface provisioning into BUILD worktrees (task 6.3) ([c3fd680](https://github.com/adammatthewsteinberger/vibey/commit/c3fd680cfe3be1714c589f43f50be43fd88018c7))
11
+ * **build:** budget check before effort escalation (task 6.7) ([8d71791](https://github.com/adammatthewsteinberger/vibey/commit/8d71791d49d825b8d876e523bfa1832f4ca13371))
12
+ * **build:** build.implement -- engine run, tail, and ledger (task 6.4) ([fa37161](https://github.com/adammatthewsteinberger/vibey/commit/fa371612c29a280a6bb62e8d9a8a7aa7bf8b5355))
13
+ * **build:** build.integrate -- merge, gate, isolate-not-rollback (task 6.8) ([c5f9759](https://github.com/adammatthewsteinberger/vibey/commit/c5f97592c27921cc27869bb22631805220c3616a))
14
+ * **build:** build.verify -- gates, criterion coverage, diff review (task 6.5) ([a18a123](https://github.com/adammatthewsteinberger/vibey/commit/a18a12311f4414a98c6e18becc6f874e52089ee8))
15
+ * **build:** BUILD→REVIEW and BUILD→DESIGN phase guards (task 6.10) ([27c13d1](https://github.com/adammatthewsteinberger/vibey/commit/27c13d171f2619672a8e82c6685599491402e2e2))
16
+ * **build:** forced rotation constraint on effort tier crossings (task 6.6) ([be47648](https://github.com/adammatthewsteinberger/vibey/commit/be47648307d5c0a8b4f54ca84976c3813ee49caa))
17
+ * **build:** parallelism limiter -- min(config, eligible×2, cpu) (task 6.9) ([b49d0df](https://github.com/adammatthewsteinberger/vibey/commit/b49d0df35d3840ac8b09bd6c10e4e9b4487eff60))
18
+ * **build:** real git worktree manager for BUILD work items (task 6.2) ([e363772](https://github.com/adammatthewsteinberger/vibey/commit/e3637723335272fc037170202bd36886d37b9fbc))
19
+ * **build:** start M6 -- build.decompose and BUILD-entry wiring (task 6.1) ([b7fa97f](https://github.com/adammatthewsteinberger/vibey/commit/b7fa97f1afa4103d45195377c5482acafe99128e))
20
+ * **cli:** implement operational cli commands (task 8.2) ([6e30e8f](https://github.com/adammatthewsteinberger/vibey/commit/6e30e8f807fc0e496d5a40874674b5a76b692fe6))
21
+ * **deploy:** add CLI/TUI surfaces for deployment commands (task 10.12) ([c3ec5b4](https://github.com/adammatthewsteinberger/vibey/commit/c3ec5b40db40a57e8a0747aa23e27f07cbb12697))
22
+ * **deploy:** add full offline delivery-to-deployment system test (task 10.13) ([4d8f3f5](https://github.com/adammatthewsteinberger/vibey/commit/4d8f3f532a71598cb5a4b3d2631666b40d8e12c8))
23
+ * **deploy:** implement deployment retry and escalation ladder (task 10.7) ([3a36710](https://github.com/adammatthewsteinberger/vibey/commit/3a3671069f083bc5d90703ca7833808138f2fed5))
24
+ * **deploy:** implement Phase 4 deploy design interview and acceptance (task 10.3) ([ec3a924](https://github.com/adammatthewsteinberger/vibey/commit/ec3a9247021fcbbfb8e88da772460a5174fe14fe))
25
+ * **deploy:** implement Phase 5 deploy execution graph handler (task 10.6) ([b6adba0](https://github.com/adammatthewsteinberger/vibey/commit/b6adba0efe0c0055e726fbde53d0563d978bce80))
26
+ * **deploy:** implement Phase 6 review demo and failure triage handlers (task 10.10) ([5dc516a](https://github.com/adammatthewsteinberger/vibey/commit/5dc516a6f648458dd4b8556b0754edcfc2162cef))
27
+ * **deploy:** implement Phase 6 review loop routing handler (task 10.11) ([3053219](https://github.com/adammatthewsteinberger/vibey/commit/305321919f5559a22d9b7537e430995af2310109))
28
+ * **deploy:** implement progressive exposure and recovery evaluation (task 10.8) ([a9d4f71](https://github.com/adammatthewsteinberger/vibey/commit/a9d4f710c8f418af1412ced4f79f8de880dde63b))
29
+ * **deploy:** implement runtime verification contract evaluation (task 10.9) ([c4f90eb](https://github.com/adammatthewsteinberger/vibey/commit/c4f90eba393f017e936d302d5161e8d48546ae85))
30
+ * **deployment:** implement DeploymentSpec, consent verification, and failure routing (task 10.2) ([032e441](https://github.com/adammatthewsteinberger/vibey/commit/032e44129e098080a8f9414f95606789fc4794ea))
31
+ * **design:** wire the DESIGN -> VISUAL_DESIGN/BUILD choice gate into accept ([b1459d1](https://github.com/adammatthewsteinberger/vibey/commit/b1459d11942ee6d8a9ae62af17839aa96ffaf7cd))
32
+ * **domain:** add media-provider capability discovery and rotation (5.9/5.10) ([8293d22](https://github.com/adammatthewsteinberger/vibey/commit/8293d22baa179a0c55f4c9c7f575647b72f065c5))
33
+ * **domain:** add VISUAL_DESIGN phase and its opt-in guard (M5 task 5.6) ([8f4c1a9](https://github.com/adammatthewsteinberger/vibey/commit/8f4c1a9605da7cbbac3b4b42ff062cbbee2f222c))
34
+ * **domain:** add VisualInventory, the screen/state matrix for M5 task 5.7 ([751803f](https://github.com/adammatthewsteinberger/vibey/commit/751803f065278301c4956e3a797c728525573c11))
35
+ * **iac:** implement IaC static checks, preflight, and what-if evaluation (task 10.5) ([75fef62](https://github.com/adammatthewsteinberger/vibey/commit/75fef62e00872860e9f3f2debecc38acf975b054))
36
+ * implement M1 pure domain (phase machine, rotation, no-loss gate) ([7114e37](https://github.com/adammatthewsteinberger/vibey/commit/7114e37f21b9ee4e0aaa96c66deadc8f9ae9f369))
37
+ * implement M2 durable queue and crash-safe workers ([6cbff9b](https://github.com/adammatthewsteinberger/vibey/commit/6cbff9b2f2ef751b25d04ce9f8a92a50bd520693))
38
+ * implement M3 engine adapters and conformance suite ([0b6c1cc](https://github.com/adammatthewsteinberger/vibey/commit/0b6c1cc08700fb8bbb70aeb7630bff4991ef9c39))
39
+ * implement M4 ledger and handoff -- the no-loss critical path ([df9243f](https://github.com/adammatthewsteinberger/vibey/commit/df9243f17a47847fec2c7c1b9973a5ae95395ac3))
40
+ * **notify:** implement desktop notifications and webhook publisher (task 8.4) ([7d2988c](https://github.com/adammatthewsteinberger/vibey/commit/7d2988cb7a1f5f63ab9118bff95c897ac0256ab7))
41
+ * **observability:** implement opentelemetry and metrics exports (task 8.3) ([45de50a](https://github.com/adammatthewsteinberger/vibey/commit/45de50abb751084bbcdf21f451ea2d34761ef61b))
42
+ * **phase:** expand pure phase machine to deployment stage set (task 10.1) ([cfe7357](https://github.com/adammatthewsteinberger/vibey/commit/cfe7357a9247e68ad4e82c4085b620cbaf843496))
43
+ * **review:** implement automated findings pre-triaging (task 7.3) ([8a264ea](https://github.com/adammatthewsteinberger/vibey/commit/8a264ea3c6572651aa2ec2ae10dc2c02032df06a))
44
+ * **review:** implement deployment opt-in handoff to deploy design (task 7.8) ([31ff71f](https://github.com/adammatthewsteinberger/vibey/commit/31ff71fc0df982eb5935f8b7f339eb95dfa3a949))
45
+ * **review:** implement deployment-choice gate (task 7.7) ([ac9e697](https://github.com/adammatthewsteinberger/vibey/commit/ac9e6977e1c380b040a23ec8b4828d414f20cd9d))
46
+ * **review:** implement re-entrant design scoped to findings (task 7.6) ([c916d8c](https://github.com/adammatthewsteinberger/vibey/commit/c916d8cec0d6a2aff4599b79fb5b862a50967128))
47
+ * **review:** implement review.collect and ledger-grounded QA (task 7.2) ([b750b81](https://github.com/adammatthewsteinberger/vibey/commit/b750b816fe123035895eaf9d64b8de24121e04be))
48
+ * **review:** implement review.demo and deltas projection (task 7.1) ([b88488e](https://github.com/adammatthewsteinberger/vibey/commit/b88488ed8e93c4843fb407a66ddc95e760d05090))
49
+ * **review:** implement review.triage classification (task 7.4) ([ecff22f](https://github.com/adammatthewsteinberger/vibey/commit/ecff22fe724dacdbce27db1f7f618062230e481a))
50
+ * **review:** wire loopback routing and cycle increment (task 7.5) ([ff2dea9](https://github.com/adammatthewsteinberger/vibey/commit/ff2dea91dbfc3fa53b1666a1240f604d52a95217))
51
+ * scaffold M0 repo skeleton, onion contract, CI, and vibey.toml schema ([578421f](https://github.com/adammatthewsteinberger/vibey/commit/578421fa079bb1aa7f6c4889ab53c7a9651639df))
52
+ * **security:** implement destructive-command prevention guard (task 9.2) ([dcb8d30](https://github.com/adammatthewsteinberger/vibey/commit/dcb8d30858f02e10faf577e1978aed1068051494))
53
+ * **security:** implement hardened container isolation runtime (task 9.1) ([f59f630](https://github.com/adammatthewsteinberger/vibey/commit/f59f630295f61eff4c3b523534bd222d35942308))
54
+ * **security:** implement scope-bound mutation guard (task 9.3) ([0fb9eb8](https://github.com/adammatthewsteinberger/vibey/commit/0fb9eb87481ee67405abefe02aeed000d6034fb2))
55
+ * **security:** implement untrusted prompt defense and delimiter shielding (task 9.4) ([c7544e4](https://github.com/adammatthewsteinberger/vibey/commit/c7544e44100394596f25c575688c608ce6d76d6c))
56
+ * **tui:** implement live dashboard TUI (task 8.1) ([8bec60f](https://github.com/adammatthewsteinberger/vibey/commit/8bec60ff8e39c40f79cf51d314376bdffe52ee8b))
57
+ * **tui:** implement replay mode for watch command (task 8.5) ([cdb34dc](https://github.com/adammatthewsteinberger/vibey/commit/cdb34dc01ae3b0cde5ddd7b3ef84f0950fb5c50e))
58
+ * **visual:** close the loop -- VISUAL_DESIGN -> BUILD accept/waive (task 5.13) ([508bb71](https://github.com/adammatthewsteinberger/vibey/commit/508bb717830e32c894b981379dbd44678bc5a30a))
59
+ * **visual:** wire visual.inventory/visual.plan job handlers and persistence ([6a5231c](https://github.com/adammatthewsteinberger/vibey/commit/6a5231c2d3d33a310aaba6150c160dd94d9d19c8))
60
+
61
+
62
+ ### Bug Fixes
63
+
64
+ * align rotation weights with ADR-0005 ([3f63fcd](https://github.com/adammatthewsteinberger/vibey/commit/3f63fcd9d1c853dcdff16e9796e0c1e2f1e14d46))
65
+ * **cli:** repair unreachable `vibey design accept` and cover build_app() paths ([3987618](https://github.com/adammatthewsteinberger/vibey/commit/39876189a11667e915adde0a4e404b4d0604045f))
66
+ * **cli:** stabilize CliRunner terminal styling across all CLI test files ([#1](https://github.com/adammatthewsteinberger/vibey/issues/1)) ([ac76131](https://github.com/adammatthewsteinberger/vibey/commit/ac7613169d1308a49dc3325a9460a4f42ad4ba7f))
67
+
68
+
69
+ ### Documentation
70
+
71
+ * add session handoff for continuing after M4 ([78d77b8](https://github.com/adammatthewsteinberger/vibey/commit/78d77b8b804a7653e6a6129bb10d30e80d0533f3))
72
+ * add the agyloop invocation, and stop hardcoding one done marker ([068940c](https://github.com/adammatthewsteinberger/vibey/commit/068940ce46bafbb266f6051a0e0b1155b005a73a))
73
+ * add the fleet program runbook ([5768382](https://github.com/adammatthewsteinberger/vibey/commit/57683820fc61d13f695ffd4dfc91356dc3c03068))
74
+ * make visual and deployment stages opt in ([329dd2b](https://github.com/adammatthewsteinberger/vibey/commit/329dd2bf82140660a367694d47b8cf77bbcf56e7))
75
+ * plan six-phase Azure deployment lifecycle ([30047f7](https://github.com/adammatthewsteinberger/vibey/commit/30047f754705e9b7d3dddac03a22c629e59ebf43))
76
+ * **security:** document threat model and security policy (task 9.5) ([a254fc1](https://github.com/adammatthewsteinberger/vibey/commit/a254fc1885285ad9cd7b98d5ff9f81ce1963ef3d))
77
+ * update README status for M7 completion and format system test ([0cf7bd3](https://github.com/adammatthewsteinberger/vibey/commit/0cf7bd3596e366929dc34e98d543e75329bcbe3c))
78
+
79
+
80
+ ### Miscellaneous Chores
81
+
82
+ * cut the first vibey release ([ee841fa](https://github.com/adammatthewsteinberger/vibey/commit/ee841fa65b92e9911c8bdeb595577ebb1321d82e))