Kibi includes deterministic derived predicates for internal analysis and automation. These predicates are not exposed as a raw public inference surface.
transitively_implements(Symbol, Req)transitively_depends(Req1, Req2)impacted_by_change(Entity, Changed)affected_symbols(Req, Symbols)coverage_gap(Req, Reason)untested_symbols(Symbols)stale(Entity, MaxAgeDays)orphaned(Symbol)conflicting(Adr1, Adr2)deprecated_still_used(Adr, Symbols)current_adr(Id)superseded_by(OldId, NewId)adr_chain(AnyId, Chain)contradicting_reqs(ReqA, ReqB, Reason)
contradicting_reqs/3 uses strict requirement semantics only for current requirements.
current_req/1excludes deprecated and superseded requirements.- A contradiction requires both requirements to:
constrainsthe samefact_kind=subjectfact (matched bysubject_key)requires_propertyafact_kind=property_valuefact for that same subject
observationandmetafacts are excluded from contradiction inference.- Conflict classes currently covered:
- exact-value conflicts like
eq pendingvseq granted - numeric range gaps like
lte 2vsgte 3 - polarity conflicts like
requirevsforbidon the same normalized tuple
- exact-value conflicts like
- Scope and validity windows only conflict when they intersect.
These predicates remain useful for product features, automation, and future internal services. Public MCP agents should use the curated public surface instead:
kb_searchkb_querykb_statuskb_find_gapskb_coveragekb_graphkb_upsertkb_deletekb_check
strict-fact-shape- checks only facts that already declare
fact_kind - ignores legacy prose facts without
fact_kind - is intended for migration auditing and is safe to keep disabled by default while older repos are being normalized
- can be opted into explicitly through CLI/MCP rule selection when a repo is ready to inspect or enforce strict fact shape
- checks only facts that already declare
If deeper inference needs to be re-exposed in the future, it should be documented explicitly as a separate product decision rather than silently expanding the curated public surface.
Bug records, incident notes, and workaround documentation should use observation or meta facts rather than strict fact modeling. Since observation and meta facts are excluded from contradiction inference, they are appropriate for non-blocking evidence like bugs and temporary workarounds.
Rule: Use observation or meta fact_kind for bug/workaround notes. Do NOT create a flag entity for bugs unless there is an actual runtime/config gate.