fix(plan): add tier hydration and improve architecture review output (#10938)
CI / push-validation (push) Successful in 40s
CI / helm (push) Successful in 44s
CI / build (push) Successful in 1m14s
CI / lint (push) Successful in 1m18s
CI / quality (push) Successful in 1m36s
CI / e2e_tests (push) Successful in 1m19s
CI / typecheck (push) Successful in 2m22s
CI / security (push) Successful in 2m23s
CI / benchmark-regression (push) Failing after 41s
CI / integration_tests (push) Successful in 4m46s
CI / unit_tests (push) Failing after 20m13s
CI / benchmark-publish (push) Failing after 28m28s
CI / coverage (push) Has been cancelled
CI / docker (push) Has been cancelled
CI / status-check (push) Has been cancelled

## Summary

This PR fixes issue #10878 where architecture reviews were truncated because the regex pattern for parsing file output would stop at the first ``` encountered in the Markdown report.

## Changes

- Change file delimiters from ``` to >>>>>>>/<<<<<<< to avoid Markdown conflicts
- Add tier hydration before strategize phase in plan_executor.py
- Increase max_tokens to 16384 in llm_actors.py for longer outputs
- Increase context_max_tokens_hot from 16000 to 32000 in settings.py
- Fix get_hot_view → get_hot_fragments in strategy_actor.py and plan_executor.py
- Add opencode to skip directories in context_tier_hydrator.py
- Change sandbox output location to plan-output/ directory in plan.py
- Add get_context_summary stub method to acms_service.py

## Testing

Run architecture review action and verify the output report is complete with all sections.

Reviewed-on: #10938
This commit was merged in pull request #10938.
This commit is contained in:
2026-05-19 12:43:34 +00:00
committed by Forgejo
parent 0c5724c2f6
commit eb46f0ff54
68 changed files with 2663 additions and 261 deletions
+1 -1
View File
@@ -89,7 +89,7 @@ def _make_service(plan: MagicMock, changeset: SpecChangeSet) -> PlanApplyService
lifecycle = MagicMock()
lifecycle.get_plan.return_value = plan
lifecycle.complete_apply.return_value = plan
lifecycle._commit_plan = MagicMock()
lifecycle.commit_plan = MagicMock()
store = MagicMock()
store.get.return_value = changeset
return PlanApplyService(lifecycle_service=lifecycle, changeset_store=store)
+1 -1
View File
@@ -62,7 +62,7 @@ def _make_plan() -> MagicMock:
def _make_service(plan: MagicMock) -> ErrorRecoveryService:
lifecycle = MagicMock()
lifecycle.get_plan.return_value = plan
lifecycle._commit_plan = MagicMock()
lifecycle.commit_plan = MagicMock()
return ErrorRecoveryService(
lifecycle_service=lifecycle,
auto_retry_threshold=0.0,
+1 -1
View File
@@ -98,7 +98,7 @@ def _create_plan_and_service() -> tuple[str, PlanApplyService, InMemoryChangeSet
plan = lifecycle.get_plan(plan_id)
plan.changeset_id = cs.changeset_id
plan.sandbox_refs = ["sandbox-bench-001"]
lifecycle._commit_plan(plan)
lifecycle.commit_plan(plan)
return plan_id, apply_svc, store
+2 -2
View File
@@ -66,7 +66,7 @@ def _make_errored_plan(lifecycle: PlanLifecycleService, action_name: str) -> str
lifecycle.start_strategize(pid)
p = lifecycle.get_plan(pid)
p.decision_root_id = str(ULID())
lifecycle._commit_plan(p)
lifecycle.commit_plan(p)
lifecycle.complete_strategize(pid)
lifecycle.execute_plan(pid)
lifecycle.start_execute(pid)
@@ -104,7 +104,7 @@ class TimeCheckpointRecording:
self.lifecycle.start_strategize(pid)
p = self.lifecycle.get_plan(pid)
p.decision_root_id = str(ULID())
self.lifecycle._commit_plan(p)
self.lifecycle.commit_plan(p)
self.lifecycle.complete_strategize(pid)
self.lifecycle.execute_plan(pid)
self.lifecycle.start_execute(pid)