feat: add gitea agentic runtime control plane
This commit is contained in:
101
.ralph/ralph-history.md
Normal file
101
.ralph/ralph-history.md
Normal file
@@ -0,0 +1,101 @@
|
||||
# Ralph History
|
||||
|
||||
## Iteration 0
|
||||
|
||||
- Initialized worktree `feature/gitea-runtime-control-plane`
|
||||
- Wrote approved design spec and implementation plan
|
||||
- Created Ralph loop contract and task list
|
||||
- Verification: not started yet
|
||||
|
||||
## Iteration 1
|
||||
|
||||
- Goal: complete Task 1 package scaffold, spec loader, and sample workflow
|
||||
- Changed files:
|
||||
- `pyproject.toml`
|
||||
- `engine/devops_agent/__init__.py`
|
||||
- `engine/devops_agent/cli.py`
|
||||
- `engine/devops_agent/spec.py`
|
||||
- `workflows/gitea-issue-delivery.md`
|
||||
- `tests/unit/test_smoke_imports.py`
|
||||
- `tests/unit/test_spec_loader.py`
|
||||
- `tests/fixtures/specs/valid_workflow.md`
|
||||
- `tests/fixtures/specs/invalid_missing_provider.md`
|
||||
- `.gitignore`
|
||||
- Verification:
|
||||
- `python -m pytest tests/unit/test_smoke_imports.py tests/unit/test_spec_loader.py -q`
|
||||
- Result: `4 passed`
|
||||
- Blockers:
|
||||
- Pytest tmp and cache facilities are unreliable in this Windows sandbox path, so tests must avoid `tmp_path` and rely on stable fixture files or repo-local paths.
|
||||
|
||||
## Iteration 2
|
||||
|
||||
- Goal: complete Task 2 compiler, validator, and policy enforcement
|
||||
- Changed files:
|
||||
- `engine/devops_agent/compiler.py`
|
||||
- `engine/devops_agent/validator.py`
|
||||
- `engine/devops_agent/policies.py`
|
||||
- `engine/devops_agent/spec.py`
|
||||
- `tests/unit/test_compiler.py`
|
||||
- `tests/unit/test_validator.py`
|
||||
- `tests/unit/test_policies.py`
|
||||
- `tests/fixtures/specs/no_safe_outputs_for_write.md`
|
||||
- `tests/fixtures/specs/invalid_path_scope.md`
|
||||
- Verification:
|
||||
- `python -m pytest tests/unit/test_smoke_imports.py tests/unit/test_spec_loader.py tests/unit/test_compiler.py tests/unit/test_validator.py tests/unit/test_policies.py -q`
|
||||
- Result: `11 passed`
|
||||
- Blockers:
|
||||
- PyYAML treats `on` as a boolean in default parsing, so the spec loader now normalizes that key explicitly.
|
||||
|
||||
## Iteration 3
|
||||
|
||||
- Goal: complete Task 3 provider layer, Gitea provider, runtime, and evidence persistence
|
||||
- Changed files:
|
||||
- `engine/devops_agent/evidence.py`
|
||||
- `engine/devops_agent/runtime.py`
|
||||
- `engine/devops_agent/providers/__init__.py`
|
||||
- `engine/devops_agent/providers/base.py`
|
||||
- `engine/devops_agent/providers/gitea.py`
|
||||
- `tests/unit/test_gitea_provider.py`
|
||||
- `tests/integration/test_runtime_flow.py`
|
||||
- `tests/fixtures/gitea/issue.json`
|
||||
- `tests/fixtures/gitea/comment_event.json`
|
||||
- Verification:
|
||||
- `python -m pytest tests/unit tests/integration -q`
|
||||
- Result: `15 passed`
|
||||
- Blockers:
|
||||
- None in code shape. Real Gitea acceptance still depends on environment credentials.
|
||||
|
||||
## Iteration 4
|
||||
|
||||
- Goal: complete Task 4 CLI, acceptance tests, and documentation updates
|
||||
- Changed files:
|
||||
- `engine/devops_agent/cli.py`
|
||||
- `tests/unit/test_cli.py`
|
||||
- `tests/acceptance/test_gitea_acceptance.py`
|
||||
- `README.md`
|
||||
- `skills/gitea-issue-devops-agent/SKILL.md`
|
||||
- `workflows/gitea-issue-delivery.lock.json`
|
||||
- Verification:
|
||||
- `python -m pytest tests/unit tests/integration tests/acceptance -q`
|
||||
- `python -m engine.devops_agent.cli compile workflows/gitea-issue-delivery.md --output workflows/gitea-issue-delivery.lock.json`
|
||||
- `python -m engine.devops_agent.cli validate workflows/gitea-issue-delivery.md`
|
||||
- Result: `18 passed, 1 skipped`
|
||||
- Blockers:
|
||||
- Real Gitea acceptance is blocked until `GITEA_BASE_URL`, `GITEA_REPO`, `GITEA_TOKEN`, and `GITEA_ISSUE_NUMBER` are provided.
|
||||
|
||||
## Iteration 5
|
||||
|
||||
- Goal: complete Task 5 full verification and real Gitea acceptance handoff
|
||||
- Verification:
|
||||
- `python -m pytest tests/unit tests/integration tests/acceptance -q`
|
||||
- `python -m engine.devops_agent.cli compile workflows/gitea-issue-delivery.md --output workflows/gitea-issue-delivery.lock.json`
|
||||
- `python -m engine.devops_agent.cli validate workflows/gitea-issue-delivery.md`
|
||||
- `git diff --check`
|
||||
- Result: `19 passed`
|
||||
- Real acceptance evidence:
|
||||
- repo: `FunMD/document-collab`
|
||||
- issue: `#48`
|
||||
- comment id: `246`
|
||||
- comment url: `http://154.39.79.147:3000/FunMD/document-collab/issues/48#issuecomment-246`
|
||||
- Blockers:
|
||||
- None for the Gitea single-platform acceptance target.
|
||||
Reference in New Issue
Block a user