Skip to content

Bolt 2: 品質修復Loop Pluginを追加する - #2194

Merged
j5ik2o merged 12 commits into
mainfrom
codex/intent-autonomy-u2-quality-repair
Aug 4, 2026
Merged

Bolt 2: 品質修復Loop Pluginを追加する#2194
j5ik2o merged 12 commits into
mainfrom
codex/intent-autonomy-u2-quality-repair

Conversation

@j5ik2o

@j5ik2o j5ik2o commented Aug 4, 2026

Copy link
Copy Markdown
Member

概要

Delivery PlanのBolt 2 / U2 quality-repair-runtimeを実装します。マージ済みのBolt 1(#2181)の汎用Loop Monitorを利用し、品質不備を正規化してrepair / replan / repair-stalledへ閉じた形で分岐させます。

主な変更

  • first-party Quality Repair contributionとactivation / preflightを追加
  • reviewer・sensor・produces・completion conditionのblocking evidenceを正規化
  • T/T+1、fixed point、churn、regression、replan-first、REPAIR_STALLEDを実装
  • canonical audit / replay / status / resumeを追加
  • Claude Code、Codex、Cursor、OpenCode、Kimi Codeの共通Core投影contractを追加
  • Bolt 1のroute subset seamを拡張し、既存hardeningを維持

スコープ境界

  • Intent-scoped grantと自動裁定(Bolt 3)は含めない
  • completed review / observability(Bolt 4)は含めない
  • Intent terminal completion / live receipt(Bolt 5)は含めない
  • PR / GitHub / merge状態、外部runner、新規stageには依存しない

検証

  • bun run build: 成功
  • 詳細テスト、lint、coverage、typecheck: GitHub CIで検証

Closes #2096


Note

Medium Risk
Introduces durable workflow state (replan, latch, suspend/resume) and a new canonical audit event, but reuses the existing Loop Monitor coordinator and is covered by extensive unit/integration and registry drift guards.

Overview
Adds Bolt 2 / U2 quality-repair-runtime: a first-party quality repair loop on top of the generic Loop Monitor, without quality-specific vocabulary in the monitor core.

New runtime surface: amadeus-quality-repair.ts (embedded contribution, activation, blocking-evidence → obligations/snapshots, T+1 convergence, replan-first / post-replan repair-stalled), amadeus-quality-repair-runtime.ts (atomic quality + loop transactions, Judge/replan attempts 0/1, REPAIR_STALLED / suspended workflow, evidence-or-human resume), and amadeus-quality-repair-replay.ts (audit decode, repository, replay).

Loop Monitor seam (minimal): deliveries may carry a validated non-empty subset of compiled routes into Judge reservations and dispatch; LOOP_ROUTE_APPLIED can advance cycle/epoch when a transition target is present.

Audit & docs: registers QUALITY_REPAIR_TRANSACTION_COMMITTED (canonical count 86 → 87), updates state-machine reference, coverage registry/ratchet, and drift tests.

Tests: unit/integration for convergence, stall/resume, replay conflicts, and a five-harness check that projected quality runtime files match core bytes.

Reviewed by Cursor Bugbot for commit 927822b. Configure here.

Summary by CodeRabbit

  • 新機能

    • 品質修復の進捗、証拠、再計画、停止・再開を一貫して管理できるようになりました。
    • 品質修復トランザクションの監査記録、永続化、再生に対応しました。
    • 品質状態を人間が確認しやすいステータスとして表示できるようになりました。
    • ルート制約の検証が強化され、より安全な判定・配送が可能になりました。
  • ドキュメント

    • 品質修復に関する監視イベントと監査イベントの説明を更新しました。

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@j5ik2o, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 7 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: de0c1572-84b5-4ec2-bdfa-e03463847785

📥 Commits

Reviewing files that changed from the base of the PR and between 98ace23 and d61afe5.

📒 Files selected for processing (2)
  • packages/framework/core/tools/amadeus-loop-monitor-replay.ts
  • packages/framework/core/tools/amadeus-quality-repair-replay.ts
📝 Walkthrough

Walkthrough

Quality Repairの品質証拠処理、再計画、停止・再開、永続化、監査リプレイを追加しました。Loop MonitorのJudgeルート制約と状態更新を強化し、監査イベント件数を87件へ更新しました。

Changes

Quality Repair

Layer / File(s) Summary
品質証拠と判定ポリシー
packages/framework/core/tools/amadeus-quality-repair.ts, tests/unit/t428-quality-repair.test.ts
品質モード、証拠正規化、進捗分類、再計画、停止判定を追加し、入力検証と境界条件をテストします。
Judgeルート制約とLoop状態
packages/framework/core/tools/amadeus-loop-monitor.ts, packages/framework/core/tools/amadeus-loop-monitor-runtime.ts, tests/unit/t426-loop-monitor.test.ts, tests/unit/t427-loop-monitor-runtime.test.ts
予約単位のルート制約を生成・保持・検証します。ルート適用時にセマンティックイベント、サイクル、エポックを更新します。
Quality Repairランタイム
packages/framework/core/tools/amadeus-quality-repair-runtime.ts, tests/integration/t429-quality-repair-runtime.integration.test.ts
品質投影、トランザクション、再計画、停止ラッチ、再開、ステータス表示を実装します。統合テストで状態遷移、競合、fail-closed動作を検証します。
監査永続化とリプレイ
packages/framework/core/tools/amadeus-quality-repair-replay.ts, packages/framework/core/otel/event-registry.ts, packages/framework/core/tools/amadeus-audit.ts, packages/framework/core/knowledge/amadeus-shared/audit-format.md, docs/reference/12-state-machine.md, tests/unit/t429-quality-repair-replay-validation.test.ts
QUALITY_REPAIR_TRANSACTION_COMMITTEDを監査イベントへ追加します。監査履歴の検証、重複排除、競合検出、スコープのリプレイを実装します。
統合・ハーネス・レジストリ検証
tests/integration/t430-quality-repair-five-harness-projection.integration.test.ts, tests/integration/event-registry-drift.test.ts, tests/unit/t28-audit-event-sync.test.ts, tests/unit/t81.test.ts, tests/.coverage-*, tests/no-silent-drop/*
5つのハーネス投影、監査イベント件数87件、カバレッジ基準、更新済みダイジェストを検証します。

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related issues

  • amadeus-dlc/amadeus#2095: Loop Monitorのルート制約と永続ランタイムを追加し、Quality Repairがその基盤を使用します。

Possibly related PRs

  • amadeus-dlc/amadeus#1924: 正規監査イベント、レジストリ定義、イベント件数、関連テストを同期する点で関連します。
  • amadeus-dlc/amadeus#2181: Loop MonitorのJudge予約、監査イベント、ルート管理を拡張する点で直接関連します。
🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning 主要機能は実装されていますが、5ハーネス各々のopt-in live smokeテストを確認できず、Issue #2096の受け入れ条件を満たしません Claude Code、Codex、Cursor、OpenCode、Kimi Code向けのopt-in live smokeテストを追加し、各ハーネスの実行結果を検証してください。
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed タイトルは、品質修復 Loop Plugin の追加という主変更を明確かつ簡潔に示しています。
Out of Scope Changes check ✅ Passed 変更はQuality Repair Plugin、Loop Monitor連携、監査、リプレイ、テストおよび関連ベースラインに限定され、明確な範囲外変更はありません。

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 15

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/framework/core/tools/amadeus-loop-monitor.ts`:
- Around line 762-763: Update duplicate-delivery detection in the relevant
monitor flow around isValidJudgeRouteConstraint so an existing delivery is
considered identical only when deliveryId, payloadFingerprint, and
routeConstraint.fingerprint all match. Return CONFLICT for matching payloads
with different route constraints, and add a regression test covering a
full-route constraint followed by a subset constraint.

In `@packages/framework/core/tools/amadeus-quality-repair-replay.ts`:
- Around line 57-68: Strengthen the type-guard validation in
packages/framework/core/tools/amadeus-quality-repair-replay.ts#L57-L68 by
requiring latestSnapshot.unresolved, latestSnapshot.verifierSuccessReceipts, and
stalledLatch.unresolvedObligationIds to be arrays, and
pendingReplan.attemptIdentity to be a string. Also update the loopEventSets
validation at
packages/framework/core/tools/amadeus-quality-repair-replay.ts#L98-L99 so every
element’s partitionKey is a string; keep validProjection and validTransaction
fail-closed at the same nested depth.
- Around line 98-99: Update the loopEventSets validation in the replay input
check to also require set.partitionKey to be a string, alongside the existing
eventSetId and events checks. Use the validation consumed by
createMemoryQualityRepairRepository and loopReceipt so malformed sets cannot
reach allLoopSets or receipt generation without a partition key.

In `@packages/framework/core/tools/amadeus-quality-repair-runtime.ts`:
- Around line 806-816: Update the evidence-change resume path that constructs
QualityRuntimeProjection so the validated normalized.snapshot is retained in
latestSnapshot instead of being reset to null, while preserving the existing
reset behavior for lastProgress and other transient fields. Ensure
projectQualityRepairStatus can immediately report the resumed snapshot’s
obligations and evidenceFingerprint without requiring recordEvidence again.
- Around line 492-501: Cache the result of
foldQualityProjections(repository.readTransactions()) and invalidate that cache
only when a transaction is committed, so readProjection, readByPartition,
recordEvidence, and dispatchJudge do not refold the full history on every call.
Maintain a partitionKey-to-qualityScopeId index alongside the cached projections
and update readByPartition to use the index instead of scanning
projections.values().
- Around line 205-210: Update the loop-only transaction result handling around
`result` and `repository.transaction` to use a distinct sentinel for “body was
not called” rather than initializing with `undefined`. After the transaction,
detect the sentinel explicitly and handle that state separately, while returning
the body’s value—including a legitimate `undefined`—without an unchecked cast.
- Around line 429-433: The loopMonitors array access uses a non-null assertion
operator but the type definition does not express that the array is guaranteed
to be non-empty. Either update the type definition of loopMonitors in
CompiledLoopMonitorGraph to use a non-empty array type like readonly
[CompiledLoopMonitor, ...CompiledLoopMonitor[]], or add an explicit validation
at the entry point of createQualityRepairCoordinator that checks
activation.graph.loopMonitors.length === 0 and throws an error with an
appropriate reason code if the array is empty, then remove the non-null
assertions at the access sites around line 429 and line 490.

In `@packages/framework/core/tools/amadeus-quality-repair.ts`:
- Around line 726-769: When `snapshot.unresolved.length === 0` (indicating all
quality defects are resolved), the current logic does not recognize this as a
convergence state and instead increments `consecutiveNonProgress`, incorrectly
triggering repair-stalled transitions. Add a guard condition after the `window`
calculation in the quality epoch projection logic to detect when unresolved is
empty, and in that case return a progress state of kind "strict-progress" with
`consecutiveNonProgress: 0`, `replanSinceLastProgress: false`,
`deterministicAction: null`, and `routeIds: []`. Then add a test case to
`packages/framework/core/tools/amadeus-quality-repair.ts#L726-L769` anchor site
that verifies this behavior by injecting consecutive snapshots with empty
unresolved lists, confirming the counter stays at 0 and no repair-stalled
transition occurs, and add corresponding test assertions at
`tests/unit/t428-quality-repair.test.ts#L337-L356` sibling site.
- Around line 464-523: 各観測種別の obligationId 導出を共通ヘルパーに集約し、obligation() と
sensor/produce/condition 分岐の双方からそのヘルパーを利用してください。sensor の blocking、produce の
required など不要な観測では早期 return を先に行い、success を生成する直前にのみ obligationIdOf
相当の導出を実行するよう計算を遅延させてください。
- Around line 430-435: Update the reviewer-observation handling around the READY
verdict check so a READY observation with any blockers is rejected as
evidence-incomplete. Validate blockers before returning the empty
obligations/successes result, while preserving the current empty result for
READY observations without blockers.
- Around line 158-172: The transitionTable declares a transition from
QUALITY_CHECK to QUALITY_REPLAN, but this state is unreachable since
planQualityDelivery never issues QUALITY_REPLAN events, and no routes target it.
Additionally, the repair and replan routes in the routes array both have
identical targetEvent values, making them indistinguishable at runtime. Either
remove QUALITY_REPLAN from the transitionTable and its outgoing transition from
QUALITY_CHECK, or alternatively change the replan route's targetEvent from
QUALITY_NON_PROGRESS to QUALITY_REPLAN and ensure planQualityDelivery can emit
QUALITY_REPLAN events to make the state reachable and the two routes
distinguishable.

In `@tests/integration/t429-quality-repair-runtime.integration.test.ts`:
- Line 239: Replace the three type-narrowing early returns after expect in
tests/integration/t429-quality-repair-runtime.integration.test.ts at lines 239,
251, and 318 with throws using the specified messages: “missing first
threshold”, “missing stalled threshold”, and “missing resumed projection”,
respectively. Keep the existing expect assertions and use throw new Error so
each guard cannot silently complete the test.

In
`@tests/integration/t430-quality-repair-five-harness-projection.integration.test.ts`:
- Around line 21-27: The currentHarnessCohort array contains redundant dir
property definitions that duplicate information already available in the
manifest objects. Remove the manual dir mappings like ".claude", ".codex", etc.
and instead derive the directory names from the manifest.harnessDir property of
each manifest object (claudeManifest, codexManifest, cursorManifest,
opencodeManifest, kimiManifest) to eliminate duplication and maintain a single
source of truth.

In `@tests/unit/t428-quality-repair.test.ts`:
- Around line 216-224: Add a test case to verify that normalizeQualityEvidence
handles the "NOT-READY" notation (with hyphen) in addition to the existing "NOT
READY" test. Create a second incomplete reviewer test scenario identical to the
current test but with verdict set to "NOT-READY", and verify it produces the
same expected output with ok: true and the same evidence-incomplete snapshot,
ensuring both verdict notations generate consistent obligations.
- Around line 66-110: Add missing test cases to cover the fail-closed paths for
quality contribution validation in the test file. The current tests only
validate the contribution: null path, but compileQualityContribution has five
rejection conditions that need coverage. Add three new test cases: one verifying
that a tampered contentDigest in the contribution object triggers
ACTIVATION_FAILED when calling resolveQualityPluginActivation, another checking
that a repair-stalled route rule with disposition set to "continue" also
triggers ACTIVATION_FAILED, and a third confirming that
planNoneModeQualitySetting with the opted-out flag set to false returns
QUALITY_REPAIR_OPTED_OUT error with provenanceTurnId: null. These additions
ensure Issue `#2096`'s acceptance criteria of fail-closed behavior during
preflight validation for missing or corrupted contributions are properly
verified.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: d220df7d-ab2f-4b15-9eb0-38d8f0bd117e

📥 Commits

Reviewing files that changed from the base of the PR and between 20a4f97 and 927822b.

⛔ Files ignored due to path filters (2)
  • amadeus/spaces/default/intents/260803-intent-autonomy/construction/quality-repair-runtime/code-generation/code-generation-plan.md is excluded by !amadeus/spaces/*/intents/**
  • amadeus/spaces/default/intents/260803-intent-autonomy/construction/quality-repair-runtime/code-generation/code-summary.md is excluded by !amadeus/spaces/*/intents/**
📒 Files selected for processing (18)
  • docs/reference/12-state-machine.md
  • packages/framework/core/knowledge/amadeus-shared/audit-format.md
  • packages/framework/core/otel/event-registry.ts
  • packages/framework/core/tools/amadeus-audit.ts
  • packages/framework/core/tools/amadeus-loop-monitor-runtime.ts
  • packages/framework/core/tools/amadeus-loop-monitor.ts
  • packages/framework/core/tools/amadeus-quality-repair-replay.ts
  • packages/framework/core/tools/amadeus-quality-repair-runtime.ts
  • packages/framework/core/tools/amadeus-quality-repair.ts
  • tests/.coverage-ratchet.json
  • tests/.coverage-registry.json
  • tests/integration/event-registry-drift.test.ts
  • tests/integration/t429-quality-repair-runtime.integration.test.ts
  • tests/integration/t430-quality-repair-five-harness-projection.integration.test.ts
  • tests/unit/t28-audit-event-sync.test.ts
  • tests/unit/t426-loop-monitor.test.ts
  • tests/unit/t428-quality-repair.test.ts
  • tests/unit/t81.test.ts

Comment thread packages/framework/core/tools/amadeus-loop-monitor.ts
Comment thread packages/framework/core/tools/amadeus-quality-repair-replay.ts
Comment thread packages/framework/core/tools/amadeus-quality-repair-replay.ts Outdated
Comment thread packages/framework/core/tools/amadeus-quality-repair-runtime.ts Outdated
Comment thread packages/framework/core/tools/amadeus-quality-repair-runtime.ts Outdated
Comment thread packages/framework/core/tools/amadeus-quality-repair.ts
Comment thread tests/integration/t429-quality-repair-runtime.integration.test.ts Outdated
Comment thread tests/unit/t428-quality-repair.test.ts
Comment thread tests/unit/t428-quality-repair.test.ts
@j5ik2o
j5ik2o marked this pull request as draft August 4, 2026 14:41
j5ik2o added 2 commits August 5, 2026 00:18
The self-hosted patch coverage gate flagged 54 added lines with zero
hits. Reach the measurable ones with new tests and allowlist the rest:

- cover the duplicate-route constraint rejection and the invalid
  route-constraint catch path in the loop monitor reducer (t426)
- cover createAuditQualityRepairRepository commit/reload round-trip
  through the audit ledger, including the guarded emit and audit-lock
  seams (t429)
- cover the fail-closed CONFLICT arm when an evidence resume cannot
  commit its loop delivery (t429)
- allowlist type-only multiline signature/annotation lines that Bun
  reports as zero-hit DA records only in the merged suite, following
  the existing goal-reconciliation precedent
- allowlist the defensive re-normalization failure branch in
  rebaseResumeEvidence, unreachable while resolveResumeBasis validates
  the identical evidence first
The merged-suite coverage run still emits zero-hit DA records for the
multiline input and return type annotations of
createAuditQualityRepairRepository and replayQualityRepairScope even
though both functions are now exercised by t429 integration tests.
Follow the established type-only allowlist precedent for them.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/framework/core/tools/amadeus-quality-repair-runtime.ts (1)

903-913: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

latestSnapshotlastProgress の型契約が崩れます。

resumePlanplanQualityDelivery の戻り値です。戻り値は QualityDeliveryPlan インターフェースで、常に非 null の progress フィールドを持ちます。resumedSnapshot が非 null の場合、resumePlan も非 null で、progress を含みます。

しかし、現在のコードは lastProgress: null に設定します。これにより、stale previousSnapshot 経路(708-717行)で progress: priorByInput.lastProgress! を返す際に、非 null assertion は null 値を返します。呼び出し側が progress.kind を参照するとランタイムエラーが発生します。

resumePlan?.progress ?? null に修正してください。resumedSnapshot が非 null の場合、resumePlan.progress の値を使用します。null の場合は null に設定されます。

修正案
         epoch: nextEpoch,
         latestSnapshot: resumedSnapshot,
-        lastProgress: null,
+        lastProgress: resumePlan?.progress ?? null,
         observationSequence: 0,
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/framework/core/tools/amadeus-quality-repair-runtime.ts` around lines
903 - 913, Update the projection construction around QualityRuntimeProjection to
set lastProgress from resumePlan?.progress ?? null instead of always null.
Preserve null when no resume plan exists, and use the non-null
QualityDeliveryPlan.progress whenever resumedSnapshot is available so the
existing stale previousSnapshot path returns a valid progress value.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/framework/core/tools/amadeus-quality-repair-replay.ts`:
- Around line 99-106: Replace the local validLoopEventSet implementation with
the exported validEventSet from amadeus-loop-monitor-replay. Update
decodeQualityRepairTransaction to pass its already-parsed value directly to
validEventSet, removing the JSON.stringify and decodeLoopMonitorEventSet round
trip while preserving the existing validation behavior.

---

Outside diff comments:
In `@packages/framework/core/tools/amadeus-quality-repair-runtime.ts`:
- Around line 903-913: Update the projection construction around
QualityRuntimeProjection to set lastProgress from resumePlan?.progress ?? null
instead of always null. Preserve null when no resume plan exists, and use the
non-null QualityDeliveryPlan.progress whenever resumedSnapshot is available so
the existing stale previousSnapshot path returns a valid progress value.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 60172ccf-9c41-4884-8ef7-dae2db904283

📥 Commits

Reviewing files that changed from the base of the PR and between 927822b and 98ace23.

📒 Files selected for processing (14)
  • packages/framework/core/tools/amadeus-loop-monitor-runtime.ts
  • packages/framework/core/tools/amadeus-loop-monitor.ts
  • packages/framework/core/tools/amadeus-quality-repair-replay.ts
  • packages/framework/core/tools/amadeus-quality-repair-runtime.ts
  • packages/framework/core/tools/amadeus-quality-repair.ts
  • tests/.coverage-patch-allowlist.json
  • tests/integration/t429-quality-repair-runtime.integration.test.ts
  • tests/integration/t430-quality-repair-five-harness-projection.integration.test.ts
  • tests/no-silent-drop/baseline.json
  • tests/no-silent-drop/exemptions.json
  • tests/unit/t426-loop-monitor.test.ts
  • tests/unit/t427-loop-monitor-runtime.test.ts
  • tests/unit/t428-quality-repair.test.ts
  • tests/unit/t429-quality-repair-replay-validation.test.ts

Comment thread packages/framework/core/tools/amadeus-quality-repair-replay.ts Outdated
Address CodeRabbit review on #2194: decodeQualityRepairTransaction
already validates a JSON.parse result, so the loop event set check no
longer round-trips through JSON.stringify + decodeLoopMonitorEventSet.
Export validEventSet from the loop replay module and call it directly;
validation semantics are unchanged.
@j5ik2o
j5ik2o marked this pull request as ready for review August 4, 2026 16:19
@j5ik2o
j5ik2o merged commit 04a5b39 into main Aug 4, 2026
14 of 15 checks passed
@j5ik2o
j5ik2o deleted the codex/intent-autonomy-u2-quality-repair branch August 4, 2026 16:20
j5ik2o added a commit that referenced this pull request Aug 4, 2026
Bolt 2 (U2 quality-repair-runtime, issue #2096) was re-delivered on the
delivery plan via PR #2194 and merged to main as 04a5b39. Move the
parked workflow's Session Resume Point from Bolt 2 to Bolt 3 so the next
resume continues the recovery at U3 intent-autonomy-runtime. The
workflow stays parked at build-and-test until that session starts.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

enhancement(plugin): 品質修復 Loop Plugin を同梱し、semi/full の不備を自動修復・再計画する

1 participant