Add comprehensive project documentation: - PROJECT_INDEX.json: Machine-readable project structure - PROJECT_INDEX.md: Human-readable project overview - PR_DOCUMENTATION.md: Pull request preparation documentation - PARALLEL_INDEXING_PLAN.md: Parallel indexing implementation plan Provides structured project knowledge base and contribution guidelines. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
7.8 KiB
PR: PM Mode as Default - Phase 1 Implementation
Status: ✅ Ready for Review Test Coverage: 26 tests, all passing Breaking Changes: None
📋 Summary
This PR implements Phase 1 of the PM-as-Default architecture: PM Mode Initialization and Validation Infrastructure.
What This Enables
- ✅ Automatic Context Contract generation (project-specific rules)
- ✅ Reflexion Memory system (learning from mistakes)
- ✅ 5 Core Validators (security, dependencies, runtime, tests, contracts)
- ✅ Foundation for 4-phase workflow (PLANNING/TASKLIST/DO/ACTION)
🎯 Problem Solved
Before
- PM Mode was optional and rarely used
- No enforcement of project-specific rules (Kong, Infisical, .env禁止)
- Same mistakes repeated (no learning system)
- No pre-execution validation (implementations broke rules)
After
- PM Mode initializes automatically at session start
- Context Contract enforces rules before execution
- Reflexion Memory prevents recurring mistakes
- Validators block problematic code before execution
🏗️ Architecture
1. PM Mode Init Hook
Location: superclaude/core/pm_init/
from superclaude.core.pm_init import initialize_pm_mode
# Runs automatically at session start
init_data = initialize_pm_mode()
# Returns: Context Contract + Reflexion Memory + Project Structure
Features:
- Git repository detection
- Lightweight structure scan (paths only, no content reading)
- Context Contract auto-generation
- Reflexion Memory loading
2. Context Contract
Location: docs/memory/context-contract.yaml (auto-generated)
Purpose: Enforce project-specific rules
version: 1.0.0
principles:
use_infisical_only: true
no_env_files: true
outbound_through: kong
runtime:
node:
manager: pnpm
source: lockfile-defined
validators:
- deps_exist_on_registry
- tests_must_run
- no_env_file_creation
- outbound_through_proxy
Detection Logic:
- Infisical →
no_env_files: true - Kong →
outbound_through: kong - Traefik →
outbound_through: traefik - pnpm-lock.yaml →
manager: pnpm
3. Reflexion Memory
Location: docs/memory/reflexion.jsonl
Purpose: Learn from mistakes, prevent recurrence
{"ts": "2025-10-19T...", "task": "auth", "mistake": "forgot kong routing", "rule": "all services route through kong", "fix": "added kong route", "tests": ["test_kong.py"], "status": "adopted"}
Features:
- Add entries:
memory.add_entry(ReflexionEntry(...)) - Search similar:
memory.search_similar_mistakes("kong routing") - Get rules:
memory.get_rules()
4. Validators
Location: superclaude/validators/
ContextContractValidator
- Enforces project-specific rules
- Checks .env file creation (禁止)
- Detects hardcoded secrets
- Validates Kong/Traefik routing
DependencySanityValidator
- Validates package.json/pyproject.toml
- Checks package name format
- Detects version inconsistencies
RuntimePolicyValidator
- Validates Node.js/Python versions
- Checks engine specifications
- Ensures lockfile consistency
TestRunnerValidator
- Detects test files in changes
- Runs tests automatically
- Fails if tests don't pass
SecurityRoughcheckValidator
- Detects hardcoded secrets (Stripe, Supabase, OpenAI, Infisical)
- Blocks .env file creation
- Warns on unsafe patterns (eval, exec, shell=True)
📊 Test Coverage
Total: 26 tests, all passing
PM Init Tests (11 tests)
- ✅ Git repository detection
- ✅ Structure scanning
- ✅ Context Contract generation (Infisical, Kong, Traefik)
- ✅ Runtime detection (Node, Python, pnpm, uv)
- ✅ Reflexion Memory (load, add, search)
Validator Tests (15 tests)
- ✅ Context Contract validation
- ✅ Dependency sanity checks
- ✅ Runtime policy validation
- ✅ Security roughcheck (secrets, .env, unsafe patterns)
- ✅ Validator chain (all pass, early stop)
# Run tests
uv run pytest tests/core/pm_init/ tests/validators/ -v
# Results
============================== 26 passed in 0.08s ==============================
🚀 Usage
Automatic Initialization
# Session start (automatic)
from superclaude.core.pm_init import initialize_pm_mode
init_data = initialize_pm_mode()
# Returns
{
"status": "initialized",
"git_root": "/path/to/repo",
"structure": {...}, # Docker, Infra, Package managers
"context_contract": {...}, # Project-specific rules
"reflexion_memory": {
"total_entries": 5,
"rules": ["all services route through kong", ...],
"recent_mistakes": [...]
}
}
Manual Validation
from superclaude.validators import (
ContextContractValidator,
SecurityRoughcheckValidator,
ValidationStatus
)
# Create validator
validator = SecurityRoughcheckValidator()
# Validate changes
result = validator.validate({
"changes": {
".env": "SECRET_KEY=abc123"
}
})
# Check result
if result.failed:
print(result.message) # "CRITICAL security issues detected"
print(result.details) # {"critical": ["❌ .env file detected"]}
print(result.suggestions) # ["Remove hardcoded secrets", ...]
Reflexion Memory
from superclaude.core.pm_init import ReflexionMemory, ReflexionEntry
memory = ReflexionMemory(git_root)
# Add entry
entry = ReflexionEntry(
task="auth implementation",
mistake="forgot kong routing",
evidence="direct connection detected",
rule="all services must route through kong",
fix="added kong service in docker-compose.yml",
tests=["test_kong_routing.py"]
)
memory.add_entry(entry)
# Search similar mistakes
similar = memory.search_similar_mistakes("kong routing missing")
# Returns: List[ReflexionEntry] with similar past mistakes
# Get all rules
rules = memory.get_rules()
# Returns: ["all services must route through kong", ...]
📁 Files Added
superclaude/
├── core/pm_init/
│ ├── __init__.py # Exports
│ ├── init_hook.py # Main initialization
│ ├── context_contract.py # Contract generation
│ └── reflexion_memory.py # Memory management
├── validators/
│ ├── __init__.py
│ ├── base.py # Base validator classes
│ ├── context_contract.py
│ ├── dep_sanity.py
│ ├── runtime_policy.py
│ ├── test_runner.py
│ └── security_roughcheck.py
tests/
├── core/pm_init/
│ └── test_init_hook.py # 11 tests
└── validators/
└── test_validators.py # 15 tests
docs/memory/ (auto-generated)
├── context-contract.yaml
└── reflexion.jsonl
🔄 What's Next (Phase 2)
Not included in this PR (will be in Phase 2):
-
PLANNING Phase (
commands/pm/plan.py)- Generate 3-5 plans → Self-critique → Prune bad plans
-
TASKLIST Phase (
commands/pm/tasklist.py)- Break into parallel/sequential tasks
-
DO Phase (
commands/pm/do.py)- Execute with validator gates
-
ACTION Phase (
commands/pm/reflect.py)- Post-implementation reflection and learning
✅ Checklist
- PM Init Hook implemented
- Context Contract auto-generation
- Reflexion Memory system
- 5 Core Validators implemented
- 26 tests written and passing
- Documentation complete
- Code review
- Merge to integration branch
📚 References
-
Reflexion: Language Agents with Verbal Reinforcement Learning (2023)
- Self-reflection for 94% error detection rate
-
Context7 MCP - Pattern for project-specific configuration
-
SuperClaude Framework - Behavioral Rules and Principles
Review Ready: This PR establishes the foundation for PM-as-Default. All tests pass, no breaking changes.