Skip to content

Add Linear and Git automation env placeholders (Step 1) - #2

Draft
manit0700 wants to merge 1 commit into
mainfrom
cursor/linear-env-config-5d8d
Draft

Add Linear and Git automation env placeholders (Step 1)#2
manit0700 wants to merge 1 commit into
mainfrom
cursor/linear-env-config-5d8d

Conversation

@manit0700

Copy link
Copy Markdown
Owner

Summary

Step 1 of the Linear integration plan: add safe placeholder environment variables to backend/.env.example for Linear sync and governed Git automation.

Added variables

Linear Integration

  • LINEAR_API_KEY
  • LINEAR_TEAM_ID
  • LINEAR_PROJECT_ID
  • LINEAR_WORKSPACE_NAME
  • LINEAR_SYNC_ENABLED (default false)
  • LINEAR_POLL_INTERVAL_SECONDS (default 60)

Git Automation Safety

  • AUTO_GIT_PUSH (default false)
  • GIT_DEFAULT_BRANCH (default main)
  • GIT_REMOTE_NAME (default origin)

No runtime config changes — .env remains gitignored. Copy these into your local backend/.env and fill in real values when implementing the full Linear bridge.

Open in Web Open in Cursor 

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.
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).
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.

2 participants