witnessd 2.3.3__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 (196) hide show
  1. witnessd-2.3.3/LICENSE +21 -0
  2. witnessd-2.3.3/PKG-INFO +9 -0
  3. witnessd-2.3.3/README.md +541 -0
  4. witnessd-2.3.3/orro/__init__.py +2 -0
  5. witnessd-2.3.3/orro/__main__.py +82 -0
  6. witnessd-2.3.3/setup.cfg +4 -0
  7. witnessd-2.3.3/setup.py +17 -0
  8. witnessd-2.3.3/tests/test_000_repo_path.py +15 -0
  9. witnessd-2.3.3/tests/test_adapter_base.py +133 -0
  10. witnessd-2.3.3/tests/test_adapter_run.py +1537 -0
  11. witnessd-2.3.3/tests/test_agy_adapter.py +511 -0
  12. witnessd-2.3.3/tests/test_agy_live_smoke.py +155 -0
  13. witnessd-2.3.3/tests/test_budget.py +79 -0
  14. witnessd-2.3.3/tests/test_canonical.py +19 -0
  15. witnessd-2.3.3/tests/test_capture_manifest.py +89 -0
  16. witnessd-2.3.3/tests/test_changeset.py +63 -0
  17. witnessd-2.3.3/tests/test_claude_critic.py +188 -0
  18. witnessd-2.3.3/tests/test_claude_live_smoke.py +509 -0
  19. witnessd-2.3.3/tests/test_claude_opencode_adapter.py +661 -0
  20. witnessd-2.3.3/tests/test_cli.py +413 -0
  21. witnessd-2.3.3/tests/test_cli_team.py +590 -0
  22. witnessd-2.3.3/tests/test_cli_w2.py +124 -0
  23. witnessd-2.3.3/tests/test_cli_w4.py +187 -0
  24. witnessd-2.3.3/tests/test_cli_w5.py +219 -0
  25. witnessd-2.3.3/tests/test_codex_adapter.py +335 -0
  26. witnessd-2.3.3/tests/test_codex_capability.py +418 -0
  27. witnessd-2.3.3/tests/test_codex_live_smoke.py +249 -0
  28. witnessd-2.3.3/tests/test_continuation_gate.py +36 -0
  29. witnessd-2.3.3/tests/test_depone_replica_conformance.py +190 -0
  30. witnessd-2.3.3/tests/test_distribution.py +525 -0
  31. witnessd-2.3.3/tests/test_emitter.py +239 -0
  32. witnessd-2.3.3/tests/test_emitter_a2.py +112 -0
  33. witnessd-2.3.3/tests/test_eventlog.py +106 -0
  34. witnessd-2.3.3/tests/test_evidence_next.py +23 -0
  35. witnessd-2.3.3/tests/test_faultkit_pause.py +24 -0
  36. witnessd-2.3.3/tests/test_gemini_adapter.py +172 -0
  37. witnessd-2.3.3/tests/test_ids.py +20 -0
  38. witnessd-2.3.3/tests/test_installer.py +71 -0
  39. witnessd-2.3.3/tests/test_isolation.py +37 -0
  40. witnessd-2.3.3/tests/test_key_rotation_archive.py +393 -0
  41. witnessd-2.3.3/tests/test_killswitch.py +99 -0
  42. witnessd-2.3.3/tests/test_lane_kind.py +18 -0
  43. witnessd-2.3.3/tests/test_learning.py +97 -0
  44. witnessd-2.3.3/tests/test_learning_promote.py +133 -0
  45. witnessd-2.3.3/tests/test_liveness.py +44 -0
  46. witnessd-2.3.3/tests/test_lock.py +72 -0
  47. witnessd-2.3.3/tests/test_model_policy.py +127 -0
  48. witnessd-2.3.3/tests/test_model_policy_live_smoke.py +223 -0
  49. witnessd-2.3.3/tests/test_model_routing_benchmark.py +269 -0
  50. witnessd-2.3.3/tests/test_observer_capture.py +59 -0
  51. witnessd-2.3.3/tests/test_observer_separation.py +35 -0
  52. witnessd-2.3.3/tests/test_orro_advisory_methods.py +596 -0
  53. witnessd-2.3.3/tests/test_orro_advisory_provenance.py +777 -0
  54. witnessd-2.3.3/tests/test_orro_command_surface.py +62 -0
  55. witnessd-2.3.3/tests/test_orro_engine_contract.py +319 -0
  56. witnessd-2.3.3/tests/test_orro_packaging.py +307 -0
  57. witnessd-2.3.3/tests/test_orro_product_reality.py +137 -0
  58. witnessd-2.3.3/tests/test_orro_public_flow.py +2897 -0
  59. witnessd-2.3.3/tests/test_orro_public_surface_docs.py +71 -0
  60. witnessd-2.3.3/tests/test_orro_report.py +443 -0
  61. witnessd-2.3.3/tests/test_orro_required_role_capability_axes.py +273 -0
  62. witnessd-2.3.3/tests/test_orro_review.py +472 -0
  63. witnessd-2.3.3/tests/test_orro_review_live_smoke.py +155 -0
  64. witnessd-2.3.3/tests/test_orro_runtime_hardening.py +302 -0
  65. witnessd-2.3.3/tests/test_orro_team_usable_surface.py +791 -0
  66. witnessd-2.3.3/tests/test_orro_workflow.py +1235 -0
  67. witnessd-2.3.3/tests/test_orro_workstyle.py +258 -0
  68. witnessd-2.3.3/tests/test_overt_fields.py +169 -0
  69. witnessd-2.3.3/tests/test_pause.py +47 -0
  70. witnessd-2.3.3/tests/test_phase0_adversarial_qa.py +243 -0
  71. witnessd-2.3.3/tests/test_pilot_cli.py +342 -0
  72. witnessd-2.3.3/tests/test_pilot_gate_evidence_driver.py +146 -0
  73. witnessd-2.3.3/tests/test_pilot_verify.py +78 -0
  74. witnessd-2.3.3/tests/test_planner.py +443 -0
  75. witnessd-2.3.3/tests/test_preflight.py +85 -0
  76. witnessd-2.3.3/tests/test_process_identity.py +28 -0
  77. witnessd-2.3.3/tests/test_revalidate_v2_demo.py +27 -0
  78. witnessd-2.3.3/tests/test_revalidate_w10.py +105 -0
  79. witnessd-2.3.3/tests/test_revalidate_w11.py +12 -0
  80. witnessd-2.3.3/tests/test_revalidate_w6_keyless.py +26 -0
  81. witnessd-2.3.3/tests/test_role_capability.py +177 -0
  82. witnessd-2.3.3/tests/test_router.py +87 -0
  83. witnessd-2.3.3/tests/test_routing_otel.py +37 -0
  84. witnessd-2.3.3/tests/test_runlog.py +56 -0
  85. witnessd-2.3.3/tests/test_runner_receipt.py +41 -0
  86. witnessd-2.3.3/tests/test_runtime_depone_decoupling.py +179 -0
  87. witnessd-2.3.3/tests/test_scheduler.py +40 -0
  88. witnessd-2.3.3/tests/test_selftest_w4.py +31 -0
  89. witnessd-2.3.3/tests/test_session.py +55 -0
  90. witnessd-2.3.3/tests/test_shell_adapter.py +63 -0
  91. witnessd-2.3.3/tests/test_signing.py +77 -0
  92. witnessd-2.3.3/tests/test_signing_profile.py +31 -0
  93. witnessd-2.3.3/tests/test_state_isolation.py +134 -0
  94. witnessd-2.3.3/tests/test_status.py +19 -0
  95. witnessd-2.3.3/tests/test_substrate.py +282 -0
  96. witnessd-2.3.3/tests/test_substrate_keyless_guard.py +47 -0
  97. witnessd-2.3.3/tests/test_superflow_scout.py +295 -0
  98. witnessd-2.3.3/tests/test_supervisor.py +61 -0
  99. witnessd-2.3.3/tests/test_team_adapter_wiring.py +663 -0
  100. witnessd-2.3.3/tests/test_team_fanin.py +247 -0
  101. witnessd-2.3.3/tests/test_team_ledger.py +155 -0
  102. witnessd-2.3.3/tests/test_team_shell_lane_launch.py +343 -0
  103. witnessd-2.3.3/tests/test_team_worktree_prep.py +171 -0
  104. witnessd-2.3.3/tests/test_trust_anchor.py +32 -0
  105. witnessd-2.3.3/tests/test_v2_plan_run.py +376 -0
  106. witnessd-2.3.3/tests/test_w10_live_script.py +156 -0
  107. witnessd-2.3.3/tests/test_w12_real_a2.py +186 -0
  108. witnessd-2.3.3/tests/test_w13_revalidate.py +25 -0
  109. witnessd-2.3.3/tests/test_w15_parallel_execution.py +575 -0
  110. witnessd-2.3.3/tests/test_w16_merge_lanes.py +257 -0
  111. witnessd-2.3.3/tests/test_w17_journaled_resume.py +264 -0
  112. witnessd-2.3.3/tests/test_w18_dx.py +192 -0
  113. witnessd-2.3.3/tests/test_w1_fixtures.py +130 -0
  114. witnessd-2.3.3/tests/test_w1_negative_fixtures.py +55 -0
  115. witnessd-2.3.3/tests/test_w2_monotonicity.py +81 -0
  116. witnessd-2.3.3/tests/test_worktree_create.py +66 -0
  117. witnessd-2.3.3/tests/test_worktree_receipt.py +88 -0
  118. witnessd-2.3.3/tests/test_write_scope_declaration.py +44 -0
  119. witnessd-2.3.3/witnessd/__init__.py +0 -0
  120. witnessd-2.3.3/witnessd/__main__.py +4441 -0
  121. witnessd-2.3.3/witnessd/a2.py +112 -0
  122. witnessd-2.3.3/witnessd/adapter_run.py +574 -0
  123. witnessd-2.3.3/witnessd/adapters/__init__.py +0 -0
  124. witnessd-2.3.3/witnessd/adapters/agy.py +673 -0
  125. witnessd-2.3.3/witnessd/adapters/base.py +283 -0
  126. witnessd-2.3.3/witnessd/adapters/claude.py +1124 -0
  127. witnessd-2.3.3/witnessd/adapters/codex.py +502 -0
  128. witnessd-2.3.3/witnessd/adapters/gemini.py +356 -0
  129. witnessd-2.3.3/witnessd/adapters/opencode.py +59 -0
  130. witnessd-2.3.3/witnessd/adapters/shell.py +137 -0
  131. witnessd-2.3.3/witnessd/advisory_provenance.py +396 -0
  132. witnessd-2.3.3/witnessd/advisory_provenance_verify.py +102 -0
  133. witnessd-2.3.3/witnessd/budget.py +120 -0
  134. witnessd-2.3.3/witnessd/canonical.py +18 -0
  135. witnessd-2.3.3/witnessd/capture.py +133 -0
  136. witnessd-2.3.3/witnessd/changeset.py +161 -0
  137. witnessd-2.3.3/witnessd/codex_capability.py +358 -0
  138. witnessd-2.3.3/witnessd/distribution.py +475 -0
  139. witnessd-2.3.3/witnessd/emitter.py +563 -0
  140. witnessd-2.3.3/witnessd/eventlog.py +288 -0
  141. witnessd-2.3.3/witnessd/events.py +236 -0
  142. witnessd-2.3.3/witnessd/fanin.py +2034 -0
  143. witnessd-2.3.3/witnessd/faultkit.py +161 -0
  144. witnessd-2.3.3/witnessd/fixture.py +127 -0
  145. witnessd-2.3.3/witnessd/ids.py +22 -0
  146. witnessd-2.3.3/witnessd/installer.py +121 -0
  147. witnessd-2.3.3/witnessd/isolation.py +443 -0
  148. witnessd-2.3.3/witnessd/killswitch.py +273 -0
  149. witnessd-2.3.3/witnessd/learning.py +186 -0
  150. witnessd-2.3.3/witnessd/liveness.py +65 -0
  151. witnessd-2.3.3/witnessd/lock.py +104 -0
  152. witnessd-2.3.3/witnessd/model_declaration.py +52 -0
  153. witnessd-2.3.3/witnessd/model_policy.py +106 -0
  154. witnessd-2.3.3/witnessd/model_routing_benchmark.py +1007 -0
  155. witnessd-2.3.3/witnessd/observer.py +77 -0
  156. witnessd-2.3.3/witnessd/orro_advisory.py +1535 -0
  157. witnessd-2.3.3/witnessd/orro_auto.py +250 -0
  158. witnessd-2.3.3/witnessd/orro_next.py +481 -0
  159. witnessd-2.3.3/witnessd/orro_report.py +470 -0
  160. witnessd-2.3.3/witnessd/orro_review.py +358 -0
  161. witnessd-2.3.3/witnessd/orro_team_surface.py +204 -0
  162. witnessd-2.3.3/witnessd/orro_workflow.py +1472 -0
  163. witnessd-2.3.3/witnessd/orro_workstyle.py +293 -0
  164. witnessd-2.3.3/witnessd/pause.py +68 -0
  165. witnessd-2.3.3/witnessd/pilot.py +240 -0
  166. witnessd-2.3.3/witnessd/planner.py +353 -0
  167. witnessd-2.3.3/witnessd/preflight.py +130 -0
  168. witnessd-2.3.3/witnessd/privacy.py +106 -0
  169. witnessd-2.3.3/witnessd/process_identity.py +69 -0
  170. witnessd-2.3.3/witnessd/provenance.py +68 -0
  171. witnessd-2.3.3/witnessd/receipt.py +55 -0
  172. witnessd-2.3.3/witnessd/role_capability.py +254 -0
  173. witnessd-2.3.3/witnessd/router.py +115 -0
  174. witnessd-2.3.3/witnessd/runintent.py +158 -0
  175. witnessd-2.3.3/witnessd/runlog.py +76 -0
  176. witnessd-2.3.3/witnessd/scheduler.py +68 -0
  177. witnessd-2.3.3/witnessd/session.py +63 -0
  178. witnessd-2.3.3/witnessd/signing.py +231 -0
  179. witnessd-2.3.3/witnessd/signing_profile.py +54 -0
  180. witnessd-2.3.3/witnessd/state.py +145 -0
  181. witnessd-2.3.3/witnessd/status.py +28 -0
  182. witnessd-2.3.3/witnessd/substrate.py +363 -0
  183. witnessd-2.3.3/witnessd/superflow.py +278 -0
  184. witnessd-2.3.3/witnessd/supervisor.py +166 -0
  185. witnessd-2.3.3/witnessd/team_ledger.py +86 -0
  186. witnessd-2.3.3/witnessd/team_shell_lane_launch.py +558 -0
  187. witnessd-2.3.3/witnessd/team_worktree_prep.py +564 -0
  188. witnessd-2.3.3/witnessd/tool_declaration.py +63 -0
  189. witnessd-2.3.3/witnessd/trust_anchor.py +101 -0
  190. witnessd-2.3.3/witnessd/worktree.py +253 -0
  191. witnessd-2.3.3/witnessd/write_scope_declaration.py +50 -0
  192. witnessd-2.3.3/witnessd.egg-info/PKG-INFO +9 -0
  193. witnessd-2.3.3/witnessd.egg-info/SOURCES.txt +194 -0
  194. witnessd-2.3.3/witnessd.egg-info/dependency_links.txt +1 -0
  195. witnessd-2.3.3/witnessd.egg-info/entry_points.txt +2 -0
  196. witnessd-2.3.3/witnessd.egg-info/top_level.txt +2 -0
