|
| 1 | +<!-- SPDX-FileCopyrightText: Sudo Apt Holdings LLC --> |
| 2 | +<!-- SPDX-License-Identifier: Apache-2.0 --> |
| 3 | +# Changelog |
| 4 | + |
| 5 | +Trinity is developed in reviewed units of work, each merged through a pull request with the |
| 6 | +quality gate green and then tagged. This file records what each tag delivered and how it was |
| 7 | +verified. It is derived from the tags themselves (`git tag -l 'slice/*'`), not written from |
| 8 | +memory. |
| 9 | + |
| 10 | +The project is pre-alpha: there is no supported release series yet, and tags mark reviewed |
| 11 | +increments rather than supported versions. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) |
| 12 | +loosely; versioning is by increment, and semantic versions begin at the first supported release. |
| 13 | + |
| 14 | +Every entry below was gated on: formatting, a compile with warnings as errors, the architectural |
| 15 | +boundary check, Credo (strict), Sobelow, dependency and licence audits, the full test suite and a |
| 16 | +coverage floor. Entries from 2026-09-22 onward also required a release build check. Verification |
| 17 | +evidence for each increment is retained by the maintainers and summarised here. |
| 18 | + |
| 19 | +## Unreleased |
| 20 | + |
| 21 | +- Repository restructured for public review: internal planning material moved out of the published |
| 22 | + tree, engineering rules consolidated into `docs/03-conventions.md`, and this changelog added as |
| 23 | + the public record of delivered work. |
| 24 | + |
| 25 | +## 2026-09-23 |
| 26 | + |
| 27 | +### `slice/070` — Gateway core |
| 28 | +Trinity becomes reachable from channels other than the desktop. An adapter behaviour carries text |
| 29 | +and nothing else; a router admits the sender, applies a rate limit, dispatches commands and binds |
| 30 | +the conversation to a session, streaming the reply back. An unknown sender receives a pairing code |
| 31 | +and nothing else: no session is created and no model is called until they are paired. Approvals |
| 32 | +raised during a channel-originated turn are rendered into that conversation, and what a channel may |
| 33 | +approve is capped below what the local desktop may, with the refusal recorded in the receipt chain. |
| 34 | +Ships an in-process console adapter; messaging platforms follow. |
| 35 | + |
| 36 | +## 2026-09-22 |
| 37 | + |
| 38 | +### `slice/062` — MCP authorization |
| 39 | +OAuth 2.1 in every role for the Model Context Protocol surface: a resource server validating |
| 40 | +audience-bound tokens against an external authorization server, an optional personal-profile |
| 41 | +authorization server for a single operator's own machine, and a client role that obtains tokens |
| 42 | +from protected servers. Identity is separated from authority throughout: a token establishes who is |
| 43 | +calling, while the permission gate and the selected authority adapter decide whether an effect may |
| 44 | +happen. No token material reaches model context, logs or receipts. |
| 45 | + |
| 46 | +### `slice/061` — MCP server |
| 47 | +Trinity serves the Model Context Protocol at revision 2026-07-28 over Streamable HTTP and stdio, |
| 48 | +with compatibility for 2025-11-25. Calls arriving over the protocol pass the same permission gate |
| 49 | +and effect membrane as local ones and leave the same receipts. A call requiring approval is held |
| 50 | +with sealed, tamper-evident state that the client retries once the operator has decided. |
| 51 | + |
| 52 | +### `slice/050` — Scheduler |
| 53 | +Scheduled agent tasks on durable jobs, surviving restart, with cron or one-shot schedules, delivery |
| 54 | +targets, and a curator that marks stale records and archives untouched ones without deleting. |
| 55 | + |
| 56 | +## 2026-09-21 |
| 57 | + |
| 58 | +### `slice/060` — MCP client |
| 59 | +A thin client driver: outbound requests are built here while decoding and validation use the |
| 60 | +protocol core's published functions. Every tool a server exposes becomes a namespaced tool that |
| 61 | +cannot borrow a built-in tool's permissions, every result is treated as untrusted content, and a |
| 62 | +server's mid-call question becomes an operator approval rather than an automatic answer. |
| 63 | + |
| 64 | +### `slice/059` — MCP capability assessment |
| 65 | +A measured gap analysis of the protocol core against the 2026-07-28 checklist, and a probe of the |
| 66 | +extension seam the server side needs, recorded as findings rather than intentions. |
| 67 | + |
| 68 | +### `slice/041` — Skill self-management |
| 69 | +Skills the system proposes for itself pass through staged approval and a scanner before becoming |
| 70 | +active. |
| 71 | + |
| 72 | +### `slice/040` — Skills registry |
| 73 | +A registry for the open `SKILL.md` format with progressive disclosure of instructions. |
| 74 | + |
| 75 | +### `slice/032` — Semantic memory |
| 76 | +Embeddings, semantic recall and hybrid retrieval, with a local model option and a vector store |
| 77 | +behind a behaviour. |
| 78 | + |
| 79 | +## 2026-09-20 |
| 80 | + |
| 81 | +### `slice/034` — Export, import, restore |
| 82 | +The operator's data leaves in a documented archive format and comes back, with manifest validation. |
| 83 | + |
| 84 | +### `slice/033` — Project context |
| 85 | +`AGENTS.md` from a session's project roots is loaded into context with precedence and a size cap. |
| 86 | + |
| 87 | +### `slice/031` — Session search |
| 88 | +Full-text search over conversation history using SQLite FTS5. |
| 89 | + |
| 90 | +### `slice/030` — Persona and always-on memory |
| 91 | +A persona document and a memory tier always present in context, scoped session, persona and global, |
| 92 | +with a budget and truncation recorded as evidence. |
| 93 | + |
| 94 | +### `slice/024` — Effects, authority and receipts |
| 95 | +The effect catalog, authority selection at boot, and locally signed receipts. Authority is an |
| 96 | +adapter behind a behaviour: the shipped implementation decides locally, and a deployment may supply |
| 97 | +an external one, in which case this tree keeps no executor for the effects that adapter governs. |
| 98 | +Receipts are an Ed25519-signed hash chain with checkpoints and a verifier. |
| 99 | + |
| 100 | +### `slice/023` — Context compaction |
| 101 | +Conversations that outgrow the window are compacted with lineage retained. |
| 102 | + |
| 103 | +### `slice/022` — Core tools |
| 104 | +Filesystem, web fetch and search, and a shell tool, each behind the permission gate, with content |
| 105 | +from outside the machine marked untrusted. |
| 106 | + |
| 107 | +### `slice/021` — Permission gate |
| 108 | +Every tool call is decided before it runs: allow once, for the session, or by a written rule, with |
| 109 | +the decision and its basis receipted. Approval surfaces carry no authority of their own. |
| 110 | + |
| 111 | +### `slice/020` — Tool protocol and registry |
| 112 | +Tools are modules behind a behaviour plus a configuration entry; adding one requires no change to |
| 113 | +any core module, and the registry test asserts it. |
| 114 | + |
| 115 | +### `slice/013` — Chat interface |
| 116 | +Streaming conversation in LiveView, with model output rendered through a single path. |
| 117 | + |
| 118 | +### `slice/012` — Session process |
| 119 | +One supervised process per session, with crash recovery proven by killing the process. |
| 120 | + |
| 121 | +### `slice/011` — Model provider layer |
| 122 | +Providers behind one behaviour, switched by configuration, with usage recorded per call. |
| 123 | + |
| 124 | +### `slice/010` — Core domain and persistence |
| 125 | +The data model and repository layer, SQLite first with PostgreSQL supported, with gapless ordering |
| 126 | +under concurrent writers proven by a stress test. |
| 127 | + |
| 128 | +### `slice/003` — FIPS build leg |
| 129 | +A continuous integration leg that builds from source and runs the cryptographic properties inside a |
| 130 | +FIPS-mode container, so claims about approved algorithms are measured rather than asserted. |
| 131 | + |
| 132 | +## 2026-09-07 |
| 133 | + |
| 134 | +### `slice/001` — Packaging |
| 135 | +A self-contained desktop binary produced for Linux, macOS and Windows, each smoke-tested in CI. |
| 136 | + |
| 137 | +## 2026-09-06 |
| 138 | + |
| 139 | +### `slice/000` — Toolchain and quality gate |
| 140 | +The repository, the pinned toolchain and the gate every later change has had to pass. |
0 commit comments