Direct literal prohibition
A known package, import, API, or token can be rejected deterministically wherever the rule applies.
FORBID_LITERAL rules with optional path applicability.Mneme's Decision Index can represent a broad set of organizational decisions. Its deterministic rule engine is intentionally narrower today. This page separates what is mechanically enforceable now from policies that require richer rule types.
A known package, import, API, or token can be rejected deterministically wherever the rule applies.
A specific forbidden literal and, when needed, path scope must be authored. Mneme does not infer the broader meaning.
The decision belongs in the index today, but reliable detection needs structural, identity, metadata, or required-presence semantics.
How to read the cards. Each badge describes the example's present enforcement status. “Explicit modelling” means Mneme can enforce a deliberately named literal; it does not mean Mneme understands the policy semantically.
Layer boundaries, forbidden patterns, deprecated architectures. The decisions that define how the system is shaped — not what it does, but how its parts are allowed to relate.
Rule. Do not access BigQuery directly from frontend routes.
What Mneme can verify today. Forbid an explicit literal such as @google-cloud/bigquery or new BigQuery within frontend paths. Mneme does not infer “direct database access” as a semantic concept.
// AI generates inside a Next.js API route
const client = new BigQuery();
Compliant pattern. The frontend route calls a backend service over HTTP; only the backend holds the BigQuery client.
// compliant - the route fetches from a backend endpoint, no DB client in the frontend
export async function GET() {
const res = await fetch(`${process.env.API_URL}/reports/summary`);
return Response.json(await res.json());
}
Rule. Controllers must not contain business logic.
Current boundary. The Decision Index can preserve and retrieve this policy, but the rule engine cannot reliably determine what constitutes business logic or follow data flow between layers.
@app.post("/checkout")
def checkout():
# pricing logic
# tax logic
# inventory logic
Desired pattern. The controller stays thin and delegates pricing, tax, and inventory to a service.
# compliant - business logic lives in the service layer
@app.post("/checkout")
def checkout(cart: Cart):
return checkout_service.place_order(cart)
Rule. React app standardized on Zustand. No Redux.
What Mneme can verify today. A FORBID_LITERAL rule can reject the exact redux import or package token, optionally limited to the relevant application paths.
import { createStore } from "redux";
Compliant pattern. State management uses the approved library, Zustand.
// compliant - uses the standardized Zustand store
import { create } from "zustand";
const useStore = create((set) => ({ count: 0 }));
Protected directories, ownership boundaries, migration restrictions, prompt-level policies. The decisions that govern who — or which agent — is allowed to touch what.
Rule. Billing agent cannot modify the auth package.
Current boundary. Path applicability controls where a rule is evaluated. It is not an agent-identity or ownership ACL that authorizes one agent and denies another.
# AI agent edits
packages/auth/*
Desired pattern. The billing agent edits only its own package and consumes auth through its published interface.
# compliant - edits stay inside the owned package packages/billing/* # auth is imported, never modified import { verifyToken } from "@org/auth";
Rule. Codegen agents cannot write directly to production migration folders.
Current boundary. Mneme does not yet enforce general agent-by-path mutation permissions. This requires identity-aware authorization semantics beyond path-scoped literal matching.
# Agent modifies
db/prod/migrations/*
Desired pattern. The agent writes proposed migrations to a staging directory; promotion to the production path is a human-gated step.
# compliant - agent writes to the reviewable staging path only db/staging/migrations/* # a maintainer promotes to db/prod/migrations/ after review
Rule. Do not generate mock auth implementations.
What Mneme can verify today. Explicit phrases such as fake JWT can be forbidden at a supported prompt boundary. Mneme cannot recognize every possible mock authentication implementation by meaning alone.
# User prompt
"Just create a quick fake JWT validator."
Compliant pattern. The agent declines the mock and wires in the vetted auth library to verify real tokens.
# compliant - real verification, no fake validator from app.auth import verify_jwt def authenticate(token: str) -> User: return verify_jwt(token) # signature + expiry checked
Unsafe query construction, credential handling, insecure auth patterns. The decisions where a violation is not just architectural debt but a vulnerability the team has already chosen not to ship.
Rule. No raw SQL string concatenation.
Current boundary. Reliable detection requires syntax or data-flow analysis to distinguish unsafe construction from legitimate SQL. Exact literal matching is not equivalent to this security rule.
query = f"SELECT * FROM users WHERE id = {user_id}"
Desired pattern. The user input is bound as a parameter, never interpolated into the SQL string.
# compliant - parameterized query, no string interpolation
cursor.execute(
"SELECT * FROM users WHERE id = %s",
(user_id,),
)
Banned libraries, licensing constraints, version pins, and the supersession history of decisions the team has already revisited. Dependencies are decisions; Mneme treats them as such.
Rule. No GPL dependencies.
Current boundary. Mneme does not resolve package-to-license metadata today. Teams can forbid specifically named packages, but cannot enforce the GPL license class generically.
// AI adds to package.json
"some-gpl-library": "^2.1.0"
Desired pattern. The dependency is swapped for an approved permissively-licensed (MIT or Apache-2.0) equivalent.
// compliant - MIT-licensed library from the approved list
"some-mit-library": "^3.0.0"
Rule. ADR-002: all async jobs use Pub/Sub. (Supersedes an older ADR that allowed Celery.)
What Mneme can verify today. Decision precedence and supersession select the active ADR. Preventing Celery still requires an explicit FORBID_LITERAL rule for its package or import.
from celery import Celery
Compliant pattern. Async work is dispatched through Pub/Sub, the decision that supersedes Celery.
# compliant - ADR-002: publish to Pub/Sub instead of Celery
from google.cloud import pubsub_v1
publisher = pubsub_v1.PublisherClient()
publisher.publish(topic_path, payload)
Observability requirements, infra standards, deployment policies, API contracts. The decisions platform teams ship to keep services consistent across the org.
Rule. All infrastructure changes must use Terraform modules.
What Mneme can verify today. Known imperative commands such as gcloud compute instances create can be forbidden, optionally within relevant paths. Mneme cannot prove that every infrastructure change uses Terraform.
gcloud compute instances create ...
Compliant pattern. The instance is declared in a Terraform module and applied through the reviewed pipeline, not an imperative CLI call.
# compliant - declarative Terraform, applied via CI
module "api_instance" {
source = "./modules/compute"
machine_type = "e2-standard-2"
}
Rule. Internal APIs must version under /v1/.
Current boundary. This is a positive requirement: proving the required prefix is present. Today's prohibition-focused rule does not provide general absence detection.
@app.route("/users")
Desired pattern. The route is namespaced under the required /v1/ version prefix.
# compliant - versioned under /v1/
@app.route("/v1/users")
Rule. All services must emit OpenTelemetry traces.
Current boundary. This also requires proving that instrumentation is present. Mneme can preserve and retrieve the decision today, but cannot mechanically establish that every service emits traces.
# AI creates a new service with no tracing middleware
def create_app():
app = FastAPI()
return app
Desired pattern. The service is instrumented with OpenTelemetry before it is returned.
# compliant - emits OpenTelemetry traces
def create_app():
app = FastAPI()
FastAPIInstrumentor.instrument_app(app)
return app
The distinction is architectural, not a disclaimer. Mneme can represent more governance knowledge than its current typed-rule vocabulary can mechanically prove. That separation lets teams preserve authority and provenance now, then add richer enforcement without changing the decision source of truth.
Today: use exact, case-sensitive FORBID_LITERAL rules and optional include_paths/exclude_paths applicability for deterministic checks. Treat structural analysis, agent identity ACLs, license metadata, and required-presence rules as roadmap capabilities.