Add Linear and Git automation env placeholders (Step 1) - #2
Draft
manit0700 wants to merge 1 commit into
Draft
Conversation
Co-authored-by: Manit Dankhara <manit0700@users.noreply.github.com>
manit0700
added a commit
that referenced
this pull request
Jul 5, 2026
#2 Git Intelligence real reads (read-only)
Sidhantaa
pushed a commit
to Sidhantaa/evolveagent-ai
that referenced
this pull request
Jul 5, 2026
…t-stat)
Backend (GitReaderService):
- Real commit log, branch list, and per-commit diff-stat on an opt-in local path
- The ONLY place we shell out, tightly boxed: read-only subcommands from a fixed
allow-list, always argv-list (never a shell string), path gated by rev-parse
--is-inside-work-tree, refs validated to HEAD/hex-sha, output+timeout caps
- Cannot mutate the repo; governance-logged. /api/git-intel/{read-status,log,
branches,commit-stat}; analytics merged; 8 tests (incl. injection/non-repo)
Frontend: Git Intelligence panel gains Log/Branches buttons + commit & branch
cards. +1 smoke check.
This was referenced Jul 11, 2026
Merged
Sidhantaa
pushed a commit
to Sidhantaa/evolveagent-ai
that referenced
this pull request
Jul 14, 2026
…t comparison, real execution checks Closes the "verification layer" gap identified against docs/roadmap/EvolveAgent-v200-Strategy.md -- the 3rd and final of 3 gaps from that analysis (gap manit0700#1 model router and gap manit0700#2 agent workforce shipped in PRs manit0700#213/manit0700#214). Audited first (via a research subagent) and found three genuinely real, already-built pieces of infrastructure, each disconnected from anything that used them as a verification gate: 1. TestQualityService already ran real pytest/npm-build via SafeCommandRunner and computed a real pass/blocked quality-gate verdict -- only reachable via its own standalone API route, never called by any workflow. 2. llm_router.consensus_routes() + master_agent's deep_mode already made real parallel calls to multiple distinct providers, but summarize_consensus() picked a "winner" using zero content comparison -- just first-successful-non-fallback -- and the disagreement notes were static boilerplate. 3. agent_network_service.verify_handoff() only ran keyword-overlap heuristics even for handoffs that had already dispatched to a real CustomAgentService.run() call (PR manit0700#214) with a genuine AgentOutput.success signal sitting unused. Wired all three: - DurableWorkflowService gained a new run_quality_checks whitelisted action (approval-gated like every other real effect) that calls TestQualityService for real and, on a genuine gate failure, fails the run for real -- the first time this engine's long-declared but unreachable "failed" terminal status is ever actually set. Also wired _EMITTABLE_STATUSES and AgentSchedulerService.fail() (which existed but was never called) so a failed run is observable the same way completed/cancelled runs already are. Missing collaborator degrades to a safe decline, same as every other whitelisted action -- only a real gate failure fails the run. - master_agent.summarize_consensus() now computes real pairwise Jaccard token-overlap agreement between candidate outputs to pick the most representative winner and produce genuine disagreement notes, instead of ignoring candidate content entirely. - agent_network_service.verify_handoff() now includes a real execution-outcome check when a handoff actually executed, alongside the existing heuristic checks. All changes fully backward compatible: missing collaborators and non-executed paths degrade to prior behavior unchanged.
Sidhantaa
pushed a commit
to Sidhantaa/evolveagent-ai
that referenced
this pull request
Jul 14, 2026
Implements Current Execution Priority manit0700#2 from docs/roadmap/EvolveAgent-v200-Strategy.md ("Add a feature/control center so users can see what is real, mock, blocked, or needs config") and the "Capability Directory" the Route/Page Coverage Audit flagged as a missing core product piece. Audited first: found ~20 services already expose a real status()-style method reporting their own configured/enabled/mode signals (DesignAgentService, MultimodalAgentService, CodeWriterService, GitHubConnectorService, LLMRouter, MemoryService, ImageService, TranscriptionService, GitReaderService, GitDiscoveryService, RepoFinderService, AdaptiveLearningService, VoiceConsoleService, SlackNotificationService, NotionExportService, LinearPollWorker, MCPReadOnlyAdapter, MCPGitHubAdapter, SchedulerTickWorker, ChiefOfStaffService) -- each independently real, none of them aggregated anywhere into one inventory. CapabilityDirectoryService normalizes all 21 of these into one honest 5-state vocabulary (real / local / mock / needs_config / blocked), computed entirely from each service's own already-real status field -- never a hardcoded verdict. "local" is a genuine 5th state (distinct from "mock"): real functionality that simply never calls an external service (a local git command, keyword search) versus something deliberately simulated. Also computes a real "last verified" timestamp per capability from the most recent governance-log event recorded by that service's own tool_used tag. New GET /api/capability-directory (with category/status filters) and GET /api/capability-directory/summary, merged into /api/analytics. A broken underlying status() call degrades to "unknown" rather than crashing the whole directory. 20 new unit/integration tests (pure classification helpers with an isolated fake registry, plus the real ~20-capability registry through the full app). 155-test targeted regression clean, full suite 1218 passed (only the 6 known baseline flakes), smoke 65/66 (known unrelated /api/analytics flake).
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
Step 1 of the Linear integration plan: add safe placeholder environment variables to
backend/.env.examplefor Linear sync and governed Git automation.Added variables
Linear Integration
LINEAR_API_KEYLINEAR_TEAM_IDLINEAR_PROJECT_IDLINEAR_WORKSPACE_NAMELINEAR_SYNC_ENABLED(defaultfalse)LINEAR_POLL_INTERVAL_SECONDS(default60)Git Automation Safety
AUTO_GIT_PUSH(defaultfalse)GIT_DEFAULT_BRANCH(defaultmain)GIT_REMOTE_NAME(defaultorigin)No runtime config changes —
.envremains gitignored. Copy these into your localbackend/.envand fill in real values when implementing the full Linear bridge.