Expert runtime: Common Lisp Tek9 store + typed Prolog shim #10
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nsaspy/llm-log#10
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent: #8
Goal
Build the reusable expert/runtime substrate before implementing individual experts.
Canonical ownership
Current authority is
research/LLM-LOG-RESEARCH-033-expert-authority-regression-reconciliation.org; active implementation is PR #24 onrage/10-expert-runtime-red.Typed protocol
Keep the transport-to-expert boundary versioned and typed. Declared operations include at least:
observe_user_messageobserve_requestobserve_responseobserve_usagequery_classificationquery_taskquery_outcomequery_rewritehealthOnly declared operations + typed data are legal. No arbitrary
call_prolog, goal strings, callable terms,term_string/2,read_term/3, or equivalent escape hatch.Common Lisp lifecycle
Do not spawn SWI-Prolog per query.
Tek9 projection
Persist typed records with stable IDs for observations, tasks, assertions, evidence, rules/rule versions, usage and immutable pricing snapshots. Use bounded indexed lookups; never materialize the whole corpus into Prolog.
Event ingestion is idempotent by stable event ID. Identical replay must not duplicate data; contradictory replay returns explicit conflict and must not overwrite immutable evidence. Historical derived revisions are superseded, never deleted.
Use graph edges where useful for provenance: task -> request, assertion -> evidence, rewrite -> source message, child-task -> parent-task.
Use existing Tek9 public APIs first. Modify Tek9 only if a proven missing generic primitive blocks this substrate.
Prolog shim
Common Lisp must:
Untrusted/model-controlled strings remain data and never become executable Prolog source.
Failure semantics
require_expert_plane: fail closed;Nix / non-Nix
Keep the existing flake. Package the expert service reproducibly with SBCL, Tek9 and SWI-Prolog. Expose Home Manager/systemd configuration while preserving a normal standalone launch/config path. Reusable mutable state defaults under
~/.llm-proxy, expert state under~/.llm-proxy/expert, and consumer dotfiles may keep raw capture at~/Documents/AI/proxy. Credentials must not enter the Nix store.RED-first acceptance
Before every production mutation, execute the smallest legitimate failing contract against the untouched pre-implementation head and record exact SHA/command/failure. Existing executed branch evidence covers the Tek9/SWI substrate, assertion provenance/supersession, reasoner recovery, Python availability policy, concrete Python->CL adapter, HTTP/WebSocket lifecycle, CLI expert launch, and Home Manager expert wiring.
No unavailable test result may be presented as evidence.
Current dependency order
#10 remains the first substrate. #12, #13, #15 and #17 remain blocked behind it. Provider census #6 remains backlog and must not displace the expert-plane priority. Dotfiles PR #172 remains RED-only until an eligible reviewed + exact-head GREEN #24 revision exists.
Merge gate
Merge only an exact current head that is GREEN, mergeable, and satisfies required reviews/discussions. PR #5 remains a separate configuration transaction and must not be polluted by #10.
Dependency/progress reconciliation for the active Auto-RAGE transaction:
llm-log-expertASDF/package skeleton now exists with a reusable Tek9 host lifecycle seam.lost-rob0t/tek9#7; Tek9 currently exposes an x86_64 dev shell but no downstream-consumable package output.Next bounded realization: persistent supervised SWI-Prolog session + closed named-operation JSON-lines dispatcher, followed by executable/Nix packaging and idempotent Tek9 projection.
Bounded #10 Auto-ARADR/RAGE cycle update:
~/.llm-proxy; expert default is~/.llm-proxy/expert. Personal corpus paths are consumer overrides, not llm-log defaults.master; this slice required no new Tek9 primitive because existing composablewith-write-transactionsupports atomic event projection + KB-revision mutation.37d2f8d1: contradictory replay must returnevent_conflictwithout overwriting evidence, and revision/idempotency must survive service restart.event:<id>projection, durablemeta:kb-revision, closed service dispatcher, fixtureevent_transportpath, packagedllm-log-expertexecutable, and a Nixexpert-service-contractcheck.research/LLM-LOG-RESEARCH-007-expert-service-transaction.org.Truthful gate: no SBCL/SWI-Prolog/Nix execution is available in the current environment, so no GREEN is claimed. Keep #12/#13/#15/#17 blocked and keep PR #18 draft until the packaged black-box contract executes GREEN on its exact head.
Storage-contract reconciliation for #10: the reusable mutable-state default is
~/.llm-proxy, with expert state at~/.llm-proxy/expert/. Standalone configuration/CLI and Home Manager may override it; consumer dotfiles may explicitly select~/Documents/AI/proxy. Older issue prose mentioning$XDG_DATA_HOME/llm-log/expert/as the default is superseded by the canonical configuration decision and active expert-plane Org documents. Seeresearch/LLM-LOG-RESEARCH-008-reasoner-crash-recovery.orgonrage/10-expert-runtime-red.Auto-ARADR/RAGE #10 update (bounded result-validation slice):
research/LLM-LOG-RESEARCH-010-reasoner-result-validation.org(741a1b9c)fdd22298+f63fa1a4prove a correctly correlatedstatus=okSWI reply can still be unsafe if its operation-specific result is forged/malformed0ddbbe78validatesevent_transportresult object/type, exact agreement with the bounded Tek9 fact, and non-empty rule provenance; contract violation invalidates the worker without mutating Tek9/KB revisionaddd9e37returnsinvalid_reasoner_resulta7999f86adds the new contract tochecks.<system>.expert-service-contractNo Tek9 API change was needed. No Python rule engine was added. No GREEN execution is claimed: exact head still has no reported GitHub status checks and the packaged SBCL/SWI/Nix contract has not been executed in this environment.
Storage correction remains authoritative: reusable state defaults to
~/.llm-proxy, expert state to~/.llm-proxy/expert, with explicit config/CLI/Home Manager override. The older XDG-default wording in the issue body is stale; canonical Org/PR design uses the corrected contract. Dotfiles continues to override the consumer corpus to~/Documents/AI/proxy.Architecture correction from #20 /
research/LLM-LOG-RESEARCH-011-zero-python-rewrite.org: older text in this issue assigning capture/transport or the local expert envelope to Python is superseded. The accepted implementation is zero Python. Common Lisp owns proxy/capture/configuration/recorder/provider transport plus the existing Tek9/SWI expert-runtime responsibilities; SWI-Prolog remains the sole facts/rules/inference engine; Tek9 remains the canonical durable symbolic KB. Existing Python files/tests/package wiring are migration evidence/debt only and must not be extended. Current RED handoff isresearch/LLM-LOG-RESEARCH-012-common-lisp-transport-red.orgplus the Common Lisp test system at head7ce4682e; no HTTP implementation is authorized until that contract is actually executed RED.Bounded execution-gate update after the zero-Python reconciliation:
rage/10-expert-runtime-red@7ce4682ea16020035588b9b5e280e75cdbe9b98c.sbcl,swipl,nix, norros, and its Debian package repositories were unreachable/time-limited, so the toolchain could not be bootstrapped here.masterlatest relevant merge remainsa9f5b595f5d965163d2b7c518c72a2efd9be13fe(consumable ASDF/Nix package), with no open Tek9 issues or PRs. No Tek9 primitive/change is needed for this slice.Next executable step remains: run the exact
7ce4682eCommon Lisp RED contract in an SBCL-capable environment, record the expected missingSTART-HTTP-PROXY/STOP-HTTP-PROXY/PROXY-LISTEN-PORTfailure, then implement the minimum CL HTTP path.Bounded #10 Auto-ARADR/RAGE update: found and fixed a RED-gate wiring defect without touching production HTTP behavior.
research/LLM-LOG-RESEARCH-013-common-lisp-red-runner.org(cafb39a5)llm-log-expert-test/Rove existed, butnix flake checknever ran it; the only expert-service check still invoked Python unittests, so a Nix-capable machine still could not establish the new Common Lisp transport REDa2f3f71aaddschecks.<system>.common-lisp-transport-contract, invokingasdf:test-system "llm-log-expert-test"under SBCL with Rove and the packaged expert library; no Python runner is involvedexpert-service-contractis now explicitly migration-only evidence and cannot satisfy the zero-Python transport gateTruthful execution state: this automation container has no
sbcl,swipl,nix, orros, and DNS/package-network access is unavailable. Therefore the new check has not been executed here and no behavioral RED/GREEN claim is made. The accepted RED remains specifically the missingSTART-HTTP-PROXY,STOP-HTTP-PROXY, andPROXY-LISTEN-PORTassertions, not dependency/harness failure. #12/#13/#15/#17 remain blocked.Bounded #10 Auto-ARADR/RAGE update:
research/LLM-LOG-RESEARCH-014-hosted-common-lisp-red-execution.org.test-opdiscarded it, so failed assertions could still make the Nix derivation succeed.expert/llm-log-expert-test.asdat1f7ebc93eccf6cd5a2923f1dae8490673935a6b7.5e51c3ef87def61c9853935714b73271a9d289de: Nix bootstrap succeeded and the verifier matched missingSTART-HTTP-PROXY,STOP-HTTP-PROXY, andPROXY-LISTEN-PORT.This clears the execution-infrastructure blocker but does NOT justify lifecycle stubs. Before production HTTP mutation, extend the CL RED to black-box forwarding fidelity (method/path/query/body/status + duplicate headers), then implement against that stronger contract. No dotfiles or Tek9 mutation in this slice; no merge.
Bounded #10 Auto-ARADR/RAGE update — stronger ordinary-HTTP RED is now established before production transport mutation.
research/LLM-LOG-RESEARCH-015-http-fidelity-black-box-red.org.0359d92e4e637d888079ddf55e72d2c9124de81a.418, end-to-end request-header forwarding, and two distinct orderedSet-Cookieresponse fields.MAKE-RUNTIME-CONFIG/upstreams plus proxy lifecycle). The hosted verifier reached the behavioral assertions rather than failing during Nix/SBCL/Rove bootstrap.~/Documents/AI/proxy.Next authorized slice: implement the minimum real Common Lisp ordinary-HTTP path against this exact contract, then require GREEN before SSE/WebSocket/recorder work.
Bounded Auto-ARADR/Auto-RAGE slice completed for the first Common Lisp ordinary-HTTP transport dependency.
Canonical design first:
research/LLM-LOG-RESEARCH-016-http-bootstrap-green.org.RED baseline independently re-verified from immutable hosted run
33282707089on0359d92e4e637d888079ddf55e72d2c9124de81abefore implementation.Implementation added the Common Lisp runtime upstream map plus
START-HTTP-PROXY/STOP-HTTP-PROXY/PROXY-LISTEN-PORTand a bounded raw HTTP/1.1 forwarder. The direct Rove/Nix fidelity contract is GREEN on exact current head0f33782d8d899ef99e64ea7ee9fd02f6a3c22808; hosted run33285153994succeeded.Verified behavior: provider selector removed exactly once; method/path/repeated+encoded query preserved; end-to-end request header preserved; binary request and response bodies with NUL preserved; upstream 418 status preserved; duplicate
Set-Cookiefields remain separate.Implementation evidence:
evidence/LLM-LOG-EVIDENCE-002-http-fidelity-green.org.No Tek9 mutation, no dotfiles mutation, no merge. This does not claim HTTPS, SSE, WebSocket, capture/redaction, provider-family conformance, or final zero-Python completion. Next production mutation needs a new executed RED first.
Bounded Auto-ARADR + Auto-RAGE slice completed for finite HTTP immutable capture/redaction.
Canonical design:
research/LLM-LOG-RESEARCH-017-immutable-http-capture-redaction.org.RED discipline:
33287589143rejected as invalid product evidence because the new test fixture had a FORMAT arity defect; no production mutation followed it.31426657f5bb68871e66a723cde33ce4a845a4bc, run33287657011: valid RED. Existing HTTP fidelity and credential forwarding remained GREEN; intended capture assertion failed because no event existed (EVENTS = NIL).Implementation head
e3830e76a4713fa331c67e71739453247a9c8a01adds create-only finite HTTP capture under the configured data directory, exact binary request/response bodies, ordered header evidence, and persistence-only secret redaction while original credentials continue upstream.GREEN run
33287732659/ job99193780462passed the direct Common Lisp/Rove/Nix gate and verified Authorization/X-Api-Key/Cookie forwarding, redacted persisted secrets, duplicate Set-Cookie evidence, visible non-secret headers, exact NUL-containing bodies, and all prior HTTP fidelity assertions.Execution evidence:
evidence/LLM-LOG-EVIDENCE-003-http-capture-red-green.org.Exact current evidence-only head
1041c2267a8edc9a2a94f86bbdb79a3e289ca629is GREEN in run33287815155.No Tek9 change and no dotfiles change were justified. Next capture production mutation requires an executed concurrency/crash RED before introducing the Sento/cl-gserver single-writer recorder actor. SSE/WebSocket/HTTPS/provider conformance remain out of this bounded GREEN.
Bounded #10 Auto-ARADR/RAGE recorder update:
research/LLM-LOG-RESEARCH-018-single-writer-recorder-crash-contract.org(675615a0).expert/tests/recorder-red.lisp, wired into the authoritative Common Lisp/Rove gate atb0773366f830424ce49ab955ab22860a49803dec.33289740093, job99199157484reached the real CL/Nix contract. All prior HTTP fidelity + immutable capture/redaction assertions stayed GREEN.SIMPLE-ERROR: Missing recorder contract function LLM-LOG-EXPERT::START-RECORDER.evidence/LLM-LOG-EVIDENCE-004-recorder-concurrency-crash-red.org(71409178).The contract now requires one single-writer recorder owner, 12 concurrent producers with exact non-cross-contaminated committed events, and deterministic failure-before-publish semantics where no partial event appears under
capture/http/events/and a later command can succeed without ambiguous replay.No production recorder mutation followed the RED in this bounded cycle. The selected design is Sento/cl-gserver + staging then atomic same-filesystem publish. Reproducible Sento/cl-gserver Nix/ASDF consumption is not established yet, so do not replace the actor boundary with an ad-hoc mutex just to force GREEN.
No Tek9 or dotfiles mutation was justified. PR #18 remains draft/unmerged.
Bounded Auto-ARADR/RAGE correction: the prior recorder dependency claim from run 33291976121 was not a valid Sento RED. That run failed in the pre-existing Common Lisp transport step and GitHub skipped the later Sento dependency step entirely.
Canonical correction:
research/LLM-LOG-RESEARCH-020-recorder-dependency-red-execution.org.RED-only head:
b914ec05fd4e3e8a29133d0984ec58213b10c1a4onrage/10-expert-runtime-red.The workflow now reports transport and recorder dependency closure as independent jobs, so
nix build -L .#checks.x86_64-linux.common-lisp-recorder-depsexecutes even if transport is red. Hosted run 33294213110 has reached the Sento dependency command independently. No Sento packaging or recorder production code was added in this slice; no GREEN/RED conclusion is claimed until that job completes with a specific result.Bounded #10 dependency-slice update:
research/LLM-LOG-RESEARCH-021-sento-pinned-packaging.orgevidence/LLM-LOG-EVIDENCE-005-sento-dependency-red.org(Component :SENTO not foundon exact preimplementation headb914ec05fd4e3e8a29133d0984ec58213b10c1a4, run 33294213110)013ab6370042686e65943568b0d97e33319c0f54with fixed hashsha256-z+AKk8Y09rpF+NgyKhcHNvn0jsjeGe3dSibkv8yySKg=and explicit Nix/SBCL runtime deps.00077a450d88c5064e4d588945de2a4dd2bc9c80, run 33296638853, independentcommon-lisp-recorder-depsjob succeeded running the unchanged(asdf:load-system :sento)gate with no ambient Quicklisp.evidence/LLM-LOG-EVIDENCE-006-sento-dependency-green.org.LLM-LOG-EXPERT::START-RECORDERis absent.No Tek9 mutation and no dotfiles mutation. The Sento packaging blocker is resolved; the next #10 dependency is the already-executed RESEARCH-018 Sento single-writer recorder concurrency/crash RED.
#10 bounded RED→GREEN landed on
rage/10-expert-runtime-red.Canonical authority is restored to RESEARCH-004/023: Python owns transparent capture/transport; Common Lisp owns expert runtime + Tek9 + SWI-Prolog supervision; Tek9 is the durable KB; SWI-Prolog owns declared inference.
Executed RED:
e763c740a3e3d427758d3dcee6bf2c44ced56ef3, run33303885632. The isolated Common Lisp/Tek9/SWI gate reachedSTART-EXPERT-HOSTand failed on the real product defect in%prolog-worker-path(unbound#:LLM-LOG-EXPERT).Minimal production fix:
42657f7c6f1073504d9c84d08275957f36e1245euses the ASDF system name string for the default worker path.Executed GREEN: exact fix head
42657f7c6f1073504d9c84d08275957f36e1245e, run33303934852, integration job99237018845. Proven: Tek9 host open, exact bounded PK retrieval, KB revision binding, declaredevent_transportSWI inference, nonempty rule version, persistent worker reuse, and rejection of undeclared operations before Prolog invocation.Evidence:
evidence/LLM-LOG-EVIDENCE-007-expert-tek9-prolog-red-green.org.No Tek9 mutation. No dotfiles mutation. No merge: the independent historical CL transport/recorder job is still red on this recovered branch, so PR #24 remains intentionally draft/non-merge-ready.
Bounded Auto-ARADR/RAGE #10 update:
research/LLM-LOG-RESEARCH-024-expert-ci-authority-boundary.org.33304010749proved the expert integration job GREEN while the overall workflow was RED only on the historical Common-Lisp transport/recorder job.32fc13e304179456919c231b0235c9f6ca1bef65removed that stale transport/Sento acceptance coupling from the active expert branch without modifying production transport, expert code, Tek9, Prolog rules, or dotfiles.evidence/LLM-LOG-EVIDENCE-008-expert-ci-authority-green.org.7bd8abe66b5708dc6304e4b7c32a2abefb21d641completed hosted run33306067089GREEN on the unchangedcommon-lisp-expert-integration-contract.~/Documents/AI/proxy.Next #10 production work remains RED-first: contradictory replay/idempotency execution, derived-assertion provenance/supersession, reasoner failure/recovery, then Python-to-expert fail-open vs explicit
require_expert_planefail-closed integration. #12/#13/#15/#17 remain blocked.#10 bounded Auto-ARADR/Auto-RAGE update — derived assertion provenance/supersession
Canonical design:
research/LLM-LOG-RESEARCH-025-derived-assertion-provenance-supersession.org.RED discipline:
3bd9bd1179a04a490af48b75b1c213988f911ef8/ run 33308422242 was a broken test fixture (unmatched parenthesis) and is not counted as RED.e4c61b7252fedf8b3dcf2827ccede73007aa7b2e/ run 33308526544 is the valid RED: all prior Tek9→SWI assertions passed, then the new contract failed specifically on undefinedLLM-LOG-EXPERT::PERSIST-DERIVED-ASSERTION.GREEN:
b7a9bc74ae7e02b3c9af6e77471e2e85a36e3ad6/ run 33308577798: GREEN.983dca3f8741edf9f32913ae93fa22e715f70ed0/ run 33308588756: GREEN.The unchanged contract now proves bounded source validation, durable source/expert/rule provenance, publication KB revision binding, idempotent identical replay, contradictory stable-ID rejection without overwrite/revision bump, append-only supersession, prior assertion preservation, raw source-event preservation, and rejection of unknown superseded assertions.
Evidence:
evidence/LLM-LOG-EVIDENCE-009-derived-assertion-red-green.org.No Tek9 repo mutation was required; existing
fetch*/put*/with-write-transactionAPIs were sufficient. No dotfiles or transport mutation.Bounded #10 Auto-ARADR/Auto-RAGE slice: typed reasoner failure + later-request recovery.
Canonical design:
research/LLM-LOG-RESEARCH-026-reasoner-failure-recovery-contract.org.Valid RED: exact test-only head
cc0df4b213db4acfd97d970c236da2e0edf0200a, run https://github.com/lost-rob0t/llm-log/actions/runs/33310846343. Existing Tek9→SWI and derived-assertion contracts stayed GREEN; the sole new failure was absence of typedreasoner-failurefor malformed/correlation-invalid replies. The recovery half already proved a dead worker session is invalidated and a later independent request starts a fresh SWI session.Production GREEN:
89173d685bbbb841b6c4848ca7ce63cd3eb168fa, run https://github.com/lost-rob0t/llm-log/actions/runs/33310965653. Added finite runtime classes:unavailable,:crashed,:timeout,:malformed-reply; stable service protocol codes; malformed JSON/reply/correlation typing; no automatic replay. Full Nix Tek9/SWI integration contract is GREEN.Evidence:
evidence/LLM-LOG-EVIDENCE-010-reasoner-failure-recovery-red-green.orgat branch head12cd503e026089b77781b9dadb1733ea0f7117ba.Authority note: current explicit program direction/PR #24 remains Python capture+transport, Common Lisp expert runtime, Tek9 durable KB, SWI-Prolog declared inference. The zero-Python text currently present in older #8/#10 issue prose is stale relative to that explicit direction and was not reintroduced.
No Tek9 repo mutation; existing public APIs remain sufficient. No dotfiles mutation; provider census and #12/#13/#15/#17 production work remain untouched.
Bounded #10 cycle update — Python expert availability policy landed RED→GREEN without changing Tek9 or dotfiles.
Canonical design:
research/LLM-LOG-RESEARCH-027-python-expert-failure-policy.orgEvidence:
evidence/LLM-LOG-EVIDENCE-011-python-expert-policy-red-green.orgRED exact head
30b33cf2e1f908fe4dff9960051d1da8bcc48446, run 33313690072: CL/Tek9/SWI stayed GREEN; Python policy job failed specifically becausebuild_app()lackedexpert_plane.Production
c1a455bd10804a78ab7294f74cf0a5d4cf65ed03, run 33313845134: both jobs GREEN. Verified with a real aiohttp upstream: unavailable expert fails open by default; explicitrequire_expert_plane=truereturns generic 503 with zero upstream hits; missing expert also fails closed when required; healthy expert forwards; expert exception detail is not reflected.Current evidence head
fbeebff73a9ce659725ccd54aeafdd5a4ef0216f, run 33313909107: both independent jobs GREEN.No Python rule engine was introduced. Python remains capture/transport; Common Lisp remains expert runtime owner; Tek9 remains durable KB; SWI-Prolog remains inference. Concrete long-lived Python↔Common Lisp adapter and config wiring remain separate next boundaries.
Bounded #10 adapter cycle update:
adabdf532edde833a66458739b3a389593ec3c17, run33316177583. Independent CL/Tek9/SWI contract GREEN and all existing Python expert-policy cases GREEN; the new adapter contract failed specifically becausellm_log.expert_adapter.SubprocessExpertPlanedid not exist.e87d51d8dc74cc3106c1b7e33fe5d0a77141fe37adds one long-lived serialized JSON-lines subprocess adapter with explicit invalidation on timeout/EOF/malformed protocol, no implicit replay, and no raw Prolog-goal API.c5b5eda0a35f859bc089ff785931f697f0cb9ad0.893063bd338af25c6bf9162c4dd93943e73c8b1fand corrected test blobe668c29b1d55610dc5dcfebb630f89403349b0f0passed 5/5 three consecutive local executions.research/LLM-LOG-RESEARCH-028-python-common-lisp-expert-adapter.org; execution evidence isevidence/LLM-LOG-EVIDENCE-012-python-common-lisp-adapter-red-green.org.~/Documents/AI/proxyremains unchanged; #12/#13/#15/#17 remain blocked behind #10.Next RED-first slice: exercise this concrete adapter through real HTTP and dedicated WebSocket fail-open/fail-closed conformance before any PR #5/Home Manager launch wiring.
Bounded #10 transport-lifecycle slice reached executed RED -> GREEN.
RED: exact test head
15f3056ea6f43138334c198f333febac7a320f78, hosted run33327310653. Independent CL/Tek9/SWI job stayed GREEN. Existing policy + isolated adapter tests stayed GREEN. New concrete lifecycle contract failed because aiohttp did not start a fresh healthySubprocessExpertPlane: required HTTP observedrunning == false, and healthy required WebSocket got 503 before upgrade.Production:
b2139233ee57161d67d17dddd1075b9d3e27ce27adds only concrete adapter startup/cleanup ownership tollm_log/proxy.py. Startup failure is contained to preserve default fail-open; explicitrequire_expert_planeremains fail-closed at the existing pre-forward health gate. No Tek9/Prolog semantics or Python rule engine added.GREEN: hosted run
33327391255; CL/Tek9/SWI job GREEN and Python suite 13/13 GREEN, including healthy required HTTP, healthy required WebSocket relay, WebSocket default fail-open, required fail-closed, adapter no-replay, and no arbitrary Prolog-goal API.Canonical design updated:
research/LLM-LOG-RESEARCH-029-concrete-adapter-transport-lifecycle.org. Separate implementation evidence:evidence/LLM-LOG-EVIDENCE-013-concrete-adapter-transport-lifecycle-red-green.org.Current branch head after docs:
cc0e777c9fd9747da8913999cb974b0b4cb15f63; exact-head workflow33327491804is executing. No Tek9 or dotfiles mutation.Bounded #10 Home Manager expert-plane slice is now executed RED → GREEN.
Canonical design:
research/LLM-LOG-RESEARCH-031-home-manager-expert-wiring.orgEvidence:
evidence/LLM-LOG-EVIDENCE-015-home-manager-expert-red-green.orgValid RED:
7230b5cc839e1d3421bf95c232d822670a5c7bd7, run33332939428. Existing Python expert contracts and CL/Tek9/SWI integration were GREEN; the new HM contract failed specifically becauseservices.llm-log.expertdid not exist. An earlier store-path fixture failure is explicitly recorded as invalid evidence, not RED.Production:
b6111a5fbe682bfa70f6922bd2727c380fe46278addsservices.llm-log.expert.{enable,package,dataDir,require}and projects the already-proven CLI launch args into the existingllm-log.service; no second expert daemon, Tek9 mutation, Prolog change, provider change, or Python rule engine.Exact current documentation/evidence head
870945344c5a2e41a6a5a0f09e50641dc218fd9eis GREEN in run33333080246across Home Manager, Python policy/adapter/transport/launch, and Common Lisp/Tek9/SWI jobs.Dotfiles remains untouched in this slice;
~/Documents/AI/proxyand PR #5 stay isolated. Next consumer integration should be a separately gated transaction.Current authority correction: sections of this issue that say #20 removes Python are superseded. Canonical reconciliation is
research/LLM-LOG-RESEARCH-033-expert-authority-regression-reconciliation.org(commit07b92274d4312cbfe228be56524b430348687d22). #10 continues with Python as capture/transport only; Common Lisp owns Tek9 access, typed objects, bounded fact materialization, SWI-Prolog supervision/result validation and durable derived assertions. Existing PR #24 remains the active substrate branch. Do not implement a Python rule engine or a Common Lisp transport rewrite.