Files
ATOCore/.obsidian/workspace.json
Anto01 f19b3a3d0f fix(api): R14 — promote route translates V1-0 ValueError to 400
POST /entities/{id}/promote now wraps the promote_entity call in
try/except ValueError → HTTPException(400). Previously the new
V1-0 provenance re-check raised ValueError that the route didn't
catch, so legacy no-provenance candidates promoted via the API
surfaced as 500 instead of 400.

Matches the existing ValueError → 400 handling on POST /entities
(api_create_entity at routes.py:1490).

Test: test_api_promote_returns_400_on_legacy_no_provenance inserts
a pre-V1-0 legacy candidate directly, POSTs to the promote route,
asserts 400 with the expected detail, asserts the row stays
candidate.

Test count: 547 -> 548. Full suite green in 72.91s.

Closes R14.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 15:29:45 -04:00

190 lines
5.0 KiB
JSON

{
"main": {
"id": "b77ba76979ead837",
"type": "split",
"children": [
{
"id": "f87c2c42c078a85b",
"type": "tabs",
"children": [
{
"id": "c56c6d5a90db0355",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "docs/MASTER-BRAIN-PLAN.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
"title": "MASTER-BRAIN-PLAN"
}
}
]
}
],
"direction": "vertical"
},
"left": {
"id": "b855c3c36d491ee3",
"type": "split",
"children": [
{
"id": "7d6978e4bb8c4218",
"type": "tabs",
"children": [
{
"id": "f799b7c8adbccbc2",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical",
"autoReveal": false
},
"icon": "lucide-folder-closed",
"title": "Files"
}
},
{
"id": "7de38afa76edc676",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
},
"icon": "lucide-search",
"title": "Search"
}
},
{
"id": "babc39197dd9c9c6",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {},
"icon": "lucide-bookmark",
"title": "Bookmarks"
}
}
]
}
],
"direction": "horizontal",
"width": 300
},
"right": {
"id": "d63c3fe3c986f84d",
"type": "split",
"children": [
{
"id": "33e2645653a3a2d0",
"type": "tabs",
"children": [
{
"id": "5827678b9e27e77c",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"file": "docs/MASTER-BRAIN-PLAN.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
"title": "Backlinks for MASTER-BRAIN-PLAN"
}
},
{
"id": "fec1e8678fe61e1a",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"file": "docs/MASTER-BRAIN-PLAN.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
"title": "Outgoing links from MASTER-BRAIN-PLAN"
}
},
{
"id": "0c524cb35a17b042",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-tags",
"title": "Tags"
}
},
{
"id": "0c7517dd072e31f4",
"type": "leaf",
"state": {
"type": "all-properties",
"state": {
"sortOrder": "frequency",
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-archive",
"title": "All properties"
}
},
{
"id": "f2b9b2636ff29057",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"file": "docs/MASTER-BRAIN-PLAN.md",
"followCursor": false,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
"title": "Outline of MASTER-BRAIN-PLAN"
}
}
]
}
],
"direction": "horizontal",
"width": 300,
"collapsed": true
},
"left-ribbon": {
"hiddenItems": {
"switcher:Open quick switcher": false,
"graph:Open graph view": false,
"canvas:Create new canvas": false,
"daily-notes:Open today's daily note": false,
"templates:Insert template": false,
"command-palette:Open command palette": false,
"bases:Create new base": false
}
},
"active": "c56c6d5a90db0355",
"lastOpenFiles": [
"DEV-LEDGER.md.tmp.94864.1776886173652"
]
}