voku/agent-recall-compiler
Deterministic L2 Meta-Prompt compiler and briefing manager for coding agents.
0.13.11
22K downloads/mo
#4390 most downloaded on Packagist
voku/agent-recall-compiler
What this package is like to depend on
Last release today
23 Aug 2026
Ships fairly regularly
a new release about every 9 days
Nearly every release is documented
notes for 57 of 58 stable releases
Nothing withdrawn
no release was ever pulled
2 months old
58 releases · first in 2026
58 releases in the last 12 months
see the full history below
Release timeline
58 releases · Jun 2026 to Aug 2026Releases
latest 58-
0.13.1123 Aug 2026Release notes
Open source →Added
- Add bundled L2
discovery-firstandproduction-ready-handoffoperating recipes for repository re-grounding and fresh-agent execution handoff without inventing authority, commands, or scope. - Add bundled L1
execute-plan-with-blind-spot-checkfor executing an existing authoritative plan only after a bounded evidence-backed self blind-spot pass; disproved assumptions may change only the smallest affected plan step, while missing Done When or executable verification evidence fails closed instead of being invented.
Changed
- Governed Recall consumer guidance now routes ordinary lifecycle work through
agent-loop enter <task-id>andagent-loop finish <task-id>plus the canonical next action instead of teaching a stale internal phase choreography.
Validation
- PR #98 passed PHPUnit and PHPStan on PHP 8.3, 8.4, and 8.5 plus governed
agent-loopcontext-explain dogfood for the discovery/handoff recipes. - PR #102 passed PHPUnit and PHPStan on PHP 8.3, 8.4, and 8.5 plus governed
agent-loopcontext-explain dogfood forexecute-plan-with-blind-spot-checkon exact headeaa0fab86cf58c4a2f622dca490ad134b50f052f. agent-loopPR #272 ran current Loop head3c38e332c8f4ee87466fed67166ecff4af532f53against exact Recall candidate285ba3413a0a92c3dd34251c6bac3e6e574dc73a; prompt-primitives dogfood run32662042560installed the candidate catalog and provedworkflow planaccepts the new L1 recipe. The probe PR was then closed unmerged because no Loop product change or minimum-version bump was required.
- Add bundled L2
-
0.13.1020 Aug 2026Release notes
Open source →Fixed
- Stop a file's navigation fact from absorbing the relation graph of every sibling that shares an inherited base class. A map file entry also lists the parents its own symbols extend, so an external base such as
PHPUnit\Framework\TestCaseis attributed to every file inheriting it; matching incoming relations against those shared ids grew with the square of the inheriting files. On a 311-file repository one test file's fact carried 88,179 relations (33.7 MB) instead of 949 (0.39 MB), and the compiled bundle reached 124 MB. Symbols listed under more than one file are now excluded from that matching, since a symbol listed by several files is declared by none of them. Files that declare their own symbols are unaffected.
Validation
- PR #99 passed the PHP 8.3, 8.4, and 8.5 PHPUnit/PHPStan matrix plus governed
agent-loopdogfood on exact headc6ce6edb896499db8c2bd28eea1b0bc1e53da977; no review threads or submitted review findings remained before merge.
- Stop a file's navigation fact from absorbing the relation graph of every sibling that shares an inherited base class. A map file entry also lists the parents its own symbols extend, so an external base such as
-
0.13.919 Aug 2026Release notes
Open source →Added
- Let
RecallFactsDocumentReaderown the standalone facts-document path throughpath()andreadFromOutputDirectory(), so hosts no longer need to know the privatefacts.jsonfilename.
Validation
- PR #96 passed PHPUnit and PHPStan on PHP 8.3, 8.4, and 8.5 plus governed
agent-loopdogfood; CodeRabbit reported no actionable review thread on the final head.
- Let
-
0.13.819 Aug 2026Release notes
Open source →Added
- Add
RecallFactsDocumentReaderandRecallFactsDocumentso hosts consuming a standalone compiled facts document can read its canonical bundle identity and typed facts without decoding Recall JSON themselves.
Changed
CompiledRecallOutputReadernow delegates facts parsing to the same owner reader, leaving one implementation of the persisted facts schema inside Recall.- Facts-document reading validates the real
1.0document shape, raw lowercase 64-hex bundle digest, JSON-object root, and list-shaped fact collection while preserving open fact payload meaning for the host.
Validation
- PR #94 passed PHPUnit and PHPStan on PHP 8.3, 8.4, and 8.5 plus the governed
agent-loopcontext-explain dogfood. - CodeRabbit reported no actionable review thread on the final PR head.
- Add
-
0.13.719 Aug 2026Release notes
Open source →Added
- Add
CompiledRecallOutputReader,CompiledRecallOutput, andRecallFactas the typed read side of compiled Recall output for lifecycle hosts. - Expose semantic task/Contract binding, compilation identity, selected guidance/constraints, facts, task files, outcome-draft presence, bundle/facts readability, legacy task fallback, and owner-recorded output-integrity checks without requiring consumers to know Recall filenames or JSON keys.
Changed
- Missing task identity matches no task; corrupt bundle/facts remain distinguishable from absent artifacts so hosts can preserve stale/incomplete recovery semantics.
- Recall now owns the legacy
currenttask fallback and validation of its recorded output hashes, including rejecting unsafe recorded relative paths before hashing. - Fact provenance and scope are preserved alongside the open payload; real object-shaped
selected_constraintsare exposed as their semantic IDs.
Validation
- PR #92 passed CI on its final implementation head and resolved all three actionable CodeRabbit review threads.
- Consumer-driven Slice D work in
agent-loopexercised the API against the existing lifecycle call sites and forced the reader to preserve real constraint, fact-provenance, missing/corrupt, task-fallback, and output-integrity semantics instead of simplifying fixtures around them.
- Add
-
0.13.618 Aug 2026Release notes
Open source →Added
- Add
ReviewReportReader,ReviewReportArtifact, andReviewReportPathsso PHP lifecycle hosts can consume the current blind-spot report and its exact persisted SHA-256 identity without reconstructing Recall's file layout or JSON schema.
Changed
ReviewReportWriternow uses the same canonical path owner as the reader without changing the existing review artifact layout.- Present-but-invalid, task-mismatched, binding-invalid, or internally inconsistent review reports fail explicitly; only an actually missing report returns
null. - Review artifact identity remains evidence only: Recall does not infer or record acknowledgement authority for lifecycle hosts.
Validation
- PR #87 added focused regressions for missing state, exact persisted-byte identity, Contract/snapshot binding preservation, task mismatch, and status/finding consistency.
- GitHub Actions for the final PR head remained queued due runner congestion at merge time, so no green-CI claim is made for this release. The exact diff was reviewed before merge and the decoded report shape was made explicit for static analysis.
- Add
-
0.13.518 Aug 2026Release notes
Open source →Added
- Add the bundled
test-driven-developmentL2 operating recipe for evidence-backed RED/GREEN/REFACTOR work without turning test-first technique into workflow authority. - Add typed
CompileRequest,RecallCompiler, andCompileResultAPIs so PHP lifecycle hosts can embed governed Recall compilation without reproducing CLI option spelling, provider composition, or artifact rules.
Changed
- Embedded Recall compilation can suppress the human CLI success report while the standalone CLI keeps its existing output, allowing outer JSON or structured host protocols to remain valid.
- Document the PHP embedding boundary in the public docs and consumer skill: hosts own when compilation runs; Recall continues to own what compilation means.
Validation
- PR #84 passed its exact-head CI before merge for the reusable TDD recipe.
- PR #85 passed CI run #380 after the public API regression suite and PHPStan correction, including the existing governed integration dogfood.
- Add the bundled
-
0.13.417 Aug 2026Release notes
Open source →Changed
continue-until-donenow treats slice-by-slice self-confirmation as an internal continuation check only. Autonomous execution may continue while existing authority remains valid and evidence supports the next step, but it cannot satisfy human, owner, reviewer, accepted-risk, or approved-contract decisions by confirming itself.- Crossing an external authority boundary now requires
HUMAN_DECISION_REQUIRED/BLOCKED, while successful completion requires the configured Done condition to be satisfied by observed evidence.
Validation
- PR #82 first reproduced the missing authority boundary with a test-only red regression, then passed PHPUnit and PHPStan on PHP 8.3, 8.4, and 8.5 plus the governed installed
agent-loopcontext-explain dogfood. - Exact release target
4c621e1e7ff511a7e1cc5c5aa70059b5aa532c5apassed main-branch CI run #374 after merge. CodeRabbit was rate-limited for #82, so no external-review claim is made.
-
0.13.317 Aug 2026Release notes
Open source →Added
- Add the bundled
todo-card-handoffL2 recipe for self-contained durable task handoff to coding agents without chat, Session-private context, hidden reasoning, or prior-agent memory. The recipe requires repository anchors, verified/inferred separation, bounded next steps, observable acceptance, and the repository's existing task owner instead of inventing another backlog format.
Changed
- Code-review and blind-spot L2 prompts now treat every LLM-produced statement as a candidate claim rather than repository truth. Material claims must be re-grounded against current authoritative artifacts or deterministic evidence before acting; detailed patches, scorecards, confident rationale, or review provenance do not prove that named classes, boundaries, bugs, or metrics exist.
- Blind-spot prompts now inherit the existing first-draft falsification lens and require material claims to carry an epistemic status plus concrete supporting or contradicting evidence. Review findings remain investigation candidates rather than instructions to modify code.
Validation
- PR #79 added a real CLI compile regression for the bundled TODO handoff recipe.
- PR #80 first reproduced the missing model-output trust boundary with a red regression, then preserved the existing sub-1500-byte first-draft prompt budget after CI rejected an overlong draft.
- Exact release target
5934f4ecce271d00b2229e04bea4108e5c782bc4passed main-branch PHPUnit and PHPStan on PHP 8.3, 8.4, and 8.5. PR #80 also passed the governed installedagent-loopcontext-explain dogfood. CodeRabbit was rate-limited for #80, so no external-review claim is made.
- Add the bundled
-
0.13.216 Aug 2026Release notes
Open source →Fixed
- Deduplicate byte-identical navigation source references in compiled
system.mdwhile preserving first-seen order. The regression was independently reproduced byvoku/httpful#34andvoku/phonetic-algorithms#6.
CI
- Stage the Recall candidate outside the nested consumer checkout before installed
agent-loopdogfood, so the candidate under test cannot be confused with consumer-local state.
Validation
- PR #70 passed PHPUnit and PHPStan on PHP 8.3, 8.4, and 8.5 plus the governed installed
agent-loopcontext-explain dogfood. CodeRabbit reported no actionable review findings.
- Deduplicate byte-identical navigation source references in compiled
-
0.13.116 Aug 2026Release notes
Open source →Fixed
regression-huntnow treatsminimum_findingsas a bounded probe budget instead of a required defect count. Completed evidence-backed probes may returnCLEAN, missing material evidence may returnBLOCKED, and the recipe explicitly forbids manufacturing defects to satisfy the numeric floor.
Validation
- PR #74 passed the package CI matrix and pins the CLEAN/BLOCKED and
anti-defect-quota contract in
RegressionHuntPromptContractTest.
-
0.13.015 Aug 2026Release notes
Open source →Changed
- Breaking: blind-spot review reports may carry the exact Contract revision and implementation snapshot they reviewed, so governed consumers can reject a review after relevant implementation content changes without inventing a second review-evidence format.
review blindspotsaccepts paired--contract-revisionand--implementation-snapshot sha256:<digest>options. Standalone unbound review remains supported; repository snapshot semantics stay with the orchestrator.
-
0.12.414 Aug 2026Release notes
Open source →Changed
- Allow
voku/agent-map^0.8.0in addition to the existing 0.5, 0.6, and 0.7 lines. This is a compatibility-only release: Recall providers, facts, bundle digests, prompt rendering, and outcome semantics are unchanged.
Validation
- The package's normal Composer install and PHPUnit/PHPStan matrix must resolve
against the published
agent-map 0.8.0line before this compatibility release is tagged; no path repository or development-branch alias is used.
- Allow
-
0.12.314 Aug 2026Release notes
Open source →Changed
- The opt-in
prompt guidance-gapsdiagnostic now classifies each material authority failure asAUTHORITY_MISSING,AUTHORITY_NOT_SURFACED,AUTHORITY_STALE,AUTHORITY_CONFLICTING, orAUTHORITY_INCOMPLETE. AUTHORITY_NOT_SURFACEDis evidence-bound: agents may use it only when an applicable authority is proven to exist but was absent from usable context. Its remediation points at manifest, scope, retrieval, installation, or routing of that existing authority instead of manufacturing replacement docs.
Validation
- This distinction came from real
agent-loop#113self-shape dogfood: the self-shaping lifecycle document already existed, but the consuming project's Recall document manifest did not register it. Registering the existing authority changed the real governed Recall bundle without rewriting the doc. - PR #60 passed PHPUnit and PHPStan on PHP 8.3, 8.4, and 8.5 plus the governed
agent-loopconsumer, AccessLint and CodeRabbit. The exact merged commit passed main-branch PHP/PHPStan CI before this release candidate was prepared.
- The opt-in
-
0.12.214 Aug 2026Release notes
Open source →Added
- Added the explicit
prompt guidance-gapsL2 diagnostic for spec-driven, human-in-the-loop implementation sessions. The generated project-specific prompt keeps a runningimplementation-notes.htmljournal that separates design decisions, deviations, tradeoffs and open questions from actual guidance gaps where the expected spec, docs, skill, workflow, tool contract, code or tests did not provide usable authority. - Material ambiguity that would change approved goals, acceptance criteria,
scope/non-goals, public contracts, security/safety boundaries or destructive
behavior now has an explicit
HUMAN_DECISION_REQUIRED/BLOCKEDboundary instead of inviting the coding agent to guess.
Changed
- The journal is task-local working evidence and is not committed unless the approved task or harness explicitly requires it. The technique remains opt-in: it does not add a workflow stage, mutate docs or skills, manufacture backlog, or promote notes to durable Learning automatically.
Validation
- Dogfooding the new technique against its own implementation exposed two real guidance gaps before release: the journal lifetime was initially unspecified, then the builder, documentation and installed skill disagreed about that rule and the opt-in boundary. Regressions now bind those agent-facing surfaces.
- PR #57 passed PHPUnit and PHPStan on PHP 8.3, 8.4 and 8.5 plus the governed agent-loop consumer dogfood, AccessLint and CodeRabbit; the exact merged commit passed main-branch CI before this release candidate was prepared.
- Added the explicit
-
0.12.114 Aug 2026Release notes
Open source →Changed
- The canonical
agent-recall-consumerskill now teaches the released 0.12 outcome-honesty contract: uneditedunknownrows are placeholders, explicitunknownrequires a reason, and a caller without evidence must declareguidance_outcomes_withheld_reasonrather than fabricatingnot_usedorirrelevant. Selection events retainoutcome_withheld_reason.
Validation
- The bundled-skill regression binds each serialized field to its runtime owner and pins the honesty rules; PHP 8.3/8.4/8.5 CI and the governed agent-loop consumer dogfood are green.
- The canonical
-
0.12.014 Aug 2026Release notes
Open source →Changed
- Breaking:
log-outcomeno longer accepts an uneditedrecall-log.draft.jsonas guidance feedback.compilepre-fills every selected row withoutcome: unknownand no comment for a session to complete afterwards; logging that verbatim meant the component that selected the guidance also graded it. Anunknownoutcome now requires a comment saying why the guidance could not be judged. - Guidance outcomes carry the coherence rules operating-prompt outcomes already enforced:
helpful,irrelevantandharmfulrequire a justifying comment, andhelpfulandharmfulcannot be recorded withapplied: false. - A selected guidance may be left unjudged when the draft states
guidance_outcomes_withheld_reason. Selection is a fact about the compiler and usefulness is a fact about the session; a caller with no evidence was previously forced to invent a bucket, and bothnot_usedandirrelevantpush a rule towards retirement inagent-learning's staleness policies. Silent omission is still refused, so an accidental drop does not look like a deliberate one.
Added
- Recall selection events record
outcome_withheld_reasonfor the selections a declared withholding explains, so a downstream gate can distinguish a declared absence from a dropped one after the draft is pruned. The field is additive and absent on existing records.
Validation
- PHPUnit 170 tests / 978 assertions and PHPStan clean on PHP 8.3, 8.4 and 8.5, plus the governed
agent-loopcontext-explain dogfood, before merging PR #50. - Exercised end to end through a governed
agent-looprun, which is where the consumingworkflow closegate was found to demand a judgement per selection and had to learn to accept a declared withholding.
- Breaking:
-
0.11.614 Aug 2026Release notes
Open source →Changed
- Align the canonical
agent-recall-consumerskill with the live Recall CLI: compact.agent-loopdefaults, current compile/outcome/review/reflection commands, and theagent-loopproject-layout boundary are now documented from the owning package. - Retired project-specific Learning/Recall paths are no longer taught by the shipped skill.
Validation
- The bundled-skill regression now checks its documented top-level commands against the real
Clidispatch table and rejects retired roots. - PR #48 passed PHPUnit and PHPStan on PHP 8.3, 8.4, and 8.5 plus the governed
agent-loopcontext-explain dogfood before merge.
- Align the canonical
-
0.11.514 Aug 2026Release notes
Open source →Changed
- Recall-specific coding instructions and reusable operating-prompt assets now
live with
agent-recall-compiler: the first-party catalog ships besideskills/agent-recall-consumer/SKILL.mdinstead of requiring a separately versioned generic skill repository. Callers still select every recipe and provide its arguments explicitly; bundling the catalog adds no hidden prompt selection or defaults. docs/operating-prompts.mdnow makes the ownership boundary explicit: tool-neutral engineering principles may stay with their generic owner, while Recall commands, review primitives, manifest schema, and Recall-consumed first-party recipe assets are reviewed, tested, and released with this tool.
Validation
- Added
BundledOperatingPromptCatalogTest, which compiles the shippedadversarial-reviewrecipe through the real CLI and proves the falsification contract still permitsCLEANafter evidence-backed probes find no defect. - PR #44 passed the repository CI matrix before merge; the 0.11.5 release candidate reruns the same package gates with the ownership documentation.
- Recall-specific coding instructions and reusable operating-prompt assets now
live with
-
0.11.414 Aug 2026Release notes
Open source →Added
- Added a context-light
review first-draftprimitive for manual or automated falsification-oriented review without requiring task/run state. The library and CLI surface deliberately allowsCLEANonly after concrete attempts to break the implementation find no evidence-backed defect, and rejects unexpected CLI arguments instead of silently ignoring them. - Artifact-backed
review code <task-id>prompts now inherit the same first-draft falsification lens while keeping their existing project evidence and dominant installed review-lens routing.
Changed
- L2 operational prompt construction now preserves approved acceptance criteria, non-goals, and scope explicitly; selected context never grants edit permission.
- Missing required verification remains
UNKNOWNorBLOCKED. Model confidence, prior rationale, reviewer consensus, prompt construction, and unexecuted commands are not verification, and changing an approved contract requires a separate approved re-plan rather than weakening requirements inside the generated L1.
Validation
- PHPUnit and PHPStan passed on PHP 8.3, 8.4, and 8.5 on the exact feature head.
- The governed
agent-loopcontext-explain dogfood passed with the candidate, and external review found and closed the unapproved contract-change escape hatch before merge.
- Added a context-light
-
0.11.313 Aug 2026Release notes
Open source →Fixed
- Compile-time
TaskBriefaugmentation now preserves the complete governed task semantics when CLI targets or inline operating prompts are added. In particular, the governed Run binding and approved acceptance criteria no longer disappear while the requested target/prompt collection is extended.
Validation
- Added public
compileCLI regressions for both--targetaugmentation and inline operating-prompt augmentation from a governed Contract, asserting the canonical task-context fact retains exact acceptance criteria and Run lineage. - PHPUnit and PHPStan passed on PHP 8.3, 8.4, and 8.5, together with the governed agent-loop context-explain dogfood, on the exact fix candidate before merge.
- Compile-time
-
0.11.213 Aug 2026Release notes
Open source →Added
- Added approved task
acceptance_criteriaas an optional governed task input. Criteria are carried through direct and governed Contract parsing, canonical task-context facts, effective task scope, and renderedsystem.mdbriefings. - Acceptance criteria are rendered explicitly as required outcomes from the approved task Contract, not as evidence that those outcomes are satisfied. Missing criteria remain backward compatible as an empty list.
Validation
- Added focused regressions for direct and governed inputs, malformed criteria, task-context facts, briefing rendering, and effective-scope preservation.
- PHP 8.3, 8.4, and 8.5 CI plus the governed
agent-loopdogfood passed on the exact release candidate before merge.
- Added approved task
-
0.11.113 Aug 2026Release notes
Open source →Added
- Added context-light future-work reflection prompts through
prompt future-work --scope project|task. Project scope asks for one highest-leverage future investment without manufacturing backlog work; task scope asks what additional depth may have been missed and emitsRETURN_TO_REVIEWwhen deeper scrutiny reveals that the task was not actually complete. - Added deterministic library support via
FutureWorkPromptBuilderandFutureWorkScope. Reflection deliberately does not inject Recall artifacts or reuse the operational L2Goal / Context / Constraints / Verification / Done Whenexecution-contract shape.
Validation
- Added focused PHPUnit coverage for both scopes, context-light rendering, invalid-scope failure, and the public CLI path. The release candidate passed the repository PHPUnit/PHPStan CI matrix before merge.
- Added context-light future-work reflection prompts through
-
0.11.012 Aug 2026Release notes
Open source →Added
-
Breaking: governed Recall input now requires a non-empty
run_idand the exact Contract revision, source reference and SHA-256 it was compiled for.GovernedRunBindingcarries that lineage into the compiled briefing, so a bundle can be tied to the one Run and Contract revision it was built for instead of being attributed by filename and timestamp.Consumers that passed an ungoverned task brief are unaffected; a brief that declares itself governed must now prove which Run it belongs to rather than leaving the binding implicit.
-
-
0.10.211 Aug 2026Release notes
Open source →Changed
- Allow
voku/agent-map^0.7.0in addition to the existing 0.5 and 0.6 lines. This is a compatibility-only release: recall semantics, provider contracts, facts, bundle digests, and rendered prompts are unchanged.
Validation
- Release remains gated on PHPUnit and PHPStan across PHP 8.3, 8.4, and 8.5.
- The package's normal Composer install resolves against the published
agent-map 0.7.0line, proving the new constraint rather than testing an unreleased path dependency.
- Allow
-
0.10.111 Aug 2026Nothing published for this version
-
0.10.010 Aug 2026Release notes
Open source →Added
- Added versioned operating-prompt manifests and typed prompt requests. Recipes
explicitly declare
level: 1|2; selected prompt IDs, arguments, rendered content, source references, and template digests are carried in replayable recall facts and bundle evidence. - L2 recipes now compile into an explicit project-specific L1 construction
contract with exactly five ordered sections:
Goal,Context,Constraints,Verification, andDone When.Verificationdefines how reality is measured;Done Whendefines which observed result permits the task to stop. - Added bounded deterministic project-capability discovery from supported
repository evidence: PHP/Composer metadata, exact Composer scripts, known test,
static-analysis, mutation and formatting tool packages/configuration, plus CI
workflow anchors. Tool presence never invents an invocation command; unresolved
commands remain
UNKNOWN. - Added per-recipe outcome evidence in
history/operating-prompt-outcomes.jsonl. Selected recipes can recordhelpful,irrelevant,harmful,not_used, orunknownoutcomes with argument digest, application state, evidence, actor, task, compilation, commit, and time. Future recall facts expose aggregate prior outcome counts without automatically mutating recipe policy. - Added
operating_prompt_outcomesrows to the outcome draft so recipe use can be evaluated separately from normal guidance use.
Changed
- Generated code-review prompts route through one dominant installed engineering review lens with at most one evidence-backed required handoff instead of embedding a generic review ritual in recall.
- Repository
MEMORY.mdand other project-root evidence resolve through the configured recall project root, with boundary checks that prevent path escape. - Canonical guidance handoff now prefers the exact physical canonical source when an applied proposal has transferred authority there, avoiding duplicate active proposal wording in the same compile.
- L2 construction preserves hard numeric floors and stop conditions, prefers exact files/symbols/callers/tests/commands from recall, removes hedge language, never invents repository policy, and stops after L1 construction rather than implementing during the meta-prompt pass.
Fixed
- Prompt arguments are restricted to deterministic
bool|int|stringvalues; float formatting cannot silently change replay identity across runtimes. - Literal
{{...}}text inside supplied argument values is preserved instead of being mistaken for an unresolved manifest placeholder. - Empty prompt selections do not change legacy task-context or bundle shapes and therefore do not cause digest drift for tasks that do not use operating prompts.
- Project-capability facts are omitted when no supported evidence exists rather than adding an empty provider that changes otherwise identical compilations.
Documentation
docs/operating-prompts.mddefines the L2 -> project-specific L1 flow, exact five-section contract, manifest schema, project-capability evidence, recipe outcome history, and the boundary that reusable prompt semantics belong in the owning catalog while project facts stay in recall.
- Added versioned operating-prompt manifests and typed prompt requests. Recipes
explicitly declare
-
0.9.206 Aug 2026Release notes
Open source →Fixed
- The binary resolved its autoloader by preferring the package's own
vendor/directory. When one is present next to an installed copy - a path repository, a mirrored checkout, a stale local install - that autoloader wins and silently loads its dependencies instead of the project's. Found by a release-set smoke test that reportedUndefined property Session::$ephemeralagainst an installed version that plainly had it. The outer autoloader is now tried first.
- The binary resolved its autoloader by preferring the package's own
-
0.9.105 Aug 2026Release notes
Open source →Changed
- Documented the
--document-manifestformat in the README: field meanings,max_charsbounds and truncation marking, and the three selection paths (path-scope overlap, tag overlap, project-wide). The project-wide form -scopeempty,["/"], or["*"]- was supported but undocumented, so environment-level guidance that has no path scope by nature had no obvious way into a briefing.
- Documented the
-
0.9.005 Aug 2026Release notes
Open source →Added
compile --map-search-index PATH(plus--map-search-limit N, default 8) turns agent-map 0.4.0's derived hybrid-search index into ranked candidates for a task that has a description but no exact--targetyet. The candidates travel as anavigation_candidatesfact (map.search.candidates) and render insystem.mdunder Candidate Navigation (ranked, unverified).- Every reason the search cannot produce candidates is emitted as a
map.search.statusfact -missing,stale,unavailable,skipped- and rendered in the briefing. An absent section would be indistinguishable from "the search found nothing", which is a different answer.
Changed
- Candidates are deliberately weaker than the existing facts and are labelled as such: they are ranked over a derived index, not resolved through the canonical map. They never widen the effective task scope and therefore never select path-scoped guidance, and the briefing marks them INFERRED.
- A search index whose
map_snapshotdoes not match the map's analysis fingerprint is refused rather than used, naming both snapshots. - The provider contract version stays
2.0when no search index is configured, so a compilation that does not use the feature keeps its previous bundle digest.
-
0.8.105 Aug 2026Release notes
Open source →Changed
- Requires
voku/agent-map^0.4.0. The compiler keeps using the sameIndexandContextAPI, but the constraint is what lets a consumer install the 0.4.x line at all - the derived hybrid-search index (agent-map search-index,.agent-map/search.sqlite) and the parallel chunk extraction it brings are unreachable while any package in the tree still pins^0.3.0.
- Requires
-
0.8.005 Aug 2026Release notes
Open source →Added
- Deterministic verification plans. When a compilation resolves a map target,
compilenow emits two new artifacts next to the existing recall output:verification-plan.json- the public contract: knowledge probes with their question, answer format and evidence ids, the evidence checklist, the objective gates and which of them are required, the required evidence types, the map digest and analysis fingerprint the plan was derived from, and the omitted probe candidates with the reason each was rejected.verification-key.json- the verifier-owned answer key: canonical probe answers bound toplan_sha256,targetandmap_digest. The key is deliberately not referenced fromsystem.md; the prompt receives only the questions.
system.mdgains a "Repository-Knowledge Verification" section listing the probes, andvalidation-plan.mdgains a "Declared Verification Contract" section listing the checklist, the objective gates, and the fixed scoring rule a consumer must apply (objective_gate != passed -> gated_evidence_score = 0).meta.jsongainsverification_plan_sha256,verification_key_sha256andverification_generator, and both artifacts are included inoutput_hashes, so a stale key cannot survive a map change unnoticed.
Changed
- A compilation without an eligible map target removes any
verification-plan.json/verification-key.jsonleft over from an earlier run instead of leaving stale artifacts in the output directory.
- Deterministic verification plans. When a compilation resolves a map target,
-
0.7.204 Aug 2026Release notes
Open source →Changed
- Requires
voku/agent-map^0.3.0. That release moves each top-level index section onto its own line (still ordinary JSON, andIndexReaderreads both layouts), addsrefresh/--mergefor incremental index updates, and stops the symbol extractor from executing host code while parsing. Recall only reads indexes, so nothing in this package changed behaviourally.
- Requires
-
0.7.103 Aug 2026Release notes
Open source →Added
- Added repeatable
--edit-focusliterals for target-aware compilation. They instructagent-mapto render bounded primary-source windows around local matches, retaining the full target if none match. - Requires
voku/agent-map0.2.1 or newer for the focus-aware context policy.
- Added repeatable
-
0.7.003 Aug 2026Release notes
Open source →Added
- Added repeatable exact
Class::methodtask targets through task briefs and inline--target, backed byvoku/agent-map0.2 JSON or TOON indexes. - Added deterministic rendering of primary methods, contracts, direct callers, tests, dependencies, type definitions, blind spots, omissions, exact source ranges, and source hashes into the compiled briefing.
- Added explicit map-derived effective scope so path-scoped guidance and project documents can match primary/contract/caller/test files while dependency-only context does not silently become an intended edit.
Changed
MapRecallProvidernow delegates decoding, SHA-256 freshness checks, target resolution, relation traversal, and source materialization toagent-mapinstead of parsing the old JSON/SHA-1 schema itself.- Validation-plan filtering uses the effective task scope; canonical bundles and selection reports retain both the original task scope and its derivation.
- Added repeatable exact
-
0.6.902 Aug 2026Release notes
Open source →Fixed
- Rejected duplicate proposals with the same non-empty
pattern_keyas selected active guidance no longer block recall compilation merely because they share a target. They remain selected as historical warnings; only a rejected different pattern targeting the same guidance surface is a contradiction.
- Rejected duplicate proposals with the same non-empty
-
0.6.802 Aug 2026Release notes
Open source →Added
- Approved work-brief behavior anchors are parsed, carried into task-context facts, and rendered in L2 prompts so agents retain the concrete behavior that must remain unchanged.
- L2 prompts now require material conclusions to distinguish verified, inferred, assumed, blocked, and contradicted claims. Peer feedback remains untrusted until corroborated by repository, history, tests, or safe runtime evidence.
-
0.6.728 Jul 2026Release notes
Open source →Fixed
- Accept active
phpcsconstraint manifests, validate eitherphpcsorphp_codesniffercommands, and label the generated validation-plan section asPHPCS.
- Accept active
-
0.6.623 Jul 2026Release notes
Open source →Added
- Added an optional
tagsrelevance axis, orthogonal to pathscope. Task briefs, guidance/constraint/rejection/retirement records, and scoped document manifest entries may declaretags; a fact is selected when its path scope overlaps the task's files or it shares at least one tag with the task. This lets a project register cross-cutting knowledge (e.g. an LDAP learning) by domain/system/capability instead of directory prefix, so selection works the same way regardless of how a project's codebase is laid out. Purely additive: briefs and manifests withouttagsbehave exactly as before. - Added
SelectionReason::TAG_OVERLAPto distinguish a tag-only match from a pathscope_overlaporglobalmatch inselection-report.json. - Added inline
--tag LABEL(repeatable) tocompilefor ad hoc task input.
- Added an optional
-
0.6.522 Jul 2026Release notes
Open source →Added
- Added internal
RecallProvidercontracts and a canonical, replayablerecall.bundle.jsonsnapshot. Providers now contribute source digests and structured facts for task context, repository memory, approved learning and hard constraints, optional map indices, typed Kanban projections, and explicitly registered project Skills/ADRs. - Added
facts.json,selection-report.json, andcompilation-receipt.json. The first two are deterministic, hash-covered consumer artifacts; the receipt is operational timestamp metadata and is deliberately outside the replay identity. - Added
--map-root,--kanban-context, and repeatable--document-manifestcompile options. Project documents are selected only by explicit scope/prefix rules and fixed excerpt limits.
Changed
- Approved
agent-sessionwork briefs (task_id,goal,scope,non_goals, validation, status, revision) are first-class task inputs. Rendered L2 prompts are deterministic views of the canonical bundle; the compiler never executes them or calls a model. - Generic fact conflicts resolve only through explicit priority and documented authority precedence. Equal-precedence facts with different payloads block compilation instead of silently choosing one.
- Validation plans retain the approved work-brief commands and explicitly separate legacy constraint commands that name task-external PHP files.
Fixed
- A Docker-built
agent-mapindex can now be verified against an explicitly supplied host root. Missing or stale task files are emitted as explicit navigation-status facts rather than being silently rebuilt or trusted.
- Added internal
-
0.6.420 Jul 2026Release notes
Open source →Added
- Contradiction detection now also covers retired proposals, not just rejected ones.
RecallRepository::loadRetiredProposals()returns fullRecallRetirementrecords (target, reason, scope, action) instead of bare IDs, andRecallDecisionEngine::decide()blocks compilation when newly selected guidance targets a rule that was retired for cause in the same task scope, surfacing the original retirement reason.loadRetiredProposalIds()is kept for callers that only need the ID list.
- Contradiction detection now also covers retired proposals, not just rejected ones.
-
0.6.320 Jul 2026Release notes
Open source →Fixed
- Only treat a rejected proposal as contradictory when its scope also matches the current task; unrelated rejected proposals may share broad targets such as
MEMORY.md.
- Only treat a rejected proposal as contradictory when its scope also matches the current task; unrelated rejected proposals may share broad targets such as
-
0.6.216 Jul 2026Release notes
Open source →Fixed
review blindspots/review codenow write their report/prompt files under areviews/subfolder of the same--output-dirthey read compiled recall inputs from, instead of a hardcoded, workspace-root-relative.agent-recall/reviews/that ignored--output-direntirely. A project that points--output-dir(or a downstream tool's recall-root config) somewhere other than.agent-recall/currentnow gets one consistent output tree for compile+review instead of review output always landing at the same fixed path regardless of configuration. The default output dir (.agent-recall/currentwhen--output-diris omitted) now produces reports under.agent-recall/current/reviews/rather than.agent-recall/reviews/.
-
0.6.114 Jul 2026Release notes
Open source →Fixed
- Recall compilation no longer turns a historical
irrelevantoutcome into a warning for a different task. The outcome remains in the immutable history and in projected usage statistics; only priorharmfulguidance is surfaced as a current-task warning. recall-log.draft.jsonandfeedback-assessment.draft.jsonare no longer recorded in a compiledmeta.json'soutput_hashes. Both files are designed to be hand-edited after compile (guidance_outcomes, review verdicts), so including them in that tamper-evidence hash set made every correctly-completed task permanently fail a downstream verifier's staleness check.
- Recall compilation no longer turns a historical
-
0.6.029 Jun 2026Release notes
Open source →Added
- Added a deterministic
reviewCLI workflow withblindspotsandcodesubcommands. The workflow writes audit-ready Markdown/JSON review reports plus L2 blind-spot and code-review prompts under.agent-recall/reviews/without invoking an LLM. - Added
docs/agent-loop-review-follow-up-prompt.mdto carry the dogfooded review workflow and safety corrections intovoku/agent-loop. - Added command-level PHPUnit coverage for option parsing and review workflow coverage for task-id validation, report contents, CLI dispatch, malformed meta handling, session matching, and generated prompt formatting.
Changed
- Refactored the monolithic CLI implementation into command classes for
compileandlog-outcome, plus shared parsed-option value objects, so existing commands use the same command-oriented architecture as the new review workflow.
Fixed
- Compile artifact writes now fail fast when
file_put_contents()fails instead of printing success with missing or partial output. - Long CLI options that require values now reject bare
--nametokens instead of silently treating them as empty strings. - Review artifact collection now honors
--root, rejects traversal in output paths, bounds recursive session reads, and avoids pulling unrelated session notes through substring task-id matches.
- Added a deterministic
-
0.5.223 Jun 2026Release notes
Open source →Fixed
- Retiring a
voku/agent-learningproposal (0.7.0ProposalStatus::RETIRED) removed it fromloadActiveGuidance()as intended, butRecallDecisionEngine::decide()'s "unknown rule ID" check builds its known-ID set only from active guidance, constraints, and rejections. A historicaloutcomes.jsonlevent recorded while the proposal was stillappliedlegitimately still references its ID, so every laterrecall compilefor any task BLOCKED withConflict: outcome references unknown rule ID '<id>'the moment that proposal was retired, even though nothing about the requested task was wrong. Found by dogfooding against a downstream repository immediately after retiring a proposal there for the first time. - Added
RecallRepository::loadRetiredProposalIds()(readsproposals/retired/*.json, IDs only) and a newdecide(..., array $retiredProposalIds = [])parameter so retired IDs stay known to the conflict check without ever being selectable as guidance.Cli.php'scompilecommand now loads and passes them through. Default value keeps the signature change backward compatible for directRecallDecisionEngine::decide()callers that omit the new argument.
- Retiring a
-
0.5.123 Jun 2026Release notes
Open source →Added
- Added
RecallRepository::loadRetiredProposalIds()(readsproposals/retired/*.json, IDs only) and a newdecide(..., array $retiredProposalIds = [])parameter so retired IDs stay known to the conflict check without ever being selectable as guidance.Cli.php'scompilecommand now loads and passes them through. Default value keeps the signature change backward compatible for directRecallDecisionEngine::decide()callers that omit the new argument.
- Added
-
0.5.020 Jun 2026Release notes
Open source →Added
- feat: add untrusted peer feedback handling and compilation conflict resolution
-
0.4.119 Jun 2026Release notes
Open source →Fixed
OutcomeLogger::log()could throw a spurioustype mismatcherror for anylog-outcomedraft that evaluated a legacytarget_type: "file"guidance entry (e.g. a MEMORY.md-targeting proposal), even when that entry was not selected.RecallDecisionEngineprojected"file"ontoGuidanceType::MEMORYat compile time, butOutcomeLogger::knownGuidanceTypesById()re-derived the type independently and fell back toGuidanceType::SKILL, disagreeing with the compiled draft.- Centralized guidance-type derivation in
GuidanceType::fromTargetType()soRecallDecisionEngine,OutcomeLogger, andRecallPromptBuildercan no longer drift apart on this mapping.
-
0.4.019 Jun 2026Release notes
Open source →Changed
- Refactor recall compiler internals
- Fix duplicate event id sequencing
- Tighten inline task resolver types
-
0.3.218 Jun 2026Release notes
Open source →Changed
- improve suffix validation (without 'ext-ctype')
- simplify regex in secret assignment detection
-
0.3.118 Jun 2026 -
0.3.018 Jun 2026Release notes
Open source →Added
- Add stable compilation IDs to compile output, with optional
--compilation-idsupport and generated IDs when omitted. - Add evaluated-guidance tracking with typed guidance types, selection reasons, and exclusion reasons.
- Add immutable recall-selection and per-guidance outcome event models.
- Add transactional event history appends to
history/recall-selections.jsonlandhistory/outcomes.jsonlduring governedlog-outcomeclose-out. - Add duplicate protection for event IDs and
compilation_id + guidance_idpairs. - Add redaction checks for generated event records.
- Add
meta.jsonfields with schema version, compilation ID, task files, evaluated guidance, selection/exclusion reasons, selected constraint reasons, and output hashes. - Add
recall-log.draft.jsoneditable guidance outcome rows and schema documentation. - Add regression coverage for supplied/generated compilation IDs, evaluated-guidance ordering, event appends, duplicate retry safety, invalid outcome references, and redaction.
Changed
- Extend legacy outcome-stat handling so new per-guidance outcome events and older aggregate outcome records can coexist.
- Treat legacy proposal
target_type=filerecords as memory guidance when projecting evaluated guidance events. - Update consumer guidance to distinguish eligible, selected, applied, and helpful signals.
- Add stable compilation IDs to compile output, with optional
-
0.2.018 Jun 2026Release notes
Open source →Added
- Add outcome statistics for selected guidance and constraints, separating
selected_count,helpful_count,irrelevant_count,harmful_count, andviolation_detected_count. - Include outcome signal counts in generated
system.mdandmeta.jsonoutputs when prior outcome data exists. - Add tests proving selection is tracked separately from usefulness.
Changed
- Generate
recall-log.draft.jsonwith empty usefulness buckets instead of pre-marking selected guidance as helpful. - Require every selected rule in a logged outcome to be classified exactly once as
helpful,irrelevant, orharmful. - Reject outcome feedback for rules that were not selected for the session.
- Update consumer guidance to state that prompt selection is exposure only, not evidence of usefulness.
- Add outcome statistics for selected guidance and constraints, separating
-
0.1.115 Jun 2026Release notes
Open source →- Emit selected hard constraints directly in
system.mdwith a concrete execution contract and required validation commands. - Read
active_constraints_dirfrom learning-rootconfig.jsonwhen loading active hard-constraint manifests. - Expand root auto-discovery to the same common learning-root directories supported by
voku/agent-learning.
- Emit selected hard constraints directly in
-
0.1.013 Jun 2026Release notes
Open source →Added
- Add constraint manifest parsing for active hard constraints.
- Select active constraints deterministically by scope overlap and include global constraints for
*or/scopes. - Include selected constraint IDs, rule identifiers, validation commands, and source proposal provenance in compiler outputs.
- Support generated-rule outcome result types such as
violation_detected,false_positive,rule_suppressed, andrule_disabled.
Changed
- Clarify README behavior for compile-blocking conflicts, rejected-guidance contradictions, schema validation, invalid active rules, missing constraint validation commands, and invalid outcome references.
- Make
validation-plan.mdauthoritative for selected constraints by listing required commands and rule identifiers.
-
0.0.213 Jun 2026Release notes
Open source →Added
- Add strict compilation-blocking checks (RuntimeExceptions) for:
- Selected active rules with status other than
approvedorapplied. - Multiple active rules targeting the same codebase location (conflict checks).
- Target contradictions matching any known rejected proposals in the repository history.
- Rules of type
constraintthat do not define any validation commands. - Outcome records referencing unknown rule IDs.
- Selected active rules with status other than
- Add
schema_versionvalidation check ("1.0") to task briefs, guidance files, and outcome logs. - Add
selectedandappliedrule fields in generated outcome logs to separate prompt selection from actual rule utilization.
- Add strict compilation-blocking checks (RuntimeExceptions) for:
-
0.0.113 Jun 2026Release notes
Open source →Added
- Initial release of L2 Meta-Prompt Compiler and Briefing Manager for coding agents.
- Deterministic scope matching for MEMORY.md and specific active skills/constraints.
- Rejection warnings to notify the agent of previously proposed and rejected designs.
- Outcome-driven warnings to flag rules marked as
HARMFULorIRRELEVANTin past sessions. - Dynamic validation plan compiler that lists verification tests for loaded active rules.
- Draft outcome log generation to close the feedback loop.