cctally 1.116.1 → 1.117.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/README.md +4 -6
  3. package/bin/_cctally_account.py +57 -3
  4. package/bin/_cctally_cache.py +5720 -885
  5. package/bin/_cctally_claude_attribution.py +997 -0
  6. package/bin/_cctally_completion.py +101 -28
  7. package/bin/_cctally_core.py +235 -12
  8. package/bin/_cctally_dashboard.py +263 -17
  9. package/bin/_cctally_dashboard_conversation.py +107 -21
  10. package/bin/_cctally_dashboard_envelope.py +44 -0
  11. package/bin/_cctally_db.py +928 -80
  12. package/bin/_cctally_diagnosis_sources.py +78 -13
  13. package/bin/_cctally_doctor.py +211 -86
  14. package/bin/_cctally_five_hour.py +446 -22
  15. package/bin/_cctally_forecast.py +302 -6
  16. package/bin/_cctally_journal.py +2418 -158
  17. package/bin/_cctally_milestone_history.py +379 -91
  18. package/bin/_cctally_oauth_samples.py +185 -7
  19. package/bin/_cctally_parser.py +38 -0
  20. package/bin/_cctally_project.py +34 -8
  21. package/bin/_cctally_quarantine.py +821 -343
  22. package/bin/_cctally_quota.py +69 -4
  23. package/bin/_cctally_quota_calibration.py +677 -3
  24. package/bin/_cctally_quota_model.py +927 -127
  25. package/bin/_cctally_record.py +922 -445
  26. package/bin/_cctally_rederive.py +119 -15
  27. package/bin/_cctally_statusline.py +1048 -176
  28. package/bin/_cctally_store.py +544 -110
  29. package/bin/_cctally_tui.py +455 -42
  30. package/bin/_cctally_update.py +77 -14
  31. package/bin/_lib_account_protocol.py +227 -19
  32. package/bin/_lib_claude_attribution.py +421 -0
  33. package/bin/_lib_clone_copy.py +30 -0
  34. package/bin/_lib_codex_conversation_query.py +45 -9
  35. package/bin/_lib_codex_conversation_watch.py +72 -13
  36. package/bin/_lib_codex_rollout_container.py +234 -19
  37. package/bin/_lib_codex_worker_lifecycle.py +374 -0
  38. package/bin/_lib_credit.py +22 -13
  39. package/bin/_lib_dashboard_sources.py +257 -18
  40. package/bin/_lib_detector_access_registry.py +1335 -166
  41. package/bin/_lib_doctor.py +276 -92
  42. package/bin/_lib_ingest_frontier.py +269 -36
  43. package/bin/_lib_journal.py +273 -22
  44. package/bin/_lib_jsonl.py +12 -0
  45. package/bin/_lib_meter_rate_change.py +72 -0
  46. package/bin/_lib_outcome_quarantine.py +917 -554
  47. package/bin/_lib_provider_activity.py +24 -6
  48. package/bin/_lib_quota_calibration.py +57 -3
  49. package/bin/_lib_quota_copy.py +7 -2
  50. package/bin/_lib_quota_lineage.py +613 -0
  51. package/bin/_lib_quota_model.py +464 -33
  52. package/bin/_lib_rate_change_delivery.py +16 -0
  53. package/bin/_lib_reclaim_planner.py +6 -4
  54. package/bin/_lib_rederive.py +2046 -21
  55. package/bin/_lib_selector_state.py +131 -3
  56. package/bin/_lib_snapshot_cache.py +8 -0
  57. package/bin/_lib_stale_proof.py +113 -4
  58. package/bin/_lib_statusline.py +72 -3
  59. package/bin/_lib_statusline_candidates.py +246 -42
  60. package/bin/_lib_tick_stats.py +10 -5
  61. package/bin/_lib_write_io.py +419 -6
  62. package/bin/cctally +28 -11
  63. package/dashboard/static/assets/{ConversationsView-Dflb_myA.js → ConversationsView-oqNsWzWV.js} +1 -1
  64. package/dashboard/static/assets/{DoctorModal-DFX5CfIs.js → DoctorModal-B0DnU9d9.js} +1 -1
  65. package/dashboard/static/assets/ModalRoot-CYua2wP_.js +1 -0
  66. package/dashboard/static/assets/{ProjectsDrillPanel-C3PJy1xx.js → ProjectsDrillPanel-DSxXQSa-.js} +1 -1
  67. package/dashboard/static/assets/{SourceDetailModal-BczsWKhD.js → SourceDetailModal-BleDpQqG.js} +1 -1
  68. package/dashboard/static/assets/{UpdateModal-Os-Lo5cs.js → UpdateModal-CMqaAkSK.js} +1 -1
  69. package/dashboard/static/assets/{index-CYZ3NLqF.js → index-BjQV-0-D.js} +3 -3
  70. package/dashboard/static/assets/index-D34eYhAc.css +1 -0
  71. package/dashboard/static/assets/{outlineNavigation-k-zIif6W.js → outlineNavigation-CO-VWBm7.js} +1 -1
  72. package/dashboard/static/assets/{useKeymap-CW7Up0Ay.js → useKeymap-CUgEnnua.js} +1 -1
  73. package/dashboard/static/dashboard.html +3 -3
  74. package/package.json +5 -1
  75. package/dashboard/static/assets/ModalRoot-HlxoagIa.js +0 -1
  76. package/dashboard/static/assets/index-BKITk1CT.css +0 -1
