markspace 0.1.3b0__tar.gz

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 (346) hide show
  1. markspace-0.1.3b0/.devcontainer/devcontainer.json +32 -0
  2. markspace-0.1.3b0/.devcontainer/post_create.sh +13 -0
  3. markspace-0.1.3b0/.env.example +23 -0
  4. markspace-0.1.3b0/.gitattributes +3 -0
  5. markspace-0.1.3b0/.github/workflows/publish.yml +61 -0
  6. markspace-0.1.3b0/.gitignore +44 -0
  7. markspace-0.1.3b0/.pre-commit-config.yaml +12 -0
  8. markspace-0.1.3b0/.secrets.baseline +131 -0
  9. markspace-0.1.3b0/CITATION.cff +24 -0
  10. markspace-0.1.3b0/LICENSE-CC-BY-4.0 +19 -0
  11. markspace-0.1.3b0/LICENSE-MIT +21 -0
  12. markspace-0.1.3b0/PKG-INFO +310 -0
  13. markspace-0.1.3b0/README.md +275 -0
  14. markspace-0.1.3b0/docs/figures/filter_chain.svg +64 -0
  15. markspace-0.1.3b0/docs/figures/monitor_chain.svg +44 -0
  16. markspace-0.1.3b0/docs/figures/sense_act.svg +44 -0
  17. markspace-0.1.3b0/docs/figures/triage_pipeline.svg +88 -0
  18. markspace-0.1.3b0/docs/framework.md +1231 -0
  19. markspace-0.1.3b0/docs/spec.md +1467 -0
  20. markspace-0.1.3b0/experiments/comparison/analysis.md +205 -0
  21. markspace-0.1.3b0/experiments/comparison/analyze.py +202 -0
  22. markspace-0.1.3b0/experiments/comparison/design.md +180 -0
  23. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_42.jsonl +3 -0
  24. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_42_messages.jsonl +3 -0
  25. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_43.jsonl +3 -0
  26. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_43_messages.jsonl +3 -0
  27. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_44.jsonl +3 -0
  28. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_44_messages.jsonl +3 -0
  29. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_45.jsonl +3 -0
  30. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_45_messages.jsonl +3 -0
  31. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_46.jsonl +3 -0
  32. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_46_messages.jsonl +3 -0
  33. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_47.jsonl +3 -0
  34. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_47_messages.jsonl +3 -0
  35. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_48.jsonl +3 -0
  36. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_48_messages.jsonl +3 -0
  37. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_49.jsonl +3 -0
  38. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_49_messages.jsonl +3 -0
  39. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_50.jsonl +3 -0
  40. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_50_messages.jsonl +3 -0
  41. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_51.jsonl +3 -0
  42. markspace-0.1.3b0/experiments/comparison/results/markspace/seed_51_messages.jsonl +3 -0
  43. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_42.jsonl +3 -0
  44. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_42_messages.jsonl +3 -0
  45. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_43.jsonl +3 -0
  46. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_43_messages.jsonl +3 -0
  47. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_44.jsonl +3 -0
  48. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_44_messages.jsonl +3 -0
  49. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_45.jsonl +3 -0
  50. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_45_messages.jsonl +3 -0
  51. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_46.jsonl +3 -0
  52. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_46_messages.jsonl +3 -0
  53. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_47.jsonl +3 -0
  54. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_47_messages.jsonl +3 -0
  55. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_48.jsonl +3 -0
  56. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_48_messages.jsonl +3 -0
  57. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_49.jsonl +3 -0
  58. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_49_messages.jsonl +3 -0
  59. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_50.jsonl +3 -0
  60. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_50_messages.jsonl +3 -0
  61. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_51.jsonl +3 -0
  62. markspace-0.1.3b0/experiments/comparison/results/messagepassing/seed_51_messages.jsonl +3 -0
  63. markspace-0.1.3b0/experiments/comparison/run_markspace.py +566 -0
  64. markspace-0.1.3b0/experiments/comparison/run_messagepassing.py +580 -0
  65. markspace-0.1.3b0/experiments/comparison/verify_agentframework.py +240 -0
  66. markspace-0.1.3b0/experiments/composition_stress/__init__.py +0 -0
  67. markspace-0.1.3b0/experiments/composition_stress/analysis.md +191 -0
  68. markspace-0.1.3b0/experiments/composition_stress/pipeline.svg +111 -0
  69. markspace-0.1.3b0/experiments/composition_stress/run.py +917 -0
  70. markspace-0.1.3b0/experiments/composition_stress/verify_analysis.py +143 -0
  71. markspace-0.1.3b0/experiments/guide.md +279 -0
  72. markspace-0.1.3b0/experiments/stress_test/__init__.py +0 -0
  73. markspace-0.1.3b0/experiments/stress_test/analysis.md +556 -0
  74. markspace-0.1.3b0/experiments/stress_test/analyze.py +669 -0
  75. markspace-0.1.3b0/experiments/stress_test/animate.py +456 -0
  76. markspace-0.1.3b0/experiments/stress_test/design.md +584 -0
  77. markspace-0.1.3b0/experiments/stress_test/plot_final.py +291 -0
  78. markspace-0.1.3b0/experiments/stress_test/results/agents.jsonl +3 -0
  79. markspace-0.1.3b0/experiments/stress_test/results/fig_decay_curves.png +3 -0
  80. markspace-0.1.3b0/experiments/stress_test/results/fig_llm_cost_scaling.png +3 -0
  81. markspace-0.1.3b0/experiments/stress_test/results/fig_round_progression.png +3 -0
  82. markspace-0.1.3b0/experiments/stress_test/results/fig_shared_room_contention.png +3 -0
  83. markspace-0.1.3b0/experiments/stress_test/results/rounds.jsonl +3 -0
  84. markspace-0.1.3b0/experiments/stress_test/results/steps.jsonl +3 -0
  85. markspace-0.1.3b0/experiments/stress_test/results/trial.jsonl +3 -0
  86. markspace-0.1.3b0/experiments/stress_test/run.py +2698 -0
  87. markspace-0.1.3b0/experiments/stress_test/scenario.py +1914 -0
  88. markspace-0.1.3b0/experiments/stress_test/verify_analysis.py +469 -0
  89. markspace-0.1.3b0/experiments/trials/analysis.md +316 -0
  90. markspace-0.1.3b0/experiments/trials/analyze_trials.py +645 -0
  91. markspace-0.1.3b0/experiments/trials/animate.py +653 -0
  92. markspace-0.1.3b0/experiments/trials/orchestrate.py +531 -0
  93. markspace-0.1.3b0/experiments/trials/results/adversarial/analysis.md +232 -0
  94. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/confidence/agents.jsonl +3 -0
  95. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/confidence/manifests.jsonl +3 -0
  96. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/confidence/messages.jsonl +3 -0
  97. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/confidence/rounds.jsonl +3 -0
  98. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/confidence/steps.jsonl +3 -0
  99. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/confidence/trial.jsonl +3 -0
  100. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/flood/agents.jsonl +3 -0
  101. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/flood/manifests.jsonl +3 -0
  102. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/flood/messages.jsonl +3 -0
  103. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/flood/rounds.jsonl +3 -0
  104. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/flood/steps.jsonl +3 -0
  105. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/flood/trial.jsonl +3 -0
  106. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/injection/agents.jsonl +3 -0
  107. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/injection/manifests.jsonl +3 -0
  108. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/injection/messages.jsonl +3 -0
  109. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/injection/rounds.jsonl +3 -0
  110. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/injection/steps.jsonl +3 -0
  111. markspace-0.1.3b0/experiments/trials/results/adversarial/gpt-oss-120b/injection/trial.jsonl +3 -0
  112. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/confidence/agents.jsonl +3 -0
  113. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/confidence/manifests.jsonl +3 -0
  114. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/confidence/messages.jsonl +3 -0
  115. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/confidence/rounds.jsonl +3 -0
  116. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/confidence/steps.jsonl +3 -0
  117. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/confidence/trial.jsonl +3 -0
  118. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/flood/agents.jsonl +3 -0
  119. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/flood/manifests.jsonl +3 -0
  120. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/flood/messages.jsonl +3 -0
  121. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/flood/rounds.jsonl +3 -0
  122. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/flood/steps.jsonl +3 -0
  123. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/flood/trial.jsonl +3 -0
  124. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/injection/agents.jsonl +3 -0
  125. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/injection/manifests.jsonl +3 -0
  126. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/injection/messages.jsonl +3 -0
  127. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/injection/rounds.jsonl +3 -0
  128. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/injection/steps.jsonl +3 -0
  129. markspace-0.1.3b0/experiments/trials/results/adversarial/mercury-2/injection/trial.jsonl +3 -0
  130. markspace-0.1.3b0/experiments/trials/results/adversarial/probe_mercury2_rejection.py +331 -0
  131. markspace-0.1.3b0/experiments/trials/results/adversarial/probe_mercury2_results.jsonl +3 -0
  132. markspace-0.1.3b0/experiments/trials/results/adversarial/verify_analysis.py +317 -0
  133. markspace-0.1.3b0/experiments/trials/results/defense/analysis.md +81 -0
  134. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/defense_combined/agents.jsonl +3 -0
  135. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/defense_combined/manifests.jsonl +3 -0
  136. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/defense_combined/messages.jsonl +3 -0
  137. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/defense_combined/rounds.jsonl +3 -0
  138. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/defense_combined/run.log +116 -0
  139. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/defense_combined/steps.jsonl +3 -0
  140. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/defense_combined/trial.jsonl +3 -0
  141. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/escalation/agents.jsonl +3 -0
  142. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/escalation/manifests.jsonl +3 -0
  143. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/escalation/messages.jsonl +3 -0
  144. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/escalation/rounds.jsonl +3 -0
  145. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/escalation/run.log +94 -0
  146. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/escalation/steps.jsonl +3 -0
  147. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/escalation/trial.jsonl +3 -0
  148. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/probe_evasion/agents.jsonl +3 -0
  149. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/probe_evasion/manifests.jsonl +3 -0
  150. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/probe_evasion/messages.jsonl +3 -0
  151. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/probe_evasion/rounds.jsonl +3 -0
  152. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/probe_evasion/run.log +94 -0
  153. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/probe_evasion/steps.jsonl +3 -0
  154. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/probe_evasion/trial.jsonl +3 -0
  155. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/rate_spike/agents.jsonl +3 -0
  156. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/rate_spike/manifests.jsonl +3 -0
  157. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/rate_spike/messages.jsonl +3 -0
  158. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/rate_spike/rounds.jsonl +3 -0
  159. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/rate_spike/run.log +94 -0
  160. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/rate_spike/steps.jsonl +3 -0
  161. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/rate_spike/trial.jsonl +3 -0
  162. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/slow_drift/agents.jsonl +3 -0
  163. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/slow_drift/manifests.jsonl +3 -0
  164. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/slow_drift/messages.jsonl +3 -0
  165. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/slow_drift/rounds.jsonl +3 -0
  166. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/slow_drift/run.log +138 -0
  167. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/slow_drift/steps.jsonl +3 -0
  168. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/slow_drift/trial.jsonl +3 -0
  169. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/type_shift/agents.jsonl +3 -0
  170. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/type_shift/manifests.jsonl +3 -0
  171. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/type_shift/messages.jsonl +3 -0
  172. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/type_shift/rounds.jsonl +3 -0
  173. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/type_shift/run.log +94 -0
  174. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/type_shift/steps.jsonl +3 -0
  175. markspace-0.1.3b0/experiments/trials/results/defense/gpt-oss-120b/type_shift/trial.jsonl +3 -0
  176. markspace-0.1.3b0/experiments/trials/results/defense/verify_analysis.py +227 -0
  177. markspace-0.1.3b0/experiments/trials/results/multi_trial/analysis.md +196 -0
  178. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_42/agents.jsonl +3 -0
  179. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_42/manifests.jsonl +3 -0
  180. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_42/messages.jsonl +3 -0
  181. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_42/rounds.jsonl +3 -0
  182. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_42/steps.jsonl +3 -0
  183. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_42/trial.jsonl +3 -0
  184. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_43/agents.jsonl +3 -0
  185. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_43/manifests.jsonl +3 -0
  186. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_43/messages.jsonl +3 -0
  187. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_43/rounds.jsonl +3 -0
  188. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_43/steps.jsonl +3 -0
  189. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_43/trial.jsonl +3 -0
  190. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_44/agents.jsonl +3 -0
  191. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_44/manifests.jsonl +3 -0
  192. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_44/messages.jsonl +3 -0
  193. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_44/rounds.jsonl +3 -0
  194. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_44/steps.jsonl +3 -0
  195. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_44/trial.jsonl +3 -0
  196. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_45/agents.jsonl +3 -0
  197. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_45/manifests.jsonl +3 -0
  198. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_45/messages.jsonl +3 -0
  199. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_45/rounds.jsonl +3 -0
  200. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_45/steps.jsonl +3 -0
  201. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_45/trial.jsonl +3 -0
  202. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_46/agents.jsonl +3 -0
  203. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_46/manifests.jsonl +3 -0
  204. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_46/messages.jsonl +3 -0
  205. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_46/rounds.jsonl +3 -0
  206. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_46/steps.jsonl +3 -0
  207. markspace-0.1.3b0/experiments/trials/results/multi_trial/gpt-oss-120b/seed_46/trial.jsonl +3 -0
  208. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_42/agents.jsonl +3 -0
  209. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_42/manifests.jsonl +3 -0
  210. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_42/messages.jsonl +3 -0
  211. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_42/rounds.jsonl +3 -0
  212. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_42/steps.jsonl +3 -0
  213. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_42/trial.jsonl +3 -0
  214. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_43/agents.jsonl +3 -0
  215. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_43/manifests.jsonl +3 -0
  216. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_43/messages.jsonl +3 -0
  217. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_43/rounds.jsonl +3 -0
  218. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_43/steps.jsonl +3 -0
  219. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_43/trial.jsonl +3 -0
  220. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_44/agents.jsonl +3 -0
  221. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_44/manifests.jsonl +3 -0
  222. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_44/messages.jsonl +3 -0
  223. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_44/rounds.jsonl +3 -0
  224. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_44/steps.jsonl +3 -0
  225. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_44/trial.jsonl +3 -0
  226. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_45/agents.jsonl +3 -0
  227. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_45/manifests.jsonl +3 -0
  228. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_45/messages.jsonl +3 -0
  229. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_45/rounds.jsonl +3 -0
  230. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_45/steps.jsonl +3 -0
  231. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_45/trial.jsonl +3 -0
  232. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_46/agents.jsonl +3 -0
  233. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_46/manifests.jsonl +3 -0
  234. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_46/messages.jsonl +3 -0
  235. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_46/rounds.jsonl +3 -0
  236. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_46/steps.jsonl +3 -0
  237. markspace-0.1.3b0/experiments/trials/results/multi_trial/mercury-2/seed_46/trial.jsonl +3 -0
  238. markspace-0.1.3b0/experiments/trials/results/multi_trial/verify_analysis.py +349 -0
  239. markspace-0.1.3b0/experiments/trials/results/scaling_contention/gpt-oss-120b/n_200/agents.jsonl +3 -0
  240. markspace-0.1.3b0/experiments/trials/results/scaling_contention/gpt-oss-120b/n_200/manifests.jsonl +3 -0
  241. markspace-0.1.3b0/experiments/trials/results/scaling_contention/gpt-oss-120b/n_200/messages.jsonl +3 -0
  242. markspace-0.1.3b0/experiments/trials/results/scaling_contention/gpt-oss-120b/n_200/rounds.jsonl +3 -0
  243. markspace-0.1.3b0/experiments/trials/results/scaling_contention/gpt-oss-120b/n_200/steps.jsonl +3 -0
  244. markspace-0.1.3b0/experiments/trials/results/scaling_contention/gpt-oss-120b/n_200/trial.jsonl +3 -0
  245. markspace-0.1.3b0/experiments/trials/results/scaling_contention/gpt-oss-120b/n_500/agents.jsonl +3 -0
  246. markspace-0.1.3b0/experiments/trials/results/scaling_contention/gpt-oss-120b/n_500/manifests.jsonl +3 -0
  247. markspace-0.1.3b0/experiments/trials/results/scaling_contention/gpt-oss-120b/n_500/messages.jsonl +3 -0
  248. markspace-0.1.3b0/experiments/trials/results/scaling_contention/gpt-oss-120b/n_500/rounds.jsonl +3 -0
  249. markspace-0.1.3b0/experiments/trials/results/scaling_contention/gpt-oss-120b/n_500/steps.jsonl +3 -0
  250. markspace-0.1.3b0/experiments/trials/results/scaling_contention/gpt-oss-120b/n_500/trial.jsonl +3 -0
  251. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_100/agents.jsonl +3 -0
  252. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_100/manifests.jsonl +3 -0
  253. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_100/messages.jsonl +3 -0
  254. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_100/rounds.jsonl +3 -0
  255. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_100/steps.jsonl +3 -0
  256. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_100/trial.jsonl +3 -0
  257. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_1000/agents.jsonl +3 -0
  258. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_1000/manifests.jsonl +3 -0
  259. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_1000/messages.jsonl +3 -0
  260. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_1000/rounds.jsonl +3 -0
  261. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_1000/steps.jsonl +3 -0
  262. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_1000/trial.jsonl +3 -0
  263. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_500/agents.jsonl +3 -0
  264. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_500/manifests.jsonl +3 -0
  265. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_500/messages.jsonl +3 -0
  266. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_500/rounds.jsonl +3 -0
  267. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_500/steps.jsonl +3 -0
  268. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_500/stress_test.gif +0 -0
  269. markspace-0.1.3b0/experiments/trials/results/scaling_proportional/gpt-oss-120b/n_500/trial.jsonl +3 -0
  270. markspace-0.1.3b0/experiments/trials/verify_analysis.py +413 -0
  271. markspace-0.1.3b0/experiments/validation/__init__.py +0 -0
  272. markspace-0.1.3b0/experiments/validation/analysis.md +426 -0
  273. markspace-0.1.3b0/experiments/validation/analyze.py +948 -0
  274. markspace-0.1.3b0/experiments/validation/analyze_pilot.py +486 -0
  275. markspace-0.1.3b0/experiments/validation/design.md +409 -0
  276. markspace-0.1.3b0/experiments/validation/figures/heatmap_concurrent_(phase_2b).png +3 -0
  277. markspace-0.1.3b0/experiments/validation/figures/heatmap_sequential_(pilot).png +3 -0
  278. markspace-0.1.3b0/experiments/validation/figures/model_performance.png +3 -0
  279. markspace-0.1.3b0/experiments/validation/figures/safety_cumulative.png +3 -0
  280. markspace-0.1.3b0/experiments/validation/figures/scaling.png +3 -0
  281. markspace-0.1.3b0/experiments/validation/figures/seq_vs_concurrent_hidden.png +3 -0
  282. markspace-0.1.3b0/experiments/validation/figures/steps_by_visibility_concurrent_(phase_2b).png +3 -0
  283. markspace-0.1.3b0/experiments/validation/figures/steps_by_visibility_sequential_(pilot).png +3 -0
  284. markspace-0.1.3b0/experiments/validation/figures/temperature_effect.png +3 -0
  285. markspace-0.1.3b0/experiments/validation/figures/waste_ratio.png +3 -0
  286. markspace-0.1.3b0/experiments/validation/multi-phase_design.md +213 -0
  287. markspace-0.1.3b0/experiments/validation/results_block_self_rebook_20260228_011035.jsonl +3 -0
  288. markspace-0.1.3b0/experiments/validation/results_exhaustion_5round_20260228_011047.jsonl +3 -0
  289. markspace-0.1.3b0/experiments/validation/results_large_calendar_20260228_011042.jsonl +3 -0
  290. markspace-0.1.3b0/experiments/validation/results_mercury2_conc.jsonl +3 -0
  291. markspace-0.1.3b0/experiments/validation/results_mercury2_seq.jsonl +3 -0
  292. markspace-0.1.3b0/experiments/validation/results_multi_phase_20260228_000031.jsonl +3 -0
  293. markspace-0.1.3b0/experiments/validation/results_multi_phase_20260228_002622.jsonl +3 -0
  294. markspace-0.1.3b0/experiments/validation/results_multi_phase_20260228_002718.jsonl +3 -0
  295. markspace-0.1.3b0/experiments/validation/results_multi_phase_20260228_003006.jsonl +3 -0
  296. markspace-0.1.3b0/experiments/validation/results_multi_phase_concurrent_20260228_005619.jsonl +3 -0
  297. markspace-0.1.3b0/experiments/validation/results_phase2b_20260227.jsonl +3 -0
  298. markspace-0.1.3b0/experiments/validation/results_phase3_20260227.jsonl +3 -0
  299. markspace-0.1.3b0/experiments/validation/results_pilot_20260227.jsonl +3 -0
  300. markspace-0.1.3b0/experiments/validation/results_test_30slots_20260228_010414.jsonl +3 -0
  301. markspace-0.1.3b0/experiments/validation/results_test_5rounds_20260228_010721.jsonl +3 -0
  302. markspace-0.1.3b0/experiments/validation/results_test_block_rebook_20260228_005941.jsonl +3 -0
  303. markspace-0.1.3b0/experiments/validation/run.py +1047 -0
  304. markspace-0.1.3b0/experiments/validation/verify_analysis.py +555 -0
  305. markspace-0.1.3b0/figures/architecture.svg +117 -0
  306. markspace-0.1.3b0/figures/committee_vs_stigmergic.svg +82 -0
  307. markspace-0.1.3b0/figures/conflict_scenario.svg +76 -0
  308. markspace-0.1.3b0/figures/cross_principal.svg +67 -0
  309. markspace-0.1.3b0/figures/pipeline.svg +55 -0
  310. markspace-0.1.3b0/figures/principal_attention.svg +114 -0
  311. markspace-0.1.3b0/figures/psa.jpg +0 -0
  312. markspace-0.1.3b0/figures/single_agent.svg +73 -0
  313. markspace-0.1.3b0/logo.svg +21 -0
  314. markspace-0.1.3b0/markspace/__init__.py +176 -0
  315. markspace-0.1.3b0/markspace/barrier.py +139 -0
  316. markspace-0.1.3b0/markspace/budget.py +186 -0
  317. markspace-0.1.3b0/markspace/compose.py +78 -0
  318. markspace-0.1.3b0/markspace/core.py +626 -0
  319. markspace-0.1.3b0/markspace/envelope.py +680 -0
  320. markspace-0.1.3b0/markspace/guard.py +1285 -0
  321. markspace-0.1.3b0/markspace/llm.py +660 -0
  322. markspace-0.1.3b0/markspace/models.py +82 -0
  323. markspace-0.1.3b0/markspace/probe.py +231 -0
  324. markspace-0.1.3b0/markspace/py.typed +0 -0
  325. markspace-0.1.3b0/markspace/rate_limit.py +123 -0
  326. markspace-0.1.3b0/markspace/schedule.py +244 -0
  327. markspace-0.1.3b0/markspace/space.py +833 -0
  328. markspace-0.1.3b0/markspace/telemetry.py +234 -0
  329. markspace-0.1.3b0/poetry.lock +1556 -0
  330. markspace-0.1.3b0/pyproject.toml +64 -0
  331. markspace-0.1.3b0/review.md +794 -0
  332. markspace-0.1.3b0/tests/conftest.py +25 -0
  333. markspace-0.1.3b0/tests/test_barrier.py +233 -0
  334. markspace-0.1.3b0/tests/test_budget.py +541 -0
  335. markspace-0.1.3b0/tests/test_composition.py +808 -0
  336. markspace-0.1.3b0/tests/test_concurrent.py +305 -0
  337. markspace-0.1.3b0/tests/test_defense_integration.py +305 -0
  338. markspace-0.1.3b0/tests/test_envelope.py +506 -0
  339. markspace-0.1.3b0/tests/test_guard.py +1083 -0
  340. markspace-0.1.3b0/tests/test_hypothesis.py +1015 -0
  341. markspace-0.1.3b0/tests/test_probe.py +263 -0
  342. markspace-0.1.3b0/tests/test_properties.py +1420 -0
  343. markspace-0.1.3b0/tests/test_rate_limit.py +298 -0
  344. markspace-0.1.3b0/tests/test_scenarios.py +795 -0
  345. markspace-0.1.3b0/tests/test_schedule.py +386 -0
  346. markspace-0.1.3b0/tests/test_telemetry.py +326 -0
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "markspace",
3
+ "image": "mcr.microsoft.com/devcontainers/python:3.11",
4
+ "features": {
5
+ "ghcr.io/devcontainers/features/docker-outside-of-docker:1": {
6
+ "moby": false
7
+ },
8
+ "ghcr.io/devcontainers/features/git-lfs:1": {}
9
+ },
10
+ "runArgs": [
11
+ "--network=host",
12
+ "--name=markspace"
13
+ ],
14
+ "mounts": [
15
+ "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind"
16
+ ],
17
+ "postCreateCommand": ".devcontainer/post_create.sh",
18
+ "customizations": {
19
+ "vscode": {
20
+ "extensions": [
21
+ "editorconfig.editorconfig",
22
+ "elagil.pre-commit-helper",
23
+ "ms-python.python",
24
+ "ms-python.vscode-pylance",
25
+ "tamasfe.even-better-toml"
26
+ ],
27
+ "settings": {
28
+ "python.defaultInterpreterPath": "/workspaces/markspace/.venv/bin/python"
29
+ }
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,13 @@
1
+ #!/bin/bash
2
+
3
+ # Suppress 'detected dubious ownership' errors for git commands.
4
+ # Must be run every time the container starts since VSCode copies
5
+ # $HOME/.gitconfig of host machine to container on every start.
6
+ git config --global --add safe.directory '*'
7
+
8
+ # Install project dependencies
9
+ pip install poetry
10
+ poetry install
11
+
12
+ # Install pre-commit hooks
13
+ poetry run pre-commit install
@@ -0,0 +1,23 @@
1
+ # markspace - API keys for LLM experiments
2
+ #
3
+ # Copy this file to .env and fill in your keys.
4
+ # The reference implementation (core, guard, tests) does not require any API keys.
5
+ # Keys are only needed to run the LLM-driven experiments.
6
+
7
+ # Primary provider: Fireworks (checked first)
8
+ FIREWORKS_API_TOKEN=
9
+
10
+ # Alternative provider: OpenAI (used if no Fireworks key is set)
11
+ # OPENAI_API_KEY=
12
+
13
+ # Alternative provider: Google Gemini (OpenAI-compatible endpoint)
14
+ # GEMINI_API_KEY=
15
+
16
+ # Alternative provider: Anthropic Claude (OpenAI-compatible endpoint)
17
+ # ANTHROPIC_API_KEY=
18
+
19
+ # Optional: custom Fireworks endpoint
20
+ # FIREWORKS_INFERENCE_ENDPOINT=
21
+
22
+ # Optional: Inception Labs (only needed for mercury-2 model)
23
+ # INCEPTION_API_KEY=
@@ -0,0 +1,3 @@
1
+ **/*.jsonl filter=lfs diff=lfs merge=lfs -text
2
+ **/*.png filter=lfs diff=lfs merge=lfs -text
3
+ *.jsonl filter=lfs diff=lfs merge=lfs -text
@@ -0,0 +1,61 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v4
12
+
13
+ - uses: actions/setup-python@v5
14
+ with:
15
+ python-version: "3.11"
16
+
17
+ - name: Install build dependencies
18
+ run: pip install build
19
+
20
+ - name: Build package
21
+ run: python -m build
22
+
23
+ - name: Upload build artifacts
24
+ uses: actions/upload-artifact@v4
25
+ with:
26
+ name: dist
27
+ path: dist/
28
+
29
+ publish-testpypi:
30
+ needs: build
31
+ runs-on: ubuntu-latest
32
+ environment: testpypi
33
+ permissions:
34
+ id-token: write
35
+ steps:
36
+ - name: Download build artifacts
37
+ uses: actions/download-artifact@v4
38
+ with:
39
+ name: dist
40
+ path: dist/
41
+
42
+ - name: Publish to TestPyPI
43
+ uses: pypa/gh-action-pypi-publish@release/v1
44
+ with:
45
+ repository-url: https://test.pypi.org/legacy/
46
+
47
+ publish-pypi:
48
+ needs: publish-testpypi
49
+ runs-on: ubuntu-latest
50
+ environment: pypi
51
+ permissions:
52
+ id-token: write
53
+ steps:
54
+ - name: Download build artifacts
55
+ uses: actions/download-artifact@v4
56
+ with:
57
+ name: dist
58
+ path: dist/
59
+
60
+ - name: Publish to PyPI
61
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,44 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ *.egg-info/
7
+ dist/
8
+ build/
9
+ .eggs/
10
+
11
+ # Virtual environments
12
+ .venv/
13
+ venv/
14
+ env/
15
+
16
+ # IDE
17
+ .idea/
18
+ .vscode/
19
+ .claude/
20
+ *.swp
21
+ *.swo
22
+ *~
23
+
24
+ # OS
25
+ .DS_Store
26
+ Thumbs.db
27
+
28
+ # Testing
29
+ .pytest_cache/
30
+ .coverage
31
+ htmlcov/
32
+ .mypy_cache/
33
+ .hypothesis/
34
+
35
+ # Environment
36
+ .env
37
+
38
+ # Jupyter
39
+ .ipynb_checkpoints/
40
+
41
+ review/
42
+ demo/
43
+ markspace-ts/
44
+ distill/
@@ -0,0 +1,12 @@
1
+ repos:
2
+ - repo: https://github.com/psf/black
3
+ rev: 24.10.0
4
+ hooks:
5
+ - id: black
6
+ language_version: python3.11
7
+ - repo: https://github.com/Yelp/detect-secrets
8
+ rev: v1.5.0
9
+ hooks:
10
+ - id: detect-secrets
11
+ args: ['--baseline', '.secrets.baseline']
12
+ exclude: '_messages\.jsonl$|experiments/trials/.*\.jsonl$'
@@ -0,0 +1,131 @@
1
+ {
2
+ "version": "1.5.0",
3
+ "plugins_used": [
4
+ {
5
+ "name": "ArtifactoryDetector"
6
+ },
7
+ {
8
+ "name": "AWSKeyDetector"
9
+ },
10
+ {
11
+ "name": "AzureStorageKeyDetector"
12
+ },
13
+ {
14
+ "name": "Base64HighEntropyString",
15
+ "limit": 4.5
16
+ },
17
+ {
18
+ "name": "BasicAuthDetector"
19
+ },
20
+ {
21
+ "name": "CloudantDetector"
22
+ },
23
+ {
24
+ "name": "DiscordBotTokenDetector"
25
+ },
26
+ {
27
+ "name": "GitHubTokenDetector"
28
+ },
29
+ {
30
+ "name": "GitLabTokenDetector"
31
+ },
32
+ {
33
+ "name": "HexHighEntropyString",
34
+ "limit": 3.0
35
+ },
36
+ {
37
+ "name": "IbmCloudIamDetector"
38
+ },
39
+ {
40
+ "name": "IbmCosHmacDetector"
41
+ },
42
+ {
43
+ "name": "IPPublicDetector"
44
+ },
45
+ {
46
+ "name": "JwtTokenDetector"
47
+ },
48
+ {
49
+ "name": "KeywordDetector",
50
+ "keyword_exclude": ""
51
+ },
52
+ {
53
+ "name": "MailchimpDetector"
54
+ },
55
+ {
56
+ "name": "NpmDetector"
57
+ },
58
+ {
59
+ "name": "OpenAIDetector"
60
+ },
61
+ {
62
+ "name": "PrivateKeyDetector"
63
+ },
64
+ {
65
+ "name": "PypiTokenDetector"
66
+ },
67
+ {
68
+ "name": "SendGridDetector"
69
+ },
70
+ {
71
+ "name": "SlackDetector"
72
+ },
73
+ {
74
+ "name": "SoftlayerDetector"
75
+ },
76
+ {
77
+ "name": "SquareOAuthDetector"
78
+ },
79
+ {
80
+ "name": "StripeDetector"
81
+ },
82
+ {
83
+ "name": "TelegramBotTokenDetector"
84
+ },
85
+ {
86
+ "name": "TwilioKeyDetector"
87
+ }
88
+ ],
89
+ "filters_used": [
90
+ {
91
+ "path": "detect_secrets.filters.allowlist.is_line_allowlisted"
92
+ },
93
+ {
94
+ "path": "detect_secrets.filters.common.is_ignored_due_to_verification_policies",
95
+ "min_level": 2
96
+ },
97
+ {
98
+ "path": "detect_secrets.filters.heuristic.is_indirect_reference"
99
+ },
100
+ {
101
+ "path": "detect_secrets.filters.heuristic.is_likely_id_string"
102
+ },
103
+ {
104
+ "path": "detect_secrets.filters.heuristic.is_lock_file"
105
+ },
106
+ {
107
+ "path": "detect_secrets.filters.heuristic.is_not_alphanumeric_string"
108
+ },
109
+ {
110
+ "path": "detect_secrets.filters.heuristic.is_potential_uuid"
111
+ },
112
+ {
113
+ "path": "detect_secrets.filters.heuristic.is_prefixed_with_dollar_sign"
114
+ },
115
+ {
116
+ "path": "detect_secrets.filters.heuristic.is_sequential_string"
117
+ },
118
+ {
119
+ "path": "detect_secrets.filters.heuristic.is_swagger_file"
120
+ },
121
+ {
122
+ "path": "detect_secrets.filters.heuristic.is_templated_secret"
123
+ },
124
+ {
125
+ "path": "detect_secrets.filters.regex.should_exclude_file",
126
+ "pattern": ["_messages\\.jsonl$"]
127
+ }
128
+ ],
129
+ "results": {},
130
+ "generated_at": "2026-02-28T22:04:31Z"
131
+ }
@@ -0,0 +1,24 @@
1
+ cff-version: 1.2.0
2
+ title: markspace
3
+ message: "If you use this work, please cite it using the metadata below."
4
+ type: software
5
+ version: 0.1.3-beta
6
+ date-released: 2026-03-23
7
+ doi: 10.5281/zenodo.18990235
8
+ url: https://github.com/opinionated-systems/markspace
9
+ abstract: >
10
+ Markspace is a coordination protocol for LLM agent fleets based
11
+ on stigmergy - indirect coordination through traces left in a
12
+ shared environment. A deterministic guard layer at the environment
13
+ boundary enforces identity, scope, and conflict resolution outside
14
+ the agents, so safety guarantees hold independent of agent behavior.
15
+ The protocol defines five mark types encoding distinct epistemic
16
+ roles, three visibility levels, three conflict policies, and
17
+ trust-weighted decay. The included Python package is a reference
18
+ implementation used to verify 66 formal properties experimentally.
19
+ authors:
20
+ - family-names: Loose
21
+ given-names: Andre
22
+ affiliation: Opinionated Systems, Inc.
23
+ email: andre@opinionated.systems
24
+ license: MIT
@@ -0,0 +1,19 @@
1
+ Creative Commons Attribution 4.0 International
2
+
3
+ Copyright (c) Opinionated Systems, Inc.
4
+
5
+ This license applies to the MarkSpace protocol specification and
6
+ documentation files located in the docs/ directory.
7
+
8
+ You are free to:
9
+
10
+ Share - copy and redistribute the material in any medium or format
11
+ Adapt - remix, transform, and build upon the material for any purpose,
12
+ including commercially
13
+
14
+ Under the following terms:
15
+
16
+ Attribution - You must give appropriate credit, provide a link to the
17
+ license, and indicate if changes were made.
18
+
19
+ Full legal text: https://creativecommons.org/licenses/by/4.0/legalcode
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) Opinionated Systems, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.