Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions HARNESS_STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

A harness may have several independent interventions and PRs. A historical `AWAITING_EXTERNAL` batch state **remains historical** even when a separate publication ledger later confirms an upstream merge. All external submission/acceptance claims below come from the linked owning source; `SUBMITTED_UNVERIFIED_LIVE` means **no current PR-state claim**.

**Scope:** 153 harnesses · 164 interventions · 35 unique external PR URLs · 25 assessment batches · 28 monitored PR targets.
**Scope:** 153 harnesses · 166 interventions · 37 unique external PR URLs · 25 assessment batches · 30 monitored PR targets.

## Harness overview

Expand Down Expand Up @@ -52,7 +52,7 @@ A harness may have several independent interventions and PRs. A historical `AWAI
| [fbrubacher/orch](https://github.com/fbrubacher/orch) | 1 | 1 | 0 | 0 | 1 |
| [first-fluke/oh-my-agent](https://github.com/first-fluke/oh-my-agent) | 1 | 0 | 0 | 0 | 0 |
| [folke/zaly](https://github.com/folke/zaly) | 1 | 0 | 0 | 0 | 0 |
| [FonaTech/Clouds-Coder](https://github.com/FonaTech/Clouds-Coder) | 1 | 1 | 0 | 0 | 0 |
| [FonaTech/Clouds-Coder](https://github.com/FonaTech/Clouds-Coder) | 2 | 1 | 0 | 0 | 0 |
| [fred1433/cloud-coding-agent-node](https://github.com/fred1433/cloud-coding-agent-node) | 1 | 0 | 0 | 0 | 0 |
| [FuzzyKuji/OpenProgram](https://github.com/FuzzyKuji/OpenProgram) | 1 | 0 | 0 | 0 | 0 |
| [gczhuang-cmd/NovaCode](https://github.com/gczhuang-cmd/NovaCode) | 2 | 1 | 0 | 0 | 0 |
Expand Down Expand Up @@ -160,7 +160,7 @@ A harness may have several independent interventions and PRs. A historical `AWAI
| [xingyaoww/code-act](https://github.com/xingyaoww/code-act) | 2 | 1 | 0 | 0 | 0 |
| [xpressabhi/agentic-sdlc-control-plane](https://github.com/xpressabhi/agentic-sdlc-control-plane) | 1 | 0 | 0 | 0 | 1 |
| [yoheinakajima/activegraph](https://github.com/yoheinakajima/activegraph) | 1 | 1 | 0 | 0 | 1 |
| [yologdev/yoagent](https://github.com/yologdev/yoagent) | 1 | 1 | 0 | 0 | 0 |
| [yologdev/yoagent](https://github.com/yologdev/yoagent) | 2 | 1 | 0 | 0 | 0 |
| [zenodea/zaino](https://github.com/zenodea/zaino) | 1 | 0 | 0 | 0 | 0 |
| [zhanghaojie513/Dougong](https://github.com/zhanghaojie513/Dougong) | 1 | 0 | 0 | 0 | 1 |
| [Zleap-AI/Zleap-Agent](https://github.com/Zleap-AI/Zleap-Agent) | 1 | 0 | 0 | 0 | 1 |
Expand Down Expand Up @@ -213,6 +213,7 @@ A harness may have several independent interventions and PRs. A historical `AWAI
| first-fluke/oh-my-agent | [portfolio:oh-my-agent-819](cases/oh-my-agent.md) | — | NOT_TRACKED | CLOSED_UNMERGED | [#819](https://github.com/first-fluke/oh-my-agent/pull/819) | casebook | Recorded external no-merge outcome |
| folke/zaly | [assessment:zaly-stale-edit-permission](data/assessment-candidate-batches/2026-10-22-03.json) | S1 | CLOSED_NO_CHANGE | NONE | — | assessment-upstream-2026-10-22-03 | No code change justified |
| FonaTech/Clouds-Coder | [assessment:clouds-coder-frozen-revision-retry-guard](data/assessment-candidate-batches/2026-11-08-15.json) | S2 | AWAITING_EXTERNAL | NOT_SUBMITTED | — | assessment-upstream-2026-11-08-15 | Refresh source; check external publication grant |
| FonaTech/Clouds-Coder | [monitor:fonatech/clouds-coder#50](data/pr-maintenance/targets.json) | — | NOT_TRACKED | WATCHLIST_ONLY | [#50](https://github.com/FonaTech/Clouds-Coder/pull/50) | monitor_only | Read PR maintenance inbox; no technical inference |
| fred1433/cloud-coding-agent-node | [assessment:cloud-coding-same-tenant-start-race](data/assessment-candidate-batches/2026-11-10-25.json) | S2 | CLOSED_NO_CHANGE | NONE | — | assessment-upstream-2026-11-10-25 | No code change justified |
| FuzzyKuji/OpenProgram | [assessment:openprogram-capacity-recovery-fairness](data/assessment-candidate-batches/2026-11-08-15.json) | S2 | CLOSED_NO_CHANGE | NONE | — | assessment-upstream-2026-11-08-15 | No code change justified |
| gczhuang-cmd/NovaCode | [assessment:novacode-worktree-cwd-escape](data/assessment-candidate-batches/2026-11-10-23.json) | S2 | AWAITING_EXTERNAL | NOT_SUBMITTED | — | assessment-upstream-2026-11-10-23 | Refresh source; check external publication grant |
Expand Down Expand Up @@ -330,6 +331,7 @@ A harness may have several independent interventions and PRs. A historical `AWAI
| xpressabhi/agentic-sdlc-control-plane | [assessment:conductor-sdlc-s2-replan-closure](data/assessment-candidate-batches/2026-11-06-12.json) | S2 | BLOCKED_EVIDENCE | NONE | — | assessment-upstream-2026-11-06-12 | Obtain missing native evidence |
| yoheinakajima/activegraph | [assessment:activegraph-event-patch-invariants](data/assessment-candidate-batches/2026-10-23-08.json) | S1 | AWAITING_EXTERNAL | BLOCKED_PUBLICATION | — | assessment-upstream-2026-10-23-08 | Resolve documented publication gate |
| yologdev/yoagent | [assessment:yoagent-file-alias-lock](data/assessment-candidate-batches/2026-11-10-24.json) | S2 | AWAITING_EXTERNAL | NOT_SUBMITTED | — | assessment-upstream-2026-11-10-24 | Refresh source; check external publication grant |
| yologdev/yoagent | [monitor:yologdev/yoagent#450](data/pr-maintenance/targets.json) | — | NOT_TRACKED | WATCHLIST_ONLY | [#450](https://github.com/yologdev/yoagent/pull/450) | monitor_only | Read PR maintenance inbox; no technical inference |
| zenodea/zaino | [assessment:zaino-shared-stale-write](data/assessment-candidate-batches/2026-10-22-02.json) | S2 | CLOSED_NO_CHANGE | NONE | — | assessment-upstream-2026-10-22-02 | No code change justified |
| zhanghaojie513/Dougong | [assessment:dougong-detached-child-workspace-exclusion](data/assessment-candidate-batches/2026-11-09-16.json) | S2 | BLOCKED_EVIDENCE | NONE | — | assessment-upstream-2026-11-09-16 | Obtain missing native evidence |
| Zleap-AI/Zleap-Agent | [assessment:zleap-conversation-cross-service-serialization](data/assessment-candidate-batches/2026-11-10-23.json) | S2 | BLOCKED_EVIDENCE | NONE | — | assessment-upstream-2026-11-10-23 | Obtain missing native evidence |
Expand Down
26 changes: 26 additions & 0 deletions data/external-pr-publication-readbacks/2026-11-11.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,32 @@
"publication_state": "OPEN_READY",
"approved_exact_title_body": true,
"approval_boundary": "Owner standing external PR publication mandate effective 2026-11-11; authenticated xLagerFeuer host action, no individual PR approval"
},
{
"id": "clouds-coder-frozen-revision-retry-guard",
"repository": "FonaTech/Clouds-Coder",
"public_fork": "opensiro-contributions/Clouds-Coder",
"fork_local_pr_url": "https://github.com/opensiro-contributions/Clouds-Coder/pull/1",
"pr_url": "https://github.com/FonaTech/Clouds-Coder/pull/50",
"base_sha": "6f187a3fe2e16c3ce8b8902e10206682fb07b8b7",
"head_sha": "9b396673a9834ec914e760a32858e6a4efb88bf9",
"pr_commits": 1,
"publication_state": "OPEN_READY",
"approved_exact_title_body": true,
"approval_boundary": "Owner standing external PR publication mandate effective 2026-11-11; authenticated xLagerFeuer host POST and exact title/body/three-file GitHub readback; no individual PR approval"
},
{
"id": "yoagent-file-alias-lock",
"repository": "yologdev/yoagent",
"public_fork": "opensiro-contributions/yoagent",
"fork_local_pr_url": "https://github.com/opensiro-contributions/yoagent/pull/1",
"pr_url": "https://github.com/yologdev/yoagent/pull/450",
"base_sha": "f1495e7f5746445a269ec6a9d14fa8ac346b359d",
"head_sha": "b06e768ad53ab01c4e1f26dca4af156652712684",
"pr_commits": 1,
"publication_state": "OPEN_READY",
"approved_exact_title_body": true,
"approval_boundary": "Owner standing external PR publication mandate effective 2026-11-11; authenticated xLagerFeuer host POST and exact title/body/two-file GitHub readback; no individual PR approval"
}
]
}
10 changes: 10 additions & 0 deletions data/pr-maintenance/targets.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@
"number": 1,
"url": "https://github.com/CorticalComputer/Spartan/pull/1"
},
{
"repository": "FonaTech/Clouds-Coder",
"number": 50,
"url": "https://github.com/FonaTech/Clouds-Coder/pull/50"
},
{
"repository": "Gen-Verse/DiscoveryRSI",
"number": 2,
Expand Down Expand Up @@ -145,6 +150,11 @@
"repository": "xingyaoww/code-act",
"number": 26,
"url": "https://github.com/xingyaoww/code-act/pull/26"
},
{
"repository": "yologdev/yoagent",
"number": 450,
"url": "https://github.com/yologdev/yoagent/pull/450"
}
]
}
6 changes: 5 additions & 1 deletion docs/PR_MAINTENANCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ This is a construction/operating contract. The read-only detector and alert tran

The watcher uses Python standard library only and authenticates using the GitHub Actions token. Each observation is a live **GET** from the GitHub repository that owns it; unexpected API errors, missing identities, unknown states and truncated pagination **fail closed**. Third-party message **bodies are deliberately not stored, executed, or trusted as instructions**: only event IDs, author, status and GitHub URLs are used. Humans/agents inspect the exact review on the external source before repairing.

Current pinned targets are **28** reviewed external PR identities for contributor `xLagerFeuer` (18 previously retained, seven 2026-11-10 publication readbacks, [KnowWork #4](https://github.com/knowflow-ai/KnowWork/pull/4), [Runloop #1](https://github.com/murilo-bassan/durable-agent-runtime/pull/1) and [CodeAct #26](https://github.com/xingyaoww/code-act/pull/26) on 2026-11-11), including Headcount #47 (previously verified but returning GitHub 404 on 2026-11-05), closed-unmerged StarNet #56, and six earlier Corrective PRs: [Workflow One #173](https://github.com/chumingjun/dsh-harness-one/pull/173) (merged 2026-10-29), [Reef/Polyp #19](https://github.com/Coral-Bricks-AI/reef/pull/19), [Spartan #1](https://github.com/CorticalComputer/Spartan/pull/1), [BESSER #205](https://github.com/BESSER-PEARL/BESSER-Agentic-Framework/pull/205), [BabyAI #128](https://github.com/mila-iqia/babyai/pull/128), and [Phoenix #1](https://github.com/Phoenixrr2113/agent-harness/pull/1). This list is a versioned scope snapshot and is **not** dynamically widened by an unreviewed search result. Adding/removing targets requires a reviewable manifest change and explicit checkpoint-migration handling. Closed/merged PRs remain in the snapshot to preserve lifecycle evidence until a deliberate archival change.
Current pinned targets are **30** reviewed external PR identities for contributor `xLagerFeuer` (18 previously retained, seven 2026-11-10 publication readbacks, [KnowWork #4](https://github.com/knowflow-ai/KnowWork/pull/4), [Runloop #1](https://github.com/murilo-bassan/durable-agent-runtime/pull/1), [CodeAct #26](https://github.com/xingyaoww/code-act/pull/26), [Clouds-Coder #50](https://github.com/FonaTech/Clouds-Coder/pull/50), and [yoagent #450](https://github.com/yologdev/yoagent/pull/450) on 2026-11-11), including Headcount #47 (previously verified but returning GitHub 404 on 2026-11-05), closed-unmerged StarNet #56, and six earlier Corrective PRs: [Workflow One #173](https://github.com/chumingjun/dsh-harness-one/pull/173) (merged 2026-10-29), [Reef/Polyp #19](https://github.com/Coral-Bricks-AI/reef/pull/19), [Spartan #1](https://github.com/CorticalComputer/Spartan/pull/1), [BESSER #205](https://github.com/BESSER-PEARL/BESSER-Agentic-Framework/pull/205), [BabyAI #128](https://github.com/mila-iqia/babyai/pull/128), and [Phoenix #1](https://github.com/Phoenixrr2113/agent-harness/pull/1). This list is a versioned scope snapshot and is **not** dynamically widened by an unreviewed search result. Adding/removing targets requires a reviewable manifest change and explicit checkpoint-migration handling. Closed/merged PRs remain in the snapshot to preserve lifecycle evidence until a deliberate archival change.

**Reviewed availability-only exception (Upstream #139 / PR #140):** Headcount #47 is retained as the eighteenth identity, with the sole allowlisted `monitoring: verify_404_only` manifest mode. Every run MUST GET that exact source and confirm HTTP 404. It may then report **17 fully observed / 1 explicitly UNVERIFIABLE of 18**, continue reading the other 17, and store a distinct *availability marker* instead of stale PR fields. The first transition emits one inbox `SOURCE_UNVERIFIABLE` alert, never a fabricated close/merge/review. Recovery (HTTP 200), a different status, any additional unavailable URL, or a malformed source **fails closed** pending source review and removal of the exception. The state is never silently `OPEN` or `CLOSED_UNMERGED`. This is a reviewed change to monitoring *coverage*, not a removal of the historical cohort, or permission to claim an 18-of-18 event snapshot. A returned count of 17 is prominently labelled in the observer and inbox output.

Expand Down Expand Up @@ -65,3 +65,7 @@ For the Headcount transition, the existing checkpoint key is **preserved** and r
- Monitoring is not the same as event ownership. Maintainer review requests must be independently triaged and closed through an authorized operator.
- The existing daily portfolio lifecycle freshness check is still authoritative for its historical experimental cohort; this watcher does not overwrite it or mutate the frozen 34-case Corrective ledger.
- If GitHub issues are locked, Actions token cannot write to #125, or checkpoint state is ambiguous, the watcher must fail and alert via failing Actions, **not** silently reset its cursor.

**Checkpoint migration for Clouds-Coder #50 (2026-11-11, standing publication mandate):** The external [Clouds-Coder #50](https://github.com/FonaTech/Clouds-Coder/pull/50) was submitted Open/Ready from [fork-local #1](https://github.com/opensiro-contributions/Clouds-Coder/pull/1) and read back with exact head `9b396673a9834ec914e760a32858e6a4efb88bf9`. Targeted native collaboration 61/61 and split-distribution 6/6 PASS, while whole-repository pytest was not validated; this single allowlisted addition migrates 28 → 29 without replaying historical events. Publication is not a maintainer acceptance, adoption or product benefit claim.

**Checkpoint migration for yoagent #450 (2026-11-11, standing publication mandate):** The external [yoagent #450](https://github.com/yologdev/yoagent/pull/450) was submitted Open/Ready from [fork-local #1](https://github.com/opensiro-contributions/yoagent/pull/1) and read back at head `b06e768ad53ab01c4e1f26dca4af156652712684`. Native Rust fmt, clippy, rustdoc and full Linux all-features suite PASS (1,937 passed, 17 ignored), with the initial GASP file-permission failure attributed to a root-container capability after a successful capability-restricted rerun; other OS CI remains unverified. This exact allowlisted addition permits 29 → 30 checkpoint migration without manufacturing historic events. The external maintainers retain sole merge authority; no adoption or product benefit is claimed.
4 changes: 4 additions & 0 deletions scripts/pr_maintenance_watch.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,10 @@
"https://github.com/murilo-bassan/durable-agent-runtime/pull/1",
# CodeAct standing-mandate publication, tested fork head read back on 2026-11-11.
"https://github.com/xingyaoww/code-act/pull/26",
# Clouds-Coder standing publication, exact validated 2026-11-11 readback.
"https://github.com/FonaTech/Clouds-Coder/pull/50",
# yoagent standing-mandate publication, native all-features validated on 2026-11-11.
"https://github.com/yologdev/yoagent/pull/450",
}
CHECK_CONCLUSIONS = {
"failure": ("CI_FAILED", "action_required"),
Expand Down
6 changes: 3 additions & 3 deletions tests/test_portfolio_reconcile.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,9 @@ def pages(self, path):
class PortfolioReconcileTests(unittest.TestCase):
def test_frozen_source_union_exact_size_and_identity(self):
entries = portfolio.cohort()
self.assertEqual(len(entries), 35)
self.assertEqual(sum("watchlist" in row["groups"] for row in entries), 28)
self.assertEqual(len({row["url"] for row in entries}), 35)
self.assertEqual(len(entries), 37)
self.assertEqual(sum("watchlist" in row["groups"] for row in entries), 30)
self.assertEqual(len({row["url"] for row in entries}), 37)
self.assertEqual(len([row for row in entries if "casebook" in row["groups"]]), 9)
self.assertEqual(len([row for row in entries if "registry" in row["groups"]]), 1)
self.assertEqual(
Expand Down
8 changes: 6 additions & 2 deletions tests/test_pr_maintenance_watch.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,8 @@ def write_targets(self, root):

def test_exact_manifest_has_twenty_eight_targets_and_no_duplicates(self):
data = watch.validate_targets()
self.assertEqual(len(data["targets"]), 28)
self.assertEqual(len({t["url"] for t in data["targets"]}), 28)
self.assertEqual(len(data["targets"]), 30)
self.assertEqual(len({t["url"] for t in data["targets"]}), 30)
self.assertIn("https://github.com/knowflow-ai/KnowWork/pull/4",
{t["url"] for t in data["targets"]})
self.assertIn("https://github.com/knowflow-ai/KnowWork/pull/4",
Expand All @@ -161,6 +161,10 @@ def test_exact_manifest_has_twenty_eight_targets_and_no_duplicates(self):
{t["url"] for t in data["targets"]})
self.assertIn("https://github.com/xingyaoww/code-act/pull/26",
watch.APPROVED_CHECKPOINT_ADDITIONS)
self.assertIn("https://github.com/yologdev/yoagent/pull/450", {t["url"] for t in data["targets"]})
self.assertIn("https://github.com/yologdev/yoagent/pull/450", watch.APPROVED_CHECKPOINT_ADDITIONS)
self.assertIn("https://github.com/FonaTech/Clouds-Coder/pull/50", {t["url"] for t in data["targets"]})
self.assertIn("https://github.com/FonaTech/Clouds-Coder/pull/50", watch.APPROVED_CHECKPOINT_ADDITIONS)
self.assertIn("https://github.com/cbrock84/headcount/pull/47",
[t["url"] for t in data["targets"]])
self.assertIn("https://github.com/chumingjun/dsh-harness-one/pull/173",
Expand Down
2 changes: 1 addition & 1 deletion tests/test_resolved_pr_acceptance.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ def test_multiple_bot_report_comments_fail_before_write(self):
self.assertFalse(api.writes)

def test_only_reviewed_watchlist_and_no_unreviewed_expansion(self):
self.assertEqual(len(metric.validate_targets()["targets"]), 28)
self.assertEqual(len(metric.validate_targets()["targets"]), 30)
self.assertEqual(metric.INBOX_REPO, "opensiro/upstream")
self.assertEqual(metric.INBOX_NUMBER, 125)

Expand Down
6 changes: 4 additions & 2 deletions tests/test_verified_external_outcomes.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,16 +87,18 @@ class VerifiedExternalOutcomeTests(unittest.TestCase):
def test_owner_ledgers_cover_exact_portfolio_with_one_replacement_chain(self):
items, blocked = outcomes.cohort()
self.assertEqual((len(items), sum(len(x["pr_urls"]) for x in items), blocked),
(34, 35, 21))
(36, 37, 21))
self.assertEqual(len([x for x in items if x["kind"] == "improvement"]), 2)
self.assertEqual(len([x for x in items if x["kind"] == "corrective"]), 13)
self.assertEqual(len([x for x in items if x["kind"] == "casebook"]), 8)
self.assertEqual(len([x for x in items if x["kind"] == "registry"]), 1)
self.assertEqual(len([x for x in items if x["kind"] == "publication"]), 10)
self.assertEqual(len([x for x in items if x["kind"] == "publication"]), 12)
self.assertIn("publication:knowwork-sandbox-start-race",
{x["id"] for x in items})
self.assertIn("publication:runloop-budget-finalization-idempotency",
{x["id"] for x in items})
self.assertIn("publication:yoagent-file-alias-lock", {x["id"] for x in items})
self.assertIn("publication:clouds-coder-frozen-revision-retry-guard", {x["id"] for x in items})
self.assertIn("publication:codeact-same-session-first-kernel-race",
{x["id"] for x in items})
self.assertEqual(len([x for x in items if len(x["pr_urls"]) > 1]), 1)
Expand Down