Commit 93b435e669a5
tarball2 files changed+377-0
@@ -0,0 +1,281 @@
1
+EUROPEAN UNION PUBLIC LICENCE v. 1.22
+EUPL © 2007-2016 European Commission3
+4
+This European Union Public Licence (the "Licence") applies to the Work (as defined5
+below) which is provided under the terms of this Licence. Any use of the Work,6
+other than as authorised under this Licence is prohibited (to the extent such use7
+is covered by a right of the copyright holder of the Work).8
+9
+The Work is provided under the terms of this Licence when the Licensor (as defined10
+below) has placed the following notice immediately following the copyright notice11
+for the Work:12
+13
+ Licensed under the EUPL14
+15
+or has attached the Licence to the Work in any other manner reasonably suitable to16
+convey the message that the Work is licensed under the EUPL.17
+18
+1. Definitions19
+20
+In this Licence, the following terms have the following meaning:21
+22
+— 'The Licence': this licence.23
+24
+— 'The Original Work': the work or software distributed or communicated by the25
+Licensor under this Licence, available as source code and also as compiled code,26
+as the case may be.27
+28
+— 'Derivative Works': any work or software that could be created by the Licensee,29
+based upon the Original Work or modifications thereof. This Licence does not define30
+the extent of modification or dependence on the Original Work required to qualify31
+a work as a Derivative Work; this extent is determined by copyright law applicable32
+in the country mentioned in Article 15.33
+34
+— 'The Work': the Original Work or any Derivative Works.35
+36
+— 'The Source Code': the human-readable form of the Work which is the most37
+convenient for people to study and modify it.38
+39
+— 'The Compiled Code': any code which has been generated from the Source Code by40
+a process of translation, transformation or compilation, in a format normally used41
+for the execution of the work.42
+43
+— 'The Licensor': the natural or legal person, public authority, agency or any44
+other entity by law responsible for distribution of the Work. Under this45
+definition, "Licensor" does not include any entity which has a right to46
+sub-license the Work under a non-exclusive, royalty-free licence (either express47
+or implied).48
+49
+— 'Contributor(s)': any natural or legal person that modifies the Work under the50
+Licence, or otherwise contributes to the creation of a Derivative Work.51
+52
+— 'The Licensee' or 'You': any natural or legal person who makes any usage of the53
+Work under the terms of the Licence.54
+55
+— 'Distribution' or 'Communication': any act of selling, giving, lending,56
+renting, distributing, communicating, transmitting, or otherwise making available,57
+on-line or off-line, copies of the Work or providing access to its essential58
+functionalities at the disposal of any other natural or legal person.59
+60
+2. Scope of the rights granted by the Licence61
+62
+The Licensor hereby grants You a world-wide, royalty-free, non-exclusive,63
+sub-licensable licence to do the following:64
+65
+— use the Work in any circumstance and for all usage,66
+— reproduce the Work,67
+— modify the Work, and develop Derivative Works based upon the Work,68
+— communicate to the public, including the right to make available or display the69
+Work or copies thereof to the public and perform publicly, as the case may be, the70
+Work,71
+— distribute the Work or copies thereof,72
+— lend and rent the Work or copies thereof,73
+— sub-license rights in the Work or copies thereof.74
+75
+These rights can be exercised on any media, supports and formats, whether now76
+known or later invented, as far as the applicable law permits so.77
+78
+In the countries where moral rights apply, the Licensor waives the right to79
+exercise the moral right of paternity of the Work to the fullest extent allowed80
+by law so as to allow for the effective exercise of the economic rights herein81
+granted.82
+83
+The Licensor grants to the Licensee royalty-free, non-exclusive usage rights to84
+any patents held by the Licensor, to the extent necessary to make use of the85
+rights granted on the Work under this Licence.86
+87
+3. Communication of the Source Code88
+89
+The Licensor may provide the Work either in its Source Code form or as Compiled90
+Code. If the Licensor provides the Work as Compiled Code, the Licensor must also91
+provide a machine-readable copy of the Source Code of the Work along with each92
+copy of the Compiled Code provided by the Licensor or indicate, in a notice93
+following the copyright notice attached to the Work, a repository where the94
+Source Code is easily and freely accessible for as long as the Licensor continues95
+to distribute or communicate the Compiled Code.96
+97
+4. Limitations on copyright98
+99
+Nothing in this Licence is intended to deprive the Licensee of the benefits from100
+any exception or limitation to the exclusive rights of the rights owners in the101
+Original Work or Compiled Code, of the exhaustion of those rights, or of other102
+applicable limitations thereto.103
+104
+5. Obligations of the Licensee105
+106
+The grant of the rights mentioned above is subject to some restrictions and107
+obligations imposed on the Licensee. Those obligations are the following:108
+109
+Attribution right: The Licensee shall keep intact all copyright, patent or110
+trademarks notices and all notices that refer to the Licence and to the111
+disclaimer of warranties. The Licensee must include a copy of such notices and a112
+copy of the Licence with every copy of the Work he/she distributes or113
+communicates. The Licensee must cause any Derivative Work to carry prominent114
+notices stating that the Work has been modified and the date of modification.115
+116
+Copyleft clause: If the Licensee distributes or communicates copies of the117
+Original Work or Derivative Works, this Distribution or Communication will be done118
+under the terms of this Licence or of a later version of this Licence unless the119
+Original Work is expressly distributed only under this version of the Licence —120
+for example by the communication of "EUPL v. 1.2 only". In this case, the User121
+(becoming Licensee) cannot impose any further EUPL revisions on the reception of122
+the Work.123
+124
+Compatibility clause: If the Licensee distributes or communicates Derivative Works125
+or copies thereof based upon both the Original Work and another work licensed126
+under a Compatible Licence, this Distribution or Communication can be done under127
+the terms of this Compatible Licence. For the sake of this clause, "Compatible128
+Licence" refers to the licences listed in the appendix attached to this Licence.129
+Should the Licensee's obligations under the Compatible Licence conflict with130
+his/her obligations under this Licence, the obligations of the Compatible Licence131
+shall prevail.132
+133
+Provision of Source Code: When distributing or communicating copies of the Work,134
+the Licensee will provide a machine-readable copy of the Source Code or indicate a135
+repository where this Source will be easily and freely accessible for as long as136
+the Licensee continues to distribute or communicate the Work.137
+138
+Legal Protection: This Licence does not grant permission to use the trade names,139
+trademarks, service marks, or names of the Licensor, except as required for140
+reasonable and customary use in describing the origin of the Work and reproducing141
+the content of the copyright notice.142
+143
+6. Chain of Responsibility144
+145
+The original Licensor warrants that the copyright in the Original Work granted146
+hereunder does not infringe any third party's intellectual property rights.147
+148
+Each Contributor warrants that his or her modifications to the Work do not149
+infringe any third party's intellectual property rights.150
+151
+7. Disclaimer of Warranty152
+153
+The Work is provided on an "AS IS" basis, WITHOUT WARRANTIES OF ANY KIND,154
+CONCERNING THE WORK, INCLUDING WITHOUT LIMITATION ANY EXPRESS OR IMPLIED155
+WARRANTIES, SUCH AS MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR156
+NON-INFRINGEMENT OF THIRD PARTY RIGHTS. NOTHING IN THIS LICENCE SHALL BE157
+UNDERSTOOD TO AFFIRM OR IMPLY ANY SUCH WARRANTIES.158
+159
+The Licensor shall not be liable for any damage of any kind caused by the Work,160
+including without limitation, lost profits, lost income, lost opportunity, or161
+other intangible losses, even if the Licensor has been advised of the possibility162
+of such damage.163
+164
+8. Limitation of Liability165
+166
+Except in the cases of wilful wrongdoing or damages directly caused to natural167
+persons, the Licensor shall in no event be liable for any direct or indirect,168
+material or moral, damages of any kind, arising out of the Licence or of the use169
+of the Work, including without limitation, damages for lost profits, work170
+stoppage, computer failure or malfunction, or any form of general or special171
+damage, even if the Licensor has been advised of the possibility of such damage.172
+173
+However, the Licensor shall be liable under statutory product liability laws as174
+far such laws apply to the Work.175
+176
+9. Additional agreements177
+178
+While distributing the Work, You may choose to conclude an additional agreement,179
+defining obligations or services consistent with this Licence. However, if180
+accepting obligations, You may act only on your own behalf and on your sole181
+responsibility, not on behalf of the original Licensor or any other Contributor,182
+and only if You agree to indemnify, defend, and hold harmless each Licensor and183
+Contributor for any liability incurred by, or claims asserted against such184
+Licensor or Contributor by reason of your accepting any such warranty or185
+additional liability.186
+187
+10. Acceptance of the Licence188
+189
+The provisions of this Licence can be accepted by clicking on an "I agree" button190
+positioned under the bottom of a window displaying the text of this Licence or by191
+affirming consent in any other similar way, in accordance with the rules of192
+applicable law. Clicking on that button indicates your clear and irrevocable193
+acceptance of this Licence and all of its terms and conditions.194
+195
+Similarly, you irrevocably accept this Licence and all of its terms and conditions196
+when you exercise any rights granted to You by Article 2 of this Licence, such as197
+the use of the Work, the creation by You of a Derivative Work or the Distribution198
+or Communication by You of the Work or copies thereof.199
+200
+11. Information to the public201
+202
+In case of Distribution or Communication of the Work by means of electronic203
+transmission (for example, by offering to download from a remote location) the204
+distribution channel or the media (for example, a website) must at least provide205
+to the public the information requested by the applicable law regarding the206
+Licensor, the Licence and the way it may be accessible, concluded, stored and207
+reproduced by the Licensee.208
+209
+12. Termination of the Licence210
+211
+The Licence and the rights granted hereunder will terminate automatically upon any212
+breach by the Licensee of the terms of the Licence.213
+214
+Should the breach be remedied within 30 days of becoming aware of it by the215
+Licensee, continuity of the licence will be restored provided that this does not216
+happen more than twice in any five year period.217
+218
+For explicit termination of the Licence by the Licensor, the Licensor must give219
+formal notice to the Licensee with no further obligation to cure any breach.220
+221
+Upon termination of the Licence:222
+223
+— the rights granted to the Licensee under the Licence will end, and224
+— the Licensee shall, within a reasonable period after the termination, cease the225
+use or distribution of the Work, save where the Licence permits the continued use226
+of the Work after termination. All sub-licences to the Work which have been validly227
+concluded by the Licensee prior to termination shall survive.228
+229
+Save for the explicit termination by the Licensor or following termination by the230
+Licensee, the Work continues to be distributed or communicated under the same231
+Licence.232
+233
+13. Miscellaneous234
+235
+Without prejudice to any negotiations or procedures, insofar as the Licensor has236
+already received from the Licensee an indemnification in respect of actions brought237
+by the Licensor, arising from the infringement of intellectual property rights on238
+the part of the Licensor, the Licensor shall lose the right to seek indemnification239
+from the Licensee in respect of these or other intellectual property rights.240
+241
+Disputes arising between the parties relating to the interpretation or execution of242
+this agreement may be brought before the courts of the place where the Licensor243
+resides, unless there is an arbitration agreement between the parties or this244
+provision is modified by an agreement in writing between the parties.245
+246
+14. Jurisdiction247
+248
+Notwithstanding any choice of law, all disputes relating to the interpretation or249
+execution of this Licence, including arbitration, shall be subject to the exclusive250
+jurisdiction of the courts where the Licensor resides, unless otherwise agreed by251
+the parties in writing.252
+253
+15. Applicable Law254
+255
+This Licence shall be governed by the law of the European Union Member State in256
+which the Licensor resides.257
+258
+Appendix259
+260
+"Compatible Licences" according to article 5 EUPL are:261
+262
+— GNU General Public Licence (GPL) v. 2, v. 3263
+— GNU Affero General Public Licence (AGPL) v. 3264
+— Open Software Licence (OSL) v. 2.1, v. 3.0265
+— Eclipse Public Licence (EPL) v. 1.0266
+— CeCILL v. 2.0, v. 2.1267
+— Mozilla Public Licence (MPL) v. 2.0268
+— GNU Lesser General Public Licence (LGPL) v. 2.1, v. 3269
+— Creative Commons Attribution-ShareAlike v. 3.0 Unported (note: this is not a Free Software Licence)270
+— Public Documentation Licence (GDL) for GFDL v. 1.3271
+— WTFPL v. 2.0272
+— zlib/libpng273
+— Do What The F* You Want To Public Licence (WTFWPL)274
+— Microsoft Public Licence (Ms-PL)275
+— Microsoft Reciprocal Public Licence (Ms-RL)276
+— Illinois Open Source Licence (NCSA)277
+— Vovida Software Licence v. 1.0278
+— Boost Software Licence v. 1.0279
+— Artistic Licence v. 2.0280
+— Fair Licence281
+— Zope Public Licence v. 2.1@@ -0,0 +1,96 @@
1
+# roundabout2
+3
+five agents, one machine, one youtube video. roundabout makes the builds take turns.4
+5
+agents say roughly how big a build is. a tiny daemon, started on demand and gone once idle, lets it run when there's room. two heavy builds never overlap, nothing gets promised disk that isn't there, and small stuff keeps slipping through while the big one grinds. roundabout doesn't run anything itself, it just holds the door.6
+7
+## use8
+9
+the cli is `rabt`, short enough that agents don't mind typing it10
+11
+```12
+rabt run --size m -- cargo build13
+rabt run --ram 6G --cores 8 --time 10m -- nix build .#thing14
+rabt status15
+rabt suggest -- cargo build --release16
+rabt watch 7 # exits when lease 7 is done or overdue17
+rabt kill 718
+rabt extend 7 10m19
+rabt artifacts check | list | gc [--cap] | pin <path>20
+```21
+22
+`run` exits with the build's code, 124 if `--deadline` killed it, 75 if `--max-wait` ran out.23
+24
+a granted build gets `CARGO_BUILD_JOBS`, `MAKEFLAGS`, `CMAKE_BUILD_PARALLEL_LEVEL` and a `NIX_CONFIG` with `cores`/`max-jobs` to match its grant, so it actually uses the cores it asked for and no more.25
+26
+## claude code27
+28
+```29
+nix build .#plugin30
+claude plugin marketplace add ./result31
+claude plugin install roundabout@roundabout32
+```33
+34
+the plugin brings a skill and hooks. unwrapped builds get bounced back with instructions, overdue builds get mentioned to the agent that started them, and agents over their artifact cap get told to tidy up before they stop. `rabt` needs to be on PATH for the agent too, so install `.#roundabout` alongside.35
+36
+## config37
+38
+`~/.config/roundabout/config.toml`, falling back to `/etc/roundabout/config.toml`, or `$ROUNDABOUT_CONFIG` over both. everything's optional, these are the defaults39
+40
+```toml41
+[budget]42
+ram = "75%" # of total, or "24GiB"43
+ram_reserve = "4GiB" # MemAvailable never drops below this on our account44
+cores = "100%"45
+disk_reserve = "20GiB" # per fs, capped at a tenth of it46
+disk_paths = ["/nix/store"]47
+psi_max = 40.0 # memory psi avg10 above this holds heavies back48
+49
+[heavy] # any one of these makes a build heavy50
+ram = "4GiB"51
+cores = "50%"52
+disk = "5GiB"53
+54
+[sizes.m] # s m l xl built in, add your own55
+ram = "2GiB"56
+disk = "1GiB"57
+cores = 458
+time = "5m"59
+60
+[queue]61
+linger = "5s"62
+backfill_max_time = "2m"63
+# max_wait = "30m"64
+65
+[overrun]66
+ram = "warn" # or "throttle", systemd-run MemoryHigh on linux67
+ram_slack = 1.2568
+time_grace = 1.5 # overdue at this multiple of --time69
+remind_every = "5m"70
+71
+[enforce]72
+unwrapped = "deny" # "wrap" guesses a size for them, "allow" looks away73
+default_size = "m"74
+75
+[artifacts]76
+project_cap = "10GiB"77
+global_cap = "60GiB"78
+idle_after = "24h"79
+size_ttl = "10m"80
+over_cap = "warn" # "block" refuses new builds until cleaned81
+stop = "nudge" # "block" "warn" "off"82
+nix_gc = false83
+nix_min_free = "30GiB"84
+# extra_rules = [{ name = "zig-cache", marker = "build.zig" }]85
+86
+[nix]87
+inject = true88
+cores_per_job = 489
+90
+[detect]91
+# extra = ["just build"]92
+```93
+94
+## license95
+96
+EUPL-1.2