nocturne-memory 0.1.12__py3-none-any.whl

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 (107) hide show
  1. nocturne_memory-0.1.12.dist-info/METADATA +46 -0
  2. nocturne_memory-0.1.12.dist-info/RECORD +107 -0
  3. nocturne_memory-0.1.12.dist-info/WHEEL +4 -0
  4. spine/__init__.py +3 -0
  5. spine/_deploy/Dockerfile +28 -0
  6. spine/_deploy/README.md +22 -0
  7. spine/_deploy/billing-breaker/README.md +545 -0
  8. spine/_deploy/billing-breaker/billing_breaker.py +221 -0
  9. spine/_deploy/billing-breaker/deploy.sh +692 -0
  10. spine/_deploy/billing-breaker/deployment_checks.py +934 -0
  11. spine/_deploy/billing-breaker/main.py +51 -0
  12. spine/_deploy/billing-breaker/requirements.txt +2 -0
  13. spine/_deploy/pyproject.toml +78 -0
  14. spine/api_contract.py +47 -0
  15. spine/auth.py +38 -0
  16. spine/config.py +69 -0
  17. spine/contracts.py +210 -0
  18. spine/curation/__init__.py +2 -0
  19. spine/curation/contracts.py +117 -0
  20. spine/curation/diagnostics.py +307 -0
  21. spine/curation/provider.py +236 -0
  22. spine/curation/router.py +48 -0
  23. spine/curation/service.py +504 -0
  24. spine/curation/worker.py +49 -0
  25. spine/db/__init__.py +1 -0
  26. spine/db/engine.py +9 -0
  27. spine/db/locking.py +81 -0
  28. spine/db/memory.py +297 -0
  29. spine/db/migrate.py +73 -0
  30. spine/db/migrations/README +1 -0
  31. spine/db/migrations/env.py +71 -0
  32. spine/db/migrations/script.py.mako +25 -0
  33. spine/db/migrations/versions/0001_c2_schema.py +152 -0
  34. spine/db/migrations/versions/0002_origin_path.py +27 -0
  35. spine/db/migrations/versions/0003_spend_ledger.py +283 -0
  36. spine/db/migrations/versions/0004_hybrid_candidate_fts.py +67 -0
  37. spine/db/migrations/versions/0005_per_message_rescore.py +33 -0
  38. spine/db/migrations/versions/0006_extraction_queue.py +76 -0
  39. spine/db/migrations/versions/0007_seed_ingestion.py +64 -0
  40. spine/db/migrations/versions/0008_scorer_console.py +43 -0
  41. spine/db/migrations/versions/0009_spend_reconciliation.py +93 -0
  42. spine/db/migrations/versions/0010_budget_cut_band.py +34 -0
  43. spine/db/migrations/versions/0011_learner_runs.py +64 -0
  44. spine/db/migrations/versions/0012_injection_event_annotations.py +75 -0
  45. spine/db/migrations/versions/0013_transcript_records.py +61 -0
  46. spine/db/migrations/versions/0014_location_scorer.py +121 -0
  47. spine/db/migrations/versions/0015_symphony_memory_bridge.py +159 -0
  48. spine/db/migrations/versions/0016_thread_index.py +124 -0
  49. spine/db/migrations/versions/0017_memory_share.py +117 -0
  50. spine/db/migrations/versions/0018_curator_runs.py +270 -0
  51. spine/db/migrations/versions/0019_curator_pressure.py +118 -0
  52. spine/db/migrations/versions/0020_optimization_runs.py +95 -0
  53. spine/db/migrations/versions/0021_origin_location.py +109 -0
  54. spine/db/models.py +1063 -0
  55. spine/db/session.py +9 -0
  56. spine/deploy_resources.py +106 -0
  57. spine/embeddings/__init__.py +446 -0
  58. spine/embeddings/router.py +88 -0
  59. spine/events/__init__.py +1 -0
  60. spine/ids.py +33 -0
  61. spine/inject/__init__.py +1 -0
  62. spine/inject/annotations.py +143 -0
  63. spine/inject/decisions.py +563 -0
  64. spine/inject/renderer.py +84 -0
  65. spine/inject/router.py +308 -0
  66. spine/inject/scorer.py +741 -0
  67. spine/inject/service.py +774 -0
  68. spine/learner/__init__.py +1 -0
  69. spine/learner/contracts.py +29 -0
  70. spine/learner/evidence.py +321 -0
  71. spine/learner/locking.py +5 -0
  72. spine/learner/model.py +846 -0
  73. spine/learner/router.py +28 -0
  74. spine/learner/service.py +822 -0
  75. spine/learner/worker.py +63 -0
  76. spine/m2k/__init__.py +1 -0
  77. spine/m2k/contracts.py +394 -0
  78. spine/m2k/router.py +141 -0
  79. spine/m2k/service.py +1580 -0
  80. spine/main.py +325 -0
  81. spine/memory/__init__.py +1 -0
  82. spine/memory/router.py +393 -0
  83. spine/memory/service.py +1386 -0
  84. spine/problems.py +69 -0
  85. spine/queue/__init__.py +1 -0
  86. spine/queue/contracts.py +125 -0
  87. spine/queue/router.py +106 -0
  88. spine/queue/service.py +972 -0
  89. spine/spend/__init__.py +6 -0
  90. spine/spend/contracts.py +214 -0
  91. spine/spend/reconciliation.py +255 -0
  92. spine/spend/router.py +70 -0
  93. spine/spend/service.py +258 -0
  94. spine/spend/views.py +72 -0
  95. spine/symphony/__init__.py +1 -0
  96. spine/symphony/contracts.py +129 -0
  97. spine/symphony/router.py +75 -0
  98. spine/symphony/service.py +248 -0
  99. spine/tokens.py +19 -0
  100. spine/transcripts/__init__.py +1 -0
  101. spine/transcripts/contracts.py +107 -0
  102. spine/transcripts/router.py +55 -0
  103. spine/transcripts/service.py +118 -0
  104. spine/vitals/__init__.py +6 -0
  105. spine/vitals/contracts.py +241 -0
  106. spine/vitals/router.py +63 -0
  107. spine/vitals/service.py +396 -0
