Agent uses mise for project runtime management.
- Ruby is pinned in
.mise.tomlfor reproducible development. - Update policy: bump to latest stable Ruby after verification with test + lint gates.
- Commands below are run from
runtimes/ruby.
Run these checks during maintenance:
cd runtimes/ruby
bundle update --all
bundle outdated
bundle exec rspec
bundle exec rubocopAs of 2026-02-13:
diff-lcsshows newer2.x, butrspec-expectationscurrently constrainsdiff-lcsto< 2.0.- This is an upstream compatibility constraint, not project drift.
Upgrade path:
- Monitor newer RSpec releases for widened
diff-lcssupport. - Upgrade RSpec first.
- Re-run
bundle update --alland quality gates.
When an artifact first enters lifecycle tracking from pre-lifecycle data:
- mark lifecycle root with
legacy_compatibility_mode: true, - initialize current artifact version in
probationstate, - require normal v1 evidence window before durable promotion.
This keeps legacy artifacts runnable while forcing policy-based re-qualification.
# Inspect version scorecards and lifecycle snapshots
bin/recurgent-tools scorecards "<role>" "<method>"
# Inspect recent shadow decisions
bin/recurgent-tools decisions "<role>" "<method>" --limit 25Use only for incident response or rollback:
# Preview manual override
bin/recurgent-tools set-lifecycle "<role>" "<method>" "<checksum>" degraded --reason "incident rollback"
# Apply manual override
bin/recurgent-tools set-lifecycle "<role>" "<method>" "<checksum>" durable --reason "rollback to stable" --applyOverrides are appended to lifecycle.manual_overrides for auditability.
- Disable enforcement immediately: set runtime
promotion_enforcement_enabled=false. - Validate user-facing stability on key examples (
calculator,assistant). - Inspect shadow decision ledger to locate offending candidate checksums.
- Optionally force downgrade candidate checksums to
degraded. - Re-enable enforcement only after scorecard and trace review.
Proposal Operations (ADR 0025)
Proposal artifacts are audited control-plane records. Treat them as immutable history with explicit status transitions only.
# Inspect newest proposals
bin/recurgent-tools proposals --limit 50
# Inspect only pending proposals
bin/recurgent-tools proposals --status proposed# Approve / reject
bin/recurgent-tools approve-proposal <proposal_id> --actor <maintainer> --note "reviewed"
bin/recurgent-tools reject-proposal <proposal_id> --actor <maintainer> --note "reason"
# Apply after approval
bin/recurgent-tools apply-proposal <proposal_id> --actor <maintainer> --note "rolled out"Transition rules:
apply-proposalrequires statusapproved.- Unauthorized actor receives
authority_denied. - Missing proposal id returns
not_found.
- Snapshot current proposal set (
proposals --limit 200) before intervention. - Apply corrective proposal or reject unsafe pending proposal.
- Run full tests and example traces.
- Capture incident notes and resulting proposal ids in maintenance log/PR.
Run periodic scope-pressure checks for role-heavy tools:
bin/recurgent-tools namespace-pressure "<role>"Escalate to follow-up ADR drafting when collisions, multi-lifetime usage, and ambiguity-linked continuity violations cross thresholds defined in docs/observability.md.