Constraints
Lists 40+ technical, architectural, and workflow constraints that guide early-stage development of a memory-augmented agent system.
What this file does
Lists 40+ technical, architectural, and workflow constraints that guide early-stage development of a memory-augmented agent system.
When to use it
- Starting a new project with many design decisions still unsettled
- Documenting non-negotiable rules for a team working on a memory system
- Recording constraints from a shared database or service that others must respect
- Setting up a commit gate with linting, tests, and coverage requirements
Assumes this stack
Constraints
Last updated: 2026-03-24
Technical Constraints
- Python version target is
>=3.10. - Keep declared dependencies minimal until the durable memory model and storage boundary are clearer.
- The codebase is at a very early stage, so added complexity should be justified by immediate value.
- The target graph service is Memgraph on
odin:7697, not a fresh localhost database.
Product And Architecture Constraints
- The intended tool direction is local-first and domain-agnostic at the start.
- The existing large design document should be treated as an active design input, not as proof that features exist.
- Future work should preserve a clean separation between repository memory, raw artifacts, and derived summaries.
- The verified Memgraph target is a shared instance with pre-existing labels, indexes, constraints, and data.
- Any MemoryVault graph design must include workspace isolation and globally unique IDs.
- Goal state, plan state, constraints, and recorded success / failure history must never become optional memory.
- High-value task-state memory should not be aggressively compressed away.
- Session state and long-term memory should remain distinct subsystems.
- Scratchpad state should remain distinct from durable memory.
- Retrieval should be guided by the active goal, but durable memory must remain grounded in provenance and exact source correspondence.
- Active-task context should include an explicit goal reminder and structured current-state header.
- Durable memories should retain provenance and confidence information.
- Declarative memories and procedural memories should not be forced through one identical lifecycle.
- Procedural guidance should grow incrementally as curated playbooks rather than through repeated whole-context rewrites.
- The architecture should avoid context-collapse patterns that destroy detail in the name of brevity.
- Long-term memory generation should stay off the user-facing hot path whenever practical.
- The design should optimize for both task quality and resource cost, not one in isolation.
- Durable declarative memory updates should be explicit and auditable rather than opaque whole-store rewrites.
- Evaluation should include goal drift, repeated failure, and context-collapse cases rather than only retrieval accuracy.
- The final goal should remain explicit in every resume packet during the discovery phase.
- Shared-service use must enforce tenant and workspace isolation at the service, storage, and cache layers.
- Cache keys must include enough identity and strategy context to prevent cross-tenant or cross-policy leakage.
- Concurrent task updates must not rely on last-write-wins alone; they need explicit versioning or leases.
- The canonical integration boundary should stay platform-neutral and must not assume one agent host or one programming language.
- Onboarding must be useful without mandatory manual preparation.
- Any starter ontology or starter pack must be optional and safe to ignore.
- Semi-automatic graph creation must not be treated as sufficient evidence for control-plane truth.
- At design time, assume no private real-world data.
- Whenever non-simulated input is needed, prefer public Hugging Face datasets.
- Public benchmark data should be adapted into interrupted-task resume checks instead of being treated only as one-shot benchmark scores.
- Early real-task intake should use a simple inspectable file format before live capture is added.
- Any local commit gate should require passing Python linting, Markdown linting, release-version sync checks, the test suite, and at least 90% coverage.
- Logging and observability should stay local-first and lightweight until broader strategy comparison exists.
Workflow Constraints
.codex/should stay concise and useful; it is not a dumping ground for session chatter.- Durable repo knowledge should be written down here rather than left implicit.
- If the repository state changes in a meaningful way, the relevant
.codexfiles should be updated in the same task. - User-authored or pre-existing files should not be overwritten casually, especially the large design note in the repo root.
- Planning should be revised critically before implementation instead of treating the first design as settled.
- Discovery logs should stay inspectable and local so repeated misses can be reviewed before the durable schema is hardened.
- MCP, HTTP, and event integrations should share one business-logic core rather than fork behavior across adapters.
- Onboarding defaults should be benchmarked before they are promoted into durable workspace conventions.
What's inside
Three sections: Technical Constraints (7 items), Product And Architecture Constraints (30 items), Workflow Constraints (9 items).
Change this for your project
- Replace
odin:7697with your own Memgraph host and port - Replace
MemoryVaultwith your own project name - Replace
>=3.10with your own Python version target - Replace
90% coveragewith your own coverage threshold
Where it goes
Keep it in your repository where the agent or team that needs it will read it.
Worth borrowing
- Separating session state, long-term memory, and scratchpad as distinct subsystems
- Requiring explicit versioning or leases for concurrent task updates instead of last-write-wins
- Keeping discovery logs inspectable and local before hardening the durable schema
Related Documents
DunApp PWA - Project Constraints
Defines 14 hard constraints for a Hungarian PWA project, banning Netlify deployment and enforcing local-only testing, Supabase backend, and zero-cost development.
Constraints
Defines a three-tier priority system for design decisions, with conflict resolution examples to guide trade-offs.
Version Constraints Guide
Teaches Composer version constraint syntax for WordPress plugins and themes using a custom shell script wrapper.
Specifying version constraints
Explains how to pin Terraform CLI, provider, and Ansible versions for IBM Cloud Schematics workspaces and actions.