@@ -0,0 +1,46 @@
1
+ Metadata-Version: 2.5
2
+ Name: nocturne-memory
3
+ Version: 0.1.12
4
+ Summary: NOCTURNE Memory Palace service
5
+ Project-URL: Homepage, https://github.com/Nate0-1999/nocturne
6
+ Project-URL: Source, https://github.com/Nate0-1999/nocturne-memory
7
+ Requires-Python: <3.13,>=3.12
8
+ Requires-Dist: alembic<2,>=1.13
9
+ Requires-Dist: asyncpg<1,>=0.29
10
+ Requires-Dist: fastapi<1,>=0.115
11
+ Requires-Dist: httpx<1,>=0.27
12
+ Requires-Dist: pgvector<1,>=0.3
13
+ Requires-Dist: pydantic-settings<3,>=2
14
+ Requires-Dist: pydantic<3,>=2
15
+ Requires-Dist: sqlalchemy[asyncio]<3,>=2
16
+ Requires-Dist: tiktoken<1,>=0.9
17
+ Requires-Dist: uvicorn[standard]<1,>=0.30
18
+ Provides-Extra: dev
19
+ Requires-Dist: pytest-asyncio<1,>=0.24; extra == 'dev'
20
+ Requires-Dist: pytest<9,>=8; extra == 'dev'
21
+ Requires-Dist: ruff<1,>=0.9; extra == 'dev'
22
+ Requires-Dist: testcontainers[postgres]<5,>=4.8; extra == 'dev'
23
+ Description-Content-Type: text/markdown
24
+
25
+ # nocturne-memory
26
+
27
+ `nocturne-memory` is NOCTURNE's Memory Palace service and migration package. It
28
+ is released in lockstep as a dependency of the public `nocturne-harness`
29
+ distribution.
30
+
31
+ The service owns the extraction consent boundary at `/v1/extractions` and
32
+ `/v1/approval-queue`. Pending units use the internal `candidate` lifecycle
33
+ state and are excluded from ordinary memory listing, search, and injection.
34
+ Queue decisions are append-only; approval enacts the proposed verdict through
35
+ revisioned head changes and typed lineage edges, while denial revision-
36
+ tombstones the candidate as rejected.
37
+
38
+ Injection treats memory room as a versioned share of the active model context
39
+ window. The share is a ceiling, not a quota: unused room remains available to
40
+ conversation, while pinned memories always inject and report any overflow in
41
+ the prepare allocation. Share and threshold join the ordinary replay learner
42
+ after 100 authentic, hygiene-filtered owner dispositions; every learned
43
+ generation remains proposed until the owner activates it.
44
+
45
+ New users should start at the [NOCTURNE quickstart](https://github.com/Nate0-1999/nocturne)
46
+ and install `nocturne-harness`; they do not need to install this package separately.
@@ -0,0 +1,107 @@
1
+ spine/__init__.py,sha256=GTiG_PfEoLZkjtDsLUqEuSdadxkY_QtyqI35CUPjREY,53
2
+ spine/api_contract.py,sha256=nwfgkBuDgwRLEJbPZ0aCKLblEtnr8oZHbVkPsOyFG0M,1508
3
+ spine/auth.py,sha256=EDXkJqRMTMN_zqLpo7WH4tSDXCWxSNqyRlL3lhPAgPM,1392
4
+ spine/config.py,sha256=trunx2r1DbVSkXgNV9pync2_sJ4n3JMZyYzuy7AU3us,3013
5
+ spine/contracts.py,sha256=1_foyBC74lT6_3aS5B5czudHwStENZNquvcLAy3Jd4k,5243
6
+ spine/deploy_resources.py,sha256=Ye6q9EtrnL97hdVBWZBqnLt3N4cKRliXN4TP3NFmMlI,3775
7
+ spine/ids.py,sha256=nayaqSMkBJzioJlGeCOpcufqVfU4mNk5gaff7mP6ZsE,898
8
+ spine/main.py,sha256=fF6ih8wPTcPTwCA9mqn5y6Y5X-6yybhdeOU6Sc4RRuY,12701
9
+ spine/problems.py,sha256=tzA2TuhHQh5CfAqpjPUZI9m06uXvMuJWCvyceqd0vMQ,1692
10
+ spine/tokens.py,sha256=VzMxfCaEafZe0R0sWS-e0SR-gcRu5HZyRhiHBU4ntvI,455
11
+ spine/curation/__init__.py,sha256=upoFoydcDhXPatFMOKcaPE9JLd1KwJT6VfHt2V_qrkc,80
12
+ spine/curation/contracts.py,sha256=aL_l-EFUt9GQGX-Zln8viWX1iewHj65v_1hJpdaAeOg,3950
13
+ spine/curation/diagnostics.py,sha256=kj7FphmBkqZjEtqucbI-pFDSvYHvwMjyxPS4mC3pf1o,11363
14
+ spine/curation/provider.py,sha256=V58PSoUD-NwuFXPUQlJ5wI7_RZ5Hd8srf8e6CRhLRC0,8060
15
+ spine/curation/router.py,sha256=K05RVlgvsfKiQsx0UkAmdQf37rkepMS0COcPyavj7IQ,1441
16
+ spine/curation/service.py,sha256=HKu5pBZk6h0SZfcevQxlUF3GZVps1xrm8Okgvaj8yH0,19210
17
+ spine/curation/worker.py,sha256=8b2LCLoti_Qzky2EAWKD6DqvkwNHrtjGgz1Ygbu31FI,1495
18
+ spine/db/__init__.py,sha256=QseLkhAwLhBQqrEG2NtbToBLRFXNjzmI6FS9UTdAWEY,67
19
+ spine/db/engine.py,sha256=vFG-EJRHesFZWp3OARi6ya5JlUMJNQQTD3cveYhedhw,298
20
+ spine/db/locking.py,sha256=beEeAmB8xKNuZKRXE8fq8giw5JnodZNkRDD_oG1RxLs,2484
21
+ spine/db/memory.py,sha256=xp-De_wQWU-FBVZeGE2hzNDLXEhOcMquZt1RuWkct0M,9251
22
+ spine/db/migrate.py,sha256=K7LvNI6uIDMfYR_CNSszwLVQZiQBZTlM4idsS4k3pII,2263
23
+ spine/db/models.py,sha256=-Xxj7eiubtT7q45eslpgnbsyPGJ52nsdmSJOsLFP4Fg,43734
24
+ spine/db/session.py,sha256=6Y6ulezd2yOILtG7kWK_D6tIsNWYTkmgrEBzH6-cLIc,323
25
+ spine/db/migrations/README,sha256=GSKCFVHqrajH5gNOuQ00KsEDjV1g-gdRgQFs3NYOxnY,74
26
+ spine/db/migrations/env.py,sha256=oGK1jb97RbhCAMSyM1aFijv7Hjnc7I4wu5CzojrA3eE,2169
27
+ spine/db/migrations/script.py.mako,sha256=jwTs6sxl5R5TcaywggBBISnSjYZsRM-cjYe5H25UdPU,580
28
+ spine/db/migrations/versions/0001_c2_schema.py,sha256=UxWyAAnLnO-k08p5tE3AQ6sMlt5BwxbooF1dIMR_0r8,5230
29
+ spine/db/migrations/versions/0002_origin_path.py,sha256=5_dtosRHMxIz6R5TD-lHiLWDuAXKfWYcLlraq5DgRww,677
30
+ spine/db/migrations/versions/0003_spend_ledger.py,sha256=x-eiV8e_g5LD1jQUiicylcz29Y-2rzfpfRaTj3F5dqw,10542
31
+ spine/db/migrations/versions/0004_hybrid_candidate_fts.py,sha256=a6T99zNWf2earXS0T42f6KuzXB5H0p8IZg_-qYxFLDk,2148
32
+ spine/db/migrations/versions/0005_per_message_rescore.py,sha256=v3VWC-8K9oXox8lk9Ikqw8N2YBRoMauZsC5xMeBP2aA,945
33
+ spine/db/migrations/versions/0006_extraction_queue.py,sha256=mll8kcXS8Gjwrb3g4wwDtkjyVE2xioqLrqQcD_DTji8,2947
34
+ spine/db/migrations/versions/0007_seed_ingestion.py,sha256=2jDoOsVTl9_WevIRAGkIc30hiamszyuFwExHXfRXCxc,2801
35
+ spine/db/migrations/versions/0008_scorer_console.py,sha256=kiHuY_bmSTGrAVIo_yG8_VLxts45RYk9yUDzmnKJNOA,1408
36
+ spine/db/migrations/versions/0009_spend_reconciliation.py,sha256=ARA6GNGD2VVCg0nNxCpP8oFB4Mg__hcl_0IjyiNnxJk,3314
37
+ spine/db/migrations/versions/0010_budget_cut_band.py,sha256=z--JMIDpqRlmhENOpGFZlNmAlALQQQaGt9klZSETpLg,1001
38
+ spine/db/migrations/versions/0011_learner_runs.py,sha256=eWV8HRsQQ3J4xx8-GR9GCVtxYrPPQBLThOFI9WLxHYw,2210
39
+ spine/db/migrations/versions/0012_injection_event_annotations.py,sha256=t7cyaRgIsb3g6Zxbg4bYqZk9gksI1KiZa-Hs7Rf9PcU,2904
40
+ spine/db/migrations/versions/0013_transcript_records.py,sha256=2LBWZPZQBT5Q011M8omK3dxruOMNQbwpoac3RRmjjhQ,1911
41
+ spine/db/migrations/versions/0014_location_scorer.py,sha256=HVezI8wLb3S9W3QRC4DT1g9UXWuAIpzrf5cyFGf-uhI,3882
42
+ spine/db/migrations/versions/0015_symphony_memory_bridge.py,sha256=2K9zCXNDI1AO2CRKKM0MnrjMzNv634gyIjv63Cmo71w,6109
43
+ spine/db/migrations/versions/0016_thread_index.py,sha256=E8FgZ_sbEJ3tITQxdXxcLxT5--o8HrFNhn42Y_owVUk,4044
44
+ spine/db/migrations/versions/0017_memory_share.py,sha256=juOrbzuLO2pR5NPrv2osoJ-3B-c5zJja5UlgsFDzYD4,3842
45
+ spine/db/migrations/versions/0018_curator_runs.py,sha256=k1vNRg18jBRJqOc27lJKc4XtL1djnf5VUZCXuqKbfdY,11539
46
+ spine/db/migrations/versions/0019_curator_pressure.py,sha256=g4FSBeJjAbZgEqoU4_0wYnY-vMv-koenG7CG6hXvbMo,4324
47
+ spine/db/migrations/versions/0020_optimization_runs.py,sha256=cmAaPB4C025GMEpYyFeHMWYXd5rHR85BD7zeAgfxdU4,3683
48
+ spine/db/migrations/versions/0021_origin_location.py,sha256=TB7vnoeoyfXcMs4VvNas3zOcuNlW8x9tiG2w2VrzECE,3471
49
+ spine/embeddings/__init__.py,sha256=LMJVsMnIcg2v2ywoEetbIlRKaeMSYUit_ukv17A7Q5o,16018
50
+ spine/embeddings/router.py,sha256=nb-bAD4scRdmzYzgl-1XGr6KNTYiKZDvUGJe4TWeHZU,2510
51
+ spine/events/__init__.py,sha256=s05Ag4WbN0MOKj73av_J2dyyqjnQlo5T_H5XakUPLIY,59
52
+ spine/inject/__init__.py,sha256=aHx3KlqPmICIMdWBrQzSt5pXrNr_54Wa0RpHV3vydRs,74
53
+ spine/inject/annotations.py,sha256=kYENfKwwv8nLi2dbP7Lx72Edmde69YAuoqZHHg5qix0,5802
54
+ spine/inject/decisions.py,sha256=mWG9krXPKyktgbQ5DwC-JRp4qm85w9Xy-H8X9X9kkSw,20768
55
+ spine/inject/renderer.py,sha256=TugY4ELoXxJawDrMb5k5lCjqRqCplBLvJL_RFp67Jdc,2896
56
+ spine/inject/router.py,sha256=PTGkzaWr9zy8gb0elYVtdXPPOwKdOR0h-eKgjol6DOI,9862
57
+ spine/inject/scorer.py,sha256=gIMmfnVhlL41FjqbmLKrJTDdVcz6P0kqK7itrxBHvnQ,25683
58
+ spine/inject/service.py,sha256=BZwgGiOvhdP_J9N4OPMw_v1iTRvybttFNFm7tLUpDJ8,28089
59
+ spine/learner/__init__.py,sha256=4COnofKTTvIgCBQCUiwqkku9W1430wSOWPT_eV2RCy4,37
60
+ spine/learner/contracts.py,sha256=JhQEm7XSzIchiPt7tY312aI9qZK6tbXx4u7bQ0cbB54,740
61
+ spine/learner/evidence.py,sha256=8ebU5eWm8D9jkv4UxIh68sIIomuq0B-zB0CX_njT23o,12147
62
+ spine/learner/locking.py,sha256=A8nFsnFJBzofnBgl8264og-5wLgaBql_dO78cW3Zyqk,162
63
+ spine/learner/model.py,sha256=rBqr347CHwYQxEMeTGr4UtoKZWJ4ybVenm0fp2OHuoA,29320
64
+ spine/learner/router.py,sha256=d3UTqRduR50rJeM6gey_Zo1YEC3GqWctuItkCX_UU9M,745
65
+ spine/learner/service.py,sha256=Zp5UeoJ62AemC2_eOt-DkhdRKu28uDIiUY3eKzsBKlM,31286
66
+ spine/learner/worker.py,sha256=-s9PvjXSz4wrWOgtf1KL_aZoxiM6UwxUmZrTdIjL_4s,1987
67
+ spine/m2k/__init__.py,sha256=KxAeYhfs--Fsx4VMxTpsKaxEt6w22XiwmljGbpykWvE,60
68
+ spine/m2k/contracts.py,sha256=BFj7xQaWUVF0_jDsR9rqgO287I11F1br2LI9GrXCvos,11742
69
+ spine/m2k/router.py,sha256=2DZnm-6Yj0uaD4mA_i0RaAPfJ8hjU3upVrPikhNmx7E,4017
70
+ spine/m2k/service.py,sha256=w2uh4LZ3m97hDLWlL63IZhshDNjoFkLj5AsvQJ9owGk,60509
71
+ spine/memory/__init__.py,sha256=uPUlnOWybrWRKS0989PB2ZI91SXSFf-RlInOF44Ri3k,55
72
+ spine/memory/router.py,sha256=pgu9EndOeVhlKJtam2lo36F8E8VQ562wQiNbmhXm0dA,12829
73
+ spine/memory/service.py,sha256=aHAx2fihGMoIaNkGoamc7zsWSGGfjntSIWh3RpYigNI,51915
74
+ spine/queue/__init__.py,sha256=DO-oFNzlwOqVwZeRH8-GE6nn2q3WqdYAM2B8p-jFJVI,37
75
+ spine/queue/contracts.py,sha256=FqoFjipGR7sU_AN9rVQMTUEVx0wrTif8E0v1NU9U7LM,4354
76
+ spine/queue/router.py,sha256=sx88B8iX7WyKOO-0ywGzSzVhY9QMuc4Tp_lQmpVVGBU,3752
77
+ spine/queue/service.py,sha256=rVvV1KhPlhGC31j6GtWyXMZc3NuWL5xw22Pd9XFL4Ig,38123
78
+ spine/spend/__init__.py,sha256=GUb9gsQggqJzr0gE-olorXQ58k40xpdmcZvhbN-VibU,209
79
+ spine/spend/contracts.py,sha256=jEdnUbYUqtdJ5DikUffoi0YNoO8qZzyFpOxUYQMNv4U,6594
80
+ spine/spend/reconciliation.py,sha256=Z96AkiqGH4VhvSHr0WAcqIY4cWaSNfcnyZeCzi4tCCA,8674
81
+ spine/spend/router.py,sha256=6ilblr3C5Nl1VScKVjwV5vwlzhu764D3hGIdJ3A7Quk,2310
82
+ spine/spend/service.py,sha256=aVFnRByAosYcTscmaEzZWgBwT9Ai-e8aL4kb-2znweg,9119
83
+ spine/spend/views.py,sha256=wL0XJASOSpjQNVBVq-S0OXM4QrXvu8qJBYGwHbZiWB4,2199
84
+ spine/symphony/__init__.py,sha256=qVN_9GFHqmUXcdN9vgcpqpFZ5HqT43dyCermT-qWUQQ,62
85
+ spine/symphony/contracts.py,sha256=TKX2ydURIaq4vtFi2Psp_RsdBebLzgafV9o5Ev92z1Y,3718
86
+ spine/symphony/router.py,sha256=JONgjZf4TJfBDc9u0ek5b1DH32wzutwZWR7GRpu_xTM,2506
87
+ spine/symphony/service.py,sha256=eWBtlslEbzhzKLz1hVVFVLBKl8e05j476j9og8hjG4s,10290
88
+ spine/transcripts/__init__.py,sha256=_SvXLYM2QWZ9ZHNxtifW6BNfpzHYtEYU75tAVJ1-MCI,60
89
+ spine/transcripts/contracts.py,sha256=LgtteVI3zKc0ZuD73F_g0eJXaUWIsDbWt8oWcuZDPcE,3636
90
+ spine/transcripts/router.py,sha256=G8mHEcnKHL2GcU0VRUJBUW1_hnkrALCCbMNTZroTUEQ,1970
91
+ spine/transcripts/service.py,sha256=I9SwrtutqA0ZXMD7m3mPpdvIAJ4opCogJvRGyywlrFc,4571
92
+ spine/vitals/__init__.py,sha256=4rSztnPya_42tC3QXjKJ2YdAs59XhMndri49pt8432g,212
93
+ spine/vitals/contracts.py,sha256=7Tfl99th96iQlBpphFLHApsvM-LRK4CfP9Qw9yO2Co4,7870
94
+ spine/vitals/router.py,sha256=ZKtkNFTE0Z9GSc2bx3E3b7DqyD86-O7qj40y2ZJMNyc,1980
95
+ spine/vitals/service.py,sha256=rFjCN2kvbtW89ISGXV6I_KvyMDeLPi276jNPycLHkhA,14379
96
+ spine/_deploy/Dockerfile,sha256=pEY1KLEndKPj9RIfLw26vF0EScC0l2ypWt2zearo-Ws,616
97
+ spine/_deploy/README.md,sha256=mzomN0CLnDh5C5OlEb7n3DA_4B21RDJa-VQqBdgXwuY,1219
98
+ spine/_deploy/pyproject.toml,sha256=KZ98V28iA9YtKlRuNG1RDZySe1JhOTWy7xMYx57GGOc,2187
99
+ spine/_deploy/billing-breaker/README.md,sha256=mMxXySfIVpxNLy9yVpiS2wU4RO1ddbsqW4RlNUt3b_M,25950
100
+ spine/_deploy/billing-breaker/billing_breaker.py,sha256=bcPG_VrELnkjbptnc7peKJVmsXjGc9rcBvak2WAOlVE,7296
101
+ spine/_deploy/billing-breaker/deploy.sh,sha256=IMdDsPFDH4_gTLnbpI0w6kcuEvMNptcOS-bXwSKId-w,26317
102
+ spine/_deploy/billing-breaker/deployment_checks.py,sha256=UZCFnOLM_0KPpeesUU0rOG3vQ9XixD77HeG4A3HotTs,40231
103
+ spine/_deploy/billing-breaker/main.py,sha256=ZTIa7LaY3zeHCUJZvifFuBr_-SC8yXER0oKZVGjut58,1713
104
+ spine/_deploy/billing-breaker/requirements.txt,sha256=JbDeMJhf0tfknfMa9P7_Fm3C4GdWKisSPAhQrADSYFE,57
105
+ nocturne_memory-0.1.12.dist-info/METADATA,sha256=kJiXMdr1fEDP1kwnYtAX1C2E9avDYFZSzGXsaQh8i40,2089
106
+ nocturne_memory-0.1.12.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
107
+ nocturne_memory-0.1.12.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.32.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
spine/__init__.py ADDED
@@ -0,0 +1,3 @@
1
+ """Spine service package."""
2
+
3
+ __version__ = "0.1.12"
@@ -0,0 +1,28 @@
1
+ FROM python:3.12.13-slim@sha256:57cd7c3a7a273101a6485ba99423ee568157882804b1124b4dd04266317710de AS base
2
+
3
+ ENV PYTHONDONTWRITEBYTECODE=1 \
4
+ PYTHONUNBUFFERED=1
5
+
6
+ FROM base AS builder
7
+
8
+ WORKDIR /build
9
+
10
+ COPY pyproject.toml ./
11
+ COPY README.md ./
12
+ COPY Dockerfile ./
13
+ COPY src ./src
14
+ COPY infra ./infra
15
+
16
+ RUN pip wheel --no-cache-dir --no-deps --wheel-dir /wheels .
17
+
18
+ FROM base AS runtime
19
+
20
+ WORKDIR /app
21
+
22
+ COPY --from=builder /wheels /wheels
23
+
24
+ RUN pip install --no-cache-dir /wheels/nocturne_memory-*.whl && rm -rf /wheels
25
+
26
+ EXPOSE 8000
27
+
28
+ CMD ["uvicorn", "spine.main:create_app", "--factory", "--host", "0.0.0.0", "--port", "8000"]
@@ -0,0 +1,22 @@
1
+ # nocturne-memory
2
+
3
+ `nocturne-memory` is NOCTURNE's Memory Palace service and migration package. It
4
+ is released in lockstep as a dependency of the public `nocturne-harness`
5
+ distribution.
6
+
7
+ The service owns the extraction consent boundary at `/v1/extractions` and
8
+ `/v1/approval-queue`. Pending units use the internal `candidate` lifecycle
9
+ state and are excluded from ordinary memory listing, search, and injection.
10
+ Queue decisions are append-only; approval enacts the proposed verdict through
11
+ revisioned head changes and typed lineage edges, while denial revision-
12
+ tombstones the candidate as rejected.
13
+
14
+ Injection treats memory room as a versioned share of the active model context
15
+ window. The share is a ceiling, not a quota: unused room remains available to
16
+ conversation, while pinned memories always inject and report any overflow in
17
+ the prepare allocation. Share and threshold join the ordinary replay learner
18
+ after 100 authentic, hygiene-filtered owner dispositions; every learned
19
+ generation remains proposed until the owner activates it.
20
+
21
+ New users should start at the [NOCTURNE quickstart](https://github.com/Nate0-1999/nocturne)
22
+ and install `nocturne-harness`; they do not need to install this package separately.