diff --git a/docs/adr/0256-evidence-bearing-voice-combinations.md b/docs/adr/0256-evidence-bearing-voice-combinations.md index 54f9cc826..29608c911 100644 --- a/docs/adr/0256-evidence-bearing-voice-combinations.md +++ b/docs/adr/0256-evidence-bearing-voice-combinations.md @@ -22,6 +22,18 @@ attributes rather than from one exhaustive industry-role list. ## Decision +Continuation clarification (2026-09-05): accumulating authorized pages retains +every value of a repeated JSON-LD subject property, whether represented as a +single value or an array. Repeated values are deduplicated; a later fragment +must not replace an earlier relationship, type, or label. JSON object member +order is not part of value identity, consistent with RFC 8259's unordered +object model, so equivalent node/value objects remain one value when a later +page serializes their members in a different order. The accumulator preserves +JSON array sequence rather than pretending to perform full JSON-LD expansion, +set normalization, or RDF canonicalization. This implements ADR 0184's export +parity under the W3C JSON-LD 1.1 node-object contract without changing +authorization, truth, cutoff, or Voice assignment identity. + Represent composition as rows in normalized `source_post_voice`, not as compound lookup codes. @@ -155,6 +167,10 @@ release claim still requires protected-main delivery evidence. AccountAbility. (2015). *AA1000 stakeholder engagement standard*. https://www.accountability.org/standards/aa1000-stakeholder-engagement +Bray, T. (2017). *The JavaScript Object Notation (JSON) data interchange +format* (RFC 8259). Internet Engineering Task Force. +https://www.rfc-editor.org/rfc/rfc8259 + International Organization for Standardization. (2010). *Guidance on social responsibility* (ISO Standard No. 26000:2010). https://www.iso.org/standard/42546.html @@ -167,3 +183,7 @@ Mitchell, R. K., Agle, B. R., & Wood, D. J. (1997). Toward a theory of stakeholder identification and salience: Defining the principle of who and what really counts. *Academy of Management Review, 22*(4), 853–886. https://doi.org/10.5465/amr.1997.9711022105 + +World Wide Web Consortium. (2020). *JSON-LD 1.1: A JSON-based serialization +for linked data* (W3C Recommendation). +https://www.w3.org/TR/json-ld11/ diff --git a/docs/development-loop-20260905.json b/docs/development-loop-20260905.json new file mode 100644 index 000000000..2315f0083 --- /dev/null +++ b/docs/development-loop-20260905.json @@ -0,0 +1,2890 @@ +{ + "observed_at_utc": "2026-09-05T07:25:55.442719+00:00", + "main": "83eba56149eb802cd63642c507c324c9976ec78e", + "implementation": "05384255df15c3995dbc3cef149abd5d92afd40a", + "scope": "Repository metadata only. Most recent 20 reviews and first 100 threads per PR; moved heads invalidate prior review evidence. File listings were collected sequentially within each request and are not atomic with later head reads. Draft/auto-merge values precede this cycle readiness mutations.", + "prs": [ + { + "pr": 933, + "head": "de4e6cf9a48b042af0bb1128fa9b194abd1952a5", + "base": "docs/public-surface-deepwiki", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "de4e6cf9a48b042af0bb1128fa9b194abd1952a5", + "authority_paths": [] + }, + { + "pr": 932, + "head": "fe01453821105e62274a754797f6bf51a2b9ae7d", + "base": "feat/i18n-versioned-translation-ledger", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "fe01453821105e62274a754797f6bf51a2b9ae7d", + "authority_paths": [ + { + "path": "docs/adr/0362-versioned-ui-translation-ledger.md", + "status": "modified" + } + ] + }, + { + "pr": 929, + "head": "2a8ed5d02f4a3082b346d923d754c1ff37ebff52", + "base": "main", + "draft": false, + "review_decision": "", + "auto_merge": true, + "review_head_matches": true, + "unresolved_threads": 6, + "files_head": "2a8ed5d02f4a3082b346d923d754c1ff37ebff52", + "authority_paths": [ + { + "path": "docs/adr/0362-versioned-ui-translation-ledger.md", + "status": "added" + }, + { + "path": "migrations/0246_ui_translation_ledger.sql", + "status": "added" + }, + { + "path": "migrations/0247_ui_translation_truncate_guard.sql", + "status": "added" + }, + { + "path": "migrations/rollback/0246_ui_translation_ledger.sql", + "status": "added" + }, + { + "path": "migrations/rollback/0247_ui_translation_truncate_guard.sql", + "status": "added" + } + ] + }, + { + "pr": 928, + "head": "322b58247e933592ceb6d6eab6cac258ee5335cd", + "base": "feat/leftover-map-axis-origin-badge-v21150", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "322b58247e933592ceb6d6eab6cac258ee5335cd", + "authority_paths": [ + { + "path": "docs/adr/0358-leftover-map-axis-origin-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0359-leftover-map-list-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 927, + "head": "34595e41ee65b89a468efeebf64fee86eff881d9", + "base": "feat/leftover-map-compare-axis-origin-badge-v21140", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "34595e41ee65b89a468efeebf64fee86eff881d9", + "authority_paths": [ + { + "path": "docs/adr/0346-leftover-map-axis-tick-origin-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0357-leftover-map-compare-axis-origin-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0358-leftover-map-axis-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 926, + "head": "ede308929b20f24a56c5ff3ae2211dd84d20f3ae", + "base": "feat/leftover-map-compare-plot-origin-badge-v21130", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "ede308929b20f24a56c5ff3ae2211dd84d20f3ae", + "authority_paths": [ + { + "path": "docs/adr/0345-leftover-map-compare-axis-tick-origin-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0356-leftover-map-compare-plot-origin-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0357-leftover-map-compare-axis-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 925, + "head": "8cbaad528c9aaa8d4e356db1577b932fa85ac686", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "8cbaad528c9aaa8d4e356db1577b932fa85ac686", + "authority_paths": [ + { + "path": "docs/adr/0361-immutable-release-supply-chain-boundary.md", + "status": "added" + }, + { + "path": "docs/adr/README.md", + "status": "modified" + } + ] + }, + { + "pr": 921, + "head": "76ebcb10a72955a68c616c02e6e0732db0800f93", + "base": "feat/leftover-map-plot-origin-badge-v21120", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "76ebcb10a72955a68c616c02e6e0732db0800f93", + "authority_paths": [ + { + "path": "docs/adr/0344-leftover-map-compare-plot-tick-origin-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0356-leftover-map-compare-plot-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 920, + "head": "d54c5611cc693bb7a85e9164814761417ccb563e", + "base": "feat/leftover-map-compare-list-criterion-origin-badge-v21110", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "d54c5611cc693bb7a85e9164814761417ccb563e", + "authority_paths": [ + { + "path": "docs/adr/0343-leftover-map-plot-tick-origin-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0354-leftover-map-compare-list-criterion-origin-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0355-leftover-map-plot-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 919, + "head": "caf8ee0f576eb23dc80d907fccfdcd6a4cecb232", + "base": "fix/contextual-orchestrator-owner-boundary", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "caf8ee0f576eb23dc80d907fccfdcd6a4cecb232", + "authority_paths": [ + { + "path": "docs/adr/0082-bounded-keyman-backfill.md", + "status": "modified" + } + ] + }, + { + "pr": 918, + "head": "a91d2ec56bad922f9159e17649f77d229a0f98d3", + "base": "feat/leftover-map-compare-list-post-origin-badge-v21100", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "a91d2ec56bad922f9159e17649f77d229a0f98d3", + "authority_paths": [ + { + "path": "docs/adr/0342-leftover-map-compare-list-criterion-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0354-leftover-map-compare-list-criterion-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 917, + "head": "8192b48560a919c800ec47927adc966179a2b572", + "base": "feat/leftover-map-list-criterion-origin-badge-v21090", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "8192b48560a919c800ec47927adc966179a2b572", + "authority_paths": [ + { + "path": "docs/adr/0341-leftover-map-compare-list-post-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0353-leftover-map-compare-list-post-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 916, + "head": "7978e92561e16a3ea4e2837fef1f35fe0bec3f3c", + "base": "feat/leftover-map-list-post-origin-badge-v21080", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 1, + "files_head": "7978e92561e16a3ea4e2837fef1f35fe0bec3f3c", + "authority_paths": [ + { + "path": "docs/adr/0340-leftover-map-list-criterion-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0352-leftover-map-list-criterion-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 915, + "head": "8c74712f2af4acf76871c71a9fd72c6aa2912f4a", + "base": "feat/dichotomous-measurement-policy", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "8c74712f2af4acf76871c71a9fd72c6aa2912f4a", + "authority_paths": [ + { + "path": "docs/adr/0355-dynamic-evaluation-lineage.md", + "status": "added" + } + ] + }, + { + "pr": 914, + "head": "c2579713d64ba0d261f11dd9f9777b45ee3ef58b", + "base": "main", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "c2579713d64ba0d261f11dd9f9777b45ee3ef58b", + "authority_paths": [ + { + "path": "docs/adr/0363-canonical-activity-stream-identity.md", + "status": "added" + }, + { + "path": "docs/adr/README.md", + "status": "modified" + } + ] + }, + { + "pr": 913, + "head": "371bb82cea8437f907249d6e8b166f63dfe5bb8e", + "base": "feat/leftover-map-compare-plot-criterion-origin-badge-v21070", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 1, + "files_head": "371bb82cea8437f907249d6e8b166f63dfe5bb8e", + "authority_paths": [ + { + "path": "docs/adr/0339-leftover-map-list-post-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0351-leftover-map-list-post-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 912, + "head": "2ac677bae522eb1925edc6bd105f1f57a287f73e", + "base": "feat/leftover-map-compare-plot-post-origin-badge-v21060", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "2ac677bae522eb1925edc6bd105f1f57a287f73e", + "authority_paths": [ + { + "path": "docs/adr/0336-leftover-map-compare-plot-criterion-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0350-leftover-map-compare-plot-criterion-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 911, + "head": "5d40eed35a0b6e0d182397f8d02b29c38e9bdd17", + "base": "main", + "draft": false, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": true, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "5d40eed35a0b6e0d182397f8d02b29c38e9bdd17", + "authority_paths": [ + { + "path": "docs/adr/0366-synchronous-postgresql-default-tls.md", + "status": "added" + } + ] + }, + { + "pr": 909, + "head": "e82aed38c0997588529e21fe0e1bf4159f3c198c", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "e82aed38c0997588529e21fe0e1bf4159f3c198c", + "authority_paths": [ + { + "path": "docs/adr/0364-authenticated-browser-request-boundary.md", + "status": "added" + }, + { + "path": "docs/adr/0365-customer-master-malformed-hierarchy.md", + "status": "added" + }, + { + "path": "docs/adr/README.md", + "status": "modified" + } + ] + }, + { + "pr": 908, + "head": "00e90e03ae1afb7f13ae843dd578694d0f72b325", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "00e90e03ae1afb7f13ae843dd578694d0f72b325", + "authority_paths": [] + }, + { + "pr": 907, + "head": "847a15e73e69bfc768d517a83fa8706aecfafe7e", + "base": "main", + "draft": false, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": true, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "847a15e73e69bfc768d517a83fa8706aecfafe7e", + "authority_paths": [] + }, + { + "pr": 904, + "head": "09d7be51a6b599769fb78371c9995a99d7df6974", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "09d7be51a6b599769fb78371c9995a99d7df6974", + "authority_paths": [] + }, + { + "pr": 903, + "head": "e325b3f63fdb9c34a7c62ae58045ec36e34b1879", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "e325b3f63fdb9c34a7c62ae58045ec36e34b1879", + "authority_paths": [] + }, + { + "pr": 902, + "head": "c316bfbde8644feda7e49579d43cc162e99b0bad", + "base": "fix/contextual-orchestrator-owner-boundary", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "c316bfbde8644feda7e49579d43cc162e99b0bad", + "authority_paths": [ + { + "path": "docs/adr/0301-dichotomous-measurement-policy.md", + "status": "added" + } + ] + }, + { + "pr": 901, + "head": "d44cd875a93cb929b6e30b744976d2c19e67d981", + "base": "fix/voice-export-authority-20260828", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "d44cd875a93cb929b6e30b744976d2c19e67d981", + "authority_paths": [] + }, + { + "pr": 899, + "head": "e5711282c48cc20d0a88fb56a9e382d500989c72", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "e5711282c48cc20d0a88fb56a9e382d500989c72", + "authority_paths": [ + { + "path": "docs/adr/0300-contextual-orchestrator-owner-boundary.md", + "status": "added" + } + ] + }, + { + "pr": 897, + "head": "c4194085f7bc0c7383f994da81d6a8146b695dc8", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "c4194085f7bc0c7383f994da81d6a8146b695dc8", + "authority_paths": [ + { + "path": "docs/adr/0219-tepp-terminal-result-lifecycle.md", + "status": "modified" + } + ] + }, + { + "pr": 893, + "head": "f2a1860185714d2921162a754425065d867bcce6", + "base": "feat/leftover-map-plot-post-origin-badge-v21050", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "f2a1860185714d2921162a754425065d867bcce6", + "authority_paths": [ + { + "path": "docs/adr/0337-leftover-map-compare-plot-post-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0349-leftover-map-compare-plot-post-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 892, + "head": "c941929c7244f64e31e5ceca8b3c6f6bcb1e3541", + "base": "feat/leftover-map-plot-criterion-origin-badge-v21040", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "c941929c7244f64e31e5ceca8b3c6f6bcb1e3541", + "authority_paths": [ + { + "path": "docs/adr/0338-leftover-map-plot-post-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0348-leftover-map-plot-post-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 891, + "head": "47dd988d6b5cdea713b163b40702235b65af5ffe", + "base": "feat/leftover-map-axis-tick-origin-badge-v21030", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "47dd988d6b5cdea713b163b40702235b65af5ffe", + "authority_paths": [ + { + "path": "docs/adr/0335-leftover-map-plot-criterion-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0346-leftover-map-axis-tick-origin-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0347-leftover-map-plot-criterion-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 889, + "head": "4bfb490d3e2bd8dd74caabaf2922ac3f6755749a", + "base": "feat/leftover-map-compare-axis-tick-origin-badge-v21020", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "4bfb490d3e2bd8dd74caabaf2922ac3f6755749a", + "authority_paths": [ + { + "path": "docs/adr/0330-leftover-map-axis-tick-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0334-leftover-map-axis-tick-share-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0345-leftover-map-compare-axis-tick-origin-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0346-leftover-map-axis-tick-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 888, + "head": "e5f38f3bda1caa1d48975204918c994a6a3dff3f", + "base": "feat/dashboard-case-metrics", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 3, + "files_head": "e5f38f3bda1caa1d48975204918c994a6a3dff3f", + "authority_paths": [ + { + "path": "docs/adr/0224-canonical-compose-project.md", + "status": "modified" + }, + { + "path": "docs/adr/0272-twenty-millisecond-read-slo.md", + "status": "modified" + }, + { + "path": "docs/adr/0279-global-ask-exact-semantic-index.md", + "status": "added" + }, + { + "path": "docs/adr/README.md", + "status": "modified" + }, + { + "path": "migrations/0274_exact_embedding_projection.sql", + "status": "added" + }, + { + "path": "migrations/0275_global_ask_exact_authorization_version.sql", + "status": "added" + } + ] + }, + { + "pr": 887, + "head": "7637fc8bbe165be297794a74187aa1065e82486c", + "base": "feat/leftover-map-compare-plot-tick-origin-badge-v21010", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "7637fc8bbe165be297794a74187aa1065e82486c", + "authority_paths": [ + { + "path": "docs/adr/0329-leftover-map-compare-axis-tick-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0333-leftover-map-compare-axis-tick-share-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0344-leftover-map-compare-plot-tick-origin-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0345-leftover-map-compare-axis-tick-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 886, + "head": "4a31a41f9036cad4ba35ed16b8fdf1c1212e4847", + "base": "feat/leftover-map-plot-tick-origin-badge-v21000", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "4a31a41f9036cad4ba35ed16b8fdf1c1212e4847", + "authority_paths": [ + { + "path": "docs/adr/0328-leftover-map-compare-plot-tick-axis-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0331-leftover-map-compare-plot-tick-share-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0343-leftover-map-plot-tick-origin-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0344-leftover-map-compare-plot-tick-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 885, + "head": "7a6c0384f4d82544541b6af70cf178c51ed60d62", + "base": "feat/leftover-map-compare-list-criterion-coordinates-v2990", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "7a6c0384f4d82544541b6af70cf178c51ed60d62", + "authority_paths": [ + { + "path": "docs/adr/0327-leftover-map-plot-tick-axis-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0332-leftover-map-plot-tick-share-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0342-leftover-map-compare-list-criterion-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0343-leftover-map-plot-tick-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 884, + "head": "bcbb7ce03f92304ccdc34fb014a8db8e3bf8a659", + "base": "feat/leftover-map-compare-list-post-coordinates-v2980", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 1, + "files_head": "bcbb7ce03f92304ccdc34fb014a8db8e3bf8a659", + "authority_paths": [ + { + "path": "docs/adr/0267-leftover-map-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0302-leftover-map-compare-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0341-leftover-map-compare-list-post-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0342-leftover-map-compare-list-criterion-coordinates.md", + "status": "added" + } + ] + }, + { + "pr": 883, + "head": "bdd48e23a16358b91a652e45c4373c6f45e389fa", + "base": "feat/leftover-map-list-criterion-coordinates-v2970", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 3, + "files_head": "bdd48e23a16358b91a652e45c4373c6f45e389fa", + "authority_paths": [ + { + "path": "docs/adr/0267-leftover-map-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0302-leftover-map-compare-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0340-leftover-map-list-criterion-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0341-leftover-map-compare-list-post-coordinates.md", + "status": "added" + } + ] + }, + { + "pr": 882, + "head": "094d1a0c8bcfd4b351f9665c47a84c510cbab94d", + "base": "feat/leftover-map-list-post-coordinates-v2960", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 4, + "files_head": "094d1a0c8bcfd4b351f9665c47a84c510cbab94d", + "authority_paths": [ + { + "path": "docs/adr/0267-leftover-map-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0339-leftover-map-list-post-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0340-leftover-map-list-criterion-coordinates.md", + "status": "added" + } + ] + }, + { + "pr": 881, + "head": "167888d669ba1b44c7dd0209ab26c9be9f19bf93", + "base": "feat/leftover-map-plot-post-coordinates-v2950", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 3, + "files_head": "167888d669ba1b44c7dd0209ab26c9be9f19bf93", + "authority_paths": [ + { + "path": "docs/adr/0267-leftover-map-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0268-leftover-map-graphic-display.md", + "status": "modified" + }, + { + "path": "docs/adr/0304-leftover-map-compare-graphic.md", + "status": "modified" + }, + { + "path": "docs/adr/0334-leftover-map-axis-tick-share-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0337-leftover-map-compare-plot-post-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0338-leftover-map-plot-post-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0339-leftover-map-list-post-coordinates.md", + "status": "added" + } + ] + }, + { + "pr": 880, + "head": "c69459a3597a8a8af618417ce2c2a57a3114930b", + "base": "feat/leftover-map-compare-plot-post-coordinates-v2940", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "c69459a3597a8a8af618417ce2c2a57a3114930b", + "authority_paths": [ + { + "path": "docs/adr/0267-leftover-map-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0268-leftover-map-graphic-display.md", + "status": "modified" + }, + { + "path": "docs/adr/0304-leftover-map-compare-graphic.md", + "status": "modified" + }, + { + "path": "docs/adr/0334-leftover-map-axis-tick-share-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0337-leftover-map-compare-plot-post-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0338-leftover-map-plot-post-coordinates.md", + "status": "added" + } + ] + }, + { + "pr": 879, + "head": "d9972c260b1864e0b6391cbf050686e0bdd73359", + "base": "feat/leftover-map-compare-plot-criterion-coordinates-v2930", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 3, + "files_head": "d9972c260b1864e0b6391cbf050686e0bdd73359", + "authority_paths": [ + { + "path": "docs/adr/0267-leftover-map-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0268-leftover-map-graphic-display.md", + "status": "modified" + }, + { + "path": "docs/adr/0304-leftover-map-compare-graphic.md", + "status": "modified" + }, + { + "path": "docs/adr/0334-leftover-map-axis-tick-share-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0336-leftover-map-compare-plot-criterion-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0337-leftover-map-compare-plot-post-coordinates.md", + "status": "added" + } + ] + }, + { + "pr": 878, + "head": "617b97126a14337a4848f2b5663ada381ae693c0", + "base": "feat/leftover-map-plot-criterion-coordinates-v2920", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "617b97126a14337a4848f2b5663ada381ae693c0", + "authority_paths": [ + { + "path": "docs/adr/0267-leftover-map-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0268-leftover-map-graphic-display.md", + "status": "modified" + }, + { + "path": "docs/adr/0304-leftover-map-compare-graphic.md", + "status": "modified" + }, + { + "path": "docs/adr/0334-leftover-map-axis-tick-share-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0335-leftover-map-plot-criterion-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0336-leftover-map-compare-plot-criterion-coordinates.md", + "status": "added" + } + ] + }, + { + "pr": 877, + "head": "86b8eaab48a4b47610d539bb941b97eb24b7e951", + "base": "feat/leftover-map-axis-tick-share-badge-v2910", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 1, + "files_head": "86b8eaab48a4b47610d539bb941b97eb24b7e951", + "authority_paths": [ + { + "path": "docs/adr/0335-leftover-map-compare-plot-tick-origin-badge.md", + "status": "added" + } + ] + }, + { + "pr": 876, + "head": "89ed56b17acec187fd8e5f756c6b9a6a8f00438c", + "base": "feat/leftover-map-axis-tick-share-badge-v2910", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "89ed56b17acec187fd8e5f756c6b9a6a8f00438c", + "authority_paths": [ + { + "path": "docs/adr/0267-leftover-map-coordinates.md", + "status": "modified" + }, + { + "path": "docs/adr/0268-leftover-map-graphic-display.md", + "status": "modified" + }, + { + "path": "docs/adr/0334-leftover-map-axis-tick-share-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0335-leftover-map-plot-criterion-coordinates.md", + "status": "added" + } + ] + }, + { + "pr": 875, + "head": "d19f1fdc18cf16bac0e80bf6ae4257b831a4a619", + "base": "feat/leftover-map-compare-axis-tick-share-badge-v2900", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "d19f1fdc18cf16bac0e80bf6ae4257b831a4a619", + "authority_paths": [ + { + "path": "docs/adr/0148-leftover-map-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0330-leftover-map-axis-tick-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0331-leftover-map-compare-plot-tick-share-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0332-leftover-map-plot-tick-share-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0333-leftover-map-compare-axis-tick-share-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0334-leftover-map-axis-tick-share-badge.md", + "status": "added" + } + ] + }, + { + "pr": 874, + "head": "ba58c21a92966fe098988e528020d5528978d06c", + "base": "feat/leftover-map-plot-tick-share-badge-v2890", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "ba58c21a92966fe098988e528020d5528978d06c", + "authority_paths": [ + { + "path": "docs/adr/0148-leftover-map-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0329-leftover-map-compare-axis-tick-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0330-leftover-map-axis-tick-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0331-leftover-map-compare-plot-tick-share-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0332-leftover-map-plot-tick-share-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0333-leftover-map-compare-axis-tick-share-badge.md", + "status": "added" + } + ] + }, + { + "pr": 873, + "head": "923bcfe8a9146286ec3098adb784f55ffe32a78e", + "base": "feat/leftover-map-compare-plot-tick-share-badge-v2880", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 3, + "files_head": "923bcfe8a9146286ec3098adb784f55ffe32a78e", + "authority_paths": [ + { + "path": "docs/adr/0148-leftover-map-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0320-leftover-map-compare-plot-ticks.md", + "status": "modified" + }, + { + "path": "docs/adr/0324-leftover-map-plot-axis-singular.md", + "status": "modified" + }, + { + "path": "docs/adr/0327-leftover-map-plot-tick-axis-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0328-leftover-map-compare-plot-tick-axis-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0329-leftover-map-compare-axis-tick-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0330-leftover-map-axis-tick-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0331-leftover-map-compare-plot-tick-share-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0332-leftover-map-plot-tick-share-badge.md", + "status": "added" + } + ] + }, + { + "pr": 872, + "head": "7bdc562b222ab7681ff6b929a7b3fb2cd8068a3c", + "base": "feat/leftover-map-axis-tick-badge-v2870", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "7bdc562b222ab7681ff6b929a7b3fb2cd8068a3c", + "authority_paths": [ + { + "path": "docs/adr/0148-leftover-map-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0320-leftover-map-compare-plot-ticks.md", + "status": "modified" + }, + { + "path": "docs/adr/0326-leftover-map-compare-plot-axis-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0327-leftover-map-plot-tick-axis-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0328-leftover-map-compare-plot-tick-axis-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0329-leftover-map-compare-axis-tick-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0330-leftover-map-axis-tick-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0331-leftover-map-compare-plot-tick-share-badge.md", + "status": "added" + } + ] + }, + { + "pr": 871, + "head": "e9e4c2a622219bfbddfe71c74b14483f7b36aa5c", + "base": "feat/leftover-map-compare-axis-tick-badge-v2860", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "e9e4c2a622219bfbddfe71c74b14483f7b36aa5c", + "authority_paths": [ + { + "path": "docs/adr/0148-leftover-map-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0329-leftover-map-compare-axis-tick-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0330-leftover-map-axis-tick-badge.md", + "status": "added" + } + ] + }, + { + "pr": 870, + "head": "b086d97675586ee83f5478d7b4e3bf84b0a5da8c", + "base": "feat/leftover-map-compare-plot-tick-axis-badge-v2850", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "b086d97675586ee83f5478d7b4e3bf84b0a5da8c", + "authority_paths": [ + { + "path": "docs/adr/0148-leftover-map-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0328-leftover-map-compare-plot-tick-axis-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0329-leftover-map-compare-axis-tick-badge.md", + "status": "added" + } + ] + }, + { + "pr": 869, + "head": "98a29e4adf0daad8bd30c945e41d45922051312d", + "base": "feat/leftover-map-plot-tick-axis-badge-v2840", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "98a29e4adf0daad8bd30c945e41d45922051312d", + "authority_paths": [ + { + "path": "docs/adr/0148-leftover-map-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0320-leftover-map-compare-plot-ticks.md", + "status": "modified" + }, + { + "path": "docs/adr/0326-leftover-map-compare-plot-axis-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0327-leftover-map-plot-tick-axis-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0328-leftover-map-compare-plot-tick-axis-badge.md", + "status": "added" + } + ] + }, + { + "pr": 868, + "head": "5218a5c0e6821451efdfac0c1286ef7273081af7", + "base": "feat/leftover-map-compare-plot-axis-badge-v2830", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "5218a5c0e6821451efdfac0c1286ef7273081af7", + "authority_paths": [ + { + "path": "docs/adr/0148-leftover-map-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0326-leftover-map-compare-plot-axis-badge.md", + "status": "modified" + }, + { + "path": "docs/adr/0327-leftover-map-plot-tick-axis-badge.md", + "status": "added" + } + ] + }, + { + "pr": 867, + "head": "cf7bb55db1ba098e4ab264605634a686e4664d56", + "base": "feat/leftover-map-axis-singular-only-v2820", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 1, + "files_head": "cf7bb55db1ba098e4ab264605634a686e4664d56", + "authority_paths": [ + { + "path": "docs/adr/0148-leftover-map-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0321-leftover-map-compare-plot-singular.md", + "status": "modified" + }, + { + "path": "docs/adr/0322-leftover-map-axis-singular.md", + "status": "modified" + }, + { + "path": "docs/adr/0323-leftover-map-compare-axis-singular.md", + "status": "modified" + }, + { + "path": "docs/adr/0324-leftover-map-plot-axis-singular.md", + "status": "modified" + }, + { + "path": "docs/adr/0325-leftover-map-axis-singular-only.md", + "status": "modified" + }, + { + "path": "docs/adr/0326-leftover-map-compare-plot-axis-badge.md", + "status": "added" + } + ] + }, + { + "pr": 866, + "head": "593b8d8246c73226e224d2a9d251668649cbb54f", + "base": "feat/leftover-map-plot-axis-singular-v2810", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "593b8d8246c73226e224d2a9d251668649cbb54f", + "authority_paths": [ + { + "path": "docs/adr/0148-leftover-map-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0322-leftover-map-axis-singular.md", + "status": "modified" + }, + { + "path": "docs/adr/0323-leftover-map-compare-axis-singular.md", + "status": "modified" + }, + { + "path": "docs/adr/0324-leftover-map-plot-axis-singular.md", + "status": "modified" + }, + { + "path": "docs/adr/0325-leftover-map-axis-singular-only.md", + "status": "added" + } + ] + }, + { + "pr": 865, + "head": "a3613acf8cafac056850ec7ebc45f6d77f77a074", + "base": "feat/leftover-map-compare-axis-singular-v2800", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "a3613acf8cafac056850ec7ebc45f6d77f77a074", + "authority_paths": [ + { + "path": "docs/adr/0148-leftover-map-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0322-leftover-map-axis-singular.md", + "status": "modified" + }, + { + "path": "docs/adr/0323-leftover-map-compare-axis-singular.md", + "status": "modified" + }, + { + "path": "docs/adr/0324-leftover-map-plot-axis-singular.md", + "status": "added" + } + ] + }, + { + "pr": 863, + "head": "52b3597e5c6b825f988a9c8a7c68ae1653535982", + "base": "feat/leftover-map-axis-singular-v2790", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "52b3597e5c6b825f988a9c8a7c68ae1653535982", + "authority_paths": [ + { + "path": "docs/adr/0148-leftover-map-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0322-leftover-map-axis-singular.md", + "status": "modified" + }, + { + "path": "docs/adr/0323-leftover-map-compare-axis-singular.md", + "status": "added" + } + ] + }, + { + "pr": 862, + "head": "f24b664ce88bb2b3898fcaa0fd0ee7f69c5e12f7", + "base": "feat/leftover-map-compare-plot-singular-v2780", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "f24b664ce88bb2b3898fcaa0fd0ee7f69c5e12f7", + "authority_paths": [ + { + "path": "docs/adr/0148-leftover-map-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0321-leftover-map-compare-plot-singular.md", + "status": "modified" + }, + { + "path": "docs/adr/0322-leftover-map-axis-singular.md", + "status": "added" + } + ] + }, + { + "pr": 861, + "head": "3aac452eef781f3c1a5da258cd1c0c548e4930e6", + "base": "feat/leftover-map-compare-plot-ticks-v2770", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 3, + "files_head": "3aac452eef781f3c1a5da258cd1c0c548e4930e6", + "authority_paths": [ + { + "path": "docs/adr/0320-leftover-map-compare-plot-ticks.md", + "status": "modified" + }, + { + "path": "docs/adr/0321-leftover-map-compare-plot-singular.md", + "status": "added" + } + ] + }, + { + "pr": 860, + "head": "40fa5bdbfb9223a7ca89fccea47451a419d81048", + "base": "feat/leftover-map-compare-plot-distance-v2760", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 4, + "files_head": "40fa5bdbfb9223a7ca89fccea47451a419d81048", + "authority_paths": [ + { + "path": "docs/adr/0319-leftover-map-compare-plot-distance.md", + "status": "modified" + }, + { + "path": "docs/adr/0320-leftover-map-compare-plot-ticks.md", + "status": "added" + } + ] + }, + { + "pr": 859, + "head": "9ba8535327bb2d42d5305d84017e6cd08a110c68", + "base": "feat/leftover-map-compare-plot-rank-v2750", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "9ba8535327bb2d42d5305d84017e6cd08a110c68", + "authority_paths": [ + { + "path": "docs/adr/0318-leftover-map-compare-plot-rank.md", + "status": "modified" + }, + { + "path": "docs/adr/0319-leftover-map-compare-plot-distance.md", + "status": "added" + } + ] + }, + { + "pr": 858, + "head": "4b9184fd83f6749e25384d7bcf5d9d7721437b77", + "base": "feat/leftover-map-compare-plot-expected-v2740", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "4b9184fd83f6749e25384d7bcf5d9d7721437b77", + "authority_paths": [ + { + "path": "docs/adr/0315-leftover-map-compare-plot-residual.md", + "status": "modified" + }, + { + "path": "docs/adr/0316-leftover-map-compare-plot-observed.md", + "status": "added" + }, + { + "path": "docs/adr/0317-leftover-map-compare-plot-expected.md", + "status": "added" + }, + { + "path": "docs/adr/0318-leftover-map-compare-plot-rank.md", + "status": "added" + } + ] + }, + { + "pr": 857, + "head": "ade9ed5cc2f0530eb62d2d473d14d2ffb41eddba", + "base": "feat/leftover-map-compare-plot-observed-v2730", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "ade9ed5cc2f0530eb62d2d473d14d2ffb41eddba", + "authority_paths": [ + { + "path": "docs/adr/0279-leftover-map-segment-expected.md", + "status": "modified" + }, + { + "path": "docs/adr/0300-leftover-map-compare-expected.md", + "status": "modified" + }, + { + "path": "docs/adr/0316-leftover-map-compare-plot-observed.md", + "status": "modified" + }, + { + "path": "docs/adr/0317-leftover-map-compare-plot-expected.md", + "status": "added" + } + ] + }, + { + "pr": 856, + "head": "cf3b6d4195f2ccb5fba5b8d3359f018c8f26332d", + "base": "feat/leftover-map-compare-plot-residual-v2720", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "cf3b6d4195f2ccb5fba5b8d3359f018c8f26332d", + "authority_paths": [ + { + "path": "docs/adr/0278-leftover-map-segment-observed.md", + "status": "modified" + }, + { + "path": "docs/adr/0299-leftover-map-compare-observed.md", + "status": "modified" + }, + { + "path": "docs/adr/0315-leftover-map-compare-plot-residual.md", + "status": "modified" + }, + { + "path": "docs/adr/0316-leftover-map-compare-plot-observed.md", + "status": "added" + } + ] + }, + { + "pr": 855, + "head": "1087b16f2dba743bc0d1d4e08ff50811b5845393", + "base": "feat/leftover-map-compare-plot-unexplained-leftover-v2710", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "1087b16f2dba743bc0d1d4e08ff50811b5845393", + "authority_paths": [ + { + "path": "docs/adr/0277-leftover-map-segment-residual.md", + "status": "modified" + }, + { + "path": "docs/adr/0298-leftover-map-compare-residual.md", + "status": "modified" + }, + { + "path": "docs/adr/0314-leftover-map-compare-plot-unexplained-leftover.md", + "status": "modified" + }, + { + "path": "docs/adr/0315-leftover-map-compare-plot-residual.md", + "status": "added" + } + ] + }, + { + "pr": 854, + "head": "935cdea99c7c53ec7e99e4f455cd0653e34f4e30", + "base": "feat/leftover-map-compare-plot-cross-share-v2700", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "935cdea99c7c53ec7e99e4f455cd0653e34f4e30", + "authority_paths": [ + { + "path": "docs/adr/0276-leftover-map-segment-unexplained-leftover.md", + "status": "modified" + }, + { + "path": "docs/adr/0297-leftover-map-compare-unexplained.md", + "status": "modified" + }, + { + "path": "docs/adr/0313-leftover-map-compare-plot-cross-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0314-leftover-map-compare-plot-unexplained-leftover.md", + "status": "added" + } + ] + }, + { + "pr": 853, + "head": "c4f79bc9ba4bc23317c8aa184aecd74eb1971704", + "base": "feat/leftover-map-compare-plot-unexplained-share-v2690", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 1, + "files_head": "c4f79bc9ba4bc23317c8aa184aecd74eb1971704", + "authority_paths": [ + { + "path": "docs/adr/0275-leftover-map-segment-cross-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0296-leftover-map-compare-cross-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0312-leftover-map-compare-plot-unexplained-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0313-leftover-map-compare-plot-cross-share.md", + "status": "added" + } + ] + }, + { + "pr": 852, + "head": "2c34896b5fcf8f306103d28a610aced0a9d964b4", + "base": "feat/leftover-map-compare-plot-explained-share-v2680", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "2c34896b5fcf8f306103d28a610aced0a9d964b4", + "authority_paths": [ + { + "path": "docs/adr/0274-leftover-map-segment-unexplained-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0295-leftover-map-compare-unexplained-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0311-leftover-map-compare-plot-explained-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0312-leftover-map-compare-plot-unexplained-share.md", + "status": "added" + } + ] + }, + { + "pr": 851, + "head": "2d6e8e778e2abb491b3a3c0a8b085c8230c9def4", + "base": "feat/leftover-map-compare-plot-reconstruction-v2670", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 1, + "files_head": "2d6e8e778e2abb491b3a3c0a8b085c8230c9def4", + "authority_paths": [ + { + "path": "docs/adr/0273-leftover-map-segment-explained-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0294-leftover-map-compare-explained-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0310-leftover-map-compare-plot-reconstruction.md", + "status": "modified" + }, + { + "path": "docs/adr/0311-leftover-map-compare-plot-explained-share.md", + "status": "added" + } + ] + }, + { + "pr": 850, + "head": "85451d87c9ddb4559a13366b1352af1bea7aafa0", + "base": "feat/leftover-map-compare-plot-incomplete-item-v2660", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "85451d87c9ddb4559a13366b1352af1bea7aafa0", + "authority_paths": [ + { + "path": "docs/adr/0272-leftover-map-segment-reconstruction.md", + "status": "modified" + }, + { + "path": "docs/adr/0293-leftover-map-compare-reconstruction.md", + "status": "modified" + }, + { + "path": "docs/adr/0309-leftover-map-compare-plot-incomplete-item.md", + "status": "modified" + }, + { + "path": "docs/adr/0310-leftover-map-compare-plot-reconstruction.md", + "status": "added" + } + ] + }, + { + "pr": 849, + "head": "43ce1936bfc3b035e591898ad5141a1b81cc526c", + "base": "feat/leftover-map-compare-plot-incomplete-post-v2650", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 4, + "files_head": "43ce1936bfc3b035e591898ad5141a1b81cc526c", + "authority_paths": [ + { + "path": "docs/adr/0284-leftover-map-plot-incomplete-item.md", + "status": "modified" + }, + { + "path": "docs/adr/0292-leftover-map-compare-incomplete-item.md", + "status": "modified" + }, + { + "path": "docs/adr/0304-leftover-map-compare-graphic.md", + "status": "modified" + }, + { + "path": "docs/adr/0307-leftover-map-compare-plot-item-coverage.md", + "status": "modified" + }, + { + "path": "docs/adr/0308-leftover-map-compare-plot-incomplete-post.md", + "status": "modified" + }, + { + "path": "docs/adr/0309-leftover-map-compare-plot-incomplete-item.md", + "status": "added" + } + ] + }, + { + "pr": 848, + "head": "6707725ecaeb47c33c8a55b0801c8156527c6f01", + "base": "feat/leftover-map-compare-plot-item-coverage-v2640", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "6707725ecaeb47c33c8a55b0801c8156527c6f01", + "authority_paths": [ + { + "path": "docs/adr/0283-leftover-map-plot-incomplete.md", + "status": "modified" + }, + { + "path": "docs/adr/0291-leftover-map-compare-incomplete-post.md", + "status": "modified" + }, + { + "path": "docs/adr/0304-leftover-map-compare-graphic.md", + "status": "modified" + }, + { + "path": "docs/adr/0307-leftover-map-compare-plot-item-coverage.md", + "status": "modified" + }, + { + "path": "docs/adr/0308-leftover-map-compare-plot-incomplete-post.md", + "status": "added" + } + ] + }, + { + "pr": 847, + "head": "9bb4f07a61a9275953974ef276a4af81940ba883", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "9bb4f07a61a9275953974ef276a4af81940ba883", + "authority_paths": [ + { + "path": "docs/adr/0245-io-occupational-taxonomy-in-the-published-ontology.md", + "status": "modified" + } + ] + }, + { + "pr": 846, + "head": "47797643dc5c3071a7bbe3970ab563755113aa5b", + "base": "feat/leftover-map-compare-plot-coverage-v2630", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "47797643dc5c3071a7bbe3970ab563755113aa5b", + "authority_paths": [ + { + "path": "docs/adr/0282-leftover-map-plot-item-coverage.md", + "status": "modified" + }, + { + "path": "docs/adr/0290-leftover-map-compare-item-coverage.md", + "status": "modified" + }, + { + "path": "docs/adr/0304-leftover-map-compare-graphic.md", + "status": "modified" + }, + { + "path": "docs/adr/0306-leftover-map-compare-plot-coverage.md", + "status": "modified" + }, + { + "path": "docs/adr/0307-leftover-map-compare-plot-item-coverage.md", + "status": "added" + } + ] + }, + { + "pr": 845, + "head": "7c026df8d85f9eeae9850f44cdf5e1bc6d644aa7", + "base": "feat/leftover-map-compare-plot-axis-share-v2620", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "7c026df8d85f9eeae9850f44cdf5e1bc6d644aa7", + "authority_paths": [ + { + "path": "docs/adr/0281-leftover-map-plot-coverage.md", + "status": "modified" + }, + { + "path": "docs/adr/0304-leftover-map-compare-graphic.md", + "status": "modified" + }, + { + "path": "docs/adr/0305-leftover-map-compare-plot-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0306-leftover-map-compare-plot-coverage.md", + "status": "added" + } + ] + }, + { + "pr": 844, + "head": "95538f9980dcba70a6d6d174500d00c7af01df6c", + "base": "feat/leftover-map-compare-graphic-v2610", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "95538f9980dcba70a6d6d174500d00c7af01df6c", + "authority_paths": [ + { + "path": "docs/adr/0269-leftover-map-axis-share-plot.md", + "status": "modified" + }, + { + "path": "docs/adr/0304-leftover-map-compare-graphic.md", + "status": "modified" + }, + { + "path": "docs/adr/0305-leftover-map-compare-plot-axis-share.md", + "status": "added" + } + ] + }, + { + "pr": 843, + "head": "2a5ab4d735a1240997150578b151c6b6492e2f43", + "base": "feat/leftover-map-compare-axis-share-v2610", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "2a5ab4d735a1240997150578b151c6b6492e2f43", + "authority_paths": [ + { + "path": "docs/adr/0305-leftover-map-compare-rank-payload.md", + "status": "added" + } + ] + }, + { + "pr": 842, + "head": "12e40c93acb8473075199d8c8124b85b3d39adff", + "base": "feat/leftover-map-compare-coordinates-payload-v2600", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "12e40c93acb8473075199d8c8124b85b3d39adff", + "authority_paths": [ + { + "path": "docs/adr/0148-leftover-map-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0304-leftover-map-compare-axis-share.md", + "status": "added" + } + ] + }, + { + "pr": 841, + "head": "ee467df2f0e322623d74e948144b78bc27964aff", + "base": "feat/leftover-map-compare-coordinates-payload-v2600", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "ee467df2f0e322623d74e948144b78bc27964aff", + "authority_paths": [ + { + "path": "docs/adr/0268-leftover-map-graphic-display.md", + "status": "modified" + }, + { + "path": "docs/adr/0304-leftover-map-compare-graphic.md", + "status": "added" + } + ] + }, + { + "pr": 840, + "head": "cbf994462ec787d4d3e7a2749f913f62fd9c96d0", + "base": "feat/leftover-map-compare-coordinates-v2590", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 3, + "files_head": "cbf994462ec787d4d3e7a2749f913f62fd9c96d0", + "authority_paths": [ + { + "path": "docs/adr/0303-leftover-map-compare-coordinates-payload.md", + "status": "added" + } + ] + }, + { + "pr": 839, + "head": "51bf33a83b8a03e0dc4de65422313e38c9d45a21", + "base": "feat/leftover-map-compare-rank-v2580", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "51bf33a83b8a03e0dc4de65422313e38c9d45a21", + "authority_paths": [ + { + "path": "docs/adr/0302-leftover-map-compare-coordinates.md", + "status": "added" + } + ] + }, + { + "pr": 838, + "head": "6c7c66fc4a39dc140f85e93d87f899ddb0695229", + "base": "feat/leftover-map-compare-expected-v2570", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 1, + "files_head": "6c7c66fc4a39dc140f85e93d87f899ddb0695229", + "authority_paths": [ + { + "path": "docs/adr/0301-leftover-map-compare-rank.md", + "status": "added" + } + ] + }, + { + "pr": 837, + "head": "e6638a8e1d93b89376c004c60db9f016e03f00e0", + "base": "feat/leftover-map-compare-observed-v2560", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "e6638a8e1d93b89376c004c60db9f016e03f00e0", + "authority_paths": [ + { + "path": "docs/adr/0300-leftover-map-compare-expected.md", + "status": "added" + } + ] + }, + { + "pr": 836, + "head": "ada0c86e86c0e1570269d3a5d1f9121624938797", + "base": "feat/leftover-map-compare-residual-v2550", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "ada0c86e86c0e1570269d3a5d1f9121624938797", + "authority_paths": [ + { + "path": "docs/adr/0299-leftover-map-compare-observed.md", + "status": "added" + } + ] + }, + { + "pr": 835, + "head": "a825c336d87a4f481717e45800630e4805ab15bc", + "base": "feat/leftover-map-compare-unexplained-v2540", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "a825c336d87a4f481717e45800630e4805ab15bc", + "authority_paths": [ + { + "path": "docs/adr/0298-leftover-map-compare-residual.md", + "status": "added" + } + ] + }, + { + "pr": 833, + "head": "18d89b498a58d68ec58100065d71664f2c691347", + "base": "feat/leftover-map-compare-cross-share-v2530", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 1, + "files_head": "18d89b498a58d68ec58100065d71664f2c691347", + "authority_paths": [ + { + "path": "docs/adr/0297-leftover-map-compare-unexplained.md", + "status": "added" + } + ] + }, + { + "pr": 831, + "head": "2cefc0b63436989210bca3204e7750e87edba662", + "base": "feat/leftover-map-compare-unexplained-share-v2520", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 1, + "files_head": "2cefc0b63436989210bca3204e7750e87edba662", + "authority_paths": [ + { + "path": "docs/adr/0296-leftover-map-compare-cross-share.md", + "status": "added" + } + ] + }, + { + "pr": 829, + "head": "4d82c2872cc27e08c0357cb4b7cf071ab81ab9d7", + "base": "feat/leftover-map-compare-explained-share-v2510", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 1, + "files_head": "4d82c2872cc27e08c0357cb4b7cf071ab81ab9d7", + "authority_paths": [ + { + "path": "docs/adr/0295-leftover-map-compare-unexplained-share.md", + "status": "added" + } + ] + }, + { + "pr": 828, + "head": "e79137611f0d3041ad836c21e49a95bf7ef1001e", + "base": "feat/leftover-map-compare-incomplete-item-v2490", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 3, + "files_head": "e79137611f0d3041ad836c21e49a95bf7ef1001e", + "authority_paths": [ + { + "path": "docs/adr/0293-leftover-map-compare-axis-share.md", + "status": "added" + } + ] + }, + { + "pr": 827, + "head": "ead81bd3f51005f083871dc0bd49148a42a351b2", + "base": "feat/leftover-map-compare-reconstruction-v2500", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 1, + "files_head": "ead81bd3f51005f083871dc0bd49148a42a351b2", + "authority_paths": [ + { + "path": "docs/adr/0294-leftover-map-compare-explained-share.md", + "status": "added" + } + ] + }, + { + "pr": 826, + "head": "a4bf239f1cf07ea29bd49b28300f252be0ca7a19", + "base": "feat/leftover-map-compare-incomplete-item-v2490", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 3, + "files_head": "a4bf239f1cf07ea29bd49b28300f252be0ca7a19", + "authority_paths": [ + { + "path": "docs/adr/0293-leftover-map-compare-reconstruction.md", + "status": "added" + } + ] + }, + { + "pr": 825, + "head": "bca6baabd917478bf4f6b688ec2755cde95e3575", + "base": "feat/leftover-map-compare-incomplete-post-v2480", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "bca6baabd917478bf4f6b688ec2755cde95e3575", + "authority_paths": [ + { + "path": "docs/adr/0292-leftover-map-compare-incomplete-item.md", + "status": "added" + } + ] + }, + { + "pr": 824, + "head": "8b2ed956b2ba66e3aa2d149b701c242e3b016dd9", + "base": "feat/leftover-map-compare-item-coverage-v2470", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "8b2ed956b2ba66e3aa2d149b701c242e3b016dd9", + "authority_paths": [ + { + "path": "docs/adr/0291-leftover-map-compare-incomplete-post.md", + "status": "added" + } + ] + }, + { + "pr": 823, + "head": "eb172c40d8ecd08f3e1c220cbf3117b488cddb30", + "base": "feat/leftover-map-plot-singular-v2460", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "eb172c40d8ecd08f3e1c220cbf3117b488cddb30", + "authority_paths": [ + { + "path": "docs/adr/0148-leftover-map-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0290-leftover-map-axis-singular.md", + "status": "added" + } + ] + }, + { + "pr": 822, + "head": "6726353a13798c0d1566821de9885f1783ebe35f", + "base": "feat/leftover-map-compare-coverage-v2460", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "6726353a13798c0d1566821de9885f1783ebe35f", + "authority_paths": [ + { + "path": "docs/adr/0290-leftover-map-compare-item-coverage.md", + "status": "added" + } + ] + }, + { + "pr": 821, + "head": "11a785533ba52e6b1c6854203818902e38736dc5", + "base": "feat/leftover-map-list-post-coverage-helper-v2450", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "11a785533ba52e6b1c6854203818902e38736dc5", + "authority_paths": [ + { + "path": "docs/adr/0289-leftover-map-compare-coverage.md", + "status": "added" + } + ] + }, + { + "pr": 820, + "head": "b7222713a69acdf3d32bbce992001a2433946d21", + "base": "feat/leftover-map-list-post-coverage-helper-v2450", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "b7222713a69acdf3d32bbce992001a2433946d21", + "authority_paths": [ + { + "path": "docs/adr/0148-leftover-map-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0269-leftover-map-axis-share-plot.md", + "status": "modified" + }, + { + "path": "docs/adr/0289-leftover-map-plot-singular.md", + "status": "added" + } + ] + }, + { + "pr": 819, + "head": "a2c965511d26923bd878ec56d655fb8a0183c4d7", + "base": "feat/leftover-map-list-incomplete-item-v2440", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "a2c965511d26923bd878ec56d655fb8a0183c4d7", + "authority_paths": [ + { + "path": "docs/adr/0288-leftover-map-list-post-coverage-helper.md", + "status": "added" + } + ] + }, + { + "pr": 818, + "head": "aa3208959950637b52001457e7d4dfc1ef1764eb", + "base": "feat/leftover-map-list-incomplete-post-v2430", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "aa3208959950637b52001457e7d4dfc1ef1764eb", + "authority_paths": [ + { + "path": "docs/adr/0287-leftover-map-list-incomplete-item.md", + "status": "added" + } + ] + }, + { + "pr": 817, + "head": "ef30930271a729044af2f690df04f0b89f751ffd", + "base": "feat/leftover-map-list-item-coverage-v2420", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 2, + "files_head": "ef30930271a729044af2f690df04f0b89f751ffd", + "authority_paths": [ + { + "path": "docs/adr/0286-leftover-map-list-incomplete-post.md", + "status": "added" + } + ] + }, + { + "pr": 816, + "head": "1e3d13ea5fa5744e8c0b9b7b4e8470fceb7630ea", + "base": "feat/leftover-map-plot-incomplete-item-v2410", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "1e3d13ea5fa5744e8c0b9b7b4e8470fceb7630ea", + "authority_paths": [ + { + "path": "docs/adr/0285-leftover-map-list-item-coverage.md", + "status": "added" + } + ] + }, + { + "pr": 815, + "head": "63092ded55a7c7d65b0f6586980b20d0d30f587d", + "base": "feat/leftover-map-plot-incomplete-v2400", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 1, + "files_head": "63092ded55a7c7d65b0f6586980b20d0d30f587d", + "authority_paths": [ + { + "path": "docs/adr/0284-leftover-map-plot-incomplete-item.md", + "status": "added" + } + ] + }, + { + "pr": 814, + "head": "772928722264b001c669b580d19866ccd8b590e0", + "base": "feat/leftover-map-plot-item-coverage-v2390", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "772928722264b001c669b580d19866ccd8b590e0", + "authority_paths": [ + { + "path": "docs/adr/0283-leftover-map-plot-incomplete.md", + "status": "added" + } + ] + }, + { + "pr": 813, + "head": "de2a8a8b8fe275542f3350c649c7bca759b049a3", + "base": "feat/leftover-map-plot-coverage-v2380", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "de2a8a8b8fe275542f3350c649c7bca759b049a3", + "authority_paths": [ + { + "path": "docs/adr/0282-leftover-map-plot-item-coverage.md", + "status": "added" + } + ] + }, + { + "pr": 812, + "head": "64964cb6c14703a9b4bd74bed16d43844d49d102", + "base": "feat/leftover-map-segment-rank-v2370", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "64964cb6c14703a9b4bd74bed16d43844d49d102", + "authority_paths": [ + { + "path": "docs/adr/0281-leftover-map-plot-coverage.md", + "status": "added" + } + ] + }, + { + "pr": 811, + "head": "e626a1d0770208d6f821e06542091aa2ead87f25", + "base": "feat/leftover-map-segment-explained-share-v2300", + "draft": true, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 4, + "files_head": "e626a1d0770208d6f821e06542091aa2ead87f25", + "authority_paths": [ + { + "path": "docs/adr/0048-persist-lsirm-leftover-pairs.md", + "status": "modified" + }, + { + "path": "docs/adr/0049-leftover-pair-report-ui.md", + "status": "modified" + }, + { + "path": "docs/adr/0182-leftover-map-unexplained.md", + "status": "modified" + }, + { + "path": "docs/adr/0185-leftover-map-cross-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0233-leftover-map-unexplained-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0268-leftover-map-graphic-display.md", + "status": "modified" + }, + { + "path": "docs/adr/0273-leftover-map-segment-explained-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0274-leftover-map-segment-unexplained-share.md", + "status": "added" + }, + { + "path": "docs/adr/0275-leftover-map-segment-cross-share.md", + "status": "added" + }, + { + "path": "docs/adr/0276-leftover-map-segment-unexplained-leftover.md", + "status": "added" + }, + { + "path": "docs/adr/0277-leftover-map-segment-residual.md", + "status": "added" + }, + { + "path": "docs/adr/0278-leftover-map-segment-observed.md", + "status": "added" + }, + { + "path": "docs/adr/0279-leftover-map-segment-expected.md", + "status": "added" + }, + { + "path": "docs/adr/0280-leftover-map-segment-rank.md", + "status": "added" + } + ] + }, + { + "pr": 808, + "head": "ef38ddc9cf4f81c6a30050fa2409d294779fbd93", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "ef38ddc9cf4f81c6a30050fa2409d294779fbd93", + "authority_paths": [ + { + "path": "docs/adr/0048-persist-lsirm-leftover-pairs.md", + "status": "modified" + }, + { + "path": "docs/adr/0049-leftover-pair-report-ui.md", + "status": "modified" + }, + { + "path": "docs/adr/0148-leftover-map-axis-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0201-leftover-map-reconstruction.md", + "status": "modified" + }, + { + "path": "docs/adr/0266-leftover-map-explained-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0267-leftover-map-coordinates.md", + "status": "removed" + }, + { + "path": "docs/adr/0268-leftover-map-graphic-display.md", + "status": "removed" + }, + { + "path": "docs/adr/0269-leftover-map-axis-share-plot.md", + "status": "removed" + }, + { + "path": "docs/adr/0270-leftover-map-coordinate-ticks.md", + "status": "removed" + }, + { + "path": "docs/adr/0271-leftover-map-segment-distance.md", + "status": "removed" + }, + { + "path": "migrations/0245_report_leftover_map_coordinates.sql", + "status": "removed" + }, + { + "path": "migrations/rollback/0245_report_leftover_map_coordinates.sql", + "status": "removed" + } + ] + }, + { + "pr": 802, + "head": "5a8afbd9099efae658ee3c2a9b02ceaa3b78022c", + "base": "main", + "draft": false, + "review_decision": "", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 1, + "files_head": "5a8afbd9099efae658ee3c2a9b02ceaa3b78022c", + "authority_paths": [ + { + "path": "docs/adr/0048-persist-lsirm-leftover-pairs.md", + "status": "modified" + }, + { + "path": "docs/adr/0049-leftover-pair-report-ui.md", + "status": "modified" + }, + { + "path": "docs/adr/0201-leftover-map-reconstruction.md", + "status": "modified" + }, + { + "path": "docs/adr/0266-leftover-map-explained-share.md", + "status": "modified" + }, + { + "path": "docs/adr/0268-leftover-map-graphic-display.md", + "status": "modified" + }, + { + "path": "docs/adr/0271-leftover-map-segment-distance.md", + "status": "modified" + }, + { + "path": "docs/adr/0272-leftover-map-segment-reconstruction.md", + "status": "added" + }, + { + "path": "docs/adr/0273-leftover-map-segment-explained-share.md", + "status": "added" + } + ] + }, + { + "pr": 780, + "head": "1d8fa267b059289e77301a09985dfac70a439814", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "1d8fa267b059289e77301a09985dfac70a439814", + "authority_paths": [ + { + "path": "docs/adr/0252-temporal-primary-voice-history.md", + "status": "modified" + }, + { + "path": "docs/adr/0256-evidence-bearing-voice-combinations.md", + "status": "modified" + }, + { + "path": "docs/adr/README.md", + "status": "modified" + } + ] + }, + { + "pr": 774, + "head": "0e4ba4e00a1578aba6f80fa25d7d779516b9af96", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "0e4ba4e00a1578aba6f80fa25d7d779516b9af96", + "authority_paths": [] + }, + { + "pr": 772, + "head": "781ebb11a00b50bf1956ff3536eef46160271931", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "781ebb11a00b50bf1956ff3536eef46160271931", + "authority_paths": [] + }, + { + "pr": 771, + "head": "9a4dbfcd46d955cd758148cf55cfd5ee795b02cd", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "9a4dbfcd46d955cd758148cf55cfd5ee795b02cd", + "authority_paths": [] + }, + { + "pr": 770, + "head": "101cd8acc1d510382ea928d4f6bb9c84b199349d", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "101cd8acc1d510382ea928d4f6bb9c84b199349d", + "authority_paths": [] + }, + { + "pr": 702, + "head": "93e7b81d096ddfc1fda9080c9c6a9784cbfbcec2", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "93e7b81d096ddfc1fda9080c9c6a9784cbfbcec2", + "authority_paths": [ + { + "path": "docs/adr/0030-external-llm-gateway-environment.md", + "status": "modified" + }, + { + "path": "docs/adr/0208-externalize-local-mathematical-compute.md", + "status": "modified" + }, + { + "path": "docs/adr/0240-explicit-missing-body-import-boundary.md", + "status": "added" + }, + { + "path": "docs/adr/0241-source-classification-semantic-hints.md", + "status": "added" + }, + { + "path": "docs/adr/0242-private-content-semantic-coverage-audit.md", + "status": "added" + }, + { + "path": "docs/adr/0245-lineage-scoring-and-entity-resolution-owner-contract.md", + "status": "added" + }, + { + "path": "docs/adr/0246-export-source-ontology-coverage.md", + "status": "added" + }, + { + "path": "docs/adr/README.md", + "status": "modified" + } + ] + }, + { + "pr": 679, + "head": "135dfe7c4266c7a2098c622b7c9976eaf7304cdd", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "135dfe7c4266c7a2098c622b7c9976eaf7304cdd", + "authority_paths": [ + { + "path": "docs/adr/0215-global-ask-public-claim-verification.md", + "status": "modified" + }, + { + "path": "docs/adr/0229-public-claim-envelope.md", + "status": "added" + }, + { + "path": "docs/adr/README.md", + "status": "modified" + }, + { + "path": "migrations/0224_public_claim_envelope.sql", + "status": "added" + }, + { + "path": "migrations/rollback/0224_public_claim_envelope.sql", + "status": "added" + } + ] + }, + { + "pr": 672, + "head": "a3e87a89185fae03c5f18c79e2d97d12c73e8af9", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "a3e87a89185fae03c5f18c79e2d97d12c73e8af9", + "authority_paths": [ + { + "path": "docs/adr/0233-global-ask-semantic-candidate-nomination.md", + "status": "added" + }, + { + "path": "docs/adr/0234-global-ask-public-claim-verification.md", + "status": "added" + }, + { + "path": "docs/adr/README.md", + "status": "modified" + }, + { + "path": "migrations/0225_global_ask_semantic_candidate_search.sql", + "status": "added" + } + ] + }, + { + "pr": 667, + "head": "0c0f4af572a94e63cc8ea4545e48f5eda32a389c", + "base": "main", + "draft": true, + "review_decision": "REVIEW_REQUIRED", + "auto_merge": false, + "review_head_matches": true, + "unresolved_threads": 0, + "files_head": "0c0f4af572a94e63cc8ea4545e48f5eda32a389c", + "authority_paths": [ + { + "path": "docs/adr/0017-authorized-analysis-run-create.md", + "status": "modified" + }, + { + "path": "docs/adr/0022-authorized-tepp-start.md", + "status": "modified" + }, + { + "path": "docs/adr/0050-seed-period-report-analysis-run.md", + "status": "modified" + }, + { + "path": "docs/adr/0132-tepp-topic-lineage-consumption-boundary.md", + "status": "modified" + }, + { + "path": "docs/adr/0207-repository-case-ontology-namespace-canonical.md", + "status": "modified" + }, + { + "path": "docs/adr/0218-current-contract-mcp-global-ask.md", + "status": "modified" + }, + { + "path": "docs/adr/0222-project-nodes-in-ontology-neighborhood.md", + "status": "modified" + }, + { + "path": "docs/adr/0230-pnpm-build-script-allowlist.md", + "status": "modified" + }, + { + "path": "docs/adr/0231-external-lineage-arithmetic-authority.md", + "status": "modified" + }, + { + "path": "docs/adr/0235-post-ask-conversation-history.md", + "status": "added" + }, + { + "path": "docs/adr/0236-legacy-ontology-namespace-publication.md", + "status": "added" + }, + { + "path": "docs/adr/0237-accelerator-runtime-service-boundary.md", + "status": "added" + }, + { + "path": "docs/adr/README.md", + "status": "modified" + }, + { + "path": "migrations/0223_post_ask_conversation_history.sql", + "status": "added" + }, + { + "path": "migrations/rollback/0223_post_ask_conversation_history.sql", + "status": "added" + } + ] + } + ] +} diff --git a/docs/product-technical-gap-baseline.md b/docs/product-technical-gap-baseline.md index 239e03da1..70238eae5 100644 --- a/docs/product-technical-gap-baseline.md +++ b/docs/product-technical-gap-baseline.md @@ -1,5 +1,153 @@ # Product & Technical Gap Baseline +## Current bounded loop — 2026-09-05 + +This section supersedes every dated snapshot below. It records observations, +not a protected-release claim. Remote `main` was +`83eba56149eb802cd63642c507c324c9976ec78e`. The implemented export repair is +`05384255df15c3995dbc3cef149abd5d92afd40a`, a child of #780 at +`1d8fa267b059289e77301a09985dfac70a439814`. This document is a later evidence +commit; its own hash is not substituted for the tested implementation hash. + +### Authority and current implementation + +The current LineageWeave PRD, ADR 0184, ADR 0246, and the reconciled Voice +combination ADR 0256 were read before implementation. ADR 0251 on this branch +owns I/O Psychology; it must not be conflated with the historical Voice +combination number. The twelve atomic Voices remain extensible associations, +with separate carrying Post, authorized derivation evidence, PROV-O, truth, +and cutoff. No compound-code enumeration or inferred replacement evidence was +introduced. W3C [JSON-LD 1.1](https://www.w3.org/TR/json-ld11/#node-objects) +supports retaining all property values for a repeated subject; it does not +supply stakeholder classifications, weights, or psychometric results. + +Remote ecosystem authority read in this cycle: ThreadWeave `docs/PRD.md`, +RankWeave `ARCHITECTURE.md`, and contextual-orchestrator +`docs/product_planning.md`. Those repositories' threading, ranking, and model +boundaries are unchanged. GitHub confirms canonical names +`ContextualWisdomLab/LineageWeave`, `RankWeave`, `ThreadWeave`, `TEPP`, and +lowercase `ContextualWisdomLab/disksage`. The PRD's `DiskSage` repository spelling +is a documentation discrepancy, not a separate repository or integration. +DeepWiki has no indexed repository; Context7 returned quota exhaustion. Neither +response was treated as architecture evidence. + +### Selected user gap and local evidence + +Continuing an ontology neighborhood could silently replace an earlier direct +relationship when the JSON-LD property was a singleton. This loses evidence +from the user's exported neighborhood even though the exact-value rows remain. +It is the priority in this bounded cycle because an existing evidence-review +and export action loses accepted information; no invented score ranks it +against unmeasured product opportunities. The accumulator now unions singleton +and array values while retaining node labels, types, and multi-Voice relations. +Four new regression cases failed before the repair and passed afterward. + +- 41 focused frontend tests passed; lint, TypeScript, and production build passed. +- 53 ontology/SHACL/backend tests passed, including the authenticated API test + using real Keycloak/JWKS and a newly migrated synthetic PostgreSQL database. + This is the candidate ASGI application, not a deployed-image assertion. +- Existing `CombinedVoiceEvidence` Storybook was rendered and visually audited + at 1440×1000 and 390×844. The mobile exact-value region scrolls internally; + document widths equal viewport widths. Source and derivation actions remain + separate. [Desktop](screenshots/voice-export-20260905-desktop.png) and + [mobile](screenshots/voice-export-20260905-mobile.png) are synthetic artifacts. +- No DeprecationWarning was emitted by these runs. The production build's + large-chunk advisory remains; no unmeasured performance change was made. + +Full authenticated deployed additional-Voice, hidden-evidence, cutoff, and +paged UI-to-PostgreSQL acceptance remains **unavailable**. The focused primary- +Voice API proof and synthetic Storybook renders do not complete that contract. + +### Observed load and current runtime aggregates + +A real HTTP k6 run used the candidate API, live demo authentication, and only a +throwaway synthetic PostgreSQL database: 2 VUs for 10 seconds, 856 requests, +85.07 requests/second, zero failed requests, p95 25.88 ms, maximum 1787.68 ms. +These are descriptive observations, not an SLO, population estimate, or +saturation envelope. Across 48 database samples, peak connections were 6, +peak active sessions 2, and lock waiters 0 (sampling includes the observer). +The API stopped and the synthetic database was removed afterward. + +The official Compose project remains `lineageweave`. A separate resource +snapshot observed PostgreSQL 0.69% CPU / 207.6 MiB, Valkey 0.43% / 643.1 MiB, +Ask worker 0.48% / 108.7 MiB, and orchestrator 0.02% / 76.78 MiB; Valkey reported +5 clients and 1 blocked client. These snapshots cannot establish saturation +or causation. This ontology read workload does not invoke worker, LLM, VISION, +embedding, or gateway work; their end-to-end capacity remains **unavailable**. +No throughput policy, pool limit, mathematical implementation, container, or +volume was changed, and no real Post data was sampled. + +### Exact-head queue and integration conflicts + +The [non-identifying per-PR snapshot](development-loop-20260905.json) records +116 open PR heads, bases, draft states, bounded review-thread results, and +changed authority paths, collected before child #934 was created. At collection +there were 93 drafts, 23 ready PRs, +16 open issues, and 111 unresolved threads. No `APPROVED` review decision was +present. Review bodies/real records/credentials are not persisted. The latest +20 reviews and first 100 threads per PR bound this review collection; these +counts are not a claim that every review finding has been adjudicated. + +#780 had zero unresolved threads and was admitted to Ready on the unchanged +head so Draft-skipped checks can run. Normal squash auto-merge is enabled; +independent approval and current-head required workflows remain unmet. #907, +#911, and #929 retain their existing auto-merge. One in-progress run was tied +to open #911's exact head and was retained. No stale run was cancelled, no +stack was retargeted, and no protected merge SHA is claimed. GitHub's temporary +`merge_commit_sha` on an unmerged PR is not completion evidence. + +Cross-PR added-file inspection found the following distinct ADR number +collisions; inherited paths alone were not counted: + +| ADR | Owning PRs | +| --- | --- | +| 0355 | #920, #915 | +| 0301 | #902, #838 | +| 0300 | #899, #837 | +| 0279 | #888, #811 | +| 0335 | #877, #876 | +| 0305 | #844, #843 | +| 0304 | #842, #841 | +| 0293 | #828, #826 | +| 0290 | #823, #822 | +| 0289 | #821, #820 | + +Proposed release titles also collide at v2.92.0 (#877/#876), v2.62.0 +(#844/#843), v2.61.0 (#842/#841), v2.50.0 (#828/#826), v2.47.0 (#823/#822), +and v2.46.0 (#821/#820). File inspection found no distinct added migration +filenames sharing a numeric prefix in this snapshot; SQL semantic/replay +compatibility across all branches remains unverified. API files overlap in +#932/#929/#914/#911/#909/#904/#888/#844/#842/#828/#821/#808/#780/#702/#679/#672/#667; +overlap is a review target, not proof of an API conflict. Do not merge the +stacks until parents merge normally, then retarget children to `main`, resolve +ownership conflicts, and collect new exact-head evidence. + +`StatusNotice` already exists on the observed protected main under ADR 0220; +the historical ADR 0134 row saying no shared component exists is obsolete. +#901 owns that older baseline reconciliation. Its file and the primary +checkout's uncommitted #929 changes were preserved. #847/#807 own the broader +PRD authority-ID reconciliation. This child adds no schema, API, or release +number and does not rewrite those owners' work. + +### Follow-on review repair + +#914 advanced from `c2579713d64ba0d261f11dd9f9777b45ee3ef58b` to +`64340c0a86f876f32d0a37ef17321f3d9b993818`. The installed Redis client's +`xrevrange` accepts `max`; its test double did not. The double now matches the +client argument contract, and the unused UUID binding was removed without +changing validation. All 28 activity regressions passed. Both verified review +threads were resolved. The unchanged ADR 0363 remains Proposed. Ready admission +and normal auto-merge request fresh workflow evidence, not policy acceptance; +12 new-head checks were queued and 4 Draft-era jobs skipped at first read. +Neither skipped nor predecessor checks count as success. No merge is claimed. + +Child #934 contains the export repair and this evidence update. It remains +based on #780; Ready admission permits validation but it must not auto-merge +into the feature branch. Only after #780's protected merge may it be retargeted +to `main` and evaluated for normal auto-merge with fresh evidence. + +## Historical evidence — not current acceptance + > Exact-head development-loop snapshot: 2026-09-02 KST. Protected `main` is > `3f61c8242b9c02dec307a7396e83e28f7cdd9f3d`; the fresh inventory contains > 107 open PRs and 15 open non-PR issues. PR #780's remotely observed evidence diff --git a/docs/screenshots/voice-export-20260905-desktop.png b/docs/screenshots/voice-export-20260905-desktop.png new file mode 100644 index 000000000..c13620e77 Binary files /dev/null and b/docs/screenshots/voice-export-20260905-desktop.png differ diff --git a/docs/screenshots/voice-export-20260905-mobile.png b/docs/screenshots/voice-export-20260905-mobile.png new file mode 100644 index 000000000..e6d0b65fa Binary files /dev/null and b/docs/screenshots/voice-export-20260905-mobile.png differ diff --git a/frontend/src/ontologyLayout.pagination.test.ts b/frontend/src/ontologyLayout.pagination.test.ts new file mode 100644 index 000000000..cc044f253 --- /dev/null +++ b/frontend/src/ontologyLayout.pagination.test.ts @@ -0,0 +1,35 @@ +import { describe, expect, it } from "vitest"; +import type { OntologyNeighborhoodPayload } from "./api"; +import { accumulateNeighborhoodPages } from "./ontologyLayout"; + +const SUBJECT = "https://contextualwisdomlab.github.io/LineageWeave/ontology#node/node_post/synthetic-post"; +const LABEL = "http://www.w3.org/2000/01/rdf-schema#label"; + +function page(value: Record): OntologyNeighborhoodPayload { + return { + focus_node_id: "synthetic-post", + focus_node_type_code: "node_post", + truncated: false, + next_cursor: null, + limitation_code: null, + nodes: [], + edges: [], + exact_value_rows: [], + jsonld: { + "@graph": [{ "@id": SUBJECT, [LABEL]: value }], + }, + }; +} + +describe("ontology pagination JSON-LD identity", () => { + it("deduplicates equivalent object values when member order changes", () => { + const firstValue = { "@value": "Synthetic label", "@language": "en" }; + const reorderedValue = { "@language": "en", "@value": "Synthetic label" }; + + const merged = accumulateNeighborhoodPages(page(firstValue), page(reorderedValue)); + + expect(merged.jsonld["@graph"]).toEqual([ + { "@id": SUBJECT, [LABEL]: firstValue }, + ]); + }); +}); diff --git a/frontend/src/ontologyLayout.test.ts b/frontend/src/ontologyLayout.test.ts index 1458436de..ed8e3b0fa 100644 --- a/frontend/src/ontologyLayout.test.ts +++ b/frontend/src/ontologyLayout.test.ts @@ -260,6 +260,55 @@ describe("ontologyLayout", () => { ]); }); + it.each([ + [{ "@id": "target:one" }, { "@id": "target:two" }], + [[{ "@id": "target:one" }], { "@id": "target:two" }], + [{ "@id": "target:one" }, [{ "@id": "target:two" }]], + ])("retains singleton and array relations across pages: %j, %j", (left, right) => { + const source = payload(); + const postIri = `${ONTOLOGY_NAMESPACE}node/node_post/${POST_ID}`; + const relation = `${ONTOLOGY_NAMESPACE}mentions`; + const page = (value: unknown) => ({ + ...source, + jsonld: { "@graph": [{ "@id": postIri, [relation]: value }] }, + }); + const first = page(left); + const second = page(right); + const before = JSON.stringify([first, second]); + const result = accumulateNeighborhoodPages(first, second); + expect(result.jsonld["@graph"]).toEqual([ + { "@id": postIri, [relation]: [{ "@id": "target:one" }, { "@id": "target:two" }] }, + ]); + expect(accumulateNeighborhoodPages(result, second).jsonld).toEqual(result.jsonld); + expect(JSON.stringify([first, second])).toBe(before); + }); + + it("retains direct relationships, types, labels and Voices within one page", () => { + const source = payload(); + const postIri = `${ONTOLOGY_NAMESPACE}node/node_post/${POST_ID}`; + const relation = `${ONTOLOGY_NAMESPACE}mentions`; + const voices = `${ONTOLOGY_NAMESPACE}hasVoiceAssignment`; + const next = { + ...source, + jsonld: { "@graph": [ + { "@id": postIri, "@type": "lw:Post", "rdfs:label": "Demo public post" }, + { "@id": postIri, [relation]: { "@id": "target:one" } }, + { "@id": postIri, [relation]: { "@id": "target:two" } }, + { "@id": postIri, [voices]: [{ "@id": "voice:one" }, { "@id": "voice:two" }] }, + { "@id": postIri, "@type": "prov:Entity", "rdfs:label": "Synthetic translated label" }, + ] }, + }; + expect(accumulateNeighborhoodPages(source, next).jsonld["@graph"]).toEqual([ + { + "@id": postIri, + "@type": ["lw:Post", "prov:Entity"], + "rdfs:label": ["Demo public post", "Synthetic translated label"], + [relation]: [{ "@id": "target:one" }, { "@id": "target:two" }], + [voices]: [{ "@id": "voice:one" }, { "@id": "voice:two" }], + }, + ]); + }); + it("keeps only exact canonical JSON-LD node ids when filtering", () => { const source = payload(); const postIri = `${ONTOLOGY_NAMESPACE}node/node_post/${POST_ID}`; diff --git a/frontend/src/ontologyLayout.ts b/frontend/src/ontologyLayout.ts index f7092168f..63575b030 100644 --- a/frontend/src/ontologyLayout.ts +++ b/frontend/src/ontologyLayout.ts @@ -194,6 +194,20 @@ function compareCodeUnits(left: string, right: string): number { return left < right ? -1 : left > right ? 1 : 0; } +function structuralJsonKey(value: unknown): string { + if (Array.isArray(value)) { + return `[${value.map(structuralJsonKey).join(",")}]`; + } + if (typeof value === "object" && value !== null) { + const object = value as Record; + return `{${Object.keys(object) + .sort(compareCodeUnits) + .map((key) => `${JSON.stringify(key)}:${structuralJsonKey(object[key])}`) + .join(",")}}`; + } + return JSON.stringify(value) ?? String(value); +} + /** * Restrict every exportable projection to the graph visible after search. * @@ -317,15 +331,22 @@ export function accumulateNeighborhoodPages( } const merged = { ...existing, ...incoming }; for (const key of Object.keys(incoming)) { - if (Array.isArray(existing[key]) && Array.isArray(incoming[key])) { - const values = [...existing[key], ...incoming[key]]; + if (key !== "@id" && Object.hasOwn(existing, key)) { + const values = [ + ...(Array.isArray(existing[key]) ? existing[key] : [existing[key]]), + ...(Array.isArray(incoming[key]) ? incoming[key] : [incoming[key]]), + ]; const seen = new Set(); - merged[key] = values.filter((value) => { - const serialized = JSON.stringify(value); + const unique = values.filter((value) => { + const serialized = structuralJsonKey(value); if (seen.has(serialized)) return false; seen.add(serialized); return true; }); + merged[key] = unique.length === 1 && + !Array.isArray(existing[key]) && !Array.isArray(incoming[key]) + ? unique[0] + : unique; } } graphItems.set(item["@id"], merged);