Pico가 PinLog 운영 지식을 출처와 관계 중심으로 검색·회수하기 위한 로컬 전용 LLM 지식 저장소입니다. 사용자용 Wiki UI나 Markdown 열람 기능은 제공하지 않습니다.
- Phase 0: 로컬 경계 확정 완료
- Phase 1: 저장소 골격과 RED 테스트 완료
- Phase 2: strict record/event schema, append-only history, crash-safe atomic JSONL 저장 구현 완료
- Phase 3: 승인된 UTF-8 원본의 hash 검증, secret/path/binary/size gate, immutable content-addressed ingest, idempotency, source-drift 연결, raw lint 구현 완료
- Graph integrity, deterministic retrieval, revisioned citation 결과, Hermes/Pico read-only plugin을 구현했습니다. 사용자용 Markdown 렌더링·검색 UI·proposal workflow는 폐기했습니다.
store/events.jsonl과store/current.jsonl에는 승인된 PinLog 문서 snapshot, 2026-07-23에 live 검증한 운영 환경·GitOps·관측성·Cowork·운영 정책 graph, 2026-07-27에 검증한 Backend 배포·PostgreSQL pgvector 전환 계약이 저장되어 있습니다.
- 현재 상태는 실제 호스트, k3s, GitHub, Jira 등 원본 시스템에서 검증합니다.
raw/는 승인된 불변 원본만 보관합니다.store/events.jsonl은 향후 append-only 정식 지식 이력이 됩니다.store/current.jsonl은 재생성 가능한 선택적 캐시이며 검색 권위는 항상 검증된 event history입니다.
.venv/bin/python -m pytest -q
.venv/bin/python scripts/kb.py lint
.venv/bin/python scripts/kb.py query --text "argocd deployment" --limit 5승인된 합성 또는 검토 완료 원본 하나를 수집하려면:
.venv/bin/python scripts/kb.py ingest \
--source /approved/path/runbook.md \
--kind document \
--title "Approved runbook" \
--sensitivity internal--kind는 document | incident | decision | asset, 기본 크기 한도는 1 MiB입니다. descriptor 크기와 limit + 1 bounded read를 모두 검사합니다. .env, kubeconfig, 인증 파일, private-key 확장자, symlink, non-regular file, NUL·금지된 제어문자, invalid UTF-8 및 secret-like content는 copy 전에 거부됩니다. Payload와 모든 영구 event 문자열은 schema 오류보다 먼저 secret scan하며 CLI lint도 모든 event layer와 envelope을 재검사합니다. Diagnostics는 field/index/code만 사용하고 사용자 원문·ID·임의 filename을 출력하지 않습니다. 동일 origin의 변경은 event-store exclusive transaction에서 supersedes로 직렬화되며, append 직전에 Raw 존재와 hash를 다시 검증합니다. 공개 append는 caller event의 strict immutable snapshot 하나만 검증·기록하며, raw-layer event는 실제 0600 Raw와 schema·digest·size 결합이 확인돼야 합니다. 확정적인 event append 실패는 해당 ingest가 소유한 Raw를 rollback하고, 대기 ingest는 필요하면 Raw를 재생성합니다. Unreferenced Raw는 lint 오류입니다. 출력에는 원문 내용이나 source 절대 경로가 포함되지 않습니다.
query는 canonical event history를 매번 검증하고 graph·Raw lint를 통과한 경우에만 최대 20개의 deterministic JSON 결과를 반환합니다. Raw-layer records는 직접 검색하지 않고 verified citation source로만 사용하며, secret-like query와 non-boolean restricted override를 거부합니다. 결과에는 record/event revision, validity, confidence와 sanitized source citation이 포함되며 실제 시스템 현재 상태의 권위로 취급하지 않습니다. Hermes default profile에는 read-only pico_knowledge_query plugin tool이 설치되며 write·ingest 기능은 노출하지 않습니다. Plugin은 secret-like query를 subprocess 전에 거부하고, 응답을 strict closed JSON schema로 다시 검증하여 duplicate key, non-finite number, unknown field, invalid enum, inconsistent citation/source cardinality 및 authority disclaimer 누락을 거부합니다.