Fix #673: Fix Phase 1 integration test for listen mode with --server flag#855
Open
AlexMikhalev wants to merge 2266 commits intomainfrom
Open
Fix #673: Fix Phase 1 integration test for listen mode with --server flag#855AlexMikhalev wants to merge 2266 commits intomainfrom
AlexMikhalev wants to merge 2266 commits intomainfrom
Conversation
… + AutoMerge enqueue' (#717) from task/roc-v1-step-f-verdict-polling into main
…Refs adf-fleet#35
…impl — Refs adf-fleet#35
…ostMergeTestGate enqueue + [ADF] issue on failure) — Refs adf-fleet#35
…andle_auto_merge — Refs adf-fleet#35
…ath — Refs adf-fleet#35 Add 5 integration tests driving handle_auto_merge_for_project with an in-memory RecordingExecutor (no mock frameworks, async-trait impl): * auto_merge_success_enqueues_post_merge_gate * auto_merge_skipped_when_head_sha_changed * auto_merge_failure_opens_adf_issue * auto_merge_marks_dedupe_set_on_success * auto_merge_skipped_when_pr_already_closed Expose pub auto_merge_enqueued() accessor on AgentOrchestrator so tests can verify the (project, pr_number, head_sha) dedupe set is populated after a successful merge.
… from task/roc-v1-step-g-auto-merge-handler into main
…ait + config — Refs adf-fleet#36 Adds crates/terraphim_orchestrator/src/post_merge_gate.rs with: - CommandRunner async trait + TokioCommandRunner real impl (streams stdout/stderr tails via bounded ring buffer so long test runs do not OOM; kills child on wall-time timeout). - run_workspace_tests / classify_failure / revert_merge helpers. - ScriptedRunner test double (no mock library — trait impl only). - 9 inline unit tests covering runner behaviour, failure parsing, and revert paths (green, timeout, io-error, test-failure parse, harness detection, timeout classification, revert no-push, revert with push, revert all-paths-failed). Adds PostMergeGateConfig to OrchestratorConfig (optional; defaults to 10 minute budget, push revert to origin main). Back-fills the new field on every existing OrchestratorConfig initializer across lib.rs test fixtures and integration tests.
…k - Refs adf-fleet#36 Replaces the Step B log-only stub for DispatchTask::PostMergeTestGate with a real handler that: - Resolves project working_dir as repo_root - Runs post_merge_gate::run_workspace_tests with GateConfig built from orchestrator.toml [post_merge_gate] overrides (default 10 min budget) - On green: logs post_merge_gate_verified at info - On red: classifies failure, calls post_merge_gate::revert_merge to create revert commit + push to remote, opens [ADF] post-merge test gate reverted issue on the project's Gitea repo with merge_sha, revert_sha, top failing tests, stderr tail, wall_time - Logs post_merge_gate_reverted at warn handle_post_merge_test_gate_with_runner<R: CommandRunner + ?Sized> is parametrised so integration tests can inject ScriptedRunner without spawning cargo. Adds truncate_for_issue helper for char-boundary-safe trimming of stderr tails when opening the [ADF] issue (avoids corrupting UTF-8 mid-sequence). All orchestrator tests pass; clippy clean; fmt clean.
…/merge — Refs adf-fleet#37 Add OrchestratorEvent enum (PrReviewed, PrAutoMerged, PrAutoMergedVerified, PrAutoReverted) to quickwit.rs with emit_event helper on QuickwitFleetSink. All emits are gated behind the quickwit feature and tolerate Quickwit down (warn log, business logic unblocked). Wire emit sites: - PrReviewed in poll_pending_reviews_for_project after verdict parse - PrAutoMerged in handle_auto_merge_for_project after merge_pr succeeds - PrAutoMergedVerified in handle_post_merge_test_gate_with_runner on green - PrAutoReverted in handle_post_merge_test_gate_with_runner on revert Replace the two quickwit_event_placeholder log lines from Step H with the typed emits above. Add tests/quickwit_events_tests.rs: 4 field-mapping tests + 1 tolerance test (all gated behind quickwit feature). 501 tests pass; clippy clean; fmt clean. Co-Authored-By: Terraphim AI <noreply@terraphim.cloud>
…e flow (ROC v1 Step I)' (#726) from task/roc-v1-step-i-quickwit-events into main
…reviewers event-driven) — Refs adf-fleet#39 No template change needed: implementation-swarm is not yet in scripts/adf-setup/agents/. Developer cron bump to */20 applies to live conf.d/*.toml during Step L rollout.
…ump (ROC v1 Step K)' (#727) from task/roc-v1-step-k-cron-extension into main
…lo -> terraphim -- Refs adf-fleet#40 Co-Authored-By: Terraphim AI <noreply@terraphim.cloud>
…728) from task/roc-v1-step-l-rollout-runbook into main
Updates the adf.rs provider registration from Kimi K2.5 to K2.6 so the ProviderHealthMap probe + KeywordRouter fallback target the current model. KG routing tables (planning_tier.md) and conf.d/digital-twins.toml already reference kimi-for-coding/k2p6; this aligns register_providers. Tests unchanged (test fixtures use synthetic k2p5 strings that remain valid — provider_key_for_model is generic and C1 allow-list checks the kimi-for-coding prefix, not the specific model string).
…tion to k2p6' (#734) from task/kimi-k2p6-provider into main
…rand - Patch rustls-webpki from 0.103.10 to 0.103.12 (fixes name constraints bypass) - Add RUSTSEC-2026-0098/0099 to deny.toml (serenity/discord-feature-only) - Replace rand with WASM-compatible fastrand in terraphim_multi_agent and terraphim_kg_agents - Remove two direct rand dependencies from workspace crates Refs #630
…on (#818) * feat(cli): add evaluate subcommand for automata ground-truth evaluation Wire the existing evaluate() function to a CLI subcommand in terraphim_cli. Changes: - Add Evaluate command with --ground-truth and --thesaurus flags - Add handle_evaluate() function using terraphim_automata::evaluate() - Add 4 integration tests for evaluate command - Wire Evaluate match arm in command dispatcher The core evaluation logic was already implemented in terraphim_automata::evaluation (~613 lines, 13 unit tests). This adds CLI integration for automation use. Example usage: terraphim-cli evaluate --ground-truth gt.json --thesaurus th.json Part of: Gitea #576 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(clippy): replace sort_by with sort_by_key for Rust 1.95 compatibility Rust 1.95 promotes clippy::unnecessary_sort_by to hard error under -D warnings. Convert all sort_by calls to sort_by_key across 3 crates: - terraphim-markdown-parser: 1 change (descending sort with Reverse) - terraphim_router: 1 change (descending sort with Reverse) - terraphim-session-analyzer: 13 changes (ascending + descending) Line 548 in reporter.rs retains sort_by with #[allow] due to fallible string parsing in the key function. Refs #576 * fix(clippy): fix remaining sort_by in session-analyzer main.rs and submodules Missed in previous commit: session-analyzer has duplicated logic in main.rs (binary target) and submodules (kg/search, patterns/loader) that also use sort_by. Convert to sort_by_key where possible, add #[allow] for float comparisons using partial_cmp. Refs #576 * fix(clippy): workspace-wide sort_by -> sort_by_key for Rust 1.95 compatibility Convert all remaining sort_by calls across 40 files to either sort_by_key or #[allow(clippy::unnecessary_sort_by)] for cases with non-Copy types, multi-line closures, or partial_cmp on floats. Covers: terraphim_agent, terraphim_automata, terraphim_orchestrator, terraphim_service, terraphim_persistence, terraphim_update, terraphim_usage, terraphim_sessions, terraphim_cli, terraphim_mcp_server, terraphim_types, terraphim_symphony, terraphim_tinyclaw, terraphim_multi_agent, terraphim_agent_evolution, terraphim_agent_registry, terraphim_goal_alignment Refs #576 * fix(clippy): fix Rust 1.95 lints in task_decomposition and rolegraph examples - Remove unnecessary .into_iter() in extend() call (useless_conversion lint) - Collapse if guards into match arms (collapsible_match lint) - Allow explicit_counter_loop in rolegraph examples Refs #576 * fix(clippy): allow collapsible_match lint in middleware and agent_evolution Rust 1.95 clippy promotes collapsible_match to hard error under -D warnings. Add #![allow] at file level for ripgrep.rs, orchestrator_workers.rs, and parallelization.rs where collapsing the match arms would reduce readability. Refs #576 * fix(clippy): allow collapsible_match in goal_alignment/goals.rs Refs #576 * fix(ci): pin Rust toolchain to 1.94.0 to match local dev dtolnay/rust-toolchain@stable installs latest (1.95.0) which has new clippy lints (collapsible_match, unnecessary_sort_by, useless_conversion) not present in 1.94. Pin all ci-pr.yml jobs to 1.94.0 and update rust-toolchain.toml accordingly. Refs #576 --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Cherry-pick from local main (0115f06f). Refs #612 Co-authored-by: Test User <test@test.com>
Pre-build at script line 98 ran cargo build --workspace --all-targets without --features zlob. fff-search build.rs panics under CI when zlob isn't enabled (intentional gate). Clippy step at line 112 already had the flag; pre-build needed it too. Unblocks lint-and-format CI for PR #818 and any future PR. Refs #818 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
openai/* via the OpenAI Plus/Pro/Team plan is subscription-gated, not pay-per-use. PR #631 (the P0 C1 fix) removed openai from the allow-list under the mistaken belief that all openai/* was pay-per-use; this commit restores it. Session-token exhaustion (the temporary state that motivated #631 in the first place) is already handled correctly by the orchestrator's existing primitives: - ProviderHealthMap probes every probe_ttl_secs (1800s / 30 min) and marks exhausted providers unhealthy. Routing falls through to the next KG route (anthropic/opus -> kimi-for-coding/k2p6 -> openai/gpt-5.4 -> zai-coding-plan/glm-5). - CircuitBreaker opens on 5 consecutive failures, half-opens after cooldown, closes on successful probe. - ProviderBudgetTracker hour+day tumbling UTC windows; force_exhaust() on throttle classification pushes past cap so routing drops until the next window rolls. - error_signatures.rs classifies stderr as Throttle / Flake / Unknown per provider with configurable regex. Changes: - config.rs: add "openai" to ALLOWED_PROVIDER_PREFIXES. - config.rs tests: include openai/gpt-5.4 and openai/gpt-5.3-codex in test_is_allowed_provider_c1_allowed_prefixes. - provider_gate_tests.rs: rename probe_gate_rejects_openai_provider -> probe_gate_allows_openai_subscription_provider; invert assertion and document the session-token-tracking rationale. - docs/taxonomy/routing_scenarios/adf/planning_tier.md: retain anthropic/opus as primary route, add kimi-for-coding/k2p6 and openai/gpt-5.4 as alternate routes; remove the previously-present legacy openai/gpt-5.4 entry that had been stripped as a C1 violation. Tests: all 497 unit tests + 16 integration tests pass. Clippy + fmt clean.
…st + KG routing' (#737) from task/kg-planning-tier-k2p6 into main
Replace the in-memory DeviceStorage backend with MarkdownLearningStore for durable persistence of shared learnings across process restarts. Changes: - Expand markdown frontmatter to serialize full SharedLearning state - Add backwards-compatible parsing for old sparse frontmatter files - Replace DeviceStorage with MarkdownLearningStore in SharedLearningStore - Implement real load_all() that hydrates index from persisted markdown - Add startup deduplication by learning.id (canonical over shared copies) - Update StoreConfig to include MarkdownStoreConfig - Align default paths with ProjectDirs recommendation - Add integration tests for restart durability and deduplication - Fix unreachable match arm for SharedLearningSub::Inject Refs #6
Handle missing learnings root as an empty store on first run and make startup deduplication deterministic by preferring canonical agent copies over shared replicas when IDs collide. Refs #6
…eports' (#1027) from sync/vv-reports into main
…efs #955 Rebased onto main after Phase 2e merge.
…R open with path filter' (#958) from task/955-adf-phase-2d-compliance-watchdog into main
…eFragment' (#999) from worktree-agent-ad4db636 into main
Adds the agent template that the Phase 2 fan-out loop spawns when `pr-security-sentinel` appears in `[pr_dispatch.agents_on_pr_open]`. Mirrors the pr-spec-validator skeleton: - sonnet (subscription-only) — security-audit needs deeper reasoning than a structural diff scan to spot data-flow vulnerabilities and unsafe-code subtleties; haiku is the wrong tier - skill_chain = ["security-audit"] - 2-hour idempotency check via the existing comment-marker pattern (uses agent-scoped marker "Last security-audited commit: <sha>") - best-effort POST_STATUS helper mirroring build-runner.toml Path filter (early-exit happy path) — implemented in this script, NOT in the orchestrator: - skips the LLM call when no `Cargo.toml`, `Cargo.lock`, `crates/**/src/**`, or `**/secrets/**` paths changed - posts `success` (not no-post) with description "n/a — no security-relevant changes" because `adf/security` becomes a required check on `main` post-deploy; a never-resolved `pending` would block docs-only PRs forever Verdict parsing prefers an explicit `Verdict:` line; falls back to a `Risk:` line (critical/high → fail, medium → concerns, low → pass); finally falls back to `state=success` "audit posted; manual gate" when neither parses — so the commit status is never left in `pending` even on transient agent failures. The cron-scheduled `security-sentinel` agent stays in tree for full-repo audits; this PR-event variant is additive and diff-scoped. Operator follow-up after merge: 1. Rebuild + restart the orchestrator on bigbox so the new dispatch arm goes live. 2. PATCH branch_protections/main to add `adf/security` to required contexts. Refs #953
…2c) Refs #953 Rebased onto main after Phase 2b/d/e merges.
…open with path filter' (#1028) from task/953-adf-phase-2c-security-sentinel into main
…eMeta Refs #1026' (#1029) from sync/1026-query-role-meta into main
…eports for #1026' (#1030) from sync/vv2-1026 into main
…ams SDK tests Refs #1034
… #1012 - Intercept args before clap parsing to apply typo correction, alias expansion, and case-insensitive matching - Add build_cli_forgiving_parser() with actual CLI subcommands - Add apply_forgiving_parsing() heuristic for subcommand detection - Print correction notifications to stderr - Add 3 integration tests: auto-correction, alias expansion, case-insensitive matching
…PI Refs #1011 - Add Robot variant to Command enum with subcommands: capabilities, schemas, examples - Add RobotFormat enum (json, table, minimal) for --format flag - Add handle_robot_command() and format_robot_output() helpers - Wire Robot command in main() before catch-all server/offline dispatch - Add unreachable! arms in run_offline_command and run_server_command to satisfy exhaustive match (Robot is handled in main) - Add 4 integration tests: capabilities JSON, schemas JSON, examples text, all formats honoured - Fix pre-existing compilation errors in terraphim_orchestrator (config clone + concurrency_permit field)
- Add [Unreleased] section with commits since 1.17.0 - Generate doc gap report: 771 undocumented items across 46 crates - Generate API reference snippets from documented public APIs Refs #1046
- Change ContentBlock::ToolResult from is_error: bool to exit_code: i32 with backward-compatible deserialization for old JSON containing is_error - Add --include-pinned flag to search subcommand in terraphim_agent - Add --pinned flag to graph subcommand as kg list --pinned equivalent - Fix learn query to call query_all_entries when semantic=false, matching spec - Add pinned_node_ids to RoleGraphResponseDto for server/agent parity - Add get_role_graph_pinned to TuiService for offline pinned retrieval
- Add spec gaps fix entry to CHANGELOG (Refs #1040) - Generate documentation gap report for workspace crates - Generate API reference snippets for key public items - Update existing Gitea issue #1046 with recurrence findings Part of: #1046
…Refs #451 - Add hook_manager field to TerraphimAgent with HookManager initialized in ::new() - Add execute_llm_with_hooks() helper that wraps LLM calls with run_pre_llm/run_post_llm - Wire hooks into 5 agent command handlers: generate, answer, analyze, create, review - Wire hooks into specialized agents: ChatAgent and SummarizationAgent - Add unit tests verifying hook invocation (pre_llm, post_llm, block, modify decisions) - All existing tests pass, clippy clean, fmt clean Implements requirement from spec-validator remediation #442 to wire LLM hooks that were previously defined but not connected.
- Update [Unreleased] with 20 entries from 2026-04-27 to 2026-04-28 - Scan 58 crates: ~2,647 pub items missing documentation - Generate gap report at .docs/reports/documentation-gap-report-20260428.md - Recurrence comment on Gitea issue #1046 Refs #1046
Clippy fixes (blocking ADF build-runner on all PRs): - Remove needless borrows in exit_codes_integration_test.rs - Replace useless format! with .to_string() in offline_mode_tests.rs - Remove unused LearningStore import in learning.rs Test helper fixes (pre-existing failures): - Update review_pr_config_with_spec_fanout to push pr-spec-validator into pr_dispatch_per_project['alpha'] (per-project config takes precedence over top-level pr_dispatch) - Same fix for review_pr_config_with_security_checklist_fanout and review_pr_config_with_test_fanout Refs #238
…d handlers' (#1056) from task/451-llm-hooks-wiring into main
… test helpers' (#1058) from task/fix-clippy-and-test-helpers into main
- Updated CHANGELOG.md with commits since v1.17.0 - Generated documentation gap report for 2026-04-29 - Generated API reference snippets for key crates - 923 missing docs identified across 11 crates - 53 rustdoc warnings catalogued Refs #1046
- Add missing entries to CHANGELOG for #673, #1054, #953, #954, #1026 - Generate comprehensive documentation gap report (2026-04-29) - Generate API reference snippets for core crates Refs #1046
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary\n\nFixes failing integration test
listen_mode_with_server_flag_exits_error_usagefor Task 1.6 (Phase 1 tests).\n\n## Changes\n\n1. Made--serverand--server_urlflags global in main.rs\n2. Fixed integration test to pass required--identityargument\n\nRefs #673