NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #5982 most downloaded on Packagist
Reviewable finding, proposal, redaction, and decision-history tooling for coding-agent learning loops.
Last release today
07 Oct 2026
Ships on a steady schedule
a new release about every 8 days
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
4 months old
71 releases · first in 2026
One column per month.
add docs about https://github.com/ctxrs/ctx and how to use it for findings existing learnings from your coding agents
backlog CLI command that lists validated findings not yet consolidated into a proposal and
exits non-zero while any remain. This is a deterministic gate for the recurring "only the recent
findings were processed" failure: a learning-loop pass can no longer be reported as done while a
backlog of unconsolidated findings exists. --allow-nonempty makes the listing informational
(exit 0) for reporting without gating. Backed by BacklogCommandTest.Added a retired ProposalStatus, reachable only from applied via the new ProposalTransitionManager::retire() / proposal-retire CLI command. Once a prop
retired ProposalStatus, reachable only from applied via the new
ProposalTransitionManager::retire() / proposal-retire CLI command. Once a proposal's durable
change is fully captured in its target skill/doc/memory home, retiring it moves the file to
proposals/retired/ and appends an immutable record to the new history/retired-proposals.jsonl
(validated by DecisionHistoryValidator). Consuming projects do not need any change in
voku/agent-recall-compiler: its RecallRepository::loadActiveGuidance() already only scans
proposals/approved/ and proposals/applied/, so a retired proposal is simply never read into the
active recall guidance pool again, instead of accumulating there forever.ProposalValidator's source-finding check now also accepts findings with
FindingStatus::ARCHIVED (previously only VALIDATED/CONSOLIDATED), and
ProposalTransitionManager::approve()'s inline check was widened to match, so a finding can be
archived after its proposal already cited it as evidence without breaking that proposal's
validation on a later validate/approve/retire run.Cli::parseOptions() used foreach ($tokens as $index => $token) with a manual $index++ to skip a consumed option value. foreach ignores manual mutation
Cli::parseOptions() used foreach ($tokens as $index => $token) with a manual $index++ to skip
a consumed option value. foreach ignores manual mutation of the loop variable, so the consumed
value was re-read on the next iteration and pushed onto $arguments as a bogus leading positional
argument. Any command that reads its primary ID from $arguments[0] (proposal-approve,
proposal-reject, proposal-mark-applied, finding-transition, and constraint-export/
constraint-activate/constraint-loop when given a bare ID) silently operated on the wrong record
whenever at least one --option value pair preceded it. Switched to an explicit indexed for loop
(matching the already-correct pattern in the sibling voku/agent-recall-compiler package) and added
a regression test that exercises proposal-approve through Cli::run() with space-separated options.Add validating recall history in learning root checks
Add strict recall-selection and per-guidance outcome event models, parsers, and JSONL repositories.
GuidanceUsageProjector summaries for eligibility, selection, application, explicit outcomes, distinct tasks, timestamps, and evidence event IDs.guidance-evaluate CLI to validate event histories, print deterministic usage summaries and decisions, and optionally write reviewable candidate proposals.evolution_decision.OutcomeRepository validation to read new guidance-outcome.* event rows alongside legacy aggregate outcome records.Add typed learning triage with LearningClassification values for CREATE_SKILL, UPDATE_SKILL, ADD_LEARNING_NOTE, and IGNORE.
LearningClassification values for CREATE_SKILL, UPDATE_SKILL, ADD_LEARNING_NOTE, and IGNORE.ValidationCase support so findings, consolidation results, and proposals can carry concrete given / when / then behavior checks.classification, pattern_key, and validation_case fields to findings.learning_decision, pattern_key, validation_case, and overlap_check fields to consolidation results and proposals.ADD_LEARNING_NOTE, prefer UPDATE_SKILL over duplicate skill creation, and reject praise, self-justification, or generic advice.CREATE_SKILL proposals to prove existing skill overlap was inspected and that maximum overlap is not above 50%.Add constraint-activate to write active constraint manifests from approved or applied constraint proposals.
constraint-activate to write active constraint manifests from approved or applied constraint proposals.constraint-loop to export, apply, and activate generated constraints with one explicit tooling command.config.json path settings for project_root, constraint_generation_dir, and active_constraints_dir.Add typed constraint promotion models (ConstraintSpecification, ConstraintEngine, Detectability, FalsePositiveRisk) for hard-constraint candidates.
ConstraintSpecification, ConstraintEngine, Detectability, FalsePositiveRisk) for hard-constraint candidates.constraint-export to write generation packages containing specifications, source findings/proposals, examples, validation plans, and generation prompts.violation_detected, false_positive, rule_suppressed, and rule_disabled.Add Active Guidance modeling and repository to parse/load active guidance files.
ADD, DELETE, REPLACE, REJECT, NO_DURABLE_LEARNING).proposal-import, finding-transition, proposal-approve, proposal-reject, proposal-mark-applied).Add deterministic multi-selector consolidation preparation with repeatable --finding, --task, --ticket, and --scope selectors plus --since and --until
--finding, --task, --ticket, and --scope selectors plus --since and --until date filters.templates/consolidation-prompt.md from the learning root during prepare.ProposalLifecycle.FindingSelection for explicit consolidation input selection.PROJECT-123, GH-123, and TODO@path.DecisionRecorder to DecisionHistoryValidator because the class validates history and does not record decisions yet.validation_status combinations.REJECT with approved.proposals/<status>/ directory.approved_at timestamps on proposals when approval metadata is present.Initial CLI for validating findings, proposals, and decision history.
templates/consolidation-prompt.md from the learning root during prepare.Your coding agent can read these notes before it upgrades. Set up the MCP server →