TorbatYar/docs/ai-framework/boundary-rules.md
2026-07-28 20:39:10 +03:30

58 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Boundary Rules
Hard constraints for every implementation phase. Violations block completion.
Canonical ownership: [module-boundaries.md](../architecture/module-boundaries.md). Process mandate: [ADR-018](../architecture/adr/ADR-018.md).
## Service & Module Boundaries
1. **Never implement responsibilities owned by another service.**
2. **Never duplicate business logic** that already lives in an owning service — consume it.
3. **Never access another services database** (no cross-DB queries, FKs, or shared schemas).
4. **Integrate only through** versioned HTTP APIs, domain/integration Events, and Provider interfaces.
5. **Never import** another services models, repositories, or private modules.
## Phase Boundaries
1. **Never move functionality from future phases into the current phase.**
2. **Never silently expand Scope** into adjacent modules “while were here.”
3. **Out of Scope is binding** — document exclusions and respect them.
4. High-level roadmap text authorizes **deriving production engineering** for the current phase ([definition-of-done.md](definition-of-done.md), [enterprise-phase-discovery.md](enterprise-phase-discovery.md)), **not** pulling next-phase product features forward.
## Data & Logic Boundaries
| Allowed | Forbidden |
| --- | --- |
| External ID / ref fields (`*_ref`) | Cross-service foreign keys |
| HTTP clients to published APIs | Reading foreign ORM models |
| Outbox → event bus → consumers | Dual-writing the same journal/aggregate in two services |
| Provider adapters in the **owning** service | Implementing SMS/payment/etc. inside a non-owning vertical |
| Shared-lib envelopes/exceptions/JWT helpers | Shared-lib business workflows |
## Accounting & Platform Specials
1. Journal entries only via Accounting Posting Engine ([ADR-010](../architecture/adr/ADR-010.md)).
2. Messaging providers only inside Communication ([ADR-012](../architecture/adr/ADR-012.md)).
3. Product AI remains optional and independent ([ai-architecture.md](../architecture/ai-architecture.md)).
4. Public-surface cross-service attachments use **`publish_id`** only ([ADR-022](../architecture/adr/ADR-022.md)) — never Experience/vertical internal tables as the integration key.
## Frontend / Backend
1. UI only under `frontend/` ([ADR-002](../architecture/adr/ADR-002.md)).
2. Backend never embeds UI rules as the source of truth.
3. Frontend never imports backend packages.
## Enforcement
- Architecture Validation stage ([development-loop.md](development-loop.md))
- Architecture / Integration gates ([quality-gates.md](quality-gates.md))
- Architecture tests in the service suite ([testing-template.md](testing-template.md))
## Related Documents
- [Module Boundaries](../architecture/module-boundaries.md)
- [Enterprise Phase Discovery](enterprise-phase-discovery.md)
- [Master Prompt](master-prompt.md)
- [Service Template](service-template.md)
- [Module Template](module-template.md)