# Changelog

## Score

- CAI 57 → 53 (-4.0)

## Lenses

- Code Health 64 → 57 (-7.3)
- Architecture 81 → 78 (-2.1)
- Maturity 84 → 86 (+1.7)
- Readiness 53 → 50 (-2.1)
- Security 73 → 67 (-6.0)
- Domain Modelling 100 → 100 (+0.0)
- Accessibility 50 → 45 (-4.4)
- Performance 100 → 100 (+0.0)

## Resolved (22)

- ADR not followed: 0011 · A mapping is configuration (docs/decisions/0011-a-mapping-is-not-a-fact.md)
- Change coupling: AccountShell.tsx ↔ Shell.tsx (web/src/pages/AccountShell.tsx)
- Change coupling: pipeline.rs ↔ api.ts (crates/utopia-server/src/pipeline.rs)
- Change-coupling hub: extraction.rs → lib.rs, kbs.rs, mappings.rs (crates/utopia-server/src/extraction.rs)
- Checkable ADR rule enforced only by prose: 0030 · A rule may read what a rule concluded (docs/decisions/0030-a-rule-may-read-what-a-rule-concluded.md)
- Checkable ADR rule enforced only by prose: 0031 · An event holds at the moment it names (docs/decisions/0031-an-event-holds-at-the-moment-it-names.md)
- Checkable ADR rule enforced only by prose: 0036 · Exploration aligns a schema to the ontology (docs/decisions/0036-exploration-aligns-a-schema-to-the-ontology.md)
- Documentation: no project overview (README.md)
- Duplicated block (18–19 lines × 2) (crates/utopia-store/src/resolution.rs)
- Duplicated block (19–20 lines × 2) (crates/utopia-reason/src/rules.rs)
- Duplicated block (6 lines × 2) (crates/utopia-server/src/github_issues.rs)
- Edited copy of a member (30 corresponding lines) (crates/utopia-store/src/documents.rs)
- FileTooLong: api/documents_routes.rs (crates/utopia-server/src/api/documents_routes.rs)
- FunctionTooLong: utopia_server::ontology_agent::adopt (crates/utopia-server/src/ontology_agent.rs)
- High CVE: [GHSA redacted] (web/pnpm-lock.yaml)
- Near-duplicate member pair (39 shared lines) (crates/utopia-server/src/api/sources_routes.rs)
- Off-boarding risk: anonymized user #1
- Outdated: tantivy
- Split web
- Workflow token grant is wider than its jobs use
- …and 2 more

## New (198)

- ADR has no Consequences section (docs/decisions/0044-the-ontology-is-a-view-over-what-documents-say.md)
- ADR has no Consequences section (docs/decisions/0053-a-phrase-decision-records-the-inputs-it-considered.md)
- ADR has no Consequences section (docs/decisions/0062-the-export-says-what-is-contested.md)
- ADR has no Context and Consequences section (docs/decisions/0001-ontology-import-and-governance.md)
- ADR has no Context and Consequences section (docs/decisions/0002-reasoning-engine.md)
- ADR has no Context and Consequences section (docs/decisions/0003-ontology-growth-loop.md)
- ADR has no Context and Consequences section (docs/decisions/0004-language-and-localization.md)
- ADR has no Context and Consequences section (docs/decisions/0005-alert-center.md)
- ADR has no Context and Consequences section (docs/decisions/0006-ontology-scale-and-the-prompt.md)
- ADR has no Context and Consequences section (docs/decisions/0007-who-decides-what-becomes-a-relation.md)
- ADR has no Context and Consequences section (docs/decisions/0008-ontology-packs-as-cold-start.md)
- ADR has no Context and Consequences section (docs/decisions/0009-no-type-is-a-type.md)
- ADR has no Context and Consequences section (docs/decisions/0010-no-relation-is-no-relation.md)
- ADR has no Context and Consequences section (docs/decisions/0011-a-mapping-is-not-a-fact.md)
- ADR has no Context and Consequences section (docs/decisions/0012-the-ontology-is-a-contract-not-a-suggestion.md)
- ADR has no Context and Consequences section (docs/decisions/0013-a-source-should-hand-over-its-history.md)
- ADR has no Context and Consequences section (docs/decisions/0014-identity-from-the-person-scope-from-the-token.md)
- ADR has no Context and Consequences section (docs/decisions/0015-recording-a-sentence-is-not-asserting-a-fact.md)
- ADR has no Context and Consequences section (docs/decisions/0017-a-contradiction-points-upstream.md)
- ADR has no Context and Consequences section (docs/decisions/0021-a-rule-reads-attributes-and-concludes-a-type.md)
- …and 178 more

## Changes since last survey

- 62 commits — 57 feature/other, 5 fixes

## By area

- crates/utopia-server — 21 commits
- crates/utopia-store — 17 commits
- web/src — 12 commits
- crates/utopia-ingest — 6 commits
- docs/decisions — 3 commits
- (repo) — 1 commit
- crates/utopia-extract — 1 commit
- scripts/bench — 1 commit

## Notable commits

- fix: Specify ontology regression cases that expect no property binding (#1203)
- fix: fix: keep Markdown name variants on the same resolution paths (#1299)
- fix: fix: preserve distinct statements and typed sources during entity merges (#1314)
- fix: fix: reject review closes that invert a fact's interval (#1315)
- fix: fix: stop alignment examples from supplying unrelated item IDs (#1323)
- change: A base can follow a GitHub repository's markdown files, fetching only the files that changed since the last sync (#1325)
- change: A class's instance list can keep only the members that lack a given relation, so a client finds the statements without a test without asking once per entity or exporting the base (#1270)
- change: A fact's evidence is read only inside its own base, so a role in one base no longer reads another base's quotes (#1261)
- change: A lead-in ending in a full-width colon stays with its table at any length (#1282)
- change: A line break inside an HTML table cell keeps the words on either side apart (#1281)
- change: A literal value reaches the adjudicator and the review card instead of a question mark (#1220)
- change: A push that names its external_id keeps that id's document (#1268)
- change: A reply that keeps repeating itself comes back cut instead of running to the token ceiling (#1306)
- change: A reuse keeps what a person decided after the agent read it (#1288)
- change: A rule's set values split on the comma a Chinese input method types (#1283)
- change: A split paragraph's first chunk carries its headings once (#1285)
- change: A system admin can make another user a system admin (#1234)
- change: A token reads a base's graph overview and neighbourhood (#1264)
- change: A token reads the entities, history and fact evidence of the bases it reaches, so a service mirroring into Utopia can read its own base back without a person's session (#1263)
- change: A write token creates an api source as well as a statements source, since both are push-only and a backend mirrors code and docs into a base as plain documents (#1274)
- …and 42 more
