Skip to content

feat: Phase 1-2 v2 stabilization#49

Merged
linhdmn merged 2 commits into
mainfrom
phase-1-v2-stabilize
May 17, 2026
Merged

feat: Phase 1-2 v2 stabilization#49
linhdmn merged 2 commits into
mainfrom
phase-1-v2-stabilize

Conversation

@linhdmn
Copy link
Copy Markdown
Member

@linhdmn linhdmn commented May 17, 2026

Summary

Implements Phase 1 (Stabilize Current v2 Core) and Phase 2 (Team Sync Shared Backend MVP) from the LeanKG roadmap.

Phase 1 Changes

Schema migration hardening (src/db/schema.rs)

  • Replaces stacked :replace chain (migrations 002-005) with safe ensure_canonical_* functions
  • Inspects column count first, only applies :replace on schema mismatch
  • Legacy migrations marked as applied to skip old chain
  • Adds repair_canonical_schema, get_column_count, ensure_incidents_table

Env-aware indexing (src/cli/mod.rs, src/main.rs, src/mcp/tools.rs, src/mcp/handler.rs)

  • --env, --service-name, --version flags on leankg index CLI
  • Same params on mcp_index MCP tool

Service metadata model (src/db/models.rs, src/db/schema.rs, src/db/mod.rs)

  • ServiceMetadata struct: team, on_call, repo_url, language, health_endpoint, slo_p99_ms, tags, version, deploy_envs
  • CozoDB relation with indexes
  • upsert_service_metadata and get_service_metadata CRUD

Service context completeness (src/graph/query.rs, src/mcp/handler.rs)

  • Extended ServiceContext with: team, on_call, repo_url, language, schemas, last_incident, known_risks
  • Schema extraction query and get_service_metadata_fields helper

Incident validation (src/db/mod.rs)

  • validate_incident: checks severity (P0-P3), required fields (title, root_cause, resolution, author), valid timestamps, ticket format

Folder-structure graph (src/indexer/mod.rs)

  • Directory nodes with contains edges (dir->dir, dir->file)
  • Directory metadata: child_count, total_lines, language_distribution

Wake-up context protocol (src/mcp/tools.rs, src/mcp/handler.rs, src/graph/query.rs)

  • wake_up MCP tool returning ~170 token project summary
  • GraphEngine::wake_up_summary generates L0/L1 context
  • Cached in .leankg/wake_up.txt

Phase 2 Changes

v2 REST API (src/api/mod.rs, src/api/handlers.rs)

  • /api/v2/status - project status
  • /api/v2/service/context - service context
  • /api/v2/incidents - incident query
  • /api/v2/env/diff - environment diff
  • /api/v2/health - health check

Team auth middleware (src/api/auth.rs)

  • team_token_middleware with X-LeanKG-Token, X-LeanKG-Engineer, X-LeanKG-Env headers
  • TeamAuthContext struct and get_team_ctx extractor

Push/pull CLI (src/cli/mod.rs, src/main.rs, Cargo.toml)

  • leankg push - push local graph to remote server
  • leankg pull - pull shared graph from remote server
  • Uses reqwest blocking client with json support

CI/CD workflow (.github/workflows/leankg-update.yml)

  • Auto-index on push to main
  • Push to shared server if LEANKG_TOKEN is configured

Verification

  • cargo clippy: 0 warnings, 0 errors
  • cargo test --lib: 352 passed, 0 failed
  • 16 files changed, +948/-84

@linhdmn linhdmn merged commit fb2e7b7 into main May 17, 2026
4 checks passed
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.

1 participant