Boundary / lifecycle / capability ontology + CVE articulation-hygiene (AP-011..AP-026 + AP-033..AP-040)
This page covers 24 anti-patterns drawn from two adjacent bands:
- AP-011..AP-026 (16 patterns) — boundary/lifecycle/capability ontology proper. These touch the capability ontology (linear / affine / relevant / unrestricted flavours), boundary discipline (wire encoding, authentication, invariants), and lifecycle / foundation transitivity (transitive citation chains, declaration vs body drift, foundation-content mismatch).
- AP-033..AP-040 (8 patterns) — CVE articulation-hygiene. These touch how cogs articulate their Constructive / Verifiable / Executable discharge — retracted-citation use, hypothesis without maturation plan, interpretation in mature corpus, observer impersonation, boundless audit, implicit substrate, anchoring overextension, self-reference without operator.
The two bands consolidated onto a single page because the CVE articulation patterns describe how cogs articulate their discharge — structurally close to the existing articulation discipline of the AP-011..026 band. See anti-patterns/coherence §2 for the full band-history note.
Patterns in this combined band fire either at arch-check
(per-cog predicates that touch only Shape plus the
DiagnosticContext) or at
post-arch (transitive predicates that walk the cog graph).
This page paraphrases each entry's predicate from the canonical anti-pattern catalog and its per-pattern predicates. For the catalog's overall structure see Anti-pattern overview.
AP-011 — AbsoluteBoundaryAttempt
Severity: error · Phase: arch-check · Stable since: v0.2
Predicate. Shape.stratum ≠ MsfsStratum::LAbs. A cog
declaring stratum: LAbs violates AFN-T α (MSFS Theorem 5.1):
the absolute foundation stratum is uniformly empty by
construction.
Why it matters. LAbs is the MSFS hierarchy's "outside-the-
hierarchy" marker; an algorithm that claims membership in
LAbs claims something AFN-T α refutes. The check protects the
reflection tower from
silent stratum corruption.
Remediation. Change the stratum to one of
{LFnd, LCls, LClsTop} per the cog's actual position in the
moduli space.
AP-012 — InvariantViolation
Severity: error · Phase: post-arch · Stable since: v0.2
Predicate. forall b : Boundary. forall i ∈ b.invariants. preserves(traffic(b), i). Every
declared BoundaryInvariant (AllOrNothing,
DeterministicSerialisation, AuthenticatedFirst,
BackpressureHonoured, Custom { name }) must be preserved by
the boundary's actual traffic.
Why it matters. Boundary invariants are the contract two
sides pin. A boundary that declares AllOrNothing but admits
partial-state traffic has unsound transactional semantics —
downstream consumers rely on the contract being honoured.
Remediation. Either remove the invariant from the boundary declaration (admit the relaxed contract), or restructure the traffic to honour it (typically by wrapping in a coordinator or two-phase commit).
AP-013 — DanglingMessageType
Severity: warning · Phase: arch-check · Stable since: v0.2
Predicate. forall m : MessageType ∈ boundary.messages. exists e : WireEncoding ∈ boundary.wire_encoding. e.supports(m).
Every message-type carried across a boundary must have a
configured wire encoding.
Why it matters. A message-type without an encoding is unimplementable: at runtime, the boundary cannot serialise the message, and the auditor cannot inspect what crosses.
Remediation. Set
@arch_module(boundary: { wire_encoding: ProtoBuf { schema_path: "..." } })
or one of the other four canonical encodings (VerumNative,
Json, MsgPack, RawBytes — note RawBytes is itself an
anti-pattern unless explicitly justified).
AP-014 — UnauthenticatedCrossing
Severity: error · Phase: arch-check · Stable since: v0.2
Predicate. boundary.physical_layer = Network ⇒ BoundaryInvariant::AuthenticatedFirst ∈ boundary.invariants.
Every Network boundary must declare the
AuthenticatedFirst invariant.
Why it matters. Network traffic without authenticated-first is the canonical anti-pattern from a security-architecture perspective: it admits unauthenticated commands and is the root cause of most breach categories. The check makes the contract visible at the architectural layer.
Remediation. Add BoundaryInvariant::AuthenticatedFirst to
the boundary's invariants and wire the corresponding
authentication mechanism (TLS client cert, OAuth2 bearer token,
mTLS, etc.).
AP-015 — DeterministicViolation
Severity: error · Phase: arch-check · Stable since: v0.2
Predicate. Shape.tag = "dst_test" ⇒ ∀ deps. deterministic(deps).
A deterministic-simulation-test (DST) cog must not depend on
non-deterministic primitives (system time, random, network
ordering, file-system enumeration order).
Why it matters. DST tests are reproducibility-critical: their
verdict must be a function of the seed alone. A test that uses
Time::now() or Random::default() produces flaky results that
the audit chronicle cannot trust.
Remediation. Inject the non-determinism source as a
context (using [Clock, Rng])
and wire a deterministic implementation in the test harness.
AP-016 — CapabilityDuplication
Severity: error · Phase: arch-check · Stable since: v0.2
Predicate. forall c : Linear ∈ Shape.requires. multiplicity(c, Shape.exposes ∪ uses(cog)) ≤ 1. A linear
capability may be used at most once.
Why it matters. Linearity is multiplicity-1; using a linear capability twice violates the substructural-logic discipline that backs Verum's safety story.
Remediation. Either consume the capability exactly once, or
weaken its @quantity(1) to @quantity(omega) if duplication
is acceptable for that capability.
AP-017 — OrphanCapability
Severity: warning · Phase: arch-check · Stable since: v0.2
Predicate. forall c : Relevant ∈ Shape.requires. exercised(c, body(cog)). A relevant capability declared in
requires must actually be exercised somewhere in the cog
body.
Why it matters. Relevant capabilities (substructural multiplicity ≥ 1) are required to be used. An orphan relevant capability is either an over-declared surface (remove it) or a missing implementation (fix the body). Either way, the architecture lies about what the cog does.
Remediation. Either remove the capability from requires
or add the missing usage in the body.
AP-018 — MissingHandoff
Severity: error · Phase: post-arch · Stable since: v0.2
Predicate. forall composition c. c.passes_capability ⇒ c.target ∈ Shape.composes_with. A cog that hands off a
capability to another cog must list that cog in
composes_with.
Why it matters. Capability handoff is composition with
side-effects: the receiving cog now holds something the
auditor cannot trace from the source cog's composes_with
list. The check ensures every handoff is architecturally
visible.
Remediation. Add the receiving cog's identifier to the
sending cog's composes_with list.
AP-019 — FoundationDowngrade
Severity: error · Phase: post-arch · Stable since: v0.2
Predicate. forall (A → ... → B) ∈ proof_chain. A.foundation.strength ≥ B.foundation.strength ∨ exists bridge(A, B). A proof chain — direct or transitive —
must not silently downgrade the foundation between steps
without an explicit functor-bridge.
Why it matters. Foundation strength is monotone under proof
composition: a Cubical proof can be imported into a HoTT
context, but the reverse needs a bridge that proves the
preservation contract. Silent downgrade hides the fact that the
proof is no longer load-bearing in the upstream foundation. The
transitive case is subtler: a chain Cubical → HoTT → ZFC
can pass each adjacent edge under a local bridge claim while
the end-to-end composition still drops two strata.
Implementation. As of 2026-05-06 the check runs on two
layers — the direct one-hop edge surface (already present in
the peer_resolution band) plus the transitive layer composed
against verum_kernel::arch_transitive::for_each_transitive_peer.
Indirect violations surface in PhaseInputs.foundation_downgrades
with depth ≥ 2; the regular AP-019 emitter consumes both
sources. See
Audit protocol → Transitive peer-resolution layer.
Remediation. Add a functor-bridge cited via
@framework(bridge_corpus, ...), or align the proof chain to
work in the weaker foundation throughout.
AP-020 — TimeBoundLeakage
Severity: warning · Phase: arch-check · Stable since: v0.2
Predicate. forall c : TimeBound ∈ Shape.requires. exercised_within(c.until, c). A time-bound capability must be
exercised before its declared expiry.
Why it matters. A time-bound capability whose deadline can elapse before exercise is dead code at the architecture level — it consumes auditing budget without protecting any boundary.
Remediation. Either tighten the issuing scope so the capability is exercised before expiry, or extend the expiry policy so it covers the actual usage window.
AP-021 — PersistenceMismatch
Severity: warning · Phase: arch-check · Stable since: v0.2
Predicate. forall c : Persist ∈ Shape.requires. durable(operations_under(c)). A Persist capability must
guard operations that actually have durable semantics.
Why it matters. Declaring Persist { medium: Disk { path } }
for an operation that only writes to a buffer is a category
error: the audit chronicle records "persisted" but the
operation evaporates on process exit.
Remediation. Either move the operation to a durable medium (actual disk write, database commit, distributed-log append) or downgrade the capability to a non-persistent flavour.
AP-022 — CapabilityLaundering
Severity: error · Phase: post-arch · Stable since: v0.2
Predicate. forall (A → B → C) ∈ capability_chain. A.privilege ≤ C.privilege ⇒ visible_handoff(A, B) ∧ visible_handoff(B, C).
Multi-hop privilege escalation must trace through visible
boundaries at every step.
Why it matters. Capability laundering is the architectural analogue of privilege escalation in a security context: the final cog ends up with elevated privilege the auditor cannot attribute to a specific source. Every hop must declare what it hands off, so the chronicle reconstructs the full chain.
Remediation. Make every privilege-elevating handoff explicit
in the sending cog's composes_with list and the receiving
cog's requires list.
AP-023 — FoundationForgery
Severity: error · Phase: post-arch · Stable since: v0.2
Predicate. Shape.foundation.consistent_with(cited_axioms).
A cog declaring foundation: Hott must not cite
@framework(corpus, ...) axioms from a foundation Hott cannot
interpret.
Why it matters. Foundation forgery is one of the most subtle architectural defects: the auditor reading the Shape sees "this cog uses HoTT" but the body relies on axioms that need ZFC + extra inaccessibles. The audit verdict would be load-bearing-on-paper but not in fact.
Remediation. Either align the cited corpus to the declared foundation, or change the declared foundation to one that admits all cited axioms.
AP-024 — TransitiveLifecycleRegression
Severity: error · Phase: post-arch · Stable since: v0.2
Predicate. forall path = (A_1 → ... → A_n) ∈ citation_chain. ∀ i. A_i.lifecycle.rank() ≥ A_{i+1}.lifecycle.rank(). The
direct-citation regression rule (AP-009) lifted to transitive
chains.
Why it matters. A theorem [T] may legitimately cite a
postulate [P], which legitimately cites another theorem
[T], but if the chain ever passes through a hypothesis [H],
the original theorem inherits the hypothesis's strength even
though no single citation regresses. Transitive walking
surfaces this.
Implementation. As of 2026-05-06 the predicate is checked
through verum_kernel::arch_transitive::resolve_transitive_lifecycle_regressions
— a depth-first walker over Session.arch_shape_registry with
built-in cycle prevention and MAX_TRANSITIVE_DEPTH = 32. The
filter is depth ≥ 2: depth-1 (direct) regressions are caught
by AP-009. Violations surface in
PhaseInputs.transitive_lifecycle_regressions with the full
intermediate-cog path so audit output preserves the chain.
Remediation. Mature every link in the chain to at least the citing artefact's rank, or insert an explicit downgrade marker that breaks the transitive claim.
AP-025 — DeclarationDrift
Severity: error · Phase: arch-check · Stable since: v0.2
Predicate. Shape == infer_shape(body(cog)). The declared
@arch_module(...) shape must match the inferred shape from
the cog body.
Why it matters. Declaration drift is the catch-all architectural defect: anything the body does that the declaration doesn't capture (and vice-versa) is a lie at the architecture level. Auditors reading attributes must be reading truth.
Remediation. Either update the declaration to match the body (the audit's preferred fix) or remove the body content the declaration doesn't admit.
AP-026 — FoundationContentMismatch
Severity: warning · Phase: arch-check · Stable since: v0.2
Predicate. forall construct ∈ body(cog). construct.foundation ⊆ Shape.foundation.admitted_constructs().
The cog's body must not invoke language constructs that belong
to a different foundation than the declared one.
Why it matters. Cubical-only constructs (Path, hcomp,
transp) inside a ZFC-foundation cog mean either the cog is
mis-declared or the construct is being used informally. Either
way, the auditor's foundation-strength reasoning is wrong.
Remediation. Either change Shape.foundation to one that
admits the construct, or rewrite the body to avoid the
foreign-foundation construct.
CVE articulation-hygiene band (AP-033 .. AP-040)
The CVE-AH band operationalises the CVE-architecture load-bearing concepts that ATS-V was missing on its first canonical release: the three senses of the E axis, the seven-symbol articulation discipline, the cognitive substrate disclosure, the formal anchoring boundary, the audit termination via declared purpose, the L6 register prohibitions (§16), and the operator+fixed-point discipline for self-reference (§16). AP-040 closes architectural-revision invariant R4.
Patterns in this band fire either at arch-check (per-cog
predicates touching Shape.declarations) or at post-arch
(transitive predicates that walk the cog graph).
AP-033 — RetractedCitationUse
Severity: error · Phase: post-arch · Stable since: v0.3
Predicate. forall c ∈ Shape.composes_with. ¬ matches(lifecycle(c), Lifecycle::Retracted{..})
unless the citing cog is itself Lifecycle::Retracted.
Why it matters. Distinct from
AP-009 LifecycleRegression: AP-009 fires
on rank regression generally; AP-033 fires specifically on [✗]
citation regardless of citing rank. The retraction's reason
field is meant to be load-bearing — silent citation defeats the
negative-example role of the audit chronicle per
cve-architecture spec §3.5.
Remediation. Either remove the citation, or migrate to the
replacement artefact declared in the retraction record.
AP-034 — HypothesisWithoutMaturationPlan
Severity: error in strict mode, warning otherwise · Phase: arch-check · Stable since: v0.3
Predicate.
matches(Shape.lifecycle, Lifecycle::Hypothesis{..}) ⇒ has_attribute(@plan(...)).
Why it matters. Per
cve-architecture spec §3.5,
a [H] Hypothesis is the structural commitment to an articulated
maturation path. Without @plan(...) the cog degrades to [I]
Interpretation — a hidden CVE-violator — without naming the
degradation. AP-034 closes this silent-degradation defect.
Remediation. Add @plan(target: "v0.X", milestones: [...]) to
the cog, or downgrade to Lifecycle::Interpretation { reason: "..." }
explicitly.
AP-035 — InterpretationInMatureCorpus
Severity: error · Phase: arch-check · Stable since: v0.3
Predicate.
matches(Shape.lifecycle, Lifecycle::Interpretation{..}) ⇒ ¬ Shape.strict ∧ ¬ in_mature_corpus(cog).
Why it matters. Per
cve-architecture spec §3.4 + §6.7 L6,
mature corpora must contain ZERO [I] entries. The [I] status
is the canonical CVE-violator: all three axes absent and no plan
to formalise. Mature practice closes every [I] by one of three
transformations: prove → [T]/[C], downgrade → [H] with
@plan(...), or remove the cog.
Remediation. Apply one of the three transformations above.
Naming the status [I] rather than "todo" or "draft" forces
the choice rather than allowing silent decay.
AP-036 — ObserverImpersonation
Severity: error · Phase: post-arch · Stable since: v0.3
Predicate. Every observer-tagged emit in the audit chronicle must have its assertion register match the observer role.
Why it matters. Per
cve-architecture spec §6.7 L6 + §16,
a register collision across observer roles (e.g. an EndUser
assertion attached to an architectural-shape claim that lives in
the Architect register) is a silent defect in the audit
chronicle. Distinct from
AP-029 MissedAdjoint: AP-029 fires on
architectural decisions; AP-036 fires on audit-chronicle prose.
Remediation. Either narrow the observer role to one matching
the assertion content, or qualify the assertion to specify the
layer it ranges over. Both Verum's verum audit --bundle L6
self-application gate and the LSP hover surface flag the
mismatch.
AP-037 — BoundlessAudit
Severity: error · Phase: arch-check · Stable since: v0.3
Predicate.
Shape.strict ⇒ Shape.declarations.is_some() ∧ Shape.declarations.purpose.is_some().
Why it matters. Per
cve-architecture spec §14.6,
the audit terminates relative to a declared Purpose. Without
one, the protocol has no halting criterion and degenerates into
infinite polishing — for Turing-complete systems forbidden by
Rice's theorem, for trained models forbidden by the natural
opacity of high-dimensional weights.
Remediation. Add to @arch_module(...):
declarations: ShapeDeclarations {
purpose: Some(Purpose {
role: "...",
k_min: CveThresholdK.FullWitness, // or TypedSchema, ReferenceImplBounded
v_min: CveThresholdV.TypecheckPlusTests, // or FullFormalProof, NamedCertification
e_min: CveThresholdE.StructurallyReady, // or DeployedInOneEnv, FunctorialOnly
}),
..ShapeDeclarations::empty()
}
AP-038 — ImplicitSubstrate
Severity: error · Phase: arch-check · Stable since: v0.3
Predicate.
(matches(Shape.lifecycle, Lifecycle::Theorem{..}) ∧ Shape.strict) ⇒ Shape.declarations.substrate.is_some().
Why it matters. Per
cve-architecture spec §1.5,
declaring the cognitive substrate is part of operational hygiene —
CVE knows its mode and does not masquerade as a universal neutral
apparatus. A strict-mode [T] cog without explicit substrate is
operationally indistinguishable from a vacuous claim of
universality.
Remediation. Add to @arch_module(...):
declarations: ShapeDeclarations {
substrate: Some(CognitiveSubstrate.AnalyticDecompositional),
// ... or HolisticRelational, ActionCentric, TraditionTransmitting
// for cogs in non-default substrate domains
..ShapeDeclarations::empty()
}
AP-039 — AnchoringOverextension
Severity: error in strict mode, warning otherwise · Phase: arch-check · Stable since: v0.3
Predicate.
(matches(Shape.lifecycle, Lifecycle::Theorem{..}) ∧ ¬ in_chl_domain(Shape.foundation)) ⇒ Shape.declarations.anchoring.is_some().
The CHL domain is {ZfcTwoInacc, Cic, Mltt, Hott, Cubical, Eff};
CustomFoundation { ... } is outside the CHL domain.
Why it matters. Per cve-architecture spec §4.5, the CHL anchoring is the most-developed of the seven anchorings; extending the CVE law to other domains (automata theory, control theory, distributed protocols, functional systems, institutional design) requires explicit declaration. Without it, the artefact silently inherits CHL semantics it does not satisfy.
Remediation. Add to @arch_module(...):
declarations: ShapeDeclarations {
anchoring: Some(FormalAnchoring.AutomataTheory),
// ... or ControlTheory, DistributedProtocols, FunctionalSystems,
// InstitutionalDesign, CustomAnchoring("..."), depending on
// the actual domain of formalisation
..ShapeDeclarations::empty()
}
AP-040 — SelfReferenceWithoutOperator
Severity: error in strict mode, warning otherwise · Phase: arch-check · Stable since: v0.4
Predicate.
(self_path ∈ shape.composes_with ∨ ∃ c ∈ shape.exposes ∪ shape.requires. capability_target_text(c) ⊇ self_path) ⟹ shape.declarations.self_reference.is_some(),
where self_path is the cog's fully-qualified module path.
Why it matters. Per
cve-architecture spec §16
articulation hygiene, every self-X claim must be re-articulated
as (operator T_X, fixed point Fix(T_X)) with a cited fixpoint-
class theorem. A bare self-X assertion (cog citing itself in
composes_with, capability targeting the cog's own holon,
constitution ratifying its own amendment process) is operationally
indistinguishable from a Russell-paradox construction: the
chain's auditor cannot distinguish a legitimate fixed-point from
a circular self-reference without the witness. AP-040 closes the
architectural-revision open invariant R4.
Detection scope. The check inspects three textual surfaces:
shape.composes_with— direct self-citation (most common).shape.exposesandshape.requires— capability targets (Read/Writeresource tags,Customcapability tags) whose target text contains the cog's own path. Examples:Capability.Read(ResourceTag.Database("synarc.governance.constitution"))declared by thesynarc.governance.constitutioncog → self-X via capability target.Capability.Custom { tag: "synarc:holon/<self>" }declared by the cog whose path matches<self>→ self-X via custom tag.
- The check is string-level, not semantic; it catches the
bare assertion. Subtle semantic self-reference (e.g., a cog
that references another cog which references the first) is
bounded by AP-003
DependencyCycle.
Remediation. Add declarations.self_reference: Some(...) to
the @arch_module(...):
declarations: ShapeDeclarations {
self_reference: Some(SelfReferenceWitness {
operator: "path.to.operator_cog", // T_X
fixed_point: "path.to.fixed_point_cog", // Fix(T_X)
fixpoint_class: FixpointClass.Banach,
// // or Tarski / Adamek / CustomFixpoint("...")
}),
..ShapeDeclarations::empty()
}
The operator cog must have lifecycle ≥ Conditional and
discharge the cited fixpoint-class obligation. The fixpoint
class names which theorem closes existence (and uniqueness where
applicable) of Fix(T_X):
| Class | Theorem | When to cite |
|---|---|---|
Banach | Banach fixed-point | contracting operator on complete metric space |
Tarski | Tarski-Knaster | monotone operator on complete lattice |
Adamek | Adamek's theorem on initial algebras | continuous functor on cocomplete category |
CustomFixpoint(citation) | user-cited theorem | requires @framework(...) attribute |
Worked example. A constitution amendment cog without a witness vs. with a witness:
// Triggers AP-040 in strict mode:
@arch_module(
composes_with: ["synarc.governance.constitution"], // SELF
strict: true,
// declarations omitted
)
module synarc.governance.constitution;
// Admitted (constitution as fixed point of amendment operator):
@arch_module(
composes_with: ["synarc.governance.constitution"],
strict: true,
declarations: ShapeDeclarations {
self_reference: Some(SelfReferenceWitness {
operator: "synarc.governance.amendment_operator",
fixed_point: "synarc.governance.constitution",
fixpoint_class: FixpointClass.Banach,
}),
..ShapeDeclarations::empty()
},
)
module synarc.governance.constitution;
The second form re-articulates the bare self-X as «the constitution is the unique fixed point of the amendment operator under Banach's theorem». The amendment-operator cog discharges the contraction-coefficient bound; AP-040 admits the cog because the witness is present.
See also
- Anti-pattern catalog overview — the indexing page with the full 40-entry table.
- Capability / composition core (AP-001..AP-010)
- Modal-temporal anti-patterns (AP-027..AP-032)
- Reflection tower — for
the AP-011
LAbsclaim's MSFS Theorem 5.1 backing. - Three-tier reference model — for
AP-016
CapabilityDuplication's linearity discipline. - CVE overview — the cve-architecture spec primitives that the CVE-AH band (AP-033..AP-040) operationalises.
- Audit protocol — termination through Purpose — the CVE-AH band's load-bearing concept for AP-037.
- Articulation hygiene §8 — self-reference — the operator+fixed-point discipline behind AP-040.
- Architectural revisions chronicle §7 — R4 closure — the open invariant that AP-040 closes.