Commit d9b5a6b
authored
feat(portfolio-truth): add --portfolio-truth-allow-empty-notion carry-forward (#121)
The nightly portfolio-maintenance job has failed every night since 2026-06-23: it runs `report --portfolio-truth` with no NOTION_TOKEN, and the data-safety guard correctly refuses to overwrite existing truth (142 Notion context rows) with a 0-row headless run. This froze portfolio-truth-latest.json and degraded the personal-ops ghra hub spoke.
Add an opt-in --portfolio-truth-allow-empty-notion flag: when live Notion is unavailable, carry forward the prior artifact's per-project advisory context (load_prior_notion_context) instead of dropping to zero, so the refresh updates risk/activity/git signals without losing advisory data. The flag suppresses the drop guard (operator explicitly opted into empty-Notion publishing); source_summary records notion_context_carried_forward for provenance; a logger.warning fires on carry-forward so a real Notion regression stays observable.
Default (flag off) behavior is unchanged: the guard still protects against silent Notion drop.
Tests: reconstructor units, publish-level carry-forward + guard-still-fires + flag-suppresses-guard, CLI report-subcommand parse, and end-to-end via main().1 parent 9a93561 commit d9b5a6b
4 files changed
Lines changed: 375 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
433 | 433 | | |
434 | 434 | | |
435 | 435 | | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
436 | 446 | | |
437 | 447 | | |
438 | 448 | | |
| |||
674 | 684 | | |
675 | 685 | | |
676 | 686 | | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
677 | 697 | | |
678 | 698 | | |
679 | 699 | | |
| |||
5390 | 5410 | | |
5391 | 5411 | | |
5392 | 5412 | | |
| 5413 | + | |
5393 | 5414 | | |
5394 | 5415 | | |
5395 | 5416 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
9 | 12 | | |
10 | 13 | | |
11 | 14 | | |
| |||
82 | 85 | | |
83 | 86 | | |
84 | 87 | | |
| 88 | + | |
85 | 89 | | |
86 | 90 | | |
87 | 91 | | |
| |||
91 | 95 | | |
92 | 96 | | |
93 | 97 | | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
94 | 102 | | |
95 | 103 | | |
96 | 104 | | |
97 | 105 | | |
98 | 106 | | |
| 107 | + | |
99 | 108 | | |
100 | 109 | | |
101 | 110 | | |
102 | 111 | | |
103 | 112 | | |
104 | 113 | | |
105 | 114 | | |
106 | | - | |
107 | 115 | | |
108 | 116 | | |
109 | 117 | | |
110 | 118 | | |
| 119 | + | |
111 | 120 | | |
112 | 121 | | |
113 | 122 | | |
| |||
200 | 209 | | |
201 | 210 | | |
202 | 211 | | |
| 212 | + | |
203 | 213 | | |
204 | 214 | | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
205 | 219 | | |
206 | 220 | | |
207 | 221 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
| 3 | + | |
3 | 4 | | |
4 | 5 | | |
5 | 6 | | |
| |||
180 | 181 | | |
181 | 182 | | |
182 | 183 | | |
| 184 | + | |
183 | 185 | | |
184 | 186 | | |
185 | 187 | | |
| |||
188 | 190 | | |
189 | 191 | | |
190 | 192 | | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
191 | 205 | | |
192 | 206 | | |
193 | 207 | | |
| |||
217 | 231 | | |
218 | 232 | | |
219 | 233 | | |
| 234 | + | |
220 | 235 | | |
221 | 236 | | |
222 | 237 | | |
| |||
251 | 266 | | |
252 | 267 | | |
253 | 268 | | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
254 | 309 | | |
255 | 310 | | |
256 | 311 | | |
| |||
0 commit comments