@onlooker-community/ecosystem 0.15.1 → 0.15.2
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.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ecosystem",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.2",
|
|
4
4
|
"description": "Observability substrate for Claude Code. Provides the shared ~/.onlooker/ storage root, canonical schema-validated event emission, session and tool tracking hooks, and prompt rules. Required by all other Onlooker plugins.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Onlooker Community",
|
package/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.15.2](https://github.com/onlooker-community/ecosystem/compare/ecosystem-v0.15.1...ecosystem-v0.15.2) (2026-05-25)
|
|
3
4
|
|
|
4
|
-
### Features
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
### Bug Fixes
|
|
7
7
|
|
|
8
|
-
#
|
|
8
|
+
* **tribunal:** persist all artifacts on every iteration including retries :relieved: ([#41](https://github.com/onlooker-community/ecosystem/issues/41)) ([1636105](https://github.com/onlooker-community/ecosystem/commit/163610535a4ce0fa73c8fb82dc5c6296d2d1065a))
|
|
9
9
|
|
|
10
10
|
## [0.15.1](https://github.com/onlooker-community/ecosystem/compare/ecosystem-v0.15.0...ecosystem-v0.15.1) (2026-05-25)
|
|
11
11
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tribunal",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Multi-agent execution with LLM-as-a-Judge quality gates. An Actor performs work; a jury of typed Judges scores it against a project-overridable rubric; a Meta-Judge reviews the jury for bias; the gate decides accept, retry, or exhaust. Grounded in LLM-as-a-Judge (Zheng et al. 2023) and LLM-as-a-Meta-Judge (Wu et al. 2024). Builds on the Onlooker ecosystem plugin.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Onlooker Community",
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.0.1](https://github.com/onlooker-community/ecosystem/compare/tribunal-v1.0.0...tribunal-v1.0.1) (2026-05-25)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **tribunal:** persist all artifacts on every iteration including retries :relieved: ([#41](https://github.com/onlooker-community/ecosystem/issues/41)) ([1636105](https://github.com/onlooker-community/ecosystem/commit/163610535a4ce0fa73c8fb82dc5c6296d2d1065a))
|
|
9
|
+
|
|
3
10
|
## 1.0.0 (2026-05-24)
|
|
4
11
|
|
|
5
12
|
|
|
@@ -50,14 +50,22 @@ Emit `tribunal.session.start` with the resolved config (`judge_types`, `gate_pol
|
|
|
50
50
|
|
|
51
51
|
For `iteration_number` from `0` while `iteration_number < max_iterations`:
|
|
52
52
|
|
|
53
|
-
1. **Iteration start.** Generate `iteration_id=$(tribunal_ulid)`. `trigger` is `"initial"` for n=0, `"gate_blocked"` for retries.
|
|
53
|
+
1. **Iteration start.** Generate `iteration_id=$(tribunal_ulid)`. `trigger` is `"initial"` for n=0, `"gate_blocked"` for retries. Initialize the iteration directory (creates `verdicts/` subdirectory):
|
|
54
|
+
```bash
|
|
55
|
+
tribunal_init_iteration "$project_key" "$task_id" "$iteration_id"
|
|
56
|
+
```
|
|
57
|
+
Emit `tribunal.iteration.start`.
|
|
54
58
|
|
|
55
59
|
2. **Actor.** Emit `tribunal.actor.start`. Use the Task tool to spawn `tribunal-actor` with:
|
|
56
60
|
- The task description.
|
|
57
61
|
- The rubric criteria (just `name` + `weight` + `min_pass`).
|
|
58
62
|
- On retries: a digest of the prior iteration's consensus, dissent (if any), and Meta-Judge override.
|
|
59
63
|
|
|
60
|
-
Capture the Actor's final output.
|
|
64
|
+
Capture the Actor's final output. **`$actor_output` must be the verbatim, complete text returned by the Task tool — never a summary, paraphrase, or placeholder string.** Persist it:
|
|
65
|
+
```bash
|
|
66
|
+
tribunal_write_actor_output "$project_key" "$task_id" "$iteration_id" "$actor_output"
|
|
67
|
+
```
|
|
68
|
+
Emit `tribunal.actor.complete` with `success: true` and the inferred `artifact_kind` (`file` / `patch` / `message` / `command`).
|
|
61
69
|
|
|
62
70
|
3. **Empanel the jury.** Resolve the panel from configured types:
|
|
63
71
|
```bash
|
|
@@ -67,17 +75,31 @@ For `iteration_number` from `0` while `iteration_number < max_iterations`:
|
|
|
67
75
|
[[ -n "$rubric_types" && "$rubric_types" != "null" ]] && types="$rubric_types"
|
|
68
76
|
jury=$(tribunal_jury_empanel "$types")
|
|
69
77
|
```
|
|
70
|
-
Persist the jury
|
|
78
|
+
Persist the jury and emit `tribunal.jury.empaneled`:
|
|
79
|
+
```bash
|
|
80
|
+
tribunal_write_iteration_artifact "$project_key" "$task_id" "$iteration_id" "jury" "$jury"
|
|
81
|
+
schema_judges=$(tribunal_jury_to_schema_judges "$jury") # pass $schema_judges as judges[] in the event
|
|
82
|
+
```
|
|
71
83
|
|
|
72
84
|
4. **Run each Judge.** For each entry in the jury panel:
|
|
73
85
|
- Emit `tribunal.judge.start` with `judge_id`, `judge_type`, `judge_model_id`.
|
|
74
86
|
- Spawn the judge subagent (`.subagent` field) with the Actor output + rubric.
|
|
75
87
|
- Parse the JSON object the judge returns. Augment it with `task_id`, `iteration_id`, `judge_id`, `judge_model_id` from the panel entry, and `judge_type` from the panel entry (canonical, overriding what the agent self-reported).
|
|
76
88
|
- Emit `tribunal.verdict` with that payload.
|
|
77
|
-
- Persist
|
|
89
|
+
- **Persist the verdict. This call is required for every judge on every iteration — including retries:**
|
|
90
|
+
```bash
|
|
91
|
+
tribunal_write_judge_verdict "$project_key" "$task_id" "$iteration_id" "$judge_id" "$verdict_json"
|
|
92
|
+
```
|
|
78
93
|
|
|
79
94
|
Collect the verdicts into a JSON array `verdicts`.
|
|
80
95
|
|
|
96
|
+
**Before moving to step 5, verify all artifacts written so far are on disk:**
|
|
97
|
+
- `iteration-<id>/actor.md` — verbatim actor output (written in step 2)
|
|
98
|
+
- `iteration-<id>/jury.json` — jury panel (written in step 3)
|
|
99
|
+
- `iteration-<id>/verdicts/<judge_id>.json` — one file per judge (written in step 4)
|
|
100
|
+
|
|
101
|
+
(`iteration-<id>/gate.json` is written in step 7 — verify it there.)
|
|
102
|
+
|
|
81
103
|
5. **Aggregate + dissent.**
|
|
82
104
|
```bash
|
|
83
105
|
method=$(printf '%s' "$rubric" | jq -r '.aggregation_method // "weighted_mean"')
|