witnessd-2.3.3/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Moonweave Systems
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,9 @@
1
+ Metadata-Version: 2.4
2
+ Name: witnessd
3
+ Version: 2.3.3
4
+ Summary: witnessd execution engine with deprecated ORRO compatibility shim
5
+ Requires-Python: >=3.10
6
+ License-File: LICENSE
7
+ Dynamic: license-file
8
+ Dynamic: requires-python
9
+ Dynamic: summary
@@ -0,0 +1,541 @@
1
+ # witnessd
2
+
3
+ `witnessd` is the executing runtime engine for **ORRO** (Observed Run & Review
4
+ Orchestrator), published under the Moonweave account. It runs local lanes,
5
+ records what happened, signs the evidence, and leaves bytes that Depone can
6
+ re-derive offline.
7
+
8
+ ```text
9
+ Depone verifies; witnessd executes; ORRO exposes the workflow.
10
+ ```
11
+
12
+ `Superflow` was the earlier product-surface name. New public docs should use
13
+ ORRO. Existing `superflow` commands, fixture paths, or artifact kinds may remain
14
+ as compatibility aliases during migration.
15
+
16
+ ## 10-minute quickstart
17
+
18
+ ```bash
19
+ cd witnessd
20
+ python3 -m orro setup --home .witnessd --json
21
+ python3 -m orro doctor --home .witnessd --json
22
+ python3 -m orro advise "write two independent files" --repo . --home .witnessd --json
23
+ scout_json="$(python3 -m orro scout "map the repo before planning" --repo . --home .witnessd)"
24
+ run_dir="$(python3 -c 'import json,sys; print(json.loads(sys.argv[1])["run_dir"])' "$scout_json")"
25
+ python3 -m orro flowplan "write two independent files" --root . --profile code-change --out "$run_dir/workflow-plan.json"
26
+ run_json="$(python3 -m orro proofrun "write two independent files" --repo . --home .witnessd --workflow-plan "$run_dir/workflow-plan.json" --run-dir "$run_dir" --allow-reference-adapter --json)"
27
+ run_dir="$(python3 -c 'import json,sys; print(json.loads(sys.argv[1])["run_dir"])' "$run_json")"
28
+ python3 -m orro proofcheck "$run_dir" --home .witnessd --out "$run_dir/proofcheck-verdict.json" --json
29
+ python3 -m orro next "$run_dir" --home .witnessd --json
30
+ python3 -m orro auto --dry-run "$run_dir" --home .witnessd --json
31
+ python3 -m orro auto --until-complete "$run_dir" --home .witnessd --max-steps 2 --json
32
+ python3 -m orro report "$run_dir" --home .witnessd --json
33
+ python3 -m orro next "$run_dir" --home .witnessd --json
34
+ ```
35
+
36
+ `orro team init` only writes readiness configuration (`.orro/team.json`). It is
37
+ not execution, verification, proof, or assurance. `orro team go` is the ergonomic
38
+ wrapper for the longer `flowplan -> proofrun -> proofcheck -> report` path: it
39
+ threads the intermediate paths, passes the user's task text into the runner lane
40
+ prompt, writes `proofcheck-verdict.json`, and exits non-zero when the lane did no
41
+ work or Depone does not pass the evidence.
42
+
43
+ ```bash
44
+ python3 -m orro team init --template developer --yes
45
+ python3 -m orro team go "Create orro/task-output.txt with the exact line: hello ORRO" --repo . --home .witnessd --json
46
+ ```
47
+
48
+ The default `developer` template uses a real Codex runner model. Shell reference
49
+ lanes are allowed only for intentional script/test runs: `team go` blocks them
50
+ unless `--allow-reference-adapter` is passed, and even then the result and report
51
+ mark the run as reference/script work, not real AI work.
52
+
53
+ When `--profile` is omitted, `team go` calls `orro advise` and uses the
54
+ recommended profile. When `--team` is omitted, it selects the deterministic
55
+ default rolepack for that profile. Explicit `--profile` and `--team` always win.
56
+ The run writes `moonweave-routing-decision.json` so the advisory routing choice,
57
+ rule matches, selected profile, and selected rolepack are visible. That artifact
58
+ cannot change the evidence verdict and is not proof, approval, or assurance.
59
+
60
+ The `proofrun` command prints JSON. Use its `run_dir` field for the proofcheck
61
+ and handoff steps. A direct shell invocation (`orro proofrun --adapter shell --
62
+ <command>`) is capture-only and is not proofcheckable by itself. It does not
63
+ contain the workflow packet that proofcheck requires. Start with `orro scout`,
64
+ put the flowplan and proofrun artifacts in the scout run directory, or use
65
+ `orro team go`. The workflow path above is copy-pasteable; it uses the
66
+ intentional shell reference adapter and therefore is not real AI work.
67
+ `proofcheck` must write an explicit `proofcheck-verdict.json` before packaging
68
+ the handoff:
69
+
70
+ ```bash
71
+ python3 -m orro proofcheck .witnessd/runs/<run-dir> \
72
+ --home .witnessd \
73
+ --out .witnessd/runs/<run-dir>/proofcheck-verdict.json
74
+ python3 -m orro handoff .witnessd/runs/<run-dir> \
75
+ --out .witnessd/runs/<run-dir>/orro-handoff.json
76
+ ```
77
+
78
+ `team-ledger-verdict.json` emitted during a proofrun is not enough by itself for
79
+ handoff. `handoff` / `orro handoff` fails closed unless
80
+ `proofcheck-verdict.json` exists, is readable JSON, has `decision: "pass"`, and
81
+ contains the ORRO binding for the current evidence snapshot.
82
+
83
+ ## Honest limits
84
+
85
+ witnessd signs the default single-machine flow with an operator key generated
86
+ by that same runtime. Verification labels this `trust_anchor: "self-signed"`:
87
+ the signature and evidence bytes remain checkable, but there is no independent
88
+ out-of-band anchor and the result must not claim observer-signed provenance or
89
+ A1/A2 from that key. To make an external trust anchor eligible, provision the
90
+ matching operator keypair outside the runtime and supply its public key through
91
+ `DEPONE_TRUSTED_OBSERVER_PUBLIC_KEY_FILE`; outputs then report
92
+ `trust_anchor: "operator-provided"`. Observer-signed/A2 language additionally
93
+ requires real observer/runner separation.
94
+
95
+ witnessd may emit self-declared runtime facts and `DELAYED_NOTARY` style
96
+ post-hoc records, but those records do not upgrade trust. A2 requires a
97
+ dedicated observer uid, a separate runner, and observer-owned evidence paths that
98
+ are not writable by the runner. Depone decides what the persisted bytes support.
99
+ For role-capability write scope, Depone can re-derive whether sealed touched-file
100
+ observations fit the sealed declared scope. That is tamper-evident consistency of
101
+ persisted evidence, not ground-truth proof of every host filesystem side effect.
102
+ Fulcio/Rekor keyless and transparency anchoring remain roadmap; the reserved
103
+ profile currently fails closed with `ERR_WITNESSD_KEYLESS_LIVE_UNIMPLEMENTED`.
104
+
105
+ ## Source of truth
106
+
107
+ [`SPEC3.md`](SPEC3.md) is the only top-level witnessd product/runtime authority.
108
+ `SPEC.md`, `SPEC2.md`, `docs/plans/*`, `docs/conformance/*`, README, `SKILL.md`,
109
+ `AGENTS.md`, fixture notes, and release notes are derived, wave-specific, or
110
+ historical. If they conflict with `SPEC3.md`, `SPEC3.md` wins.
111
+
112
+ For the Depone verifier contract itself, Depone's `docs/spec.md` is the
113
+ authority. For the repo documentation map, see [`docs/README.md`](docs/README.md).
114
+ The cross-engine ORRO boundary is summarized in
115
+ [`docs/orro-engine-contract-v0.md`](docs/orro-engine-contract-v0.md).
116
+ The standalone ORRO product/distribution repository now lives at
117
+ <https://github.com/Moonweave-Systems/ORRO>. It owns product onboarding,
118
+ examples, distribution drafts, and e2e smoke-contract docs; it does not contain
119
+ witnessd runtime code or Depone verifier logic.
120
+
121
+ ## User-facing names
122
+
123
+ | Public surface | Purpose |
124
+ | --- | --- |
125
+ | ORRO | flagship product/tool: evidence-governed agent workflow orchestrator |
126
+ | ORRO Flow | `scout -> flowplan -> proofrun -> proofcheck -> handoff` |
127
+ | `orro` | flagship goal -> scout -> plan -> run -> evidence -> verifier summary -> handoff |
128
+ | `orro setup` | one-command setup: provision pinned Depone, initialize home, and write engine lock |
129
+ | `orro init` | setup readiness/provision metadata; not proof or assurance |
130
+ | `orro advise` | non-executing workstyle router for the smallest safe workflow |
131
+ | `orro scout` | read-only repo exploration, repo profile, context pack, and discovery notes |
132
+ | `orro sketch` | validates and seals an agent-authored advisory direction |
133
+ | `orro trace` | validates, gates, and seals an agent-authored root-cause record |
134
+ | `orro advisory-provenance-check` | offline Depone v110 re-derivation of sealed sketch/trace provenance; not correctness |
135
+ | `orro flowplan` | plan-only workflow design and rolepack/workflow compiler surface |
136
+ | `orro proofrun` | precise evidence-backed execution alias |
137
+ | `orro proofcheck` | offline evidence verification alias |
138
+ | `orro handoff` | maintainer review package bound to an explicit passing `proofcheck-verdict.json` |
139
+ | `orro next` | non-executing continuation gate over persisted run artifacts |
140
+ | `orro report` | human-facing summary of observed ORRO artifacts and next safe action |
141
+ | `orro review` | advisory read-only reviewer-lane execution; emits review receipts only |
142
+ | `orro auto --dry-run` | non-executing automation planner that recommends the next command |
143
+ | `orro auto --once` | one-step executor for proofcheck or handoff only |
144
+ | `orro auto --until-complete` | bounded post-run loop over proofcheck and handoff only |
145
+ | `orro team init` | scaffold `.orro/team.json` rolepack readiness config; not proof or assurance |
146
+ | `orro team go` | one-command flowplan/proofrun/proofcheck/report wrapper; reports Depone verdict |
147
+ | `orro doctor` | engine, verifier, adapter, key, MCP, and policy readiness check |
148
+ | `orro auto` | future broader resume/continuation loop behind evidence gates |
149
+
150
+ `witnessd` is the engine name, not the main session skill name. `Moonweave` is the
151
+ publisher/account namespace, not the tool name.
152
+
153
+ ## Repository strategy
154
+
155
+ Development currently stays in two engine repositories:
156
+
157
+ ```text
158
+ Depone = verifier engine and evidence contract
159
+ witnessd = execution engine, evidence emitter, and near-term ORRO surface
160
+ ORRO = product/distribution/wrapper repository
161
+ ```
162
+
163
+ The user-facing install should still be one thing: ORRO. Do not ask normal users
164
+ to install separate Depone and witnessd skills. In the near term, this repo hosts
165
+ the thin ORRO entrypoint because ORRO starts execution and witnessd owns
166
+ execution. `python3 -m orro ...` delegates to the existing `witnessd orro ...`
167
+ surface. The standalone `Moonweave-Systems/ORRO` repo now exists as the
168
+ product/distribution/wrapper repo, but engine code remains in Depone and
169
+ witnessd. It must not duplicate witnessd runtime behavior, Depone proofcheck
170
+ logic, or become a third engine. Depone remains a pinned verifier dependency.
171
+
172
+ Public ORRO setup starts with `orro setup`, which provisions a pinned Depone
173
+ verifier when needed, delegates to existing witnessd initialization/provisioning,
174
+ and creates readiness metadata such as `.witnessd/provision.json` plus
175
+ `.witnessd/orro-engine-lock.json`. It does not run ORRO Flow work, verify
176
+ evidence, approve merge, or raise assurance. For local development, an explicit
177
+ Depone checkout remains available:
178
+
179
+ ```bash
180
+ python3 -m orro setup --home .witnessd --depone-root ../Depone --json
181
+ python3 -m orro doctor --home .witnessd --json
182
+ python3 -m orro engine-lock --home .witnessd --check .witnessd/orro-engine-lock.json --json
183
+ ```
184
+
185
+ `orro doctor` checks readiness, not evidence truth. When
186
+ `<home>/orro-engine-lock.json` exists, doctor compares the provisioned witnessd
187
+ and Depone commits against it by default. A doctor pass means that readiness
188
+ metadata is consistent with the recorded engine pair; it does not mean the pair
189
+ passed the ORRO end-to-end compatibility smoke. An engine lock records the
190
+ pinned engine commits for distribution tooling.
191
+ `orro-engine-lock.json` is distribution metadata only. `--out` writes the local
192
+ witnessd/Depone pin metadata; `--check` compares the current local environment
193
+ against that metadata to detect distribution drift. A matching lock means
194
+ readiness alignment only. It is not proof, evidence verification, merge approval,
195
+ or an assurance increase. A mismatch is readiness-blocked, not verifier-refuted.
196
+
197
+ `orro advise "<goal>" --repo . --home .witnessd --json` is the non-executing
198
+ workstyle router. It classifies the goal into a deterministic task class such as
199
+ `trivial-change`, `docs-change`, `code-change`, `review-only`,
200
+ `verification-only`, `release-readiness`, or `risky-change`, then recommends the
201
+ smallest safe ORRO path. It helps non-developers avoid wasteful or risky AI
202
+ workflows, but it does not replace proofrun, proofcheck, handoff, or human
203
+ review for risky changes. Its `orro-workstyle-decision` is advice only: not
204
+ proof, verifier truth, merge approval, or assurance.
205
+ When sketch or trace output is sealed, that record is auditable provenance only;
206
+ it does not establish that the recommended workflow or diagnosis is correct.
207
+
208
+ `orro sketch "<goal>" --decision sketch.json --repo . --home .witnessd --json`
209
+ validates and seals the calling agent's own frame, candidates, choice, rejection
210
+ reasons, no-gos, and rabbit holes. `orro trace "<symptom>" --decision trace.json
211
+ --repo . --home .witnessd --json` validates the agent's hypotheses and claimed
212
+ tier against the symptom-bound `orro-trace-reproduction.json` from a prior actual
213
+ run. The decision may bind either the source-file SHA-256 or the canonical sealed
214
+ receipt SHA-256. A claimed `confirmed` tier is refused unless the receipt binds a
215
+ real failing command, exit code, transcript digest, symptom, and authored
216
+ discriminating probe, and records a ruled-out rival plus red-to-green confirmation.
217
+ Suspected, speculative, and unconfirmed records impose no minimum hypothesis count
218
+ beyond shape consistency. Without `--decision`, each command
219
+ emits only a non-authoritative scaffold stamped `agent_authored=false` and
220
+ `degraded=true`; the harness-authored fallback is intended for headless/CI use.
221
+ Both surfaces are read-only advisory context, not evidence, verifier truth,
222
+ approval, or assurance; neither can mutate the inspected repo, change an evidence
223
+ verdict, or launch proofrun. Their skillpacks are reference knowledge for the
224
+ agent, not CLI-enforced ceremonies or CLI-generated reasoning.
225
+
226
+ With `--out`, sketch and trace also write `advisory-provenance-bundle.json` and
227
+ the Depone `v110.advisory_provenance` `evidence-contract.json`; trace additionally
228
+ copies the prior run receipt into the sealed subject set. A confirmed trace also
229
+ seals `orro-trace-execution.json` as a digest-bound subject and records its canonical
230
+ hash in the decision. That subject must already exist as a complete, self-hashed
231
+ `execution` object inside the prior-run reproduction; witnessd validates and
232
+ canonicalizes it but does not invent missing execution metadata. Re-derive the
233
+ separate provenance track with:
234
+
235
+ ```bash
236
+ python3 -m orro advisory-provenance-check <artifact-dir> --home .witnessd --json
237
+ ```
238
+
239
+ `PASS` means the record is tamper-evident and the chosen direction or confirmed
240
+ tier is backed by the sealed bytes. It is not proof, execution-evidence truth,
241
+ approval, assurance, or a claim that the direction/root cause is correct.
242
+
243
+ `python scripts/check_orro_product_reality.py` validates local dogfood scenarios
244
+ for ORRO usefulness: smallest safe workflow, waste avoidance, proofcheck/handoff
245
+ gate integrity, artifact fatigue reduction, and clear next action. It is not
246
+ proof, verification, telemetry, a benchmark claim, approval, or assurance.
247
+
248
+ `python scripts/model_routing_benchmark.py` emits measurement JSON for the static
249
+ model-routing table. By default it is offline and deterministic: it loads a
250
+ 24-task suite with seeded repository state and expected local verification,
251
+ then computes route/budget decisions without calling live models. `--live` is
252
+ an explicit opt-in runner or reviewer path that records task success, Depone
253
+ signed-bundle verification, elapsed time, turns, available token usage,
254
+ estimated cost, and model declaration status. A fallback receipt is recorded
255
+ only when the adapter exposes an observed model; otherwise the task carries an
256
+ explicit unavailable-model receipt. Live output includes advisory per-role/tier budgets
257
+ capped by the existing model-policy token, cost, and depth ceilings.
258
+ Fallback observation is not complete, so multi-candidate fallback remains
259
+ disabled. The measurement and budget advisory
260
+ are not proof, verifier truth, a benchmark claim, approval, or assurance, and
261
+ cannot change an evidence verdict.
262
+
263
+ `orro flowplan --profile <profile>` compiles a deterministic rolepack/workflow
264
+ plan for `code-change`, `review-only`, `verification-only`, `docs-change`, or
265
+ `release-readiness`. The plan is an `orro-workflow-plan` intent artifact, not
266
+ evidence. Roles do not create assurance by existing. `proofrun` is the first
267
+ execution phase, `proofcheck` is the verifier phase, and `handoff` is review
268
+ packaging only.
269
+
270
+ `orro proofrun --workflow-plan <path>` first applies a workflow phase gate. The
271
+ plan must allow `proofrun` and include a witnessd engine call that executes but
272
+ does not verify. If the plan does not allow the phase, proofrun fails before it
273
+ creates a run directory. When the phase is allowed, proofrun records
274
+ `workflow-plan.json`, `workflow-plan-binding.json`, and
275
+ `workflow-role-dispatch.json` in the run directory. The binding and role
276
+ dispatch are review context only: actual execution proof still begins with
277
+ proofrun evidence, Depone proofcheck still decides what the bytes support, and
278
+ neither artifact is proof, verification, approval, or assurance. `proofcheck`
279
+ and `handoff` preserve these references when they are present.
280
+
281
+ `orro flowplan --role-lanes-out <path>` writes an `orro-role-lane-plan` that
282
+ maps executable workflow roles to witnessd team lanes. The default lane adapter
283
+ is deterministic `shell`; live model adapters are not used by default.
284
+ `orro proofrun --workflow-plan <path> --role-lane-plan <path>` validates that the
285
+ role-lane plan is bound to the workflow plan, that proofrun is allowed, and that
286
+ execution is explicitly allowed before creating a run directory. It then reuses
287
+ existing witnessd team execution, fan-in, observer, and ledger machinery.
288
+ Role-lane plans are executable intent, not proof. `review-only`,
289
+ `verification-only`, and `release-readiness` role-lane plans do not launch
290
+ proofrun. Formal `orro handoff` still requires a passing bound
291
+ `proofcheck-verdict.json`.
292
+
293
+ `orro next <run-dir> --home .witnessd --json` is the non-executing continuation
294
+ gate before future `orro auto`. It reads persisted artifacts such as workflow
295
+ bindings, role-lane bindings, role dispatch, `team-ledger.json`,
296
+ `proofcheck-verdict.json`, and `orro-handoff.json`; then it reports the safest
297
+ next allowed action. It does not run proofcheck, execute workers, retry lanes,
298
+ repair evidence, approve merge, verify evidence, or raise assurance. Decisions
299
+ include `needs-proofcheck`, `ready-for-handoff`, `complete`, `blocked`,
300
+ `evidence-pending`, and `invalid-run-dir`. Role status is derived from observed
301
+ artifacts only and is not proof. `complete` requires `orro-handoff.json` to be
302
+ bound to the current run directory and current `proofcheck-verdict.json`; stale
303
+ or copied handoff artifacts block continuation.
304
+
305
+ Runtime hardening fails closed on malformed, stale, copied, or unbound critical
306
+ artifacts. Corrupted workflow bindings, role-lane bindings, role dispatch, team
307
+ ledgers, team-ledger verdicts, proofcheck verdicts, or handoff packages block
308
+ `next`, `report`, and `auto` instead of being treated as proof or success.
309
+
310
+ `orro report <run-dir> --home .witnessd --json` is the human-facing compression
311
+ layer over a run directory. It summarizes observed workflow, role-lane,
312
+ execution, proofcheck, handoff, continuation, auto, and optional workstyle
313
+ artifacts; then it states the next safe action and reviewer focus. It helps
314
+ non-developers and reviewers understand what happened and reduces artifact
315
+ fatigue. It does not execute, verify evidence, run proofcheck, package handoff,
316
+ approve merge, raise assurance, replace proofcheck, or replace human review.
317
+
318
+ `orro auto --dry-run <run-dir> --home .witnessd --json` consumes `orro next`
319
+ state and emits an `orro-auto-plan` with the exact command it would run next,
320
+ such as proofcheck or handoff. It does not run that command, call Depone, launch
321
+ workers, write proofcheck verdicts, write handoff packages, mutate worktrees,
322
+ approve merge, verify evidence, or raise assurance. The auto-plan is
323
+ recommendation context only, not proof. Broader autonomous `orro auto` remains
324
+ future work and must stay gated by continuation decisions.
325
+
326
+ `orro auto --once <run-dir> --home .witnessd --json` re-checks continuation
327
+ state and executes at most one safe next step. In v0, the only allowed steps are
328
+ proofcheck for `needs-proofcheck`, handoff for `ready-for-handoff`, and no-op for
329
+ `complete` after the handoff binding is checked. It never launches proofrun or
330
+ workers, calls live models or MCP, repairs artifacts, retries lanes, resumes
331
+ lanes, approves merge, or raises assurance. When it runs proofcheck,
332
+ verification is delegated to Depone. The `orro-auto-receipt` is orchestration
333
+ metadata only, not proof or verifier truth.
334
+
335
+ `orro auto --until-complete <run-dir> --home .witnessd --max-steps 2 --json` is
336
+ bounded post-run automation. It re-checks continuation state before every step
337
+ and may run only proofcheck and handoff. It never launches proofrun or workers,
338
+ calls live models or MCP, repairs artifacts, retries or resumes lanes, approves
339
+ merge, or raises assurance. It stops on blocked, evidence-pending,
340
+ invalid-run-dir, max-steps, or complete. The `orro-auto-session` is orchestration
341
+ metadata only, not proof or verifier truth.
342
+
343
+ The separate `Moonweave-Systems/ORRO` repository now exists for distribution
344
+ needs: marketplace manifests, host-specific plugin packaging, version locking,
345
+ examples, product docs, and end-to-end integration tests. That repo is a wrapper
346
+ and distribution repo, not a third engine; it must not duplicate witnessd
347
+ runtime logic or Depone verifier logic.
348
+
349
+ The concrete migration trigger, allowed standalone skeleton, version lock
350
+ format, engine boundary contract, and e2e smoke contract are recorded in
351
+ [`docs/orro-productization-roadmap.md`](docs/orro-productization-roadmap.md).
352
+
353
+ ## Operating model
354
+
355
+ ORRO is an evidence-backed agent-team operating surface. The normal loop is:
356
+
357
+ ```text
358
+ scout -> flowplan -> proofrun -> proofcheck -> handoff
359
+ ```
360
+
361
+ The scout step uses progressive disclosure instead of loading a whole repository
362
+ into one model context. It produces:
363
+
364
+ - `repo-profile.json`
365
+ - `context-pack.json`
366
+ - `discovery-notes.md`
367
+ - optional `skillpack-lock.json`
368
+
369
+ Runnable lanes may include:
370
+
371
+ - `verification-recipe.json` for intended checks,
372
+ - `verification-receipt.json` for actual command execution,
373
+ - `mcp-tool-receipt-*.json` for declared external tool bridge calls,
374
+ - `pr-handoff.json` for maintainer review.
375
+
376
+ Scout does not write `verification-receipt.json`; it has not run the recipe.
377
+ Depone proofcheck treats a scout-only artifact directory as planning evidence,
378
+ not proof of execution.
379
+
380
+ `flowplan` remains strictly plan-only. With a profile, it may write an
381
+ `orro-workflow-plan` that maps the goal to roles, phases, engine calls, required
382
+ gates, and forbidden assurance sources. It does not run workers, call live
383
+ models, call Depone verification, mutate worktrees, approve merge, or raise
384
+ assurance. Broader autonomous `orro auto` and `orro ultra` remain future work.
385
+
386
+ The optional workflow-plan binding connects that intent artifact to later
387
+ proofrun evidence by hash. Phase gates prevent using a plan for a phase it does
388
+ not allow. `workflow-role-dispatch.json` maps workflow roles to actual or
389
+ pending engine phases and may reference `team-ledger.json`; it does not let role
390
+ names count as evidence. A `review-only` profile is review intent only; actual
391
+ `orro handoff` still requires a passing bound `proofcheck-verdict.json`.
392
+
393
+ Depone decides what these bytes support. Skill text, MCP output, IDE terminals,
394
+ tmux panes, and session transcripts are not verdicts by themselves.
395
+ The handoff step packages reviewed evidence only after an explicit passing
396
+ `proofcheck-verdict.json` bound to the current evidence snapshot; it does not
397
+ verify evidence, approve merge, or raise assurance.
398
+
399
+ ## Setup details
400
+
401
+ Prerequisites:
402
+
403
+ - Python 3.10 or newer
404
+ - `git`
405
+ - `openssl`
406
+ - a local Depone checkout or provisioned Depone pin
407
+
408
+ From a checkout with Depone next to witnessd:
409
+
410
+ ```bash
411
+ cd witnessd
412
+ python3 -m orro setup --home .witnessd --depone-root ../depone --json
413
+ python3 -m orro doctor --home .witnessd --json
414
+ python3 -m witnessd run "write two independent files" --repo . --home .witnessd
415
+ python3 -m witnessd verify .witnessd/runs/<run-dir> --home .witnessd
416
+ ```
417
+
418
+ The `run` command prints JSON. Use its `run_dir` field for the verify step:
419
+
420
+ ```bash
421
+ run_json="$(python3 -m witnessd run "write two independent files" --repo . --home .witnessd)"
422
+ run_dir="$(python3 -c 'import json,sys; print(json.loads(sys.argv[1])["run_dir"])' "$run_json")"
423
+ python3 -m witnessd verify "$run_dir" --home .witnessd
424
+ ```
425
+
426
+ On a runner machine without a local Depone checkout, `orro setup` provisions the
427
+ pinned verifier into `.witnessd/depone-pinned` and records that setup-time
428
+ network use:
429
+
430
+ ```bash
431
+ python3 -m orro setup --home .witnessd --json
432
+ ```
433
+
434
+ For the same path as CI:
435
+
436
+ ```bash
437
+ WITNESSD_DEPONE_ROOT=../depone scripts/quickstart_check.sh
438
+ ```
439
+
440
+ Expected output:
441
+
442
+ ```text
443
+ quickstart_check: pass
444
+ ```
445
+
446
+ ## What the commands do
447
+
448
+ `orro init` delegates to witnessd initialization/provisioning and creates:
449
+
450
+ - `.witnessd/config.json`
451
+ - `.witnessd/provision.json`
452
+ - `.witnessd/keys/`
453
+
454
+ The provision record pins the local Depone checkout by git commit and records the
455
+ witnessd commit. Setup may use network only when explicitly allowed by the
456
+ operator. Runtime and verify commands do not fetch or install.
457
+
458
+ `witnessd run "<goal>" --repo <path>` uses the W18 quota-free shell path by
459
+ default. It creates a run directory containing:
460
+
461
+ - optional `workflow-plan.json`, `workflow-plan-binding.json`, and
462
+ `workflow-role-dispatch.json`
463
+ - `sealed-plan.json`
464
+ - `dispatch-log.jsonl`
465
+ - lane evidence directories
466
+ - `team-schedule-receipt.json`
467
+ - `team-ledger.json`
468
+ - `team-ledger-verdict.json`
469
+
470
+ `witnessd verify <run-dir>` validates the pinned Depone record, invokes Depone
471
+ through `python3 -m depone team-ledger`, and rewrites
472
+ `team-ledger-verdict.json` from the run bytes.
473
+
474
+ `witnessd proofcheck <run-dir> --out <run-dir>/proofcheck-verdict.json`
475
+ delegates to Depone's proofcheck path and writes the public ORRO verdict artifact
476
+ required by `handoff` / `orro handoff`. A missing, malformed, unreadable, or
477
+ non-pass `proofcheck-verdict.json`, or one copied from another evidence snapshot,
478
+ blocks handoff and does not write `orro-handoff.json`.
479
+
480
+ `python3 -m orro <subcommand>` and the witnessd-provided `orro` console script
481
+ are deprecated compatibility shims. They warn on stderr, delegate to the same
482
+ ORRO parser, and will be removed in the next major witnessd release. The
483
+ standalone `Moonweave-Systems/ORRO` package now owns the product `orro` command
484
+ and distribution docs.
485
+
486
+ ## Session skill
487
+
488
+ This repo ships two in-session guidance files:
489
+
490
+ - `SKILL.md` for host skill installation
491
+ - `AGENTS.md` for Codex sessions
492
+
493
+ Both instruct the session agent to scout when useful, design lanes, run witnessd,
494
+ then report the Depone verdict. `team-ledger-verdict.json` records the proofrun
495
+ team-ledger check; `proofcheck-verdict.json` is the explicit public verdict
496
+ artifact required before handoff. A session transcript or lane self-report is not
497
+ a verdict, and a self-declared success claim remains evidence-pending until
498
+ Depone re-derives the run bytes.
499
+
500
+ ## Auditor path
501
+
502
+ An auditor does not need witnessd to execute anything. Given a run directory and
503
+ Depone:
504
+
505
+ ```bash
506
+ python3 -m depone team-ledger \
507
+ --ledger <run-dir>/team-ledger.json \
508
+ --base-dir <run-dir> \
509
+ --out <run-dir>/team-ledger-verdict.json \
510
+ --json
511
+ ```
512
+
513
+ Depone verifies from persisted bytes. It does not run lanes. For scope-style
514
+ checks, it re-derives consistency between sealed declarations and sealed
515
+ observations; it does not observe the live filesystem directly.
516
+
517
+ ## Phase 0 evidence limitations
518
+
519
+ The current Phase 0 safety patch records known evidence-substrate limitations
520
+ instead of upgrading trust claims. Codex JSONL capture, predeclared write paths,
521
+ preflight fail-closed checks, and operator-key overwrite protection are release
522
+ safety controls. They do not prove code correctness, complete artifact binding,
523
+ or full tamper resistance. Same-size same-mtime content changes, runlog
524
+ chain-hardening, and eventlog scaling remain Phase 1 evidence-core work until
525
+ the redesign gate closes.
526
+
527
+ ## Development checks
528
+
529
+ From the Moonweave workspace:
530
+
531
+ ```bash
532
+ cd depone
533
+ python3 -m unittest discover -s tests
534
+ cd ../witnessd
535
+ PYTHONPATH=../depone python3 -m unittest discover -s tests
536
+ PYTHONPATH=../depone python3 -m witnessd self-test --all
537
+ for script in scripts/revalidate_*.py; do
538
+ PYTHONPATH=../depone python3 "$script"
539
+ done
540
+ scripts/quickstart_check.sh
541
+ ```
@@ -0,0 +1,2 @@
1
+ """Thin ORRO product entrypoint hosted by witnessd."""
2
+
@@ -0,0 +1,82 @@
1
+ """Deprecated witnessd-hosted ``orro`` shim."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import os
6
+ import sys
7
+ from difflib import get_close_matches
8
+
9
+ from witnessd.__main__ import ORRO_COMMANDS, main as witnessd_main
10
+
11
+
12
+ DEPRECATION_WARNING = (
13
+ "warning: witnessd-hosted orro is deprecated; install the ORRO package with "
14
+ "pip install \"orro>=0.0.2\" for the orro command. This shim will be removed "
15
+ "in the next major witnessd release."
16
+ )
17
+
18
+ ORRO_HELP = """usage: orro [-h] {setup,init,advise,scout,sketch,trace,flowplan,proofrun,proofcheck,advisory-provenance-check,handoff,next,report,review,auto,team,doctor,engine-lock} ...
19
+
20
+ ORRO - Observed Run & Review Orchestrator
21
+
22
+ ORRO Flow:
23
+ scout -> sketch/trace -> flowplan -> proofrun -> proofcheck -> handoff
24
+
25
+ public commands:
26
+ setup provision pinned Depone, initialize home, and write engine lock
27
+ init setup readiness/provision metadata; does not verify evidence
28
+ advise non-executing workstyle router for the smallest safe workflow
29
+ scout read-only repository exploration and context packaging
30
+ sketch validate and seal an agent-authored advisory direction
31
+ trace validate, gate, and seal an agent-authored root-cause record
32
+ flowplan plan-only workflow design; does not run workers
33
+ proofrun evidence-backed execution through witnessd
34
+ proofcheck offline evidence verification delegated to Depone
35
+ advisory-provenance-check
36
+ offline Depone v110 re-derivation of sealed advisory provenance
37
+ handoff maintainer review package gated by proofcheck-verdict.json
38
+ next non-executing continuation gate over persisted run artifacts
39
+ report human-facing summary of observed ORRO artifacts and next action
40
+ review advisory read-only reviewer lanes; not proof or assurance
41
+ auto dry-run, one-step, or bounded post-run automation
42
+ team scaffold team config or run flowplan/proofrun/proofcheck/report
43
+ doctor ORRO readiness check; does not verify evidence
44
+ engine-lock write/check distribution metadata for pinned engine commits
45
+
46
+ boundary:
47
+ Depone verifies; witnessd executes; ORRO exposes the workflow.
48
+ advise, sketch, trace, next, and report read status/intent only; trace consumes a
49
+ symptom-bound prior-run receipt without executing repo code; auto --dry-run recommends
50
+ commands only; auto --once executes at most one proofcheck or handoff step;
51
+ auto --until-complete loops over those post-run steps with --max-steps. None
52
+ is proof or assurance. A provenance PASS means sealed bytes are internally
53
+ re-derivable; it does not establish that a direction or root cause is correct.
54
+
55
+ options:
56
+ -h, --help show this help message and exit
57
+ """
58
+
59
+
60
+ def main(argv: list[str] | None = None) -> int:
61
+ args = list(sys.argv[1:] if argv is None else argv)
62
+ if os.environ.get("ORRO_WRAPPER_DELEGATION") != "1":
63
+ print(DEPRECATION_WARNING, file=sys.stderr)
64
+ if not args or args[0] in {"-h", "--help"}:
65
+ print(ORRO_HELP)
66
+ return 0
67
+ command = args[0]
68
+ if command not in ORRO_COMMANDS:
69
+ print(f"orro: unknown command '{command}'", file=sys.stderr)
70
+ suggestion = get_close_matches(command, sorted(ORRO_COMMANDS), n=1)
71
+ if suggestion:
72
+ print(f"did you mean '{suggestion[0]}'?", file=sys.stderr)
73
+ print(
74
+ "valid commands: " + ", ".join(sorted(ORRO_COMMANDS)),
75
+ file=sys.stderr,
76
+ )
77
+ return 2
78
+ return witnessd_main(["orro", *args])
79
+
80
+
81
+ if __name__ == "__main__":
82
+ sys.exit(main())
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+