Metadata-Version: 2.4
Name: eforge
Version: 1.0.0
Summary: Renderer-agnostic project runtime and manifest interpreter for the Forge ecosystem
Author-email: Forge Team <forge@example.com>
Maintainer-email: Forge Team <forge@example.com>
License: MIT
Project-URL: Homepage, https://github.com/forge-org/forge
Project-URL: Documentation, https://github.com/forge-org/forge#readme
Project-URL: Repository, https://github.com/forge-org/forge.git
Project-URL: Bug Tracker, https://github.com/forge-org/forge/issues
Project-URL: Changelog, https://github.com/forge-org/forge/blob/main/CHANGELOG.md
Keywords: project-management,manifest,mcp,development-tools,cli
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: Utilities
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: textual>=0.50.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: httpx>=0.27.0
Requires-Dist: rich>=13.0
Requires-Dist: click>=8.1
Requires-Dist: ruamel.yaml>=0.18.0
Requires-Dist: mcp>=1.0.0
Requires-Dist: numpy>=1.26.0
Requires-Dist: fastmcp>=2.0
Requires-Dist: fastapi>=0.110.0
Requires-Dist: starlette<0.49.0,>=0.40.0
Requires-Dist: uvicorn[standard]>=0.29.0
Requires-Dist: websockets>=12.0
Provides-Extra: board
Requires-Dist: fastapi>=0.110.0; extra == "board"
Requires-Dist: starlette<0.49.0,>=0.40.0; extra == "board"
Requires-Dist: uvicorn[standard]>=0.29.0; extra == "board"
Provides-Extra: dev
Requires-Dist: pytest>=8.0.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: isort>=5.12.0; extra == "dev"
Requires-Dist: flake8>=6.0.0; extra == "dev"
Requires-Dist: mypy>=1.8.0; extra == "dev"
Requires-Dist: pre-commit>=3.5.0; extra == "dev"
Requires-Dist: build>=0.10.0; extra == "dev"
Requires-Dist: twine>=4.0.0; extra == "dev"
Provides-Extra: test
Requires-Dist: pytest>=8.0.0; extra == "test"
Requires-Dist: pytest-cov>=4.0.0; extra == "test"
Requires-Dist: pytest-asyncio>=0.23.0; extra == "test"
Requires-Dist: pytest-mock>=3.12.0; extra == "test"

![forge health](./forge-health.svg)

Your AI agent doesn't know what you meant to build.
Forge compiles your architectural intent into a verified,
queryable graph — so your agents work with structure,
not guesswork.

## The Solution

```bash
forge start --project-path ~/Projects/my-app
```

## The Demo

Forge managing itself (forge):

```json
{
  "graph_health": 100,
  "sync_health": 100,
  "infra_health": 100,
  "adi_score": 0,
  "brc_score": 100,
  "idr_score": 100,
  "overall": 100,
  "healthy": true
}
```

## Quickstart

```bash
git clone https://github.com/[your-username]/forge
cd forge && pip install -e .
forge start --project-path ~/Projects/my-app
```

## How It Works

Three primitives: node, edge, event.

## The Protocol Layer

- GloveProtocol — source analysis for any stack
- CheckerProtocol — infrastructure health checking  
- RendererProtocol — graph output formatting
- SubscriberProtocol — event bus subscription

## The Metrics

- ADI — Architectural Debt Index from ghost nodes, dark matter, stale annotations
- BRC — Blast Radius Coverage percentage of nodes with edge connectivity
- IDR — Intent Decay Rate of nodes lacking recent annotations
- POS — Predictive Obsolescence Score from implementation status and age
- HealthVector — unified six-dimensional health vector

## Status

Current epoch: 6 (External Surface)
Test count: 1005+
Roadmap: https://github.com/[your-username]/forge/issues

Planning and handoff notes live in **`_context/`**. Root `docs/` may lag; treat **`_context`** as the primary narrative for this repo.
