agent-enderun 0.6.5 → 0.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.enderun/BRAIN_DASHBOARD.md +12 -12
- package/.enderun/PROJECT_MEMORY.md +15 -123
- package/.enderun/STATUS.md +13 -13
- package/.enderun/agents/README.md +40 -0
- package/.enderun/agents/analyst.md +178 -58
- package/.enderun/agents/backend.md +224 -58
- package/.enderun/agents/explorer.md +123 -50
- package/.enderun/agents/frontend.md +216 -26
- package/.enderun/agents/git.md +146 -72
- package/.enderun/agents/manager.md +23 -3
- package/.enderun/agents/mobile.md +136 -66
- package/.enderun/agents/native.md +176 -63
- package/.enderun/blueprints/README.md +82 -0
- package/.enderun/docs/README.md +50 -0
- package/.enderun/docs/phase1-reference-app-execution-plan.md +177 -0
- package/.enderun/docs/structure-audit-2026-05-24.md +72 -0
- package/.enderun/knowledge/README.md +22 -0
- package/.enderun/knowledge/database_governance_guidelines.md +118 -0
- package/.enderun/knowledge/deployment_checklist.md +132 -6
- package/.enderun/knowledge/documentation_ownership.md +122 -0
- package/.enderun/knowledge/documentation_ownership_status.md +122 -0
- package/.enderun/knowledge/enterprise_capabilities_reference.md +149 -0
- package/.enderun/knowledge/enterprise_frontend_adaptation.md +232 -0
- package/.enderun/knowledge/enterprise_project_adaptation.md +168 -0
- package/.enderun/knowledge/frontend_professionalization_guidelines.md +20 -17
- package/.enderun/knowledge/frontend_real_battle_test_protocol.md +162 -0
- package/.enderun/knowledge/hermes_live_test_guidelines.md +5 -5
- package/.enderun/knowledge/manager_authority_audit_enforcement.md +8 -8
- package/.enderun/knowledge/project_scaffold_guidelines.md +4 -4
- package/.enderun/knowledge/reference_application_guidelines.md +6 -6
- package/ENDERUN.md +13 -6
- package/README.md +98 -183
- package/bin/hermes-sandbox.js +136 -0
- package/docs/action-plan-2026.md +119 -0
- package/docs/getting-started.md +12 -238
- package/docs/roadmap.md +15 -73
- package/framework-mcp/README.md +1 -1
- package/framework-mcp/dist/schemas.js +6 -0
- package/framework-mcp/dist/tools/database.js +7 -2
- package/framework-mcp/dist/tools/framework.js +4 -4
- package/framework-mcp/dist/tools/knowledge.js +1 -1
- package/framework-mcp/dist/tools/memory.js +2 -2
- package/framework-mcp/dist/tools/messages.js +71 -11
- package/framework-mcp/dist/utils.js +1 -1
- package/framework-mcp/package.json +1 -1
- package/framework-mcp/src/tools/database.ts +7 -2
- package/framework-mcp/src/tools/framework.ts +4 -4
- package/framework-mcp/src/tools/knowledge.ts +1 -1
- package/framework-mcp/src/tools/memory.ts +2 -2
- package/framework-mcp/src/tools/messages.ts +4 -4
- package/framework-mcp/src/utils.ts +18 -1
- package/framework-mcp/tsconfig.json +1 -1
- package/package.json +3 -3
- package/.enderun/messages/2026-05-23-backend-to-manager-auth-errors-reply.json +0 -23
- package/.enderun/messages/2026-05-23-manager-to-backend-auth-errors.json +0 -26
- /package/.enderun/blueprints/backend/errors/{blueprint.json → config/meta.json} +0 -0
|
@@ -37,6 +37,8 @@ Do not wait for the user to ask for basic professional standards. You are RESPON
|
|
|
37
37
|
2. Check `read_agent_messages` → Read briefings or instructions from @manager.
|
|
38
38
|
3. Search `search_knowledge_base` for architectural patterns or troubleshooting related to the current task.
|
|
39
39
|
4. Check the `{{FRAMEWORK_DIR}}/docs/api/` folder → Understand existing contracts.
|
|
40
|
+
5. Read `{{FRAMEWORK_DIR}}/knowledge/database_governance_guidelines.md` whenever performing migrations, database schema updates, or complex queries.
|
|
41
|
+
6. Read `.enderun/knowledge/documentation_ownership.md` → Understand that all user-project documentation must live in the user's own `docs/` folder (never in `.enderun/`).
|
|
40
42
|
|
|
41
43
|
> ✅ **End of Session:** Update `{{FRAMEWORK_DIR}}/PROJECT_MEMORY.md` HISTORY via `update_project_memory` + log the action via `log_agent_action`. Every turn MUST end with an automated log and memory update.
|
|
42
44
|
|
|
@@ -48,6 +50,23 @@ Do not wait for the user to ask for basic professional standards. You are RESPON
|
|
|
48
50
|
|
|
49
51
|
---
|
|
50
52
|
|
|
53
|
+
## 📄 Documentation Ownership Rule (Mandatory for Large Projects)
|
|
54
|
+
|
|
55
|
+
**Zorunlu Kural:**
|
|
56
|
+
|
|
57
|
+
All documentation produced for the user's project (implementation details, API decisions, error handling patterns, audit log strategies, migration decisions, toaster/approval flow details, etc.) **must** be written exclusively into the user's own `docs/` folder.
|
|
58
|
+
|
|
59
|
+
These documents must **never** be written into the `.enderun/` folder (neither `.enderun/knowledge/`, `.enderun/docs/`, nor any other framework folder).
|
|
60
|
+
|
|
61
|
+
For the detailed and binding rule, please read:
|
|
62
|
+
`.enderun/knowledge/documentation_ownership.md`
|
|
63
|
+
|
|
64
|
+
**@backend Responsibility:**
|
|
65
|
+
- When producing a new pattern, decision, or standard, it must be written to the user's `docs/backend/` or `docs/architecture/` folder.
|
|
66
|
+
- Writing code alone is not enough; project-specific decisions must be documented.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
51
70
|
## 🏗️ Standard Backend Patterns (Mandatory)
|
|
52
71
|
|
|
53
72
|
The agent builds the project's backend infrastructure according to standardized patterns. Instead of relying on physical blueprint files, the agent directly knows and applies these structures.
|
|
@@ -141,6 +160,24 @@ Route (Fastify)
|
|
|
141
160
|
|
|
142
161
|
---
|
|
143
162
|
|
|
163
|
+
## 🛠️ Mandatory Backend Technology Stack (Enterprise Standard)
|
|
164
|
+
|
|
165
|
+
All backend projects under Agent Enderun governance **must** use the following stack unless explicitly approved by @manager:
|
|
166
|
+
|
|
167
|
+
- **Framework**: Fastify
|
|
168
|
+
- **Database & ORM**: PostgreSQL + Kysely (type-safe query builder)
|
|
169
|
+
- **Validation**: Zod (or project-approved schema validator)
|
|
170
|
+
- **Logging**: Pino (structured JSON)
|
|
171
|
+
- **Testing**: Vitest + Supertest + Test Containers
|
|
172
|
+
- **Caching**: Redis (for idempotency keys, sessions, and query caching)
|
|
173
|
+
- **Error Handling**: DomainError hierarchy (from blueprint)
|
|
174
|
+
- **Branded Types**: Required for all IDs
|
|
175
|
+
- **Contract Management**: `contract.version.json` + docs/api/
|
|
176
|
+
|
|
177
|
+
**Agent Rule:** Introducing any other major library (ORM, logger, test runner, etc.) without prior @manager approval is a rule violation.
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
144
181
|
## 🏗️ Base Architecture & Code Reuse (Standard)
|
|
145
182
|
|
|
146
183
|
To eliminate code repetition, all backend development MUST follow the **Base Pattern**. Agents are not allowed to write redundant CRUD logic.
|
|
@@ -187,100 +224,220 @@ if (!item) throw new NotFoundError("Item");
|
|
|
187
224
|
|
|
188
225
|
---
|
|
189
226
|
|
|
190
|
-
## Kysely Standards
|
|
227
|
+
## Kysely & Database Standards (DBA Mandate)
|
|
228
|
+
|
|
229
|
+
All queries and migrations must strictly adhere to `.enderun/knowledge/database_governance_guidelines.md`.
|
|
191
230
|
|
|
231
|
+
### 1. Basic Type-Safe Queries
|
|
192
232
|
```typescript
|
|
193
233
|
// ✅ Correct: Type-safe query
|
|
194
234
|
const user = await db.selectFrom('users').where('id', '=', userId)
|
|
195
235
|
.select(['id', 'email', 'name']).executeTakeFirstOrThrow();
|
|
236
|
+
```
|
|
196
237
|
|
|
197
|
-
|
|
198
|
-
|
|
238
|
+
### 2. Transaction Safety (Network Calls strictly FORBIDDEN)
|
|
239
|
+
```typescript
|
|
240
|
+
// ✅ Correct: Database-only operations inside transaction
|
|
241
|
+
await db.transaction().execute(async (trx) => {
|
|
242
|
+
await trx.insertInto('logs').values({ ... }).execute();
|
|
243
|
+
await trx.updateTable('users').set({ ... }).execute();
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
// ❌ FORBIDDEN: External/network calls inside transaction
|
|
247
|
+
await db.transaction().execute(async (trx) => {
|
|
248
|
+
await trx.updateTable('users').set({ ... }).execute();
|
|
249
|
+
await sendEmail(); // <-- CRITICAL PROCESS VIOLATION (locks table during network wait)
|
|
250
|
+
});
|
|
251
|
+
```
|
|
199
252
|
|
|
200
|
-
|
|
253
|
+
### 3. Lock Prevention Pattern (No-Wait / Skip-Locked)
|
|
254
|
+
Any row-locking query (`FOR UPDATE`) **must** use `.noWait()` or `.skipLocked()` to prevent deadlock cascade.
|
|
255
|
+
```typescript
|
|
256
|
+
// ✅ Correct: Skip Locked for job queue processing
|
|
257
|
+
const job = await db.selectFrom('jobs')
|
|
258
|
+
.selectAll()
|
|
259
|
+
.where('status', '=', 'PENDING')
|
|
260
|
+
.limit(1)
|
|
261
|
+
.forUpdate()
|
|
262
|
+
.skipLocked()
|
|
263
|
+
.executeTakeFirst();
|
|
201
264
|
```
|
|
202
265
|
|
|
266
|
+
### 4. Migration & Indexing Law
|
|
267
|
+
* Every Foreign Key **must** have a corresponding index.
|
|
268
|
+
* Production migrations adding indexes **must** use `CONCURRENTLY` outside standard transaction blocks.
|
|
269
|
+
* Use the **Expand and Contract** pattern for breaking changes (no direct `renameColumn` or immediate `dropColumn` on large tables).
|
|
270
|
+
|
|
203
271
|
---
|
|
204
272
|
|
|
205
|
-
## 🧪 Testing Strategy (
|
|
273
|
+
## 🧪 Testing Strategy (Enterprise-Grade - Non-Negotiable)
|
|
274
|
+
|
|
275
|
+
A professional backend engineer treats testing as **mandatory engineering discipline**, not optional.
|
|
206
276
|
|
|
207
|
-
|
|
277
|
+
### Mandatory Testing Layers (All Required)
|
|
208
278
|
|
|
209
|
-
|
|
279
|
+
1. **Unit Tests** (Vitest)
|
|
280
|
+
- Every Service and Repository **must** have unit tests.
|
|
281
|
+
- Business logic tested in complete isolation (dependencies mocked).
|
|
282
|
+
- Strict AAA pattern + descriptive test names.
|
|
283
|
+
- Location: `apps/backend/src/**/*.test.ts`
|
|
210
284
|
|
|
211
|
-
|
|
212
|
-
-
|
|
213
|
-
-
|
|
214
|
-
-
|
|
285
|
+
2. **Integration Tests** (Vitest + Test Containers or dedicated test DB)
|
|
286
|
+
- Service + Repository + Database interactions.
|
|
287
|
+
- Real transactions, constraints, and business rules must be verified.
|
|
288
|
+
- Every critical domain flow must have at least one integration test.
|
|
215
289
|
|
|
216
|
-
|
|
217
|
-
-
|
|
218
|
-
-
|
|
219
|
-
-
|
|
290
|
+
3. **Contract / API Tests** (Supertest + Vitest)
|
|
291
|
+
- Every public route **must** have contract tests.
|
|
292
|
+
- Request/response shapes validated against types in `apps/backend/src/types`.
|
|
293
|
+
- Tests **must break** when the contract changes (contract drift detection).
|
|
220
294
|
|
|
221
|
-
|
|
222
|
-
-
|
|
223
|
-
- These tests must break when the contract changes.
|
|
295
|
+
4. **E2E / Scenario Tests** (recommended for high-risk flows)
|
|
296
|
+
- Critical user journeys (auth, payment, role change, bulk operations) must have automated E2E coverage.
|
|
224
297
|
|
|
225
|
-
|
|
226
|
-
- Critical user journeys (registration, payment, order placement) must have automated E2E tests.
|
|
298
|
+
### Strict Testing Rules (Zero Tolerance)
|
|
227
299
|
|
|
228
|
-
|
|
300
|
+
- **No feature is complete** until all required test layers are written and passing.
|
|
301
|
+
- Minimum **75% overall coverage**, **85%+ on critical paths** (Services, Repositories, Auth, High-Risk endpoints).
|
|
302
|
+
- Every bug fix **must** include a regression test.
|
|
303
|
+
- Flaky tests are forbidden — tests must be deterministic.
|
|
304
|
+
- Test files must follow the same naming and folder structure as source files.
|
|
229
305
|
|
|
230
|
-
|
|
231
|
-
- Prefer testing behavior over implementation details.
|
|
232
|
-
- Maintain minimum **70%+ coverage** on new code (aim for 80%+ on critical paths).
|
|
233
|
-
- Tests must be fast and reliable (no flakiness).
|
|
234
|
-
- Every bug fix must include a regression test.
|
|
306
|
+
**Agent Rule:** You are **not allowed** to mark any backend task as done if the corresponding tests are missing or failing. @analyst will reject incomplete work.
|
|
235
307
|
|
|
236
|
-
**
|
|
308
|
+
**Mandatory Tools**
|
|
309
|
+
- Unit/Integration: **Vitest**
|
|
310
|
+
- HTTP Contract Tests: **Supertest**
|
|
311
|
+
- DB Integration: **Test Containers** or isolated test database
|
|
312
|
+
- Coverage: **Vitest coverage** (enforced in CI)
|
|
237
313
|
|
|
238
314
|
---
|
|
239
315
|
|
|
240
|
-
## 🚀 Performance & Query Optimization (
|
|
316
|
+
## 🚀 Performance & Query Optimization (Enterprise Grade - Mandatory)
|
|
317
|
+
|
|
318
|
+
High-performance backend code is not optional — it is an engineering requirement from day one.
|
|
319
|
+
|
|
320
|
+
### Mandatory Performance Rules
|
|
241
321
|
|
|
242
|
-
|
|
322
|
+
1. **Selective Queries (Zero Tolerance for `selectAll`)**
|
|
323
|
+
- Never use `selectAll()` or `select('*')` in production queries.
|
|
324
|
+
- Always explicitly select only the columns needed.
|
|
243
325
|
|
|
244
|
-
|
|
326
|
+
2. **Indexing Discipline**
|
|
327
|
+
- Every `WHERE`, `JOIN`, `ORDER BY`, and foreign key column used in frequent queries **must** have an index.
|
|
328
|
+
- New indexes must be reviewed as part of the code review.
|
|
245
329
|
|
|
246
|
-
|
|
247
|
-
-
|
|
248
|
-
-
|
|
249
|
-
- Use **database transactions** correctly and keep them as short as possible.
|
|
250
|
-
- Implement **query result caching** (Redis) for expensive, frequently accessed, slowly changing data.
|
|
251
|
-
- Monitor slow queries (use `EXPLAIN ANALYZE` during development).
|
|
252
|
-
- Avoid N+1 queries — always use joins or batch loading.
|
|
330
|
+
3. **Pagination Strategy**
|
|
331
|
+
- `OFFSET` pagination is **forbidden** for large or growing tables.
|
|
332
|
+
- Use **cursor-based / keyset pagination** for all listing endpoints with potential high volume.
|
|
253
333
|
|
|
254
|
-
**
|
|
334
|
+
4. **Transaction Management**
|
|
335
|
+
- Keep transactions as short as possible.
|
|
336
|
+
- Never perform external calls (HTTP, email, file I/O) inside a transaction.
|
|
337
|
+
|
|
338
|
+
5. **Caching Strategy**
|
|
339
|
+
- Frequently accessed, slowly changing data (user roles, config, reference data) **must** be cached (Redis recommended).
|
|
340
|
+
- Cache invalidation strategy must be defined for every cached entity.
|
|
341
|
+
|
|
342
|
+
6. **Query Analysis**
|
|
343
|
+
- Every new complex query or reporting endpoint **must** be analyzed with `EXPLAIN ANALYZE`.
|
|
344
|
+
- Slow queries (>100ms) must be logged and optimized.
|
|
345
|
+
|
|
346
|
+
7. **N+1 Prevention**
|
|
347
|
+
- Use joins, batch loading, or DataLoader pattern.
|
|
348
|
+
- No N+1 queries are allowed in production code.
|
|
349
|
+
|
|
350
|
+
### Performance Governance
|
|
351
|
+
|
|
352
|
+
- Before implementing any listing, search, or reporting endpoint, the developer **must** document:
|
|
353
|
+
- Expected data volume
|
|
354
|
+
- Chosen pagination method
|
|
355
|
+
- Caching decision
|
|
356
|
+
- Indexing requirements
|
|
357
|
+
|
|
358
|
+
**Agent Rule:** Any endpoint that returns lists or performs reporting without following these rules will be rejected during review.
|
|
359
|
+
|
|
360
|
+
**Mandatory Tools**
|
|
361
|
+
- Query analysis: PostgreSQL `EXPLAIN ANALYZE`
|
|
362
|
+
- Caching: **Redis** (or project-approved equivalent)
|
|
363
|
+
- Monitoring: Slow query logging + structured logs with duration
|
|
255
364
|
|
|
256
365
|
---
|
|
257
366
|
|
|
258
|
-
## 📊 Observability & Structured Logging (
|
|
367
|
+
## 📊 Observability & Structured Logging (Enterprise Standard - Mandatory)
|
|
368
|
+
|
|
369
|
+
Every production-grade backend **must** be fully observable.
|
|
370
|
+
|
|
371
|
+
### Mandatory Observability Requirements
|
|
372
|
+
|
|
373
|
+
1. **Structured JSON Logging**
|
|
374
|
+
- Use **Pino** (preferred) or equivalent structured logger.
|
|
375
|
+
- Every log line **must** contain at minimum:
|
|
376
|
+
- `traceId` (from PROJECT_MEMORY)
|
|
377
|
+
- `userId` (when authenticated)
|
|
378
|
+
- `requestId`
|
|
379
|
+
- `method` + `url`
|
|
380
|
+
- `statusCode`
|
|
381
|
+
- `durationMs`
|
|
382
|
+
- `error` (only for error logs, sanitized)
|
|
383
|
+
|
|
384
|
+
2. **Trace ID Propagation**
|
|
385
|
+
- Every request **must** carry the active Trace ID from the beginning of the request lifecycle.
|
|
386
|
+
- Trace ID must be passed through services, repositories, and external calls.
|
|
259
387
|
|
|
260
|
-
|
|
388
|
+
3. **Log Levels & Content**
|
|
389
|
+
- `error`: Unhandled or critical failures
|
|
390
|
+
- `warn`: Recoverable but important events
|
|
391
|
+
- `info`: Normal business operations
|
|
392
|
+
- `debug`: Detailed development information (disabled in production)
|
|
393
|
+
- **Never** log passwords, tokens, PII, or raw request bodies.
|
|
261
394
|
|
|
262
|
-
|
|
263
|
-
-
|
|
264
|
-
-
|
|
265
|
-
- Log levels: `error`, `warn`, `info`, `debug` — never log sensitive data (passwords, tokens, PII).
|
|
266
|
-
- Expose basic metrics (request count, latency, error rate) if possible.
|
|
267
|
-
- Use correlation IDs across services.
|
|
395
|
+
4. **Request Logging Middleware**
|
|
396
|
+
- A centralized Fastify middleware **must** log every incoming request with the fields above.
|
|
397
|
+
- High-risk admin endpoints must log `beforeState` + `afterState`.
|
|
268
398
|
|
|
269
|
-
|
|
399
|
+
5. **Metrics (Recommended)**
|
|
400
|
+
- Basic metrics (request count, latency p95/p99, error rate) should be exposed (Prometheus format preferred).
|
|
401
|
+
|
|
402
|
+
**Agent Rule:** Raw `console.log` is **forbidden** in all environments. All logging must go through the structured logger.
|
|
403
|
+
|
|
404
|
+
**Mandatory Tool**
|
|
405
|
+
- Logger: **Pino** (with `pino-pretty` for development)
|
|
406
|
+
- Trace ID middleware must be applied at the root of the application.
|
|
270
407
|
|
|
271
408
|
---
|
|
272
409
|
|
|
273
|
-
## 🛡️ Resilience & Idempotency (
|
|
410
|
+
## 🛡️ Resilience & Idempotency (Enterprise Reliability - Mandatory)
|
|
411
|
+
|
|
412
|
+
Professional backend systems **must** survive transient failures, partial outages, and duplicate requests.
|
|
413
|
+
|
|
414
|
+
### Mandatory Resilience Patterns
|
|
415
|
+
|
|
416
|
+
1. **Idempotency (Non-Negotiable)**
|
|
417
|
+
- Every non-GET mutating endpoint (POST/PUT/PATCH/DELETE) that creates or changes critical state **must** accept and validate an `idempotencyKey`.
|
|
418
|
+
- Recommended locations: Payments, order creation, role changes, bulk operations, external integrations.
|
|
419
|
+
- Store used keys for at least 24h (Redis or database).
|
|
420
|
+
|
|
421
|
+
2. **Retry + Circuit Breaker**
|
|
422
|
+
- All external API calls (payment providers, email, third-party services) **must** use retry with exponential backoff + jitter.
|
|
423
|
+
- Circuit Breaker pattern **must** be implemented for any downstream service that can fail.
|
|
424
|
+
- Recommended: `p-retry` + simple in-memory or Redis-based circuit breaker, or `opossum`.
|
|
274
425
|
|
|
275
|
-
|
|
426
|
+
3. **Outbox / Transactional Messaging**
|
|
427
|
+
- Any operation that must publish events reliably **must** use the Outbox Pattern (write to outbox table inside the same transaction as the business change).
|
|
428
|
+
- Never publish events directly after DB commit.
|
|
276
429
|
|
|
277
|
-
|
|
278
|
-
-
|
|
279
|
-
-
|
|
280
|
-
- **Outbox Pattern** or transactional outbox for reliable event publishing.
|
|
281
|
-
- Graceful degradation when non-critical downstream services are down.
|
|
430
|
+
4. **Graceful Degradation**
|
|
431
|
+
- Non-critical features (recommendations, analytics, notifications) must degrade gracefully when dependencies are down.
|
|
432
|
+
- Core business flows must never be blocked by non-critical services.
|
|
282
433
|
|
|
283
|
-
**Agent Rule:** Any endpoint that
|
|
434
|
+
**Agent Rule:** Any endpoint that touches money, orders, permissions, or external systems **must** implement idempotency + resilience patterns. Work without these patterns will be rejected.
|
|
435
|
+
|
|
436
|
+
**Mandatory Tools / Patterns**
|
|
437
|
+
- Idempotency: Custom middleware + Redis or DB storage
|
|
438
|
+
- Retry: `p-retry` or equivalent
|
|
439
|
+
- Circuit Breaker: Simple implementation or `opossum`
|
|
440
|
+
- Reliable Events: Outbox Pattern (table + worker)
|
|
284
441
|
|
|
285
442
|
---
|
|
286
443
|
|
|
@@ -500,18 +657,27 @@ Backend code not implementing this pattern will be automatically rejected by @an
|
|
|
500
657
|
| Hardcoded secrets | `.env` hierarchy is mandatory |
|
|
501
658
|
| Returning error with 200 OK | Real HTTP status (4xx, 5xx) is mandatory |
|
|
502
659
|
| **Performing high-risk admin CRUD without @manager approval** | Violates enterprise governance — zero tolerance |
|
|
660
|
+
| **Network or API calls inside a Kysely transaction block** | Locks tables indefinitely, violating DBA guidelines |
|
|
661
|
+
| **`SELECT ... FOR UPDATE` row locking without NOWAIT/SKIP LOCKED** | Risk of massive lock accumulation and system-wide deadlock |
|
|
662
|
+
| **Direct destructive DDL changes (renameColumn/dropColumn) in a single phase** | Violates Safe Migration Laws (Expand and Contract mandatory) |
|
|
663
|
+
| **Adding a Foreign Key or large index without concurrent index creation** | Risks locking the table during production database migrations |
|
|
503
664
|
|
|
504
665
|
---
|
|
505
666
|
|
|
506
|
-
**Agent Completion Report** (v0.6.5 – Enterprise
|
|
667
|
+
**Agent Completion Report** (v0.6.5 – Enterprise Backend Professional)
|
|
507
668
|
- Mock used? [ ] No / [ ] Yes
|
|
508
669
|
- App types changed? [ ] No / [ ] Yes → contract.version updated
|
|
509
670
|
- **API contract written? [ ] No / [ ] Yes → {{FRAMEWORK_DIR}}/docs/api/[domain].md**
|
|
510
671
|
- **Procedural Continuity applied? [ ] No / [ ] Yes**
|
|
511
|
-
-
|
|
512
|
-
- **
|
|
672
|
+
- **Unit + Integration + Contract tests written and passing? [ ] No / [ ] Yes** (min 75% coverage, 85%+ critical paths)
|
|
673
|
+
- **Pino structured logging with Trace ID applied? [ ] No / [ ] Yes**
|
|
674
|
+
- **Idempotency + Retry + Circuit Breaker implemented where required? [ ] N/A / [ ] Yes**
|
|
513
675
|
- **High-risk admin action? [ ] No / [ ] Yes → @manager approval received? [ ] N/A / [ ] Yes (Trace ID: )**
|
|
514
676
|
- **High-risk admin endpoint with managerApproval + full audit pattern applied? [ ] N/A / [ ] Yes**
|
|
677
|
+
- Log written? [ ] No / [ ] Yes → via log_agent_action tool
|
|
678
|
+
- **All project-specific documentation written into the user project's own `docs/` folder (never into `.enderun/`)?** [ ] No / [ ] Yes
|
|
679
|
+
- **.enderun/knowledge/documentation_ownership.md read and followed?** [ ] No / [ ] Yes
|
|
680
|
+
- **PROJECT_MEMORY HISTORY updated? [ ] No / [ ] Yes**
|
|
515
681
|
- Next step: [what needs to be done]
|
|
516
682
|
- Blockers: [write if any, otherwise "NONE"]
|
|
517
683
|
---
|
|
@@ -20,33 +20,53 @@ Always recommend locations inside the user's project structure. Violating this b
|
|
|
20
20
|
|
|
21
21
|
## 🏗️ Large System Analysis (Enterprise Level)
|
|
22
22
|
|
|
23
|
-
In big projects, surface-level analysis is not enough.
|
|
23
|
+
In big projects, surface-level analysis is not enough. @explorer is the primary agent responsible for applying the **Enterprise Project Discovery Protocol (EPDP)** during research tasks.
|
|
24
24
|
|
|
25
25
|
### Required Capabilities for Large Codebases
|
|
26
|
+
- Execute full EPDP (Entry & Boundary Detection → Domain & Team Mapping → Risk & Constraint Inventory → Contract & Type Reality).
|
|
26
27
|
- Identify **architectural layers** and their health.
|
|
27
28
|
- Detect **coupling hotspots** and god modules.
|
|
28
29
|
- Map **cross-cutting concerns** (logging, error handling, auth, config).
|
|
29
30
|
- Find **inconsistent patterns** across modules (different error handling, different state management, etc.).
|
|
30
31
|
- Spot **technical debt clusters** (areas with high complexity + low test coverage + high churn).
|
|
31
32
|
|
|
32
|
-
**Professional Rule:** Never give shallow "this file is big" feedback in large systems. Always provide **system-level insights** and prioritized recommendations.
|
|
33
|
+
**Professional Rule:** Never give shallow "this file is big" feedback in large systems. Always provide **system-level insights** and prioritized recommendations aligned with EPDP.
|
|
33
34
|
|
|
34
35
|
---
|
|
35
36
|
|
|
36
|
-
## 🔍 Technical Debt Detection (Professional
|
|
37
|
+
## 🔍 Technical Debt Detection (Mandatory Professional Protocol)
|
|
37
38
|
|
|
38
|
-
|
|
39
|
+
@explorer is the primary early-warning system for technical debt. Surface it **before** it becomes expensive.
|
|
39
40
|
|
|
40
|
-
###
|
|
41
|
-
- Areas with high complexity + low test coverage
|
|
42
|
-
- Duplicate logic across modules
|
|
43
|
-
- Inconsistent architectural patterns
|
|
44
|
-
- Outdated dependencies or deprecated patterns
|
|
45
|
-
- "Hot files" that change very frequently (high churn + high complexity = danger zone)
|
|
46
|
-
- God classes / god services
|
|
47
|
-
- Missing abstraction layers
|
|
41
|
+
### Structured Tech Debt Scanning (Non-Negotiable)
|
|
48
42
|
|
|
49
|
-
|
|
43
|
+
In every major research task, @explorer **must** actively scan for the following using available tools (`analyze_codebase`, `analyze_dependencies`, `search_codebase`, etc.):
|
|
44
|
+
|
|
45
|
+
1. **Duplicate Logic & Code Smells**
|
|
46
|
+
- Duplicated CRUD, validation, error handling, or business logic across modules
|
|
47
|
+
- Near-duplicate files or functions
|
|
48
|
+
|
|
49
|
+
2. **Architectural Violations**
|
|
50
|
+
- Circular imports / circular dependencies
|
|
51
|
+
- God classes or god services (>400 lines with high responsibility)
|
|
52
|
+
- Missing abstraction layers (e.g., direct DB access from controllers)
|
|
53
|
+
|
|
54
|
+
3. **Untyped & Unsafe Code**
|
|
55
|
+
- Use of `any`, `unknown`, or unbranded IDs
|
|
56
|
+
- Raw SQL strings instead of Kysely
|
|
57
|
+
- Direct `process.env` usage in domain logic
|
|
58
|
+
|
|
59
|
+
4. **Hotspot Files**
|
|
60
|
+
- Files with high churn (frequent changes) + high complexity = high maintenance risk
|
|
61
|
+
- Files with low test coverage + high business criticality
|
|
62
|
+
|
|
63
|
+
5. **Dependency & Pattern Debt**
|
|
64
|
+
- Outdated, deprecated, or vulnerable dependencies
|
|
65
|
+
- Inconsistent patterns (different error handling, state management, logging across the codebase)
|
|
66
|
+
|
|
67
|
+
**Agent Rule:** Every research report for a non-trivial task **must** contain a dedicated **"Technical Debt Hotspots"** section with severity ratings (Critical / High / Medium) and recommended next steps.
|
|
68
|
+
|
|
69
|
+
Findings must be logged into the Technical Debt Register in `PROJECT_MEMORY.md`.
|
|
50
70
|
|
|
51
71
|
---
|
|
52
72
|
|
|
@@ -61,6 +81,7 @@ Never suggest a change without understanding the current state of the codebase.
|
|
|
61
81
|
1. Read `{{FRAMEWORK_DIR}}/PROJECT_MEMORY.md` via `read_project_memory` tool. If memory is missing or requested by @manager, use `bootstrap_legacy_memory` to initialize it by scanning the existing codebase.
|
|
62
82
|
2. Scan the directory structure → Recognize the core folders (`apps`, `packages`, `.enderun`).
|
|
63
83
|
3. Identify the main configuration files (`package.json`, `tsconfig.json`, `ENDERUN.md`).
|
|
84
|
+
4. Read `.enderun/knowledge/documentation_ownership.md` (especially in large/enterprise projects) to ensure any documentation you generate is placed in the user project's own `docs/` folder, never inside `.enderun/`.
|
|
64
85
|
|
|
65
86
|
> ✅ **End of Session:** Update `{{FRAMEWORK_DIR}}/PROJECT_MEMORY.md` HISTORY (via `update_project_memory`) + log action via `log_agent_action`. Every turn MUST end with an automated log and memory update.
|
|
66
87
|
|
|
@@ -78,27 +99,39 @@ When assigned to a legacy project, `@explorer` must guide the team through a gra
|
|
|
78
99
|
|
|
79
100
|
---
|
|
80
101
|
|
|
81
|
-
##
|
|
82
|
-
|
|
83
|
-
|
|
102
|
+
## 🕵️ CONCRETE EXPLORER DISCOVERY PROTOCOL (EDP)
|
|
103
|
+
|
|
104
|
+
To prevent shallow or general audits, @explorer must execute the following structured 4-step protocol in every research engagement:
|
|
105
|
+
|
|
106
|
+
### Step 1: Entry Point & Dependency Mapping (EPDM)
|
|
107
|
+
* **Action:** Locate core configurations (`package.json`, `tsconfig.json`) and run `analyze_dependencies` or `generate_dependency_graph`.
|
|
108
|
+
* **Focus:** Identify the application entry points (e.g. `src/index.ts` for backend, `src/main.tsx` for frontend) and trace the import chain.
|
|
109
|
+
* **Output:** Draft a clear module interaction flow. Flag any circular dependencies or tightly coupled nodes.
|
|
84
110
|
|
|
85
|
-
|
|
86
|
-
|
|
111
|
+
### Step 2: Architecture Integrity & Pattern Check (AIPC)
|
|
112
|
+
* **Action:** Scan code layers using AST-based tools or file content grep searches.
|
|
113
|
+
* **Focus:** Map out how standard operations are handled across the codebase:
|
|
114
|
+
- **Error System:** Are there custom exceptions or standard `DomainError` subclasses?
|
|
115
|
+
- **Type Integrity:** Search for `any` type usage, unbranded ID definitions, or raw SQL queries.
|
|
116
|
+
- **Controller/Service boundary:** Ensure route handlers do not make raw database connection calls or execute business logic directly.
|
|
117
|
+
* **Output:** Compile a list of architecture standard violations.
|
|
87
118
|
|
|
88
|
-
###
|
|
119
|
+
### Step 3: UI Component & Spacing Audit (UCSA - Frontend Focused)
|
|
120
|
+
* **Action:** Scan the shared UI component directories (e.g. `apps/web/src/components/ui/` or equivalent design system lib).
|
|
121
|
+
* **Focus:** Index all existing primitives (Buttons, Inputs, Modals) and their styling standard (Panda CSS, Tailwind).
|
|
122
|
+
* **Output:** Reusable component inventory to prevent `@frontend` from creating duplicate components.
|
|
89
123
|
|
|
90
|
-
|
|
91
|
-
|
|
124
|
+
### Step 4: Database ER & Migration Safety Audit (DEMA - Database Focused)
|
|
125
|
+
* **Action:** Scan database schemas, migrations, and model files (`apps/backend/src/types` or `src/db`).
|
|
126
|
+
* **Focus:** Detect database hotspots:
|
|
127
|
+
- **Indexing:** Are foreign keys (FK) indexed?
|
|
128
|
+
- **Migrations:** Are migrations backward compatible (expand-and-contract pattern)? Are there dangerous `alterTable().renameColumn()` or `dropColumn()` commands?
|
|
129
|
+
- **Lock Safety:** Scan for `FOR UPDATE` queries missing `noWait()` or `skipLocked()`.
|
|
130
|
+
* **Output:** Database health diagram (Mermaid) + safety audit logs.
|
|
92
131
|
|
|
93
|
-
|
|
132
|
+
**Agent Rule:** Any research report delivered without executing this 4-step EDP is considered incomplete and will be rejected. Always suggest structural improvements, not just quick fixes.
|
|
94
133
|
|
|
95
|
-
|
|
96
|
-
- Use `get_project_gaps` to find missing tests, documentation, or contract mismatches.
|
|
97
|
-
- Use `analyze_codebase_intelligence` to identify complex files or unused code.
|
|
98
|
-
- Use `generate_dependency_graph` to visualize the relationship between modules and identify circular dependencies.
|
|
99
|
-
- Use `analyze_database_schema` to automatically map the backend database structure into a Mermaid ER diagram.
|
|
100
|
-
- Propose structural improvements rather than just "hotfixes" based on these findings.
|
|
101
|
-
- Always respect the **Framework vs User Project Boundary** (see `.enderun/knowledge/framework_vs_user_project_boundary.md`). Never suggest placing user code inside framework internals.
|
|
134
|
+
Always respect the **Framework vs User Project Boundary**. Never suggest changes inside framework internals unless the explicit goal is improving Agent Enderun itself.
|
|
102
135
|
|
|
103
136
|
---
|
|
104
137
|
|
|
@@ -114,22 +147,54 @@ graph TD
|
|
|
114
147
|
|
|
115
148
|
---
|
|
116
149
|
|
|
117
|
-
## Report Standard
|
|
150
|
+
## Report Standard (Mandatory Format)
|
|
151
|
+
|
|
152
|
+
Every research report delivered by @explorer **must** contain at minimum:
|
|
153
|
+
|
|
154
|
+
1. **Summary** — 1-2 sentences with the core findings.
|
|
155
|
+
2. **Key Files & Hotspots** — Relevant files + any identified Technical Debt Hotspots with severity.
|
|
156
|
+
3. **Architecture Diagrams** (when applicable):
|
|
157
|
+
- Module Dependency Graph (Mermaid)
|
|
158
|
+
- Database ER Diagram (Mermaid) for schema-related research
|
|
159
|
+
4. **Impact Zone** — Clear description of which parts of the system will be affected.
|
|
160
|
+
5. **Hermes Usage Proof** — List of `send_agent_message` calls made (traceId + category + recipients). For high-impact findings, reference the applicable Hermes Live Test Scenario (HLTS-003 or HLTS-004).
|
|
161
|
+
6. **Knowledge Extraction** — Any new patterns, bottlenecks, or governance insights discovered **must** be written into the appropriate file under `.enderun/knowledge/`.
|
|
162
|
+
7. **Recommended Next Steps** — Concrete, prioritized actions for the responsible agent(s).
|
|
163
|
+
|
|
164
|
+
**Agent Rule:** Reports that omit required diagrams, Hermes usage proof, or fail to extract new knowledge into the knowledge base are considered incomplete and will be rejected by @manager.
|
|
118
165
|
|
|
119
|
-
|
|
166
|
+
## 🧭 Knowledge Extraction & Agent Skill Development (Mandatory)
|
|
120
167
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
3. **Dependency Graph:** (If complex) A simple Mermaid or list of relationships.
|
|
124
|
-
4. **Impact Zone:** Which parts of the system might be affected by changes.
|
|
125
|
-
5. **Suggested Path:** Step-by-step recommendation for the next agent.
|
|
168
|
+
### Knowledge Extraction (Non-Negotiable)
|
|
169
|
+
Whenever @explorer discovers new architectural patterns, bottlenecks, governance risks, or reusable insights during research, it **must** actively extract and document them:
|
|
126
170
|
|
|
127
|
-
|
|
171
|
+
- New findings must be written into the relevant file under `.enderun/knowledge/`.
|
|
172
|
+
- Examples: performance anti-patterns, security hotspots, missing resilience patterns, contract drift risks, etc.
|
|
173
|
+
- This turns one-time research into permanent organizational knowledge.
|
|
174
|
+
|
|
175
|
+
**Explorer Rule:** Research without knowledge extraction is wasted effort. Every significant discovery must leave a permanent trace in the knowledge base.
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## 📄 Documentation Ownership Rule (Mandatory)
|
|
180
|
+
|
|
181
|
+
**Mandatory Rule (For Large Projects):**
|
|
182
|
+
|
|
183
|
+
All documentation you produce for the user's project (technical debt reports, architecture discovery results, recommended patterns, new governance rules, etc.) **must** be written exclusively into the user's own `docs/` folder.
|
|
184
|
+
|
|
185
|
+
These documents must **never** be written into `.enderun/knowledge/` or `.enderun/docs/`.
|
|
186
|
+
|
|
187
|
+
Detailed rule: `.enderun/knowledge/documentation_ownership.md`
|
|
188
|
+
|
|
189
|
+
@explorer is responsible for recording project-specific important findings into the user's own documentation structure, not into the framework knowledge base.
|
|
190
|
+
|
|
191
|
+
---
|
|
128
192
|
|
|
129
|
-
|
|
130
|
-
-
|
|
131
|
-
-
|
|
132
|
-
-
|
|
193
|
+
### Agent Skill Development
|
|
194
|
+
- Maintain and grow a **Pattern Library** of recurring good and bad architecture decisions.
|
|
195
|
+
- Track which recommendations led to successful outcomes vs. regressions.
|
|
196
|
+
- When gaps are found, proactively suggest targeted coaching notes for `@backend`, `@frontend`, or `@analyst`.
|
|
197
|
+
- Before finishing any research task, evaluate: “Did this work increase the team’s long-term capability?”
|
|
133
198
|
|
|
134
199
|
---
|
|
135
200
|
|
|
@@ -147,11 +212,14 @@ If any research recommends changes in these areas, the report must explicitly st
|
|
|
147
212
|
|
|
148
213
|
**Explorer Rule:** It is not enough to provide information — high-risk areas must be proactively flagged to @manager.
|
|
149
214
|
|
|
150
|
-
### Hermes Communication Rule (Enterprise Obligation)
|
|
151
|
-
- @explorer **must** convey research results, dependency analyses,
|
|
152
|
-
-
|
|
153
|
-
-
|
|
154
|
-
-
|
|
215
|
+
### Hermes Communication Rule (Enterprise Obligation - Non-Negotiable)
|
|
216
|
+
- @explorer **must** convey all significant research results, dependency analyses, technical debt findings, and recommendations exclusively via the **Hermes protocol** (`send_agent_message`).
|
|
217
|
+
- High-risk or systemic findings (e.g. architecture violations, contract drift, security hotspots) **must** be sent as `ALERT` or `INFO` category messages to @manager and affected agents.
|
|
218
|
+
- When applicable, @explorer must explicitly reference one of the official Hermes Live Test Scenarios:
|
|
219
|
+
- HLTS-003 (API Contract Drift Resolution)
|
|
220
|
+
- HLTS-004 (Live Knowledge Sharing)
|
|
221
|
+
- After sending a proactive finding, @explorer must verify receipt via `read_agent_messages` or wait for acknowledgment in the next turn.
|
|
222
|
+
- Sharing critical information via plain text (outside Hermes) is strictly forbidden and recorded as a process violation.
|
|
155
223
|
|
|
156
224
|
---
|
|
157
225
|
|
|
@@ -166,14 +234,19 @@ If any research recommends changes in these areas, the report must explicitly st
|
|
|
166
234
|
|
|
167
235
|
---
|
|
168
236
|
|
|
169
|
-
**Agent Completion Report** (v0.6.5 – Enterprise
|
|
237
|
+
**Agent Completion Report** (v0.6.5 – Enterprise Research)
|
|
170
238
|
|
|
171
239
|
- Mock used? [ ] No / [ ] Yes
|
|
172
|
-
- Codebase searched? [ ] No / [ ] Yes
|
|
173
|
-
-
|
|
240
|
+
- Codebase searched + dependencies analyzed? [ ] No / [ ] Yes
|
|
241
|
+
- **Architecture diagrams generated?** (Dependency Graph + ER when relevant) [ ] No / [ ] Yes
|
|
242
|
+
- **Hermes messages sent with proper trace + HLTS reference?** (HLTS-003 / HLTS-004 when applicable) [ ] No / [ ] Yes
|
|
243
|
+
- **Technical Debt Hotspots identified and logged?** [ ] No / [ ] Yes
|
|
244
|
+
- **New knowledge extracted into .enderun/knowledge/?** [ ] No / [ ] Yes
|
|
245
|
+
- **High-risk admin areas proactively flagged to @manager via Hermes?** [ ] No / [ ] Yes / [ ] N/A
|
|
174
246
|
- Log written? [ ] No / [ ] Yes → via log_agent_action tool
|
|
175
247
|
- PROJECT_MEMORY HISTORY updated? [ ] No / [ ] Yes
|
|
176
|
-
- **
|
|
248
|
+
- **Project-specific documentation written into the user project's own `docs/` folder (never into `.enderun/`)?** [ ] No / [ ] Yes
|
|
249
|
+
- **.enderun/knowledge/documentation_ownership.md read and followed?** [ ] No / [ ] Yes
|
|
177
250
|
- Next step: [what needs to be done]
|
|
178
251
|
- Blockers: [write if any, otherwise "NONE"]
|
|
179
252
|
|