@@ -107,6 +107,22 @@ def with_decided(state, identities, *, seeded=None) -> dict:
107
107
  }
108
108
 
109
109
 
110
+ def without_decided(state, identities) -> dict:
111
+ """A NEW state with `identities` no longer decided (#1015 spec 5.7).
112
+
113
+ Used only to hand back a claim this run won and then could not hand off
114
+ (the supersession recheck could not take its read guard): the identity
115
+ becomes owed again so a later run retries it. A decision whose
116
+ notification was handed off is never removed.
117
+ """
118
+ remaining = decided_set(state) - {tuple(i) for i in identities}
119
+ return {
120
+ "schemaVersion": SCHEMA_VERSION,
121
+ "seededFromStats": bool(state.get("seededFromStats")),
122
+ "decided": [list(i) for i in sorted(remaining)],
123
+ }
124
+
125
+
110
126
  def owed(recorded, decided) -> tuple:
111
127
  """Recorded identities with no decision, in a stable order.
112
128
 
@@ -11,7 +11,8 @@ The bound (`dc5`, `dc6`, audited against SQLite `btree.c`, `pager.c` and
11
11
  `sqlite3BtreeIncrVacuum`, `allocateBtreePage`, `setChildPtrmaps`,
12
12
  `ptrmapPutOvflPtr`, `ptrmapPageno`, `btreeGetUnusedPage` and
13
13
  `autoVacuumCommit` are identical and `incrVacuumStep` / `modifyPagePointer`
14
- differ only by corruption checks):
14
+ differ only by corruption checks; 3.54.1's three files are byte-identical to
15
+ 3.54.0's, #1023):
15
16
 
16
17
  * Each step removes the file's last page, skipping pointer-map and
17
18
  pending-byte pages, exactly as `incrVacuumStep` does.
@@ -65,10 +66,11 @@ import time
65
66
 
66
67
  PLANNER_VERSION = 1
67
68
  #: The SQLite releases whose incremental-vacuum sources were audited (spec
68
- #: §1.4, G3q). A runtime outside the range refuses reclaim until G3q passes on
69
- #: that version and a source review widens it.
69
+ #: §1.4, G3q; 3.54.1 in docs/superpowers/specs/2026-10-30-1023-sqlite-3541-
70
+ #: reclaim-audit.md). A runtime outside the range refuses reclaim until G3q
71
+ #: passes on that version and a source review widens it.
70
72
  AUDITED_SQLITE_MIN = (3, 37, 2)
71
- AUDITED_SQLITE_MAX = (3, 54, 0)
73
+ AUDITED_SQLITE_MAX = (3, 54, 1)
72
74
 
73
75
  WAL_INDEX_VERSION = 3007000
74
76
  WAL_FORMAT_VERSION = 3007000