feat(rust): the leases and their option sources (phase 12, protocol 8)
Four leases on core.lease: rust.decay.scale, rust.population, rust.spawn.scalar and rust.group.permission. Every lease is targeted and the target names the server (D73). Also the three target option sources plus rust.options.servers, with no budgets (D79). Held for up to seven days (D77). A key that is already held reads as its baseline. Drift is an answer, not a failure. inForce reads the plugin's holds and never compares values. Lease calls get a 4.5s timeout so that two of them fit in core.lease's 10s budget, and a timed-out apply is followed by a release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
@@ -56,6 +56,7 @@ module.exports = function register(ctx, api) {
|
||||
const { STREAMS } = require('./engagement/streams')
|
||||
const { AUDIENCES } = require('./engagement/audiences')
|
||||
const seeds = require('./engagement/seeds')
|
||||
const eventLeases = require('./eventLeases')
|
||||
const boot = require('./boot')
|
||||
/* eslint-enable global-require */
|
||||
|
||||
@@ -146,8 +147,20 @@ module.exports = function register(ctx, api) {
|
||||
api.onBoot(boot.onBoot)
|
||||
api.onShutdown(boot.onShutdown)
|
||||
|
||||
// Everything else this module will register — the four event catalogues, the
|
||||
// announce leg and the slash commands — is deliberately absent. Each arrives
|
||||
// The leases (PLAN.md §27, protocol 8): what an event may BORROW on a server
|
||||
// and must give back. Core's `core.lease` is the verb; these are the values it
|
||||
// may name and the four callables each ships. Every lease is targeted and the
|
||||
// target names the server (D73), which is how one value on one server gets
|
||||
// exactly one holder without core learning what a server is.
|
||||
//
|
||||
// The option sources are the three targets' own (D78). **No budgets** (D79): a
|
||||
// lease spends none, and a dimension with nothing to spend it is a dial on the
|
||||
// operator's cap screen that does nothing. They arrive with the actions.
|
||||
api.registerEventLeases(eventLeases.LEASES)
|
||||
api.registerEventOptionSources(eventLeases.OPTION_SOURCES)
|
||||
|
||||
// Everything else this module will register — the event actions and budgets,
|
||||
// the announce leg and the slash commands — is deliberately absent. Each arrives
|
||||
// with the phase that has something real to put in it. A registration
|
||||
// with nothing behind it is worse than a missing one: a declared trigger
|
||||
// nothing emits and a declared slot nothing fills are both surfaces an operator
|
||||
@@ -161,5 +174,7 @@ module.exports = function register(ctx, api) {
|
||||
triggers: TRIGGERS.length,
|
||||
streams: STREAMS.length,
|
||||
audiences: AUDIENCES.length,
|
||||
leases: eventLeases.LEASES.length,
|
||||
optionSources: eventLeases.OPTION_SOURCES.length,
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user