Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
101 commits
Select commit Hold shift + click to select a range
34a5477
fix(kibi): restore source-linked query and schema parity
Looted Apr 24, 2026
56ac347
fix(kibi): pass sourceFile through sync persistence pipeline
Looted Apr 24, 2026
515f602
docs(kibi): repair strict fact modeling and briefing traceability
Looted Apr 24, 2026
6ab43e1
style(cli): fix biome formatting in audit-modified source files
Looted Apr 24, 2026
8363bf8
feat(opencode): session-delta reconciliation foundation
Looted Apr 24, 2026
4e385f0
feat(opencode): rewire event hook to authoritative session-edit-state
Looted Apr 24, 2026
c9163e3
test(opencode): fix coverage tests for session-edit-state baseline se…
Looted Apr 24, 2026
4d24c54
feat(opencode): reconcile briefings during prompt render with fallbac…
Looted Apr 24, 2026
4000488
docs(opencode): document briefing reconcile fallback and add release …
Looted Apr 24, 2026
39e242e
fix(opencode): remove duplicate code blocks in transform hook
Looted Apr 24, 2026
61d075c
feat(opencode): add idle brief contract and path helpers
Looted Apr 25, 2026
77f3e5d
feat(opencode): detect idle brief audit milestones
Looted Apr 25, 2026
04d9198
feat(opencode): generate and persist idle briefs
Looted Apr 25, 2026
917ed48
feat(opencode): trigger idle brief generation from session hook
Looted Apr 25, 2026
b10f5d0
refactor(opencode): decouple idle briefs from prompt injection
Looted Apr 25, 2026
dcaf1de
feat(vscode): add brief model and read state helpers
Looted Apr 25, 2026
03c15c1
feat(vscode): watch idle briefs and register viewer command
Looted Apr 25, 2026
4cc1f81
feat(vscode): render idle briefs and acknowledge reads
Looted Apr 25, 2026
a6d9d63
fix(vscode): register showLatestBrief command and fix brief file lookup
Looted Apr 25, 2026
55768b9
fix(vscode): add missing treeView and refreshCommand to subscriptions
Looted Apr 25, 2026
d1ec3c1
refactor(vscode): centralize extension ids and extend mock lifecycle
Looted Apr 25, 2026
8c823ef
fix(vscode): defer workspace activation and add manifest/VSIX verific…
Looted Apr 25, 2026
2bf9f72
chore(vscode): verify runtime IDs in packaged bundle
Looted Apr 25, 2026
420a39c
fix(vscode): restore missing vscode import broken by briefings work
Looted Apr 26, 2026
afc66ec
feat(cli): add shared brief config defaults
Looted Apr 26, 2026
eb0d5e1
feat(cli): expose shared brief config reader
Looted Apr 26, 2026
393b996
feat(opencode): connect idle brief delivery flow
Looted Apr 26, 2026
8e1b507
feat(opencode): automate idle brief tui delivery
Looted Apr 26, 2026
b9ef9a2
fix(opencode): repair idle brief delivery syntax
Looted Apr 26, 2026
3e3b0f4
docs(briefs): document shared and client brief delivery config
Looted Apr 26, 2026
ea3fae3
fix(opencode): log delivery errors instead of swallowing
Looted Apr 26, 2026
b810fc3
fix(opencode): add diagnostic logging for brief generation failures
Looted Apr 26, 2026
a93ae27
fix(opencode): refactor brief system to use real OpenCode plugin APIs
Looted Apr 26, 2026
27c3027
fix(opencode): correct audit log line filter in computeAuditDelta
Looted Apr 26, 2026
2a19818
fix(opencode): restore real OpenCode plugin APIs (showToast, session.…
Looted Apr 26, 2026
4fe5c7e
fix(opencode): repair toast delivery and structured logging
Looted Apr 29, 2026
3aad975
docs(opencode): define render-first idle briefing contract
Looted Apr 29, 2026
102db94
fix(opencode): render idle briefs passively in tui
Looted Apr 29, 2026
ca82e8a
docs(opencode): add file-context guidance to README
Looted Apr 29, 2026
7c82de5
feat(opencode): add unread idle brief reader
Looted Apr 30, 2026
a782d04
feat(opencode): report idle brief append outcome
Looted Apr 30, 2026
130c4e3
feat(opencode): replay unread idle briefs in tui
Looted Apr 30, 2026
48f24cf
chore(opencode): verify tui brief replay flow
Looted Apr 30, 2026
582c9c7
fix(opencode): restore missing sort in selectLatestUnreadBrief
Looted Apr 30, 2026
6461acb
fix(opencode): add test assertions and path validation for idle brief…
Looted Apr 30, 2026
efdacbc
fix(briefing): session-local counts, semantic dedupe, compact MCP, po…
Looted Apr 30, 2026
4461c6d
fix(tui): switch to toast-only delivery with richer messages
Looted May 4, 2026
906134c
docs(opencode): define file-operation guidance contract
Looted May 4, 2026
e909b8b
feat(opencode): add file operation state
Looted May 4, 2026
e22da05
feat(opencode): add file linked entity resolver
Looted May 4, 2026
26fbcf8
feat(opencode): add e2e coverage signal resolver
Looted May 4, 2026
363e701
feat(opencode): support file lifecycle events
Looted May 4, 2026
5307451
feat(opencode): derive file operation reminders
Looted May 4, 2026
07e33fc
feat(opencode): add file operation prompt guidance
Looted May 4, 2026
ecbeab6
feat(opencode): wire file operation reminders into runtime
Looted May 4, 2026
ebf75fd
docs(opencode): align file operation guidance docs
Looted May 4, 2026
f90ce0c
chore(opencode): finalize file operation guidance release
Looted May 4, 2026
7bc67ee
fix(opencode): address final wave review findings
Looted May 4, 2026
a25541d
test(opencode): add implements relationships to source-linked tests
Looted May 4, 2026
515bb0d
fix(opencode): add REQ/SCEN docs to agent-surface-policy coverage
Looted May 4, 2026
1fabc13
docs(opencode): align TEST-opencode-smart-enforcement with implements…
Looted May 4, 2026
7ac544d
docs(opencode): rewrite changeset with human-readable feature summaries
Looted May 5, 2026
15068eb
refactor(mcp): interactive bootstrap contract and activation matrix
Looted May 5, 2026
87b9535
fix(mcp): align autopilot traceability comments
Looted May 5, 2026
61d22a8
fix: add staged symbol traceability comments
Looted May 5, 2026
1690b02
docs: add traceability comment for autopilot signals
Looted May 5, 2026
c843812
feat(mcp): add autopilot handoff and confidence policy
Looted May 5, 2026
736f675
test(mcp): lock bootstrap flow and release metadata
Looted May 5, 2026
2a18b09
docs(mcp): align autopilot scope with additive response
Looted May 5, 2026
3f1dfcd
fix(cli): add briefs appendPrompt defaults
Looted May 5, 2026
021e4d6
fix(mcp): satisfy autopilot test typings
Looted May 5, 2026
699a482
feat(briefing): Wave 1 - session-delta reconciliation foundation
Looted May 6, 2026
f3dd00c
feat(briefing): schema-v2 migration, cited narratives, and determinis…
Looted May 6, 2026
14dd7de
fix(vscode): persist brief dedupe when toast closes
Looted May 6, 2026
7ed9f0c
feat(briefing): add native init alias and ignore brief artifacts
Looted May 6, 2026
3dd2c56
chore(release): add native init-kibi alias changeset
Looted May 6, 2026
c23a1c2
docs(init): clarify .kb/briefs ignore behavior
Looted May 6, 2026
1022664
fix(opencode): stabilize idle brief delivery
Looted May 7, 2026
30a7bbe
fix(vscode): replay unread briefs on startup
Looted May 7, 2026
7bcd57e
chore(briefing): add idle delivery release metadata
Looted May 7, 2026
a1a198b
feat(briefing): add config-driven delay and retention policy
Looted May 7, 2026
cfe63d4
fix(opencode): prune stale brief artifacts after retention
Looted May 7, 2026
a81cebe
feat(opencode): deliver narrative-first briefing updates
Looted May 7, 2026
64895aa
feat(vscode): render informative knowledge briefs
Looted May 7, 2026
2db4015
chore(release): version packages for briefing updates
Looted May 7, 2026
1389bba
chore(symbols): refresh generated coordinates
Looted May 7, 2026
7f6a7ac
Symbols update
Looted May 7, 2026
8743e9b
Merge branch 'develop' of https://github.com/Looted/kibi into develop
Looted May 7, 2026
c147894
docs(agents): trim guidance and require symbols manifest updates
Looted May 7, 2026
6df9398
fix(opencode-tests): keep v1 brief fixture schema-discriminated
Looted May 7, 2026
672a36e
docs(agents): restore canonical entity-choice guidance
Looted May 7, 2026
a2835d0
fix(opencode): make init-kibi capability detection cwd-agnostic
Looted May 7, 2026
3a15e1d
fix(opencode): harden init-kibi host capability resolution in CI
Looted May 7, 2026
d675bfd
fix(opencode): support both dogfood SDK install layouts
Looted May 7, 2026
fbf58af
fix(opencode): make capability detection resilient to cwd/env drift
Looted May 7, 2026
2dd07e5
fix(opencode): resolve transitive sdk capability metadata
Looted May 7, 2026
8de6473
chore(symbols): refresh generated coordinates
Looted May 7, 2026
a98df41
fix(cli): enforce symbols manifest staging in hooks
Looted May 7, 2026
55eb6bc
docs(cli): document symbols manifest hook guard
Looted May 7, 2026
7880675
chore(release): add symbols hook changeset
Looted May 7, 2026
80a5b1b
(chore) symbols.yaml
Looted May 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .changeset/brave-buns-breathe.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"kibi-opencode": patch
---

OpenCode bootstrap command support is now more reliable in fresh CI and Bun installations. The plugin can detect native `/init-kibi` command support when OpenCode installs the SDK as a transitive dependency of the plugin, preventing supported hosts from silently falling back to the namespaced MCP prompt.

- Resolve `@opencode-ai/sdk` metadata from Bun's plugin-sibling dependency layout during native command capability detection.
- Add regression coverage for the transitive SDK resolution path used by fresh installs.
8 changes: 8 additions & 0 deletions .changeset/quiet-symbols-check.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"kibi-cli": patch
---

Kibi now makes symbol manifest tracking harder to forget. New projects initialized with `kibi init` get a default `documentation/symbols.yaml`, and the managed pre-commit hook blocks commits when that manifest has unstaged changes so refreshed coordinates are committed with the related work.

- Create the default symbol manifest during `kibi init` when it is missing.
- Add a pre-commit guard that requires dirty `documentation/symbols.yaml` changes to be staged before `kibi check --staged` runs.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,5 @@ documentation/tests/e2e/packed/.compiled/
.kb/branches/*/sync-cache.json
#! bun.lock
.sisyphus
.kb/briefs/
.env
46 changes: 46 additions & 0 deletions .opencode/kibi.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{
"enabled": true,
"prompt": {
"enabled": true,
"hookMode": "auto"
},
"sync": {
"enabled": true,
"debounceMs": 2000
},
"ux": {
"toastStartup": true,
"toastFailures": true,
"toastSuccesses": false,
"toastCooldownMs": 10000,
"briefs": {
"autoSubmit": true
}
},
"guidance": {
"dynamic": true,
"warnOnKbEdits": true,
"factFirstDomainRouting": true,
"commentDetection": {
"enabled": true,
"minLines": 6
},
"targetedChecks": {
"enabled": true
},
"sessionSummary": {
"enabled": true,
"logIntervalMs": 1800000
},
"smartEnforcement": {
"enabled": true,
"mode": "advisory",
"preflightTtlMs": 600000,
"idleResetMs": 1800000,
"degradedMode": "warn-once",
"requireRootKbForStrict": true,
"completionReminder": true
}
},
"logLevel": "info"
}
414 changes: 84 additions & 330 deletions AGENTS.md

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,8 @@ This applies to TypeScript (`.ts`, `.tsx`) and JavaScript (`.js`, `.jsx`) files

If you ran `kibi init`, a pre-commit hook will automatically check your staged changes for missing requirement links. If any new or modified symbols are not linked to a requirement, your commit will be blocked with an error message. To proceed, add the appropriate `implements REQ-xxx` directive to your code.

The hook also blocks commits when `documentation/symbols.yaml` has unstaged changes. Stage and commit the refreshed manifest with the code or documentation change that caused it.

You can test your staged changes manually with:

```bash
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ npx kibi status
npx kibi check
```

> **Note:** `kibi init` installs git hooks by default. Hooks automatically sync your KB on branch checkout and merge.
> **Note:** `kibi init` installs git hooks by default and writes `.kb/` + `.kb/briefs/` ignore entries to `.gitignore`. Hooks automatically sync your KB on branch checkout and merge.

### Typical discovery workflow

Expand Down
21 changes: 15 additions & 6 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion docs/cli-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,16 @@ Initializes a kibi project in the current directory.
**Behavior:**
- Creates `.kb/` directory structure
- Installs git hooks (pre-commit, post-checkout, post-merge, post-rewrite) by default
- Adds `.kb/` to `.gitignore`
- Adds `.kb/` and `.kb/briefs/` to `.gitignore`
- Creates default `config.json` with document path patterns
- Creates `documentation/symbols.yaml` when it does not already exist

**Flags:**
- `--no-hooks` - Skip git hook installation (hooks are installed by default)

**Notes:**
- Hooks are installed by default. Only use `--no-hooks` if you specifically don't want automated syncing.
- The pre-commit hook blocks commits when `documentation/symbols.yaml` has unstaged changes, forcing refreshed symbol coordinates to be staged with the related code changes.
- Idempotent: safe to run multiple times
- After running, see the quick start guide in README.md for next steps

Expand Down
2 changes: 1 addition & 1 deletion docs/install.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ If you encounter problems with SWI-Prolog:
After installing kibi and verifying SWI-Prolog:

1. Verify your environment: `npx kibi doctor`
2. Initialize your project: `npx kibi init`
2. Initialize your project: `npx kibi init` (installs hooks by default and adds `.kb/` + `.kb/briefs/` to `.gitignore`)
3. Import documentation: `npx kibi sync`
4. Explore the KB: `npx kibi search <query>`
5. Inspect branch freshness: `npx kibi status`
Expand Down
8 changes: 4 additions & 4 deletions docs/mcp-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ The public MCP surface is intentionally curated. Agents can call exact lookup, d

### `kb_autopilot_generate`

Discover existing repository entities and bootstrap the KB via read-only candidate generation. Prefer this for day-0 activation.
Discover existing repository entities and bootstrap the KB via read-only candidate synthesis. Use this as the backend for the interactive `/init-kibi` onboarding workflow.

**Parameters:**
- `limit` (optional): Max results per entity type
- `include` (optional): Filter by file pattern

**Returns:**
Grouped candidate entities ready for review. Candidates must be explicitly applied via `kb_upsert` after validation.
Grouped candidate entities synthesized from declared context and codebase evidence. Candidates must be explicitly applied via `kb_upsert` after user preview and approval.

### `kb_briefing_generate`

Expand Down Expand Up @@ -210,7 +210,7 @@ Validation report with any violations found and suggested fixes.

### `/init-kibi`

Use this prompt for day-0 KB activation. It guides agents through `kb_autopilot_generate`, review, sequential `kb_upsert`, and validation.
Interactive onboarding workflow for day-0 KB activation. It guides agents to ask at most 4 bounded questions to gather declared context, call `kb_autopilot_generate` for read-only synthesis, present a preview for user approval, and perform sequential `kb_upsert` followed by `kb_check`.

### `/brief-kibi`

Expand All @@ -226,7 +226,7 @@ Use this prompt at task start when you need a briefing grounded in current KB ev

## Recommended Agent Workflow

1. **Day-0 Activation**: Use `kb_autopilot_generate` to discover entities and bootstrap the KB. Review candidates before applying.
1. **Interactive Bootstrap**: Start with the `/init-kibi` workflow to gather declared context and synthesize entities. Always preview candidates for user approval before applying.
2. **Start-task Briefing**: Use `kb_briefing_generate` or `/brief-kibi` when you need a citation-backed briefing before risky work.
3. **Gather Context**: Use `kb_search` for discovery and `kb_query` for exact follow-up.
4. **Inspect Freshness**: Use `kb_status` when branch or stale-state confidence matters.
Expand Down
2 changes: 1 addition & 1 deletion docs/prompts/llm-rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ You are operating in a workspace that uses Kibi, an intelligent knowledge base s

1. **Never manually read or edit files inside `.kb/`.** Interact with the knowledge base only through MCP tools.
2. **Do not invoke `kibi` CLI commands directly from the agent.** Use MCP tools and sanctioned slash commands instead.
3. **Start with \`kb_autopilot_generate\` for new repos, then use \`kb_search\`.** Use \`kb_autopilot_generate\` to discover entities and bootstrap the KB (preferred day-0 workflow). Use \`kb_search\` for broad discovery, then follow up with \`kb_query\` for exact IDs and precise lookups.
3. **Start with interactive `/init-kibi` for new repos.** Use the `/init-kibi` slash command for an interactive onboarding workflow. This workflow uses `kb_autopilot_generate` to synthesize entities from your declared context and codebase evidence. Always preview candidates and get user approval before writing.
4. **Create and update entities with `kb_upsert`.** Keep requirements, scenarios, symbols, tests, ADRs, flags, events, and facts synchronized with your work.
5. **Use relationship rows during `kb_upsert`.** Link requirements, tests, symbols, and facts as part of the same write.
6. **Never embed scenarios or tests inside requirement records.** Each requirement, scenario, and test **must** be a separate entity file. The canonical traceability chain is `REQ-xxx` → `SCEN-xxx` → `TEST-xxx`. Link them using explicit typed `links` entries or relationship rows (`specified_by`, `verified_by`, `validates`).
Expand Down
1 change: 1 addition & 0 deletions docs/troubleshooting.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ If git operations don't trigger kibi hooks:
```bash
kibi init
```
Re-running `kibi init` also refreshes `.gitignore` entries for `.kb/` and `.kb/briefs/`.

### Hook Conflicts

Expand Down
52 changes: 52 additions & 0 deletions documentation/adr/ADR-020.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
id: ADR-020
title: "Kibi Briefing v3 Architecture: Reliability through Session-Local Reconcile"
status: proposed
created_at: 2026-04-24T00:00:00Z
updated_at: 2026-04-24T00:00:00Z
source: documentation/adr/ADR-020.md
priority: must
tags:
- opencode
- architecture
- briefing
- reliability
links:
- type: relates_to
target: ADR-016
- type: relates_to
target: ADR-019
- type: relates_to
target: REQ-opencode-kibi-briefing-v3
---

## Context

Kibi Briefing v2 relied on a fast-path `file.edited` trigger that was susceptible to drift and stale state, especially when multiple files were edited or the context window diverged from the background worker's snapshot. Reliability issues were identified in complex multi-step sessions where the "briefing" state became detached from the actual agent workspace.

## Decision

We will implement a **Session-Local Reconcile** architecture for Kibi Briefing v3.

1. **Authoritative Inputs**: The briefing engine will treat the plugin-local **current-session** scope as the authoritative source of truth.
2. **Reconcile Model**: The plugin will implement a reconcile mechanism that compares the local session state (including uncommitted edits and session history) with the KB snapshot before generating a briefing.
3. **Baseline Clearing**: On branch switch or explicit session reset, the briefing state must be cleared to its baseline, ensuring no stale context persists.
4. **Multi-File Fingerprinting**: Context fingerprints will be calculated using a multi-file hash of all currently edited/dirty files in the session, rather than just the last edited file.
5. **Event Flow Preservation**:
- `file.edited` remains a fast-path hint to trigger a potential reconcile.
- `system.transform` remains text-only but may trigger a reconcile/fetch fallback if the current fingerprint is missing or stale.
6. **Fallback Preservation**: The `/brief-kibi` manual command remains the canonical escape hatch for users/agents to force a fresh briefing generation.
7. **MCP-Only Surface**: All briefing generation and reconciliation logic continues to be exposed via the `kb_briefing_generate` MCP tool. No forbidden CLI commands are introduced.

## Rationale

- **Accuracy**: By grounding the briefing in the actual session state, we eliminate the primary source of drift.
- **Stability**: Multi-file fingerprinting ensures the briefing remains stable even as the agent bounces between related files.
- **Security**: Preserves the thin-host boundary (ADR-016) by keeping complex logic in the MCP/CLI layer while the plugin handles state synchronization.
- **Predictability**: Explicit baseline clearing prevents "context leakage" between different workstreams or branches.

## Verification

- Verify that `kb_briefing_generate` accepts session-local state for reconciliation.
- Verify that context fingerprints accurately reflect the state of all dirty files in the session.
- Verify that switching branches triggers a complete clearing of the briefing cache.
7 changes: 1 addition & 6 deletions documentation/facts/FACT-011.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,7 @@ tags:
- testing
- flakiness
- test-pollution
fact_kind: property_value
subject_key: kibi.kb.scope
property_key: scope_model
operator: eq
value_type: string
value_string: per_branch
fact_kind: observation
---

The kibi test suite has flaky integration tests that fail when run together but pass when run in isolation:
Expand Down
18 changes: 18 additions & 0 deletions documentation/facts/FACT-ADR-SUPERSESSION-CHAIN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
id: FACT-ADR-SUPERSESSION-CHAIN
title: ADR Supersession Chain Semantics
status: active
created_at: 2026-04-24T00:00:00Z
updated_at: 2026-04-24T00:00:00Z
source: documentation/facts/FACT-ADR-SUPERSESSION-CHAIN.md
tags: [adr, schema]
fact_kind: property_value
subject_key: kibi.adr.supersession
property_key: chain_semantics
operator: eq
value_type: string
value_string: full_decision_history
polarity: require
---

supersedes(adr, adr) relationship chains represent the full architectural decision history.
18 changes: 18 additions & 0 deletions documentation/facts/FACT-ADR-TEMPORAL-INFERENCE-RULES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
id: FACT-ADR-TEMPORAL-INFERENCE-RULES
title: ADR Temporal Inference Rules
status: active
created_at: 2026-04-24T00:00:00Z
updated_at: 2026-04-24T00:00:00Z
source: documentation/facts/FACT-ADR-TEMPORAL-INFERENCE-RULES.md
tags: [adr, inference, temporal]
fact_kind: property_value
subject_key: kibi.adr.temporal_inference
property_key: inference_surface
operator: eq
value_type: string
value_string: current_adr_1_adr_chain_2_superseded_by_2
polarity: require
---

Inference exposes current_adr/1, adr_chain/2, and superseded_by/2 predicates.
11 changes: 8 additions & 3 deletions documentation/facts/FACT-AUDIT-APPEND-ONLY.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,16 @@ id: FACT-AUDIT-APPEND-ONLY
title: Append-Only Audit History
status: active
created_at: 2026-02-20T14:40:00Z
updated_at: 2026-02-20T14:40:00Z
updated_at: 2026-04-24T00:00:00Z
source: documentation/facts/FACT-AUDIT-APPEND-ONLY.md
tags: [audit, history]
fact_kind: subject
subject_key: kibi.audit.append_only
fact_kind: property_value
subject_key: kibi.write.governance
property_key: audit_history_mode
operator: eq
value_type: string
value_string: append_only
polarity: require
---

Audit history is append-only to preserve write provenance.
11 changes: 8 additions & 3 deletions documentation/facts/FACT-BRANCH-INITIALIZATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,16 @@ id: FACT-BRANCH-INITIALIZATION
title: Branch KB Initialization
status: active
created_at: 2026-02-20T14:40:00Z
updated_at: 2026-02-20T14:40:00Z
updated_at: 2026-04-24T08:12:00Z
source: documentation/facts/FACT-BRANCH-INITIALIZATION.md
tags: [branching, initialization]
fact_kind: subject
subject_key: kibi.branch.initialization
fact_kind: property_value
subject_key: kibi.kb.branch
property_key: initialization_mode
operator: eq
value_type: string
value_string: automatic
polarity: require
---

When a branch KB is missing, initialization logic creates it automatically.
Loading
Loading