init
This commit is contained in:
commit
b15b95781c
108 changed files with 14802 additions and 0 deletions
543
docs/agents/WORKFLOW.md
Normal file
543
docs/agents/WORKFLOW.md
Normal file
|
|
@ -0,0 +1,543 @@
|
|||
# AI Agent Workflow Runbook
|
||||
|
||||
## 1. Purpose
|
||||
|
||||
This document defines how to implement the update server with sequential AI agents.
|
||||
|
||||
The workflow is designed for:
|
||||
|
||||
- one human operator who launches agents one by one;
|
||||
- one implementation agent per stage;
|
||||
- one validation agent after each stage;
|
||||
- file-based handoff instead of direct agent-to-agent chat.
|
||||
|
||||
## 2. Source Of Truth
|
||||
|
||||
Every implementation agent must read these files before starting:
|
||||
|
||||
- `/Users/delete/projects/update_server/PRODUCT_SPEC.md`
|
||||
- `/Users/delete/projects/update_server/IMPLEMENTATION_PLAN.md`
|
||||
- `/Users/delete/projects/update_server/DEVELOPMENT_WORKFLOW.md`
|
||||
- `/Users/delete/projects/update_server/docs/agents/WORKFLOW.md`
|
||||
|
||||
Every agent must also read the latest handoff and validation files if they exist.
|
||||
|
||||
## 3. Fixed Technical Decisions
|
||||
|
||||
These decisions are considered fixed unless the human operator explicitly changes them.
|
||||
|
||||
- Language: Go
|
||||
- Router: `chi`
|
||||
- Database: `SQLite`
|
||||
- HTML strategy: server-rendered HTML templates
|
||||
- Artifact storage: local filesystem
|
||||
- Deployment shape: app container behind Caddy or Nginx
|
||||
- Web auth: session-based authentication
|
||||
- Client auth: `Authorization: Bearer <api_key>`
|
||||
- API key access modes:
|
||||
- `all_projects`
|
||||
- `project_allow_list`
|
||||
- `project_deny_list`
|
||||
- `tag_allow_list`
|
||||
- `tag_deny_list`
|
||||
- One API key must use exactly one scope mode at a time
|
||||
- Projects support tags from day one
|
||||
- Security is mandatory, not optional
|
||||
|
||||
## 4. Shared Workspace Rules
|
||||
|
||||
All code lives in the main repository.
|
||||
|
||||
Agents should use these implementation paths:
|
||||
|
||||
- `/Users/delete/projects/update_server/cmd/server`
|
||||
- `/Users/delete/projects/update_server/internal`
|
||||
- `/Users/delete/projects/update_server/web`
|
||||
- `/Users/delete/projects/update_server/migrations`
|
||||
|
||||
Agents must use these coordination paths:
|
||||
|
||||
- handoffs: `/Users/delete/projects/update_server/docs/agents/handoffs`
|
||||
- validations: `/Users/delete/projects/update_server/docs/agents/validation`
|
||||
|
||||
If an agent needs to communicate something to the next agent, it must do so through:
|
||||
|
||||
- code changes;
|
||||
- a handoff file;
|
||||
- updates to spec or implementation docs if architecture changed.
|
||||
|
||||
Agents should not rely on hidden memory or previous chat state.
|
||||
|
||||
## 5. Handoff Protocol
|
||||
|
||||
After finishing work, every implementation agent must create a handoff file:
|
||||
|
||||
- naming format: `NN-agent-name.md`
|
||||
- example: `01-foundation.md`
|
||||
|
||||
Each handoff file should be saved in:
|
||||
|
||||
- `/Users/delete/projects/update_server/docs/agents/handoffs`
|
||||
|
||||
The handoff file must include:
|
||||
|
||||
- scope of work;
|
||||
- files changed;
|
||||
- migrations added or changed;
|
||||
- endpoints added or changed;
|
||||
- tests or commands run;
|
||||
- known limitations;
|
||||
- exact next recommended step.
|
||||
|
||||
Use this template:
|
||||
|
||||
- `/Users/delete/projects/update_server/docs/agents/HANDOFF_TEMPLATE.md`
|
||||
|
||||
## 6. Validation Protocol
|
||||
|
||||
After each implementation agent finishes, run a validation agent before moving to the next stage.
|
||||
|
||||
The validation agent should:
|
||||
|
||||
- read the current agent section in this file;
|
||||
- read the latest handoff file;
|
||||
- inspect code changes;
|
||||
- run relevant tests or checks;
|
||||
- produce a validation report.
|
||||
|
||||
Validation files should be saved in:
|
||||
|
||||
- `/Users/delete/projects/update_server/docs/agents/validation`
|
||||
|
||||
Use this template:
|
||||
|
||||
- `/Users/delete/projects/update_server/docs/agents/VALIDATION_TEMPLATE.md`
|
||||
|
||||
Validation result must end in one of these statuses:
|
||||
|
||||
- `APPROVED`
|
||||
- `CHANGES_REQUIRED`
|
||||
|
||||
Do not launch the next implementation agent until the previous stage is `APPROVED`.
|
||||
|
||||
## 7. Agent Count
|
||||
|
||||
Recommended sequence:
|
||||
|
||||
- 7 implementation agents
|
||||
- 1 validation agent role used after every stage
|
||||
|
||||
The validation agent can be the same AI system reused every time.
|
||||
|
||||
## 8. Agent 01 - Foundation
|
||||
|
||||
### Mission
|
||||
|
||||
Set up the repository skeleton and the minimum runnable Go application.
|
||||
|
||||
### Ownership
|
||||
|
||||
This agent owns:
|
||||
|
||||
- Go module initialization
|
||||
- basic app boot
|
||||
- config loading
|
||||
- HTTP router setup
|
||||
- health endpoint
|
||||
- base middleware wiring
|
||||
- template bootstrapping
|
||||
- initial developer commands
|
||||
|
||||
### Deliverables
|
||||
|
||||
This agent must produce:
|
||||
|
||||
- runnable server entrypoint
|
||||
- config package
|
||||
- base router with route groups
|
||||
- health endpoint
|
||||
- base HTML layout structure
|
||||
- initial project structure under `cmd`, `internal`, and `web`
|
||||
|
||||
### Out Of Scope
|
||||
|
||||
This agent must not implement:
|
||||
|
||||
- business logic
|
||||
- database schema
|
||||
- authentication flows
|
||||
- release upload
|
||||
- API keys
|
||||
|
||||
### Acceptance Criteria
|
||||
|
||||
- the app starts successfully;
|
||||
- a health endpoint responds;
|
||||
- the code structure matches the implementation plan;
|
||||
- the project is ready for migrations and feature modules.
|
||||
|
||||
## 9. Agent 02 - Database And Migrations
|
||||
|
||||
### Mission
|
||||
|
||||
Create the data model, migrations, and database access foundation.
|
||||
|
||||
### Ownership
|
||||
|
||||
This agent owns:
|
||||
|
||||
- migration setup
|
||||
- database connection layer
|
||||
- schema design
|
||||
- repository or query layer foundation
|
||||
|
||||
### Deliverables
|
||||
|
||||
This agent must implement tables for:
|
||||
|
||||
- `users`
|
||||
- `projects`
|
||||
- `tags`
|
||||
- `project_tags`
|
||||
- `releases`
|
||||
- `api_keys`
|
||||
- `api_key_project_access`
|
||||
- `api_key_tag_access`
|
||||
- `sessions` if needed
|
||||
- `audit_logs` if included in the first pass
|
||||
|
||||
### Out Of Scope
|
||||
|
||||
This agent must not implement:
|
||||
|
||||
- login UI
|
||||
- upload endpoints
|
||||
- full business workflows
|
||||
|
||||
### Acceptance Criteria
|
||||
|
||||
- migrations can be applied cleanly;
|
||||
- schema matches the spec;
|
||||
- access tables support project and tag based key scopes;
|
||||
- database layer is ready for the next agents.
|
||||
|
||||
## 10. Agent 03 - Authentication And Admin Sessions
|
||||
|
||||
### Mission
|
||||
|
||||
Implement admin authentication and session management.
|
||||
|
||||
### Ownership
|
||||
|
||||
This agent owns:
|
||||
|
||||
- admin bootstrap user creation
|
||||
- password hashing
|
||||
- login and logout flow
|
||||
- session middleware
|
||||
- role checks foundation
|
||||
|
||||
### Deliverables
|
||||
|
||||
This agent must produce:
|
||||
|
||||
- login form and login handler
|
||||
- session creation and invalidation
|
||||
- protected admin route group
|
||||
- admin bootstrap from environment or setup logic
|
||||
|
||||
### Out Of Scope
|
||||
|
||||
This agent must not implement:
|
||||
|
||||
- project management
|
||||
- release upload
|
||||
- API key logic
|
||||
|
||||
### Acceptance Criteria
|
||||
|
||||
- admin can log in and log out;
|
||||
- protected routes are actually protected;
|
||||
- passwords are hashed securely;
|
||||
- session handling works reliably.
|
||||
|
||||
## 11. Agent 04 - Projects, Tags, And Releases
|
||||
|
||||
### Mission
|
||||
|
||||
Implement core product data management: projects, project tags, and release upload metadata flow.
|
||||
|
||||
### Ownership
|
||||
|
||||
This agent owns:
|
||||
|
||||
- project CRUD
|
||||
- tag CRUD
|
||||
- attach or detach tags from projects
|
||||
- release metadata handling
|
||||
- artifact storage abstraction
|
||||
- upload flow and checksum generation
|
||||
|
||||
### Deliverables
|
||||
|
||||
This agent must produce:
|
||||
|
||||
- project create, edit, list, archive flow
|
||||
- tag create, edit, list flow
|
||||
- project-tag assignment
|
||||
- release upload service
|
||||
- artifact persistence on disk
|
||||
- checksum capture
|
||||
|
||||
### Out Of Scope
|
||||
|
||||
This agent must not implement:
|
||||
|
||||
- API key access logic
|
||||
- external client update endpoints
|
||||
|
||||
### Acceptance Criteria
|
||||
|
||||
- admin can manage projects and tags;
|
||||
- admin can upload a release to a project;
|
||||
- release metadata is stored in the database;
|
||||
- artifact files are stored outside the public web root.
|
||||
|
||||
## 12. Agent 05 - API Keys And Access Control
|
||||
|
||||
### Mission
|
||||
|
||||
Implement API key generation, hashing, permissions, and scope evaluation.
|
||||
|
||||
### Ownership
|
||||
|
||||
This agent owns:
|
||||
|
||||
- secure API key generation
|
||||
- API key hashing and lookup
|
||||
- permission flags
|
||||
- access scope evaluation
|
||||
- project allow or deny list rules
|
||||
- tag allow or deny list rules
|
||||
|
||||
### Deliverables
|
||||
|
||||
This agent must produce:
|
||||
|
||||
- API key creation flow
|
||||
- one-time key reveal behavior
|
||||
- key activation and revocation
|
||||
- permission middleware for API key routes
|
||||
- project and tag access resolution logic
|
||||
|
||||
### Out Of Scope
|
||||
|
||||
This agent must not implement:
|
||||
|
||||
- final UI polish
|
||||
- deployment hardening
|
||||
|
||||
### Acceptance Criteria
|
||||
|
||||
- API keys are stored hashed;
|
||||
- only authorized projects are visible to a given key;
|
||||
- allow-list and deny-list logic works for projects and tags;
|
||||
- disabled or expired keys are rejected.
|
||||
|
||||
## 13. Agent 06 - Client API And Admin UI
|
||||
|
||||
### Mission
|
||||
|
||||
Implement the usable product experience for admins and client applications.
|
||||
|
||||
### Ownership
|
||||
|
||||
This agent owns:
|
||||
|
||||
- admin pages for projects, tags, releases, and API keys
|
||||
- client-facing update endpoints
|
||||
- latest-release lookup
|
||||
- release metadata endpoint
|
||||
- authenticated download endpoint
|
||||
|
||||
### Deliverables
|
||||
|
||||
This agent must produce:
|
||||
|
||||
- admin pages that cover the main flows
|
||||
- client endpoint to list accessible projects
|
||||
- client endpoint to get latest release metadata
|
||||
- client endpoint to download a release
|
||||
|
||||
### Out Of Scope
|
||||
|
||||
This agent must not implement:
|
||||
|
||||
- deep security hardening beyond local route protection
|
||||
- production reverse proxy setup
|
||||
|
||||
### Acceptance Criteria
|
||||
|
||||
- an admin can complete the full product flow from the browser;
|
||||
- a client can authenticate with a bearer API key;
|
||||
- a client can discover and download only authorized updates.
|
||||
|
||||
## 14. Agent 07 - Security And Deployment Hardening
|
||||
|
||||
### Mission
|
||||
|
||||
Make the system safe and deployable on an internet-facing server.
|
||||
|
||||
### Ownership
|
||||
|
||||
This agent owns:
|
||||
|
||||
- security headers
|
||||
- rate limiting
|
||||
- request timeouts
|
||||
- CSRF finishing pass
|
||||
- safer cookie settings
|
||||
- reverse proxy examples
|
||||
- Docker and deployment finishing pass
|
||||
- backup and operational notes
|
||||
|
||||
### Deliverables
|
||||
|
||||
This agent must produce:
|
||||
|
||||
- hardened HTTP server settings
|
||||
- production-ready container setup
|
||||
- Caddy or Nginx example configuration
|
||||
- deployment notes for Proxmox
|
||||
- security review fixes that fit the current architecture
|
||||
|
||||
### Out Of Scope
|
||||
|
||||
This agent must not redesign the product or data model unless a critical security issue requires it.
|
||||
|
||||
### Acceptance Criteria
|
||||
|
||||
- the service is ready to run behind HTTPS;
|
||||
- admin and client traffic have sane security defaults;
|
||||
- artifacts are not directly exposed;
|
||||
- deployment instructions are complete enough for first production rollout.
|
||||
|
||||
## 15. Validation Agent Role
|
||||
|
||||
### Mission
|
||||
|
||||
Review each completed stage before the next implementation agent starts.
|
||||
|
||||
### Required Checks
|
||||
|
||||
The validation agent should verify:
|
||||
|
||||
- scope completion;
|
||||
- obvious regressions;
|
||||
- schema or route mismatches;
|
||||
- missing tests;
|
||||
- unsafe behavior;
|
||||
- contradictions with the spec.
|
||||
|
||||
### Output
|
||||
|
||||
The validation agent must write one validation file per stage and finish with:
|
||||
|
||||
- `APPROVED`
|
||||
- or `CHANGES_REQUIRED`
|
||||
|
||||
## 16. Operator Guide For Human User
|
||||
|
||||
Этот раздел специально для тебя, на русском.
|
||||
|
||||
### Общая схема запуска
|
||||
|
||||
Запускаешь агентов строго по порядку:
|
||||
|
||||
1. `Agent 01 - Foundation`
|
||||
2. `Validator`
|
||||
3. `Agent 02 - Database And Migrations`
|
||||
4. `Validator`
|
||||
5. `Agent 03 - Authentication And Admin Sessions`
|
||||
6. `Validator`
|
||||
7. `Agent 04 - Projects, Tags, And Releases`
|
||||
8. `Validator`
|
||||
9. `Agent 05 - API Keys And Access Control`
|
||||
10. `Validator`
|
||||
11. `Agent 06 - Client API And Admin UI`
|
||||
12. `Validator`
|
||||
13. `Agent 07 - Security And Deployment Hardening`
|
||||
14. `Final Validator`
|
||||
|
||||
### Как запускать каждый этап
|
||||
|
||||
Для каждого нового агента даёшь ему один и тот же базовый контекст:
|
||||
|
||||
- прочитать `PRODUCT_SPEC.md`
|
||||
- прочитать `IMPLEMENTATION_PLAN.md`
|
||||
- прочитать `DEVELOPMENT_WORKFLOW.md`
|
||||
- прочитать `docs/agents/WORKFLOW.md`
|
||||
- прочитать последний handoff-файл
|
||||
- прочитать последний validation-файл, если он есть
|
||||
|
||||
После этого говоришь агенту работать только в рамках его секции из этого runbook.
|
||||
|
||||
### Что требовать от каждого агента
|
||||
|
||||
После завершения этапа агент обязан:
|
||||
|
||||
- внести код;
|
||||
- если нужно, обновить документацию;
|
||||
- создать handoff-файл в `docs/agents/handoffs`;
|
||||
- перечислить, что сделано;
|
||||
- перечислить, что не сделано;
|
||||
- указать, что должен делать следующий агент.
|
||||
|
||||
### Когда запускать валидатора
|
||||
|
||||
Валидатора запускаешь после каждого агента.
|
||||
|
||||
Ему даёшь задачу:
|
||||
|
||||
- прочитать соответствующую секцию агента из `docs/agents/WORKFLOW.md`;
|
||||
- прочитать свежий handoff;
|
||||
- проверить код;
|
||||
- проверить, не нарушена ли спецификация;
|
||||
- выдать `APPROVED` или `CHANGES_REQUIRED`;
|
||||
- сохранить отчёт в `docs/agents/validation`.
|
||||
|
||||
### Если валидатор нашёл проблемы
|
||||
|
||||
Если статус `CHANGES_REQUIRED`, то:
|
||||
|
||||
1. не переходишь к следующему агенту;
|
||||
2. запускаешь того же самого агента повторно;
|
||||
3. даёшь ему его прошлый handoff и validation report;
|
||||
4. просишь закрыть замечания;
|
||||
5. снова запускаешь валидатора.
|
||||
|
||||
### Когда использовать меня как валидатора
|
||||
|
||||
Меня лучше использовать:
|
||||
|
||||
- после каждого крупного этапа;
|
||||
- перед миграциями базы;
|
||||
- перед этапом security hardening;
|
||||
- перед первым Docker/deploy;
|
||||
- перед выкладкой на Proxmox.
|
||||
|
||||
### Практически удобный режим
|
||||
|
||||
Самый удобный режим для тебя такой:
|
||||
|
||||
1. локально на Mac запускаешь первого агента;
|
||||
2. проверяешь, что handoff-файл создался;
|
||||
3. зовёшь меня как валидатора;
|
||||
4. после `APPROVED` запускаешь следующего агента;
|
||||
5. когда дойдёшь до конца, только потом собираешь контейнер и переносишь на Proxmox.
|
||||
|
||||
### Главный принцип
|
||||
|
||||
Следующий агент никогда не стартует без handoff от прошлого и без validation report.
|
||||
|
||||
Это защитит тебя от хаоса, повторной работы и скрытых поломок между этапами.
|
||||
Loading…
Add table
Add a link
Reference in a new issue