Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
26 changes: 26 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.18.0] - 2026-04-19

### Added

- **DOLCHEO batch-prefix input syntax for `oddkit_encode`** — Paragraph-split input now recognizes per-paragraph prefix tags: `[D]` (Decision), `[O]` (Observation closed), `[L]` (Learning), `[C]` (Constraint), `[H]` (Handoff), `[E]` (Encode), and `[O-open]` with optional priority band (`[O-open P1]`, `[O-open P2.1]`). Each tagged paragraph becomes its own artifact in the response array. See `canon/definitions/dolcheo-vocabulary` for the seven-dimension vocabulary. Unprefixed input still works unchanged (back-compat); TSV `LETTER\tTITLE\tBODY` input still works unchanged.

- **`facet` and `priority_band` fields on encoded artifacts** — Artifacts produced from `[O-open ...]` prefixes carry `facet: "open"` and (when provided) `priority_band: "P1"` / `"P2.1"` so the Open-vs-closed distinction per DOLCHEO survives the envelope. Omitted for non-Open artifacts to keep legacy consumer output identical.

- **`governance_source` on `oddkit_encode` envelope** — Encode response `result` now declares which tier served its vocabulary: `"knowledge_base"` (live canon read succeeded, canon-governed encoding-type docs parsed) or `"minimal"` (canon unreachable, six-letter DOLCHEO fallback in effect). Two-tier cascade, not three — per `canon/constraints/core-governance-baseline`, encoding-types are canon-only (not in the required-baseline manifest), so there is no `"bundled"` middle tier for this tool. The `governance_uri` field now also points at `klappy://canon/definitions/dolcheo-vocabulary` for callers that want the authoritative source.

### Changed

- **Minimal encoding-types fallback upgraded from 5-letter OLDC+H to 6-letter DOLCHEO** — When canon is unreachable, encode's built-in fallback now includes `E` (Encode) in addition to the original D/O/L/C/H. Open remains a facet of O per canon (surfaced via the prefix parser), not a seventh letter.

- **`oddkit_encode` discovery dedups by letter** — Canon now contains separate per-type docs for closed Observation (`odd/encoding-types/observation.md`) and Open (`odd/encoding-types/open.md`), both claiming letter `O`. Discovery keeps the first and skips duplicates so the letter registry stays single-character-per-entry.

- **`oddkit_encode` tool description rewritten** — Now references DOLCHEO, lists the seven dimensions, and documents the batch-prefix syntax.

### Fixed

- **0.17.0 release note correction: `governance_source` on encode and challenge.** The 0.17.0 entry for "`governance_source` on refactored tool envelopes" claimed challenge, encode, and telemetry_policy all declared the tier signal. In practice only telemetry_policy did at HEAD — challenge and encode's envelopes were silent. This release retrofits encode's envelope to declare it. Challenge remains to be fixed in the P1.3 sweep.

### Known limitations

- **Encode does not yet implement strict-mode at the index layer.** Passing `knowledge_base_url` to `oddkit_encode` echoes the override in `debug.knowledge_base_url` and honors canon overrides when the target repo has encoding-type docs, but `getIndex` merges baseline entries by design (`arbitrateEntries`: canon overrides baseline, baseline is the floor). A custom `knowledge_base_url` pointing at a repo without encoding-type docs will still return `governance_source: "knowledge_base"` via the default baseline rather than falling through to `"minimal"`. Telemetry_policy's strict mode (via `getFile`'s `skipBaselineFallback` option) is not yet available on `getIndex`. Tracked for the P1.3 sweep.

## [0.17.0] - 2026-04-19

### Added
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

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

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "oddkit",
"version": "0.17.0",
"version": "0.18.0",
"description": "Agent-first CLI for ODD-governed repos. Epistemic terrain rendering with portable baseline.",
"type": "module",
"bin": {
Expand Down
4 changes: 2 additions & 2 deletions workers/package-lock.json

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

2 changes: 1 addition & 1 deletion workers/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "oddkit-mcp-worker",
"version": "0.17.0",
"version": "0.18.0",
"private": true,
"type": "module",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion workers/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ Use when:
},
{
name: "oddkit_encode",
description: "Structure a decision, insight, or boundary as a durable record. IMPORTANT: This tool returns the structured artifact in the response — it does NOT persist or save it. The caller must save the output to storage. Standard artifact types: Observations (O), Learnings (L), Decisions (D), Constraints (C), Handoffs (H) — OLDC+H. Track OLDC+H continuously — encode what the user shared, encode what you did. Persist at natural breakpoints.",
description: "Structure decisions, insights, or boundaries as DOLCHEO artifacts (canon/definitions/dolcheo-vocabulary) — Decisions (D), Observations closed (O), Learnings (L), Constraints (C), Handoffs (H), Encodes (E), Opens (O-open, facet of O). IMPORTANT: does NOT persist — caller must save output to storage. Batch mode: paragraph-split input with optional prefix tags like '[D] body', '[O] body', '[O-open P1] body' returns a per-artifact array. Unprefixed input uses trigger-word classification (back-compat). Response envelope declares governance_source (knowledge_base|minimal) per canon/constraints/core-governance-baseline. Accepts knowledge_base_url to read the encoding-type vocabulary from an alternate knowledge base.",
action: "encode",
schema: {
input: z.string().describe("A decision, insight, or boundary to capture."),
Expand Down
Loading
Loading