Repository navigation
kibi-cli@2.13.0
Minor Changes
-
89d8b8e:
kb_modelmodepredicatesno longer offers a predicate plan thatkb_checkwould then reject. The requirement's subject now binds the argument a schema namessubjectwherever it sits, and for a schema without one (such aspermission_rule) it is recorded as the planned predicate fact'ssubject_key; a predicate that is not about a subject the requirement constrains staysprovide_argument_bindingswith a hint instead ofreplace_groundingorapply_requires_predicate. A value taken from the claim for an actor, resource or other participant that is a long clause (more than three words) is no longer accepted as a binding.Technical summary:
buildSuggestionbindssubjectHintor the single constrained subject intoargument_names.indexOf("subject")and addssubject_keyandsubject_pairing(paired,unpaired,not_required) to each candidate; an unpaired candidate getssubjectorsubject_keyinunbound_arguments, abindingHintsentry (position -1 forsubject_key) and a warning naming the schema.buildPredicateApplyPlanwritessubject_keyon the planned fact when it is known, soreplacementPlanstep 1 carries it.classifyBindingtreats an extracted value of anentity,actor,actor_scope,resource,owner,roleorcomponentargument with more than three snake-case words as a placeholder (clauseBindingReason), and the hint says why. The constrained subjects are now read even whensubjectHintis passed. The kibi-usage skill (2.9.0) describessubject_keyand short participant bindings.
Patch Changes
-
89d8b8e:
kb_checknow pairs a requirement's subject fact with a predicate that is about that subject wherever the predicate keeps it. Until nowstrict-req-fact-pairingonly accepted a predicate whose first argument was the subject key, so a permission rule (permission_rule(actor, action, resource, decision)) or any schema with its subject elsewhere was reported even after following akb_modelreplacement plan exactly. A predicate fact can now say which subject it is about with its ownsubject_key.Technical summary:
strict_req_predicate_grounds_subject/2reads the subject of arequires_predicatefact throughpredicate_fact_subject_key/5: the fact'ssubject_keywhen present, else the argument its project-localpredicate_schemanamessubject(any position), else the first argument when neither is declared. Thestrict-readinesscontradiction_readylevel uses the same rule, and the pairing suggestions name both options. -
89d8b8e: An engine daemon left running by another Kibi install, for example one an older
kibistarted from a git hook, no longer serves a newer client. The client now compares the daemon's package versions on connect and stops and replaces a daemon that differs, the same way it already does for a different SWI-Prolog.kibi doctorreports the package versions of the running daemon.Technical summary: the built version string (
kibi-cli@…,kibi-core@…, shared from the newpackage-versions.ts;KIBI_PACKAGE_VERSIONSstill overrides it) is sent by the client on every request and passed to the daemon it spawns. The daemon reports its versions in thehandshakereply and refuses every other request exceptstopfrom a client with other versions;reconcileRuntimereplaces a daemon whose handshake reports other versions (or none, as a pre-change daemon does) and fails with a clear error if the replacement still differs. kibi-runtime bakes the bundled kibi-cli version into its bundles at build time, so a runtime-hosted client and a kibi-cli daemon of the same release agree.EngineClient.inspectLiveDaemon()reads a live daemon's handshake without starting one, andkibi doctoruses it for the new "Engine daemon" check. -
Updated dependencies [89d8b8e]
- kibi-core@0.17.2