diff --git a/capabilities/families/session-memory.yaml b/capabilities/families/session-memory.yaml index f4da65b7..17e16f54 100644 --- a/capabilities/families/session-memory.yaml +++ b/capabilities/families/session-memory.yaml @@ -512,7 +512,9 @@ nodes: contract_level: executable primary_parent: session-memory.stewardship.project owner: {repo: aoa-session-memory, surface: skills/aoa-session-reindex/SKILL.md, authority: authored} - lifecycle: *deferred_lifecycle + lifecycle: + <<: *deferred_lifecycle + version: 1.0.1 applicability: use_when: [Preserved archives require projection rebuild after source-owned classifier, schema, taxonomy, or relation changes.] do_not_use_when: [Raw evidence itself is missing or the request only needs a query against a current index.] @@ -596,7 +598,9 @@ nodes: contract_level: executable primary_parent: session-memory.stewardship.curate owner: {repo: aoa-session-memory, surface: skills/aoa-session-batch-distill/SKILL.md, authority: authored} - lifecycle: *deferred_lifecycle + lifecycle: + <<: *deferred_lifecycle + version: 1.0.1 applicability: use_when: [A reviewed set of indexed sessions needs a bounded provisional distillation wave.] do_not_use_when: [Exactly one indexed session is in scope; use first-pass distill., The operator expects automatic promotion.] @@ -774,7 +778,9 @@ nodes: contract_level: executable primary_parent: session-memory.stewardship.name owner: {repo: aoa-session-memory, surface: skills/aoa-session-phase-discovery/SKILL.md, authority: authored} - lifecycle: *deferred_lifecycle + lifecycle: + <<: *deferred_lifecycle + version: 1.0.1 applicability: use_when: [A long or multi-topic session needs phase candidates before semantic naming.] do_not_use_when: [A short session already has one reviewed semantic name.] diff --git a/generated/capability_graph.json b/generated/capability_graph.json index 9c5b6e30..ddd2d517 100644 --- a/generated/capability_graph.json +++ b/generated/capability_graph.json @@ -1057,7 +1057,7 @@ "evidence_state": "hypothesis", "health": "challenger", "state": "experimental", - "version": "1.0.0", + "version": "1.0.1", "visibility": "deferred" }, "mutation": { @@ -1080,14 +1080,14 @@ "package": { "files": [ { - "bytes": 3818, + "bytes": 4975, "executable": false, "path": "skills/aoa-session-batch-distill/SKILL.md", - "sha256": "0d1bb58c5db22b8554f03e74e5a094b5a7e88d3bf0933527225104df13102a12" + "sha256": "af3f91709a7f7b4f9c2a3d60ca398624ab30f9211177703dfe90abea03089b75" } ], - "fingerprint": "653ff014b7b39c0f81ca3bdd147fae8af1293aaa3c2d343fdf008613c60dbf7b", - "version": "1.0.0" + "fingerprint": "07641eb703fa98893a7ba65577f7e5feec70002b9c08b2e7e0f1ef590fcd1c60", + "version": "1.0.1" }, "primary_parent": "session-memory.stewardship.curate", "procedure": { @@ -2982,7 +2982,7 @@ "evidence_state": "hypothesis", "health": "challenger", "state": "experimental", - "version": "1.0.0", + "version": "1.0.1", "visibility": "deferred" }, "mutation": { @@ -3004,14 +3004,14 @@ "package": { "files": [ { - "bytes": 5034, + "bytes": 5413, "executable": false, "path": "skills/aoa-session-phase-discovery/SKILL.md", - "sha256": "4adef9f568ad5cae83262f00d791a59412f6afc3cc9f8eecc9759b9159f2258d" + "sha256": "e3c4ad2193a8059945c751b955aac1e8db7cb149105abbd97dbf6f7210827796" } ], - "fingerprint": "f42f29065ad5da683c301d3265f6e132a96e52ca0da570425ce2b88376b0ef27", - "version": "1.0.0" + "fingerprint": "aaba1ef4cec35f322ef2569cd35d09d49ac03127923194b96a873378a916c887", + "version": "1.0.1" }, "primary_parent": "session-memory.stewardship.name", "procedure": { @@ -3436,7 +3436,7 @@ "evidence_state": "hypothesis", "health": "challenger", "state": "experimental", - "version": "1.0.0", + "version": "1.0.1", "visibility": "deferred" }, "mutation": { @@ -3459,14 +3459,14 @@ "package": { "files": [ { - "bytes": 2591, + "bytes": 3383, "executable": false, "path": "skills/aoa-session-reindex/SKILL.md", - "sha256": "85eb7df9325e52c4dc7515d321360ce6833a53926b851cad0a41637c405484e1" + "sha256": "ba500bcf9616e89a840cb51f31bb9bfcf72ce9c3b375a4ad5a3fa657bd0ccc55" } ], - "fingerprint": "5749a8e863003dac55160da16ce2290ecbd9aba1382a119d2e656fb4c6fba0e8", - "version": "1.0.0" + "fingerprint": "aff124cb63b3067efe8799e918f9f236485dc1dc37e38f07367fa584f2fbd2fa", + "version": "1.0.1" }, "primary_parent": "session-memory.stewardship.project", "procedure": { @@ -7723,6 +7723,7 @@ { "contract_tokens": [ "1.0.0", + "1.0.1", "abi", "ablation", "abyss", @@ -8177,6 +8178,7 @@ "verdict" ], "package_tokens": [ + "10", "16", "21", "24", @@ -8235,13 +8237,16 @@ "approved", "arbitrary", "archive", + "archive-wide", "archived", + "argument", "artifact", "artifacts", "asks", "assisted", "attention", - "audit", + "authorization", + "authorized", "auto", "automatic", "automation", @@ -8257,6 +8262,7 @@ "become", "been", "before", + "behavior", "benefit", "bind", "binding", @@ -8281,11 +8287,14 @@ "carry", "chained", "change", + "changed", "changes", "characters", "check", "checking", + "checks", "choose", + "chronological", "cite", "cited", "claim", @@ -8298,6 +8307,7 @@ "cohort", "collapse", "command", + "compare", "comparison", "comparison-mode", "comparison-packet", @@ -8318,8 +8328,11 @@ "coverage", "current", "data", + "data-processing", "days", + "decision", "decisions", + "declare", "deep", "delta", "deltas", @@ -8343,12 +8356,12 @@ "distillation.index.json", "do", "docs", - "doctor", "does", "doing", "downstream", "durable", "each", + "emit", "entire", "entries", "entry", @@ -8391,6 +8404,8 @@ "first-wave", "flag", "focused", + "follow", + "follow-on", "force", "forged", "fragment", @@ -8430,8 +8445,11 @@ "identities", "identity", "identity-bound", + "ids", "if", "immutable", + "implementations", + "implied", "imply", "importance", "imported", @@ -8447,6 +8465,7 @@ "indexes", "inferred", "inputs", + "inside", "inspect", "inspected", "installs", @@ -8491,6 +8510,8 @@ "logical-reference", "lowercase", "machine", + "maintenance", + "make", "mandatory", "manifest", "manifests", @@ -8524,6 +8545,7 @@ "minimum", "minimum-occurrences", "minimum-sessions", + "mismatch", "misses", "missing", "mode", @@ -8545,6 +8567,7 @@ "net", "net-benefit", "never", + "new", "next", "no", "noisy", @@ -8564,6 +8587,7 @@ "opportunity", "optional", "order", + "oriented", "otherwise", "out", "outcomes", @@ -8576,6 +8600,7 @@ "owner-handoff", "owner-issued", "owner-resolution", + "owner-routed", "packet", "packetizing", "packets", @@ -8597,7 +8622,9 @@ "planning", "plausible", "plus", + "positional", "posture", + "predicate", "present", "preserve", "preserved", @@ -8612,6 +8639,7 @@ "procedure", "process", "processed", + "processing", "produced", "producer", "producing", @@ -8641,6 +8669,7 @@ "rates", "raw", "re", + "re-plan", "re-run", "read", "readiness", @@ -8695,6 +8724,7 @@ "result", "resume", "retained", + "retrain", "reusing", "reversible", "review", @@ -8707,6 +8737,7 @@ "rolling", "root", "route", + "routed", "routes", "rule", "rules", @@ -8731,8 +8762,10 @@ "select", "selected", "selecting", + "selector", "semantic", "separate", + "separately", "separates", "session", "session-memory", @@ -8740,6 +8773,7 @@ "session.manifest.json", "sessions", "set", + "set-oriented", "sha256", "shadow", "shadow-measurement.json", @@ -8792,10 +8826,12 @@ "tests", "their", "them", + "then", "those", "through", "time", "title", + "title-repair", "titles", "trajectory", "trajectory-cost", @@ -8847,6 +8883,7 @@ "when", "while", "whose", + "wide", "window", "without", "work", @@ -9008,10 +9045,12 @@ "wave", "дистилляц" ], - "search_text": "navigation\nDistill and review candidate lessons without promoting raw experience automatically.\nsession-memory.stewardship.curate\ncurate\ndistill\nreview\ncandidate\nдистилляция\ncapability\nowner-verified\nhealthy\nactive\n1.0.0\ninternal\nauthored\naoa-session-memory\ncapabilities/families/session-memory.yaml\nsession-memory.stewardship\nsession-memory\ncapabilities/families/session-memory.yaml\nCurate session evidence\nReviewed bounded session set.\nsessions\nindexed-session-set\nProvisional candidates and separated review queues.\ncandidates\npromotion-candidate-set\nNaming or indexing quality is too weak to define the batch safely.\nExactly one indexed session is in scope; use first-pass distill.\nThe operator expects automatic promotion.\nA reviewed set of indexed sessions needs a bounded provisional distillation wave.\navailable\nskill\ndistill-batch\nskills/aoa-session-batch-distill/SKILL.md\nindependent-callable\nretain-deferred\nBatch orchestration has distinct resource, completeness, and queue-separation failure modes.\nexecutable\nUse when many indexed `.aoa` sessions need a first-wave distillation conveyor that separates safe automatic first-pass artifacts from manual review and mechanics-improvement queues.\ngenerated-write\nruntime-mutation\nUnbounded batch size.\nHiding skipped or failed sessions.\nMixing mechanics-improvement pressure with accepted knowledge.\nbounded-judgment\nreversible\nStop after the declared wave is fully receipted or a resource or evidence gate blocks it.\nsession-memory CLI\nindexed sessions\nmaintenance coordination\nEvery session has a terminal result.\nCandidate and manual-review queues remain separate.\nNo promotion occurs.\nskill.aoa-session-batch-distill\nbatch-distill\nconveyor\nwave\nmanual-review-queue\nmechanics-queue\nskill\nhypothesis\nchallenger\nexperimental\n1.0.0\ndeferred\nEvery scoped session has a terminal receipt.\nReview queues remain unpromoted.\nResume from per-session receipts.\nRemove or supersede only generated provisional wave artifacts.\nauthored\naoa-session-memory\nskills/aoa-session-batch-distill/SKILL.md\nsession-memory.stewardship.curate\nskills/aoa-session-batch-distill/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-batch-distill/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nApply bounded first-pass extraction across a reviewed session set and separate terminal review queues.\nforbidden\nread-session-archives\nwrite-derived-session-index\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nBatch session distillation\nauthored-procedure\nGenerated stage profiles with closed task episodes and provenance refs.\nstage-profiles\nreviewed-stage-profile-set\nPrivacy-safe advisory candidates with counterevidence, causal limits, trajectory cost, and routed lifecycle gates.\ncandidates\nexperience-motif-candidate-set\nProfile freshness\nsource alignment\nreview status\nor provenance refs are unresolved.\nThe evidence is raw\nlive\nprovisional\nor asks for an eval verdict or automatic adoption.\nA bounded set of closed\nreviewed\naligned stage profiles needs privacy-safe recurring-motif candidates.\navailable\nskill\nmetabolize\nskills/aoa-session-experience-metabolism/SKILL.md\nindependent-callable\nretain-deferred\nCross-session recurrence has a distinct privacy, provenance, counterevidence, and multi-owner acceptance ABI.\nexecutable\nDerive privacy-safe recurring motifs and bounded improvement candidates from closed, reviewed stage profiles, with explicit review, eval, shadow, owner-acceptance, adoption, and rollback gates.\ngenerated-write\nhuman-decision\nTreating frequency as recurrence.\nConfusing review eligibility with owner acceptance.\nClaiming causality without paired held-out ablation evidence.\nHiding unknown or conflicting outcomes.\nLeaking transcript or host path content.\nbounded-judgment\nconditionally-reversible\nStop after candidate\ninsufficient-evidence\nrejection\nor an exact owner/evidence blocker is receipted.\nstage_profile_v1 report\nsession-memory CLI\nowner review\neval and shadow receipts\nOnly reviewed aligned profiles contribute.\nRaw content and paths are not emitted.\nSame-session repetition remains watch-only.\nNo candidate is adopted automatically.\nskill.aoa-session-experience-metabolism\nexperience-metabolism\nrecurrence\nmotif\ncandidate\ncounterevidence\nshadow\nablation\nrollback\nskill\nhypothesis\nchallenger\nexperimental\n1.0.0\ndeferred\nCandidate\neval verdict\nshadow result\nowner acceptance\nand adoption remain distinct.\nAll emitted refs are privacy-safe and bounded.\nRaw source evidence is unchanged.\nPreserve the candidate and receipts.\nReject or supersede generated packets without touching raw evidence.\nRoll back an accepted route only with a named rollback receipt.\nauthored\naoa-session-memory\nskills/aoa-session-experience-metabolism/SKILL.md\nsession-memory.stewardship.curate\nskills/aoa-session-experience-metabolism/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nscripts/experience_metabolism.py\nexperience-metabolism-v1\naoa-session-memory\nowner-implementation\nauthored\nskills/aoa-session-experience-metabolism/SKILL.md\nexperience-metabolism-v1\naoa-session-memory\nowner-skill-procedure\nauthored\nschemas/experience-metabolism-report.schema.json\nexperience-metabolism-v1\naoa-session-memory\nowner-packet-schema\nRoute recurring experience through explicit review, evaluation, shadow, owner-acceptance, and reversible rejection or rollback gates.\naoa-evals review\nabyss-stack shadow\naoa-skills automation-opportunity handoff\nforbidden\nread-generated-session-profile\nwrite-candidate-packet\nhuman-review\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nExperience metabolism candidate extraction\nauthored-procedure\nOne indexed session and bounded evidence refs.\nsession\nindexed-session\nUnreviewed lessons, decisions, failures, and automation candidates.\ncandidates\npromotion-candidate-set\nThe session is not indexed or its evidence freshness is unknown.\nThe task asks for reviewed truth\nfinal promotion\nor a multi-session conveyor.\nOne indexed session needs provisional candidate extraction.\navailable\nskill\ndistill-one\nskills/aoa-session-first-pass-distill/SKILL.md\nindependent-callable\nretain-deferred\nSingle-session provisional extraction has a distinct scope and review handoff.\nexecutable\nUse when an indexed `.aoa` session needs provisional first-pass distillation into lessons, decisions, failures, and automation candidates without promoting them to reviewed truth.\ngenerated-write\nPromoting a plausible lesson as truth.\nDropping contrary evidence.\nReading one successful output as recurring practice.\nbounded-judgment\nreversible\nStop after bounded candidate output or an evidence-insufficiency result.\nsession-memory CLI\nindexed session evidence\nEvery candidate carries source refs and provisional status.\nNo candidate is promoted automatically.\nskill.aoa-session-first-pass-distill\ndistill\nfirst-pass\nprovisional\nlesson\ndecision\nfailure\ncandidate\nskill\nhypothesis\nchallenger\nexperimental\n1.0.0\ndeferred\nAll output remains explicitly provisional.\nEvidence refs resolve.\nDelete or supersede only the generated provisional artifact\nnever source evidence.\nReturn weak candidates to manual review.\nauthored\naoa-session-memory\nskills/aoa-session-first-pass-distill/SKILL.md\nsession-memory.stewardship.curate\nskills/aoa-session-first-pass-distill/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-first-pass-distill/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nExtract provisional candidates from one indexed session while preserving their unreviewed status and refs.\nforbidden\nread-session-archives\nwrite-derived-session-index\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nFirst-pass session distillation\nauthored-procedure\nProvisional candidates with evidence refs.\ncandidates\npromotion-candidate-set\nReviewed keep, reject, revise, or handoff dispositions without promotion.\nreview\nreviewed-candidate-disposition\nThe destination owner is unresolved or evidence is insufficient.\nNo provisional candidate or evidence packet exists.\nProvisional candidates require bounded human review and owner resolution.\navailable\nskill\nreview\nskills/aoa-session-manual-review/SKILL.md\nindependent-callable\nretain-deferred\nHuman review has a distinct disposition ABI and non-promotion authority boundary.\nexecutable\nUse when `.aoa` first-wave manual review lanes need bounded review packets, owner-aware evidence samples, or an unpromoted promotion-candidate queue.\ngenerated-write\nhuman-decision\nTreating review as promotion.\nReviewing without owner source.\nOverwriting contrary or rejected evidence.\nbounded-judgment\nconditionally-reversible\nStop after every packet has a reviewed disposition or explicit evidence blocker.\nsession-memory CLI\nhuman review\nowner source access\nOwner resolution precedes project-specific interpretation.\nEach disposition cites evidence and remaining uncertainty.\nPromotion remains a separate owner action.\nskill.aoa-session-manual-review\nmanual-review\nowner-resolution\nreview-packet\npromotion-candidate\nhuman-gate\nskill\nhypothesis\nchallenger\nexperimental\n1.0.0\ndeferred\nEvery decision names reviewer posture\nowner\nevidence\nand promotion boundary.\nSupersede an incorrect review disposition while preserving its evidence trail.\nReturn unresolved packets to intake.\nauthored\naoa-session-memory\nskills/aoa-session-manual-review/SKILL.md\nsession-memory.stewardship.curate\nskills/aoa-session-manual-review/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-manual-review/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nPrepare and review bounded candidate packets without transferring owner or promotion authority.\nforbidden\nread-session-evidence\nwrite-review-packets\nhuman-review\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nSession candidate manual review\nauthored-procedure\n---\nname: aoa-session-batch-distill\ndescription: Use when many indexed `.aoa` sessions need a first-wave distillation conveyor that separates safe automatic first-pass artifacts from manual review and mechanics-improvement queues.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-batch-distill\n\nUse this when a group of archived sessions needs to be laid out for first-wave\ndistillation without pretending that automatic classification is reviewed\ntruth.\n\n## Trigger Boundary\n\n- The user asks to process many historical sessions.\n- A rolling window has already been imported into `.aoa`.\n- The agent needs a queue that separates automatic first-pass work from manual\n reading, mechanics candidates, and diagnostics.\n- The session-memory mechanism itself may improve while the queue is processed.\n\n## Procedure\n\nStart with a planning report:\n\n```bash\npython3 scripts/aoa_session_memory.py batch-distill \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --write-report\n```\n\nReview the report lanes:\n\n- `auto_first_pass`: safe to write provisional first-pass artifacts from\n indexes.\n- `manual_review`: requires a responsible review layer before promotion; this\n can be agent-assisted and evidence-sampled, not raw rereading by the operator.\n- `mechanics_candidate`: may imply tests, skills, hooks, docs, or CLI\n improvements.\n- `diagnostic`: repair raw/index health before distillation.\n\nInspect owner quality before applying a broad pass. Each profile contains\n`project_grounding` and `owner_resolution`; fallback grounding is not the same\nas a resolved owner.\n\nRepair weak imported titles before a broad manual review wave:\n\n```bash\npython3 scripts/aoa_session_memory.py repair-session-titles all \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --write-report\n```\n\nAdd `--apply` only after checking the plan.\n\nApply only after the queue shape is coherent:\n\n```bash\npython3 scripts/aoa_session_memory.py batch-distill \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --apply \\\n --write-report\n```\n\nUse `--limit` for the first smoke batch. Use `--force` only when an existing\nfirst-pass artifact must be rebuilt.\n\nAfter the automatic first-pass layer is coherent, use\n`aoa-session-manual-review` for packetizing manual-review lanes and aggregating\npromotion candidates without promoting them.\n\n## Review Rule\n\nAutomatic work may write only provisional first-pass distillation artifacts.\nIt may not promote a pattern, amend a skill, add automation, or mark a claim as\nreviewed.\n\nManual review means project-grounded review. Before promoting a claim, inspect\nthe session's `project_grounding` entry and read the nearest relevant\n`AGENTS.md`, `DESIGN.md`, agent-facing design surface such as\n`DESIGN.AGENTS.md` when present, or README. The operator should review\npromoted claims and samples, not carry the entire archive in active attention.\n\n## Adaptive Rule\n\nAfter each batch, inspect `improvement_candidates` in the report. If the queue\nshows recurring parser misses, noisy names, missing indexes, hook gaps, or\nrepeatable command patterns, improve the bundle itself with a narrow patch and\nrerun `doctor`, `audit`, and tests.\n\n## Verification\n\n- Every scoped session has an automatic, manual-review, mechanics-candidate,\n diagnostic, skip, or failure terminal receipt.\n- All produced artifacts remain explicitly provisional.\n- Owner resolution and evidence refs are present before project-specific\n interpretation.\n- No claim, skill change, automation, or durable lesson was promoted.\n\n## Stop Line\n\nDo not open every raw transcript in context. Use the batch report, registry,\nmanifests, distillation indexes, and segment indexes first.\n\n---\nname: aoa-session-experience-metabolism\ndescription: Derive privacy-safe recurring motifs and bounded improvement candidates from closed, reviewed stage profiles, with explicit review, eval, shadow, owner-acceptance, adoption, and rollback gates.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-experience-metabolism\n\nUse this skill only for a bounded set of `stage_profile_v1` reports whose\nsessions have closed task episodes and an explicit reviewed status. The\nproducer reads generated profile data; it does not read raw transcripts or\ncapture ledgers.\n\n## Trigger boundary\n\nUse this when a reviewed session set needs recurring-motif candidates,\ncounterevidence, or a shadow/evaluation handoff. Do not use it for live or\nprovisional sessions, raw transcript summarization, direct skill mutation, or\nan evaluation verdict.\n\n## Procedure\n\n```bash\npython3 scripts/experience_metabolism.py \\\n --profile \\\n --profile \\\n --minimum-sessions 2 \\\n --minimum-occurrences 3 \\\n --output \n```\n\nThe output is advisory. Same-session repetition is marked `watch`, not\nrecurrence. Unknown or conflicting outcomes are retained as counterevidence\nand cannot become an accepted candidate. Operation shapes and digests are\ncontent-free; provenance uses bounded privacy-hashed logical references.\n\n## Lifecycle and handoffs\n\nEvery packet remains in `candidate` state until an explicit, receipted event\nadvances it. The required order is:\n\n1. independent reviewer disposition;\n2. `aoa-evals` verdict with paired, held-out, and ablation comparisons;\n3. `abyss-stack` shadow result with a baseline, net-benefit vector, and\n trajectory-cost measurements and a typed, immutable shadow measurement\n binding;\n4. named owner acceptance and a live canary reference, producing `accepted`\n but not `adopted` state;\n5. a separate named adoption event and receipt from `aoa-session-memory`.\n\nLifecycle receipts are structured owner evidence, not arbitrary URI strings.\nEach event must carry `owner_repo`, `receipt_type`, the exact `candidate_id`,\nthe immutable candidate `base_digest`, `object_ref`, an external\n`verification_ref`, a full `sha256:` digest over those canonical fields, and\n`integrity: verified`. `object_ref` and `verification_ref` are\nprivacy-hashed logical-reference objects, never arbitrary URI strings; the\nverification ref marks the mandatory owner/external-verifier boundary and is\nnot inferred by this skill. The reducer stores a canonical receipt and a\nchained transition digest, so a packet cannot resume\nfrom a forged `owner_review_pending` state or mutable gate fields. An accepted\neval event must also carry identity-bound comparison packets for `paired`,\n`held_out`, and `ablation`: every packet binds the candidate id, the complete\nsource-binding digest list, one comparison subject, baseline, shadow, context,\nnumeric result, source and evidence digests, plus its result ref;\nan accepted shadow event must carry a digest-bound typed measurement whose\nbaseline and shadow include coverage status and trajectory metrics, whose\ncandidate cohort and comparison cohort bindings are separate, whose\nnet-benefit claim remains `not_established`, and whose refs are retained in\nthe lifecycle record. Receipts also bind the event kind, disposition, and\ncanonical evidence digest; reusing a receipt for another disposition fails\nclosed. Owner acceptance requires an identity-bound canary packet with a\nruntime, execution, treatment, baseline, shadow, rollback, and external\nverification reference; that packet is an owner/verifier boundary, not a\nclaim that this reducer independently inspected the runtime. Owner acceptance\nand adoption are separate events; neither may be inferred from frequency,\ncomparison deltas, or a green check.\n\nApply one event to one packet only when the receiving owner has produced the\nreceipt:\n\n```bash\npython3 scripts/experience_metabolism.py \\\n --profile \\\n --packet \\\n --event \\\n --output \n```\n\nThe reducer is pure and reversible. It never installs a skill, changes a\nhook, schedules a route, or adopts a candidate. Rejection, supersession, and\nrollback preserve the prior packet and require explicit references.\n\nFor a shadow-only comparison, typed packets bind baseline and shadow profile\nidentities plus their source-binding digest union; both profiles must be\ncomplete bounded snapshots:\n\n```bash\npython3 scripts/experience_metabolism.py \\\n --profile \\\n --baseline-profile \\\n --shadow-profile \\\n --comparison-mode paired \\\n --comparison-packet \\\n --output \n```\n\nThe measurement reports wall-clock trajectory, residual unknown time, and\nrepeat/rerun rates as separate bounded components. It does not collapse them\ninto a universal score or call a directional delta a benefit.\n\nFor a lifecycle event, use a JSON object shaped like this (with a real\nowner-issued digest and reference):\n\n```json\n{\n \"kind\": \"review_verdict\",\n \"status\": \"accepted\",\n \"independent_reviewer\": true,\n \"receipt\": {\n \"owner_repo\": \"reviewer-office\",\n \"receipt_type\": \"review-verdict-v1\",\n \"candidate_id\": \"experience-candidate:<24 lowercase hex characters>\",\n \"base_digest\": \"sha256:<64 lowercase hex characters>\",\n \"object_ref\": {\n \"scheme\": \"privacy-hashed-logical-ref-v1\",\n \"event\": \"event:sha256:<16 lowercase hex characters>\"\n },\n \"verification_ref\": {\n \"scheme\": \"privacy-hashed-logical-ref-v1\",\n \"event\": \"event:sha256:<16 lowercase hex characters>\"\n },\n \"event_kind\": \"review_verdict\",\n \"event_status\": \"accepted\",\n \"evidence_digest\": \"sha256:<64 lowercase hex characters>\",\n \"digest\": \"sha256:<64 lowercase hex characters>\",\n \"integrity\": \"verified\"\n }\n}\n```\n\n## Verification\n\n- Validate `schemas/experience-metabolism-report.schema.json` and run the\n focused `tests/test_experience_metabolism.py` suite.\n- Keep candidate, eval verdict, shadow result, owner acceptance, and adoption\n as separate artifacts, receipts, states, and owner decisions. `accepted`\n means owner-approved for explicit adoption review; only `adopted` permits\n the adoption flag.\n- Preserve the source profile and all logical provenance refs.\n- Run the downstream `aoa-session-harvest` automation-opportunity route only\n after a reviewed candidate exists; its readiness posture remains separate\n from this candidate packet.\n\n## Stop line\n\nStop with a candidate, `insufficient_evidence`, or explicit rejection. Never\nturn frequency, correlation, a green validator, or a launched actor into\nadoption or a benefit claim.\n\n---\nname: aoa-session-first-pass-distill\ndescription: Use when an indexed `.aoa` session needs provisional first-pass distillation into lessons, decisions, failures, and automation candidates without promoting them to reviewed truth.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-first-pass-distill\n\nUse when an archived `.aoa` session needs a provisional event-to-experience\nroute map without promoting raw material into reviewed truth.\n\n## Trigger Boundary\n\n- A session archive is already indexed.\n- The user asks what lessons, failures, decisions, or automation candidates can\n be extracted.\n- A later agent needs a route map before doing reviewed distillation.\n\n## Inputs\n\n- `.aoa` root\n- session label, session id, title fragment, or `latest`\n- optional maximum candidate events per type\n\n## Procedure\n\n1. Read root `AGENTS.md`, `DESIGN.md`, `DESIGN.AGENTS.md`, and `PIPELINE.md`.\n2. Resolve the target session through `session-registry.json`.\n3. Read `session.manifest.json` and each segment index. Reject stale or\n incompatible session/segment generations before selecting candidates.\n4. Count event types and distillation routes.\n5. Select high-value candidate events by type, importance, and route.\n6. Run `distill-first-pass`; it rebuilds the session projection and publishes\n the manifest, session/segment indexes, candidate index, and rendered map as\n one recoverable generation.\n7. Read `distillation/distillation.index.json` and require a compatible\n `generation_identity`, matching `source_fingerprint`,\n `freshness.status=current`, and `evidence_integrity.status=current`.\n8. Open the cited raw and segment refs before interpreting a candidate.\n\n## Verification\n\n- Distillation files exist under the target session `distillation/`.\n- `first_pass_distillation_state` is `current`; stale candidate maps must be\n rebuilt, not treated as historical proof.\n- Candidate entries cite `md_anchor` and `raw_ref`.\n- Session manifest, session index, and registry reflect first-pass status.\n- A failed publish preserves the prior complete projection and leaves no\n partially visible candidate map.\n- No skill, pattern, or automation is promoted without review.\n\n## Stop Line\n\nFirst-pass distillation is a versioned map for review, not a verdict. A map\nwith stale generation, unresolved refs, or missing freshness is navigation\nonly and cannot support promotion.\n\n---\nname: aoa-session-manual-review\ndescription: Use when `.aoa` first-wave manual review lanes need bounded review packets, owner-aware evidence samples, or an unpromoted promotion-candidate queue.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-manual-review\n\nUse this after `batch-distill` has shown coherent manual-review lanes.\n\n## Trigger Boundary\n\nUse this only when provisional candidate packets already exist and require\nbounded owner-aware human review. Do not use it to promote a raw session,\nmachine candidate, or plausible pattern directly.\n\n## Procedure\n\nPlan the wave first:\n\n```bash\npython3 scripts/aoa_session_memory.py manual-review \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --priority deep \\\n --write-report\n```\n\nApply only when the selected sessions and owner-resolution signals are\ncoherent:\n\n```bash\npython3 scripts/aoa_session_memory.py manual-review \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --priority deep \\\n --apply \\\n --write-report\n```\n\nAggregate promotion candidates:\n\n```bash\npython3 scripts/aoa_session_memory.py promotion-review \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --write-report\n```\n\n## Rules\n\n- Manual-review packets are review surfaces, not reviewed truth.\n- Manual-review applies are append-only waves. Re-run only when another layer\n is intended, and keep prior packets open for future passes.\n- Use `--wave-id` when the operator needs a semantic wave name; otherwise let\n the command choose the next `manual-review-waveN`.\n- Promotion indexes may queue candidates, but `promoted_claim_count` must stay\n `0` until reviewed distillation accepts a claim.\n- A promotion candidate is indexed evidence, not a closed item.\n- Use `owner_resolution` before reading project-specific evidence. If it is\n `ambiguous`, `unresolved`, or `fallback_only`, do not promote\n project-specific claims.\n- Use packet evidence refs and segment indexes before opening large raw JSONL.\n\n## Verification\n\n- Every packet has a keep, reject, revise, or owner-handoff disposition.\n- Each disposition names the owner-resolution posture, evidence refs, and\n remaining uncertainty.\n- `promoted_claim_count` remains `0`; promotion is a separate owner action.\n- Prior review waves remain preserved.\n\n## Stop Line\n\nStop after each scoped packet has a reviewed disposition or an explicit\nevidence/owner blocker. Do not turn the queue, review packet, or current model\njudgment into accepted knowledge.\n", + "search_text": "navigation\nDistill and review candidate lessons without promoting raw experience automatically.\nsession-memory.stewardship.curate\ncurate\ndistill\nreview\ncandidate\nдистилляция\ncapability\nowner-verified\nhealthy\nactive\n1.0.0\ninternal\nauthored\naoa-session-memory\ncapabilities/families/session-memory.yaml\nsession-memory.stewardship\nsession-memory\ncapabilities/families/session-memory.yaml\nCurate session evidence\nReviewed bounded session set.\nsessions\nindexed-session-set\nProvisional candidates and separated review queues.\ncandidates\npromotion-candidate-set\nNaming or indexing quality is too weak to define the batch safely.\nExactly one indexed session is in scope; use first-pass distill.\nThe operator expects automatic promotion.\nA reviewed set of indexed sessions needs a bounded provisional distillation wave.\navailable\nskill\ndistill-batch\nskills/aoa-session-batch-distill/SKILL.md\nindependent-callable\nretain-deferred\nBatch orchestration has distinct resource, completeness, and queue-separation failure modes.\nexecutable\nUse when many indexed `.aoa` sessions need a first-wave distillation conveyor that separates safe automatic first-pass artifacts from manual review and mechanics-improvement queues.\ngenerated-write\nruntime-mutation\nUnbounded batch size.\nHiding skipped or failed sessions.\nMixing mechanics-improvement pressure with accepted knowledge.\nbounded-judgment\nreversible\nStop after the declared wave is fully receipted or a resource or evidence gate blocks it.\nsession-memory CLI\nindexed sessions\nmaintenance coordination\nEvery session has a terminal result.\nCandidate and manual-review queues remain separate.\nNo promotion occurs.\nskill.aoa-session-batch-distill\nbatch-distill\nconveyor\nwave\nmanual-review-queue\nmechanics-queue\nskill\nhypothesis\nchallenger\nexperimental\n1.0.1\ndeferred\nEvery scoped session has a terminal receipt.\nReview queues remain unpromoted.\nResume from per-session receipts.\nRemove or supersede only generated provisional wave artifacts.\nauthored\naoa-session-memory\nskills/aoa-session-batch-distill/SKILL.md\nsession-memory.stewardship.curate\nskills/aoa-session-batch-distill/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-batch-distill/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nApply bounded first-pass extraction across a reviewed session set and separate terminal review queues.\nforbidden\nread-session-archives\nwrite-derived-session-index\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nBatch session distillation\nauthored-procedure\nGenerated stage profiles with closed task episodes and provenance refs.\nstage-profiles\nreviewed-stage-profile-set\nPrivacy-safe advisory candidates with counterevidence, causal limits, trajectory cost, and routed lifecycle gates.\ncandidates\nexperience-motif-candidate-set\nProfile freshness\nsource alignment\nreview status\nor provenance refs are unresolved.\nThe evidence is raw\nlive\nprovisional\nor asks for an eval verdict or automatic adoption.\nA bounded set of closed\nreviewed\naligned stage profiles needs privacy-safe recurring-motif candidates.\navailable\nskill\nmetabolize\nskills/aoa-session-experience-metabolism/SKILL.md\nindependent-callable\nretain-deferred\nCross-session recurrence has a distinct privacy, provenance, counterevidence, and multi-owner acceptance ABI.\nexecutable\nDerive privacy-safe recurring motifs and bounded improvement candidates from closed, reviewed stage profiles, with explicit review, eval, shadow, owner-acceptance, adoption, and rollback gates.\ngenerated-write\nhuman-decision\nTreating frequency as recurrence.\nConfusing review eligibility with owner acceptance.\nClaiming causality without paired held-out ablation evidence.\nHiding unknown or conflicting outcomes.\nLeaking transcript or host path content.\nbounded-judgment\nconditionally-reversible\nStop after candidate\ninsufficient-evidence\nrejection\nor an exact owner/evidence blocker is receipted.\nstage_profile_v1 report\nsession-memory CLI\nowner review\neval and shadow receipts\nOnly reviewed aligned profiles contribute.\nRaw content and paths are not emitted.\nSame-session repetition remains watch-only.\nNo candidate is adopted automatically.\nskill.aoa-session-experience-metabolism\nexperience-metabolism\nrecurrence\nmotif\ncandidate\ncounterevidence\nshadow\nablation\nrollback\nskill\nhypothesis\nchallenger\nexperimental\n1.0.0\ndeferred\nCandidate\neval verdict\nshadow result\nowner acceptance\nand adoption remain distinct.\nAll emitted refs are privacy-safe and bounded.\nRaw source evidence is unchanged.\nPreserve the candidate and receipts.\nReject or supersede generated packets without touching raw evidence.\nRoll back an accepted route only with a named rollback receipt.\nauthored\naoa-session-memory\nskills/aoa-session-experience-metabolism/SKILL.md\nsession-memory.stewardship.curate\nskills/aoa-session-experience-metabolism/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nscripts/experience_metabolism.py\nexperience-metabolism-v1\naoa-session-memory\nowner-implementation\nauthored\nskills/aoa-session-experience-metabolism/SKILL.md\nexperience-metabolism-v1\naoa-session-memory\nowner-skill-procedure\nauthored\nschemas/experience-metabolism-report.schema.json\nexperience-metabolism-v1\naoa-session-memory\nowner-packet-schema\nRoute recurring experience through explicit review, evaluation, shadow, owner-acceptance, and reversible rejection or rollback gates.\naoa-evals review\nabyss-stack shadow\naoa-skills automation-opportunity handoff\nforbidden\nread-generated-session-profile\nwrite-candidate-packet\nhuman-review\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nExperience metabolism candidate extraction\nauthored-procedure\nOne indexed session and bounded evidence refs.\nsession\nindexed-session\nUnreviewed lessons, decisions, failures, and automation candidates.\ncandidates\npromotion-candidate-set\nThe session is not indexed or its evidence freshness is unknown.\nThe task asks for reviewed truth\nfinal promotion\nor a multi-session conveyor.\nOne indexed session needs provisional candidate extraction.\navailable\nskill\ndistill-one\nskills/aoa-session-first-pass-distill/SKILL.md\nindependent-callable\nretain-deferred\nSingle-session provisional extraction has a distinct scope and review handoff.\nexecutable\nUse when an indexed `.aoa` session needs provisional first-pass distillation into lessons, decisions, failures, and automation candidates without promoting them to reviewed truth.\ngenerated-write\nPromoting a plausible lesson as truth.\nDropping contrary evidence.\nReading one successful output as recurring practice.\nbounded-judgment\nreversible\nStop after bounded candidate output or an evidence-insufficiency result.\nsession-memory CLI\nindexed session evidence\nEvery candidate carries source refs and provisional status.\nNo candidate is promoted automatically.\nskill.aoa-session-first-pass-distill\ndistill\nfirst-pass\nprovisional\nlesson\ndecision\nfailure\ncandidate\nskill\nhypothesis\nchallenger\nexperimental\n1.0.0\ndeferred\nAll output remains explicitly provisional.\nEvidence refs resolve.\nDelete or supersede only the generated provisional artifact\nnever source evidence.\nReturn weak candidates to manual review.\nauthored\naoa-session-memory\nskills/aoa-session-first-pass-distill/SKILL.md\nsession-memory.stewardship.curate\nskills/aoa-session-first-pass-distill/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-first-pass-distill/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nExtract provisional candidates from one indexed session while preserving their unreviewed status and refs.\nforbidden\nread-session-archives\nwrite-derived-session-index\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nFirst-pass session distillation\nauthored-procedure\nProvisional candidates with evidence refs.\ncandidates\npromotion-candidate-set\nReviewed keep, reject, revise, or handoff dispositions without promotion.\nreview\nreviewed-candidate-disposition\nThe destination owner is unresolved or evidence is insufficient.\nNo provisional candidate or evidence packet exists.\nProvisional candidates require bounded human review and owner resolution.\navailable\nskill\nreview\nskills/aoa-session-manual-review/SKILL.md\nindependent-callable\nretain-deferred\nHuman review has a distinct disposition ABI and non-promotion authority boundary.\nexecutable\nUse when `.aoa` first-wave manual review lanes need bounded review packets, owner-aware evidence samples, or an unpromoted promotion-candidate queue.\ngenerated-write\nhuman-decision\nTreating review as promotion.\nReviewing without owner source.\nOverwriting contrary or rejected evidence.\nbounded-judgment\nconditionally-reversible\nStop after every packet has a reviewed disposition or explicit evidence blocker.\nsession-memory CLI\nhuman review\nowner source access\nOwner resolution precedes project-specific interpretation.\nEach disposition cites evidence and remaining uncertainty.\nPromotion remains a separate owner action.\nskill.aoa-session-manual-review\nmanual-review\nowner-resolution\nreview-packet\npromotion-candidate\nhuman-gate\nskill\nhypothesis\nchallenger\nexperimental\n1.0.0\ndeferred\nEvery decision names reviewer posture\nowner\nevidence\nand promotion boundary.\nSupersede an incorrect review disposition while preserving its evidence trail.\nReturn unresolved packets to intake.\nauthored\naoa-session-memory\nskills/aoa-session-manual-review/SKILL.md\nsession-memory.stewardship.curate\nskills/aoa-session-manual-review/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-manual-review/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nPrepare and review bounded candidate packets without transferring owner or promotion authority.\nforbidden\nread-session-evidence\nwrite-review-packets\nhuman-review\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nSession candidate manual review\nauthored-procedure\n---\nname: aoa-session-batch-distill\ndescription: Use when many indexed `.aoa` sessions need a first-wave distillation conveyor that separates safe automatic first-pass artifacts from manual review and mechanics-improvement queues.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-batch-distill\n\nUse this when a group of archived sessions needs to be laid out for first-wave\ndistillation without pretending that automatic classification is reviewed\ntruth.\n\n## Trigger Boundary\n\n- The user asks to process many historical sessions.\n- A rolling window has already been imported into `.aoa`.\n- The agent needs a queue that separates automatic first-pass work from manual\n reading, mechanics candidates, and diagnostics.\n- The session-memory mechanism itself may improve while the queue is processed.\n\n## Procedure\n\nBatch distillation is set-oriented and has no positional session argument.\nDeclare a bounded set with `--since`, `--since-days`, `--until`, and/or\n`--limit`, then carry the same predicate through any separately authorized\nfollow-on route. The current batch and title-repair implementations use the\nsame chronological registry selector, but a report is the binding set: before\nany follow-on apply, compare its selected session IDs with the prior report.\nStop on any mismatch and re-plan that changed set under explicit scope\nauthorization. An archive-wide `all` selector in a maintenance command is a\nnew scope decision; it is never implied by processing one session or one\nbounded batch.\n\nStart with a planning report:\n\n```bash\npython3 scripts/aoa_session_memory.py batch-distill \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --limit 10 \\\n --write-report\n```\n\nReview the report lanes:\n\n- `auto_first_pass`: safe to write provisional first-pass artifacts from\n indexes.\n- `manual_review`: requires a responsible review layer before promotion; this\n can be agent-assisted and evidence-sampled, not raw rereading by the operator.\n- `mechanics_candidate`: may imply tests, skills, hooks, docs, or CLI\n improvements.\n- `diagnostic`: repair raw/index health before distillation.\n\nInspect owner quality before applying a broad pass. Each profile contains\n`project_grounding` and `owner_resolution`; fallback grounding is not the same\nas a resolved owner.\n\nIf title repair is separately authorized for this same bounded set, repair\nweak imported titles before a broad manual review wave:\n\n```bash\npython3 scripts/aoa_session_memory.py repair-session-titles all \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --limit 10 \\\n --write-report\n```\n\nAdd `--apply` only after checking the plan.\n\nApply only after the queue shape is coherent:\n\n```bash\npython3 scripts/aoa_session_memory.py batch-distill \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --limit 10 \\\n --apply \\\n --write-report\n```\n\nUse `--limit` for the first smoke batch. Use `--force` only when an existing\nfirst-pass artifact must be rebuilt.\n\nAfter the automatic first-pass layer is coherent, use\n`aoa-session-manual-review` for packetizing manual-review lanes and aggregating\npromotion candidates without promoting them.\n\n## Review Rule\n\nAutomatic work may write only provisional first-pass distillation artifacts.\nIt may not promote a pattern, amend a skill, add automation, or mark a claim as\nreviewed.\n\nManual review means project-grounded review. Before promoting a claim, inspect\nthe session's `project_grounding` entry and read the nearest relevant\n`AGENTS.md`, `DESIGN.md`, agent-facing design surface such as\n`DESIGN.AGENTS.md` when present, or README. The operator should review\npromoted claims and samples, not carry the entire archive in active attention.\n\n## Adaptive Rule\n\nAfter each batch, inspect `improvement_candidates` in the report. If the queue\nshows recurring parser misses, noisy names, missing indexes, hook gaps, or\nrepeatable command patterns, emit the candidate as a provisional owner-routed\nhandoff. Do not patch, retrain, change hooks or CLI behavior, or rerun a repair\ninside the data-processing batch. A separately authorized owner task may\ninspect the candidate, make a narrow source change, run its owner checks, and\nstart a new bounded batch after review.\n\n## Verification\n\n- Every scoped session has an automatic, manual-review, mechanics-candidate,\n diagnostic, skip, or failure terminal receipt.\n- All produced artifacts remain explicitly provisional.\n- Owner resolution and evidence refs are present before project-specific\n interpretation.\n- Mechanics candidates remain owner-routed handoffs; the batch does not change\n the bundle or its processing mechanism.\n- No claim, skill change, automation, or durable lesson was promoted.\n\n## Stop Line\n\nDo not open every raw transcript in context. Use the batch report, registry,\nmanifests, distillation indexes, and segment indexes first.\n\n---\nname: aoa-session-experience-metabolism\ndescription: Derive privacy-safe recurring motifs and bounded improvement candidates from closed, reviewed stage profiles, with explicit review, eval, shadow, owner-acceptance, adoption, and rollback gates.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-experience-metabolism\n\nUse this skill only for a bounded set of `stage_profile_v1` reports whose\nsessions have closed task episodes and an explicit reviewed status. The\nproducer reads generated profile data; it does not read raw transcripts or\ncapture ledgers.\n\n## Trigger boundary\n\nUse this when a reviewed session set needs recurring-motif candidates,\ncounterevidence, or a shadow/evaluation handoff. Do not use it for live or\nprovisional sessions, raw transcript summarization, direct skill mutation, or\nan evaluation verdict.\n\n## Procedure\n\n```bash\npython3 scripts/experience_metabolism.py \\\n --profile \\\n --profile \\\n --minimum-sessions 2 \\\n --minimum-occurrences 3 \\\n --output \n```\n\nThe output is advisory. Same-session repetition is marked `watch`, not\nrecurrence. Unknown or conflicting outcomes are retained as counterevidence\nand cannot become an accepted candidate. Operation shapes and digests are\ncontent-free; provenance uses bounded privacy-hashed logical references.\n\n## Lifecycle and handoffs\n\nEvery packet remains in `candidate` state until an explicit, receipted event\nadvances it. The required order is:\n\n1. independent reviewer disposition;\n2. `aoa-evals` verdict with paired, held-out, and ablation comparisons;\n3. `abyss-stack` shadow result with a baseline, net-benefit vector, and\n trajectory-cost measurements and a typed, immutable shadow measurement\n binding;\n4. named owner acceptance and a live canary reference, producing `accepted`\n but not `adopted` state;\n5. a separate named adoption event and receipt from `aoa-session-memory`.\n\nLifecycle receipts are structured owner evidence, not arbitrary URI strings.\nEach event must carry `owner_repo`, `receipt_type`, the exact `candidate_id`,\nthe immutable candidate `base_digest`, `object_ref`, an external\n`verification_ref`, a full `sha256:` digest over those canonical fields, and\n`integrity: verified`. `object_ref` and `verification_ref` are\nprivacy-hashed logical-reference objects, never arbitrary URI strings; the\nverification ref marks the mandatory owner/external-verifier boundary and is\nnot inferred by this skill. The reducer stores a canonical receipt and a\nchained transition digest, so a packet cannot resume\nfrom a forged `owner_review_pending` state or mutable gate fields. An accepted\neval event must also carry identity-bound comparison packets for `paired`,\n`held_out`, and `ablation`: every packet binds the candidate id, the complete\nsource-binding digest list, one comparison subject, baseline, shadow, context,\nnumeric result, source and evidence digests, plus its result ref;\nan accepted shadow event must carry a digest-bound typed measurement whose\nbaseline and shadow include coverage status and trajectory metrics, whose\ncandidate cohort and comparison cohort bindings are separate, whose\nnet-benefit claim remains `not_established`, and whose refs are retained in\nthe lifecycle record. Receipts also bind the event kind, disposition, and\ncanonical evidence digest; reusing a receipt for another disposition fails\nclosed. Owner acceptance requires an identity-bound canary packet with a\nruntime, execution, treatment, baseline, shadow, rollback, and external\nverification reference; that packet is an owner/verifier boundary, not a\nclaim that this reducer independently inspected the runtime. Owner acceptance\nand adoption are separate events; neither may be inferred from frequency,\ncomparison deltas, or a green check.\n\nApply one event to one packet only when the receiving owner has produced the\nreceipt:\n\n```bash\npython3 scripts/experience_metabolism.py \\\n --profile \\\n --packet \\\n --event \\\n --output \n```\n\nThe reducer is pure and reversible. It never installs a skill, changes a\nhook, schedules a route, or adopts a candidate. Rejection, supersession, and\nrollback preserve the prior packet and require explicit references.\n\nFor a shadow-only comparison, typed packets bind baseline and shadow profile\nidentities plus their source-binding digest union; both profiles must be\ncomplete bounded snapshots:\n\n```bash\npython3 scripts/experience_metabolism.py \\\n --profile \\\n --baseline-profile \\\n --shadow-profile \\\n --comparison-mode paired \\\n --comparison-packet \\\n --output \n```\n\nThe measurement reports wall-clock trajectory, residual unknown time, and\nrepeat/rerun rates as separate bounded components. It does not collapse them\ninto a universal score or call a directional delta a benefit.\n\nFor a lifecycle event, use a JSON object shaped like this (with a real\nowner-issued digest and reference):\n\n```json\n{\n \"kind\": \"review_verdict\",\n \"status\": \"accepted\",\n \"independent_reviewer\": true,\n \"receipt\": {\n \"owner_repo\": \"reviewer-office\",\n \"receipt_type\": \"review-verdict-v1\",\n \"candidate_id\": \"experience-candidate:<24 lowercase hex characters>\",\n \"base_digest\": \"sha256:<64 lowercase hex characters>\",\n \"object_ref\": {\n \"scheme\": \"privacy-hashed-logical-ref-v1\",\n \"event\": \"event:sha256:<16 lowercase hex characters>\"\n },\n \"verification_ref\": {\n \"scheme\": \"privacy-hashed-logical-ref-v1\",\n \"event\": \"event:sha256:<16 lowercase hex characters>\"\n },\n \"event_kind\": \"review_verdict\",\n \"event_status\": \"accepted\",\n \"evidence_digest\": \"sha256:<64 lowercase hex characters>\",\n \"digest\": \"sha256:<64 lowercase hex characters>\",\n \"integrity\": \"verified\"\n }\n}\n```\n\n## Verification\n\n- Validate `schemas/experience-metabolism-report.schema.json` and run the\n focused `tests/test_experience_metabolism.py` suite.\n- Keep candidate, eval verdict, shadow result, owner acceptance, and adoption\n as separate artifacts, receipts, states, and owner decisions. `accepted`\n means owner-approved for explicit adoption review; only `adopted` permits\n the adoption flag.\n- Preserve the source profile and all logical provenance refs.\n- Run the downstream `aoa-session-harvest` automation-opportunity route only\n after a reviewed candidate exists; its readiness posture remains separate\n from this candidate packet.\n\n## Stop line\n\nStop with a candidate, `insufficient_evidence`, or explicit rejection. Never\nturn frequency, correlation, a green validator, or a launched actor into\nadoption or a benefit claim.\n\n---\nname: aoa-session-first-pass-distill\ndescription: Use when an indexed `.aoa` session needs provisional first-pass distillation into lessons, decisions, failures, and automation candidates without promoting them to reviewed truth.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-first-pass-distill\n\nUse when an archived `.aoa` session needs a provisional event-to-experience\nroute map without promoting raw material into reviewed truth.\n\n## Trigger Boundary\n\n- A session archive is already indexed.\n- The user asks what lessons, failures, decisions, or automation candidates can\n be extracted.\n- A later agent needs a route map before doing reviewed distillation.\n\n## Inputs\n\n- `.aoa` root\n- session label, session id, title fragment, or `latest`\n- optional maximum candidate events per type\n\n## Procedure\n\n1. Read root `AGENTS.md`, `DESIGN.md`, `DESIGN.AGENTS.md`, and `PIPELINE.md`.\n2. Resolve the target session through `session-registry.json`.\n3. Read `session.manifest.json` and each segment index. Reject stale or\n incompatible session/segment generations before selecting candidates.\n4. Count event types and distillation routes.\n5. Select high-value candidate events by type, importance, and route.\n6. Run `distill-first-pass`; it rebuilds the session projection and publishes\n the manifest, session/segment indexes, candidate index, and rendered map as\n one recoverable generation.\n7. Read `distillation/distillation.index.json` and require a compatible\n `generation_identity`, matching `source_fingerprint`,\n `freshness.status=current`, and `evidence_integrity.status=current`.\n8. Open the cited raw and segment refs before interpreting a candidate.\n\n## Verification\n\n- Distillation files exist under the target session `distillation/`.\n- `first_pass_distillation_state` is `current`; stale candidate maps must be\n rebuilt, not treated as historical proof.\n- Candidate entries cite `md_anchor` and `raw_ref`.\n- Session manifest, session index, and registry reflect first-pass status.\n- A failed publish preserves the prior complete projection and leaves no\n partially visible candidate map.\n- No skill, pattern, or automation is promoted without review.\n\n## Stop Line\n\nFirst-pass distillation is a versioned map for review, not a verdict. A map\nwith stale generation, unresolved refs, or missing freshness is navigation\nonly and cannot support promotion.\n\n---\nname: aoa-session-manual-review\ndescription: Use when `.aoa` first-wave manual review lanes need bounded review packets, owner-aware evidence samples, or an unpromoted promotion-candidate queue.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-manual-review\n\nUse this after `batch-distill` has shown coherent manual-review lanes.\n\n## Trigger Boundary\n\nUse this only when provisional candidate packets already exist and require\nbounded owner-aware human review. Do not use it to promote a raw session,\nmachine candidate, or plausible pattern directly.\n\n## Procedure\n\nPlan the wave first:\n\n```bash\npython3 scripts/aoa_session_memory.py manual-review \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --priority deep \\\n --write-report\n```\n\nApply only when the selected sessions and owner-resolution signals are\ncoherent:\n\n```bash\npython3 scripts/aoa_session_memory.py manual-review \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --priority deep \\\n --apply \\\n --write-report\n```\n\nAggregate promotion candidates:\n\n```bash\npython3 scripts/aoa_session_memory.py promotion-review \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --write-report\n```\n\n## Rules\n\n- Manual-review packets are review surfaces, not reviewed truth.\n- Manual-review applies are append-only waves. Re-run only when another layer\n is intended, and keep prior packets open for future passes.\n- Use `--wave-id` when the operator needs a semantic wave name; otherwise let\n the command choose the next `manual-review-waveN`.\n- Promotion indexes may queue candidates, but `promoted_claim_count` must stay\n `0` until reviewed distillation accepts a claim.\n- A promotion candidate is indexed evidence, not a closed item.\n- Use `owner_resolution` before reading project-specific evidence. If it is\n `ambiguous`, `unresolved`, or `fallback_only`, do not promote\n project-specific claims.\n- Use packet evidence refs and segment indexes before opening large raw JSONL.\n\n## Verification\n\n- Every packet has a keep, reject, revise, or owner-handoff disposition.\n- Each disposition names the owner-resolution posture, evidence refs, and\n remaining uncertainty.\n- `promoted_claim_count` remains `0`; promotion is a separate owner action.\n- Prior review waves remain preserved.\n\n## Stop Line\n\nStop after each scoped packet has a reviewed disposition or an explicit\nevidence/owner blocker. Do not turn the queue, review packet, or current model\njudgment into accepted knowledge.\n", "title": "Curate session evidence", "tokens": [ "1.0.0", + "1.0.1", + "10", "16", "21", "24", @@ -9078,17 +9117,20 @@ "approved", "arbitrary", "archive", + "archive-wide", "archived", "archives", + "argument", "artifact", "artifacts", "asks", "assisted", "attention", - "audit", "authored", "authored-procedure", "authority", + "authorization", + "authorized", "auto", "automatic", "automatically", @@ -9107,6 +9149,7 @@ "become", "been", "before", + "behavior", "benefit", "bind", "binding", @@ -9141,11 +9184,14 @@ "chained", "challenger", "change", + "changed", "changes", "characters", "check", "checking", + "checks", "choose", + "chronological", "cite", "cited", "cites", @@ -9160,6 +9206,7 @@ "cohort", "collapse", "command", + "compare", "comparison", "comparison-mode", "comparison-packet", @@ -9190,9 +9237,11 @@ "curate", "current", "data", + "data-processing", "days", "decision", "decisions", + "declare", "declared", "deep", "deferred", @@ -9226,7 +9275,6 @@ "distinct", "do", "docs", - "doctor", "does", "doing", "downstream", @@ -9234,6 +9282,7 @@ "durable", "each", "eligibility", + "emit", "emitted", "entire", "entries", @@ -9289,6 +9338,8 @@ "first-wave", "flag", "focused", + "follow", + "follow-on", "forbidden", "force", "forged", @@ -9339,9 +9390,12 @@ "identities", "identity", "identity-bound", + "ids", "if", "immutable", "implementation", + "implementations", + "implied", "imply", "importance", "imported", @@ -9362,6 +9416,7 @@ "indexing", "inferred", "inputs", + "inside", "inspect", "inspected", "installation", @@ -9415,6 +9470,7 @@ "lowercase", "machine", "maintenance", + "make", "mandatory", "manifest", "manifests", @@ -9451,6 +9507,7 @@ "minimum", "minimum-occurrences", "minimum-sessions", + "mismatch", "misses", "missing", "mixing", @@ -9478,6 +9535,7 @@ "net", "net-benefit", "never", + "new", "next", "no", "noisy", @@ -9501,6 +9559,7 @@ "optional", "orchestration", "order", + "oriented", "otherwise", "out", "outcomes", @@ -9516,6 +9575,7 @@ "owner-issued", "owner-packet-schema", "owner-resolution", + "owner-routed", "owner-skill-procedure", "owner-verified", "packet", @@ -9542,9 +9602,11 @@ "planning", "plausible", "plus", + "positional", "posture", "practice", "precedes", + "predicate", "prepare", "present", "preserve", @@ -9562,6 +9624,7 @@ "procedure", "process", "processed", + "processing", "produced", "producer", "producing", @@ -9593,6 +9656,7 @@ "rates", "raw", "re", + "re-plan", "re-run", "read", "read-generated-session-profile", @@ -9655,6 +9719,7 @@ "retain", "retain-deferred", "retained", + "retrain", "return", "reusing", "reversible", @@ -9701,9 +9766,11 @@ "select", "selected", "selecting", + "selector", "semantic", "separate", "separated", + "separately", "separates", "separation", "session", @@ -9715,6 +9782,7 @@ "session.manifest.json", "sessions", "set", + "set-oriented", "sha256", "shadow", "shadow-measurement.json", @@ -9780,10 +9848,12 @@ "tests", "their", "them", + "then", "those", "through", "time", "title", + "title-repair", "titles", "too", "touching", @@ -9846,6 +9916,7 @@ "when", "while", "whose", + "wide", "window", "without", "work", @@ -9864,6 +9935,7 @@ { "contract_tokens": [ "1.0.0", + "1.0.1", "access", "across", "active", @@ -10223,6 +10295,7 @@ "applying", "approved", "archive", + "archive-wide", "archives", "artifact", "asking", @@ -10276,6 +10349,7 @@ "check", "checked", "checks", + "choice", "choosing", "class", "classes", @@ -10303,6 +10377,7 @@ "defect", "define", "deliberately", + "dependency", "description", "deterministic", "diagnostic", @@ -10343,6 +10418,8 @@ "first", "flags", "folder", + "follow", + "follow-on", "freshness", "from-segment", "future", @@ -10380,6 +10457,7 @@ "item", "items", "its", + "itself", "json", "keep", "label", @@ -10401,6 +10479,7 @@ "lower-layer", "machine", "machine-readable", + "makes", "manual", "manually", "many", @@ -10409,6 +10488,7 @@ "markers", "mass", "matters", + "may", "md", "memory", "memory.py", @@ -10432,9 +10512,11 @@ "naming-wave-plan.json", "naming-waves", "navigate", + "necessary", "need", "needed", "needs", + "never", "new", "next", "no", @@ -10529,6 +10611,7 @@ "reviewable", "reviewed", "reviewed-name", + "rewrite", "root", "route", "routed", @@ -10536,6 +10619,7 @@ "routing", "rule", "running", + "same", "sample", "sample-seed", "sample-size", @@ -10550,7 +10634,10 @@ "segment", "segment-id", "segments", + "selected", + "selector", "semantic", + "separate", "separately", "session", "session-label-or-id", @@ -10559,6 +10646,7 @@ "sessions", "set", "several", + "shared", "short", "should", "signal", @@ -10640,6 +10728,8 @@ "whole-session", "whose", "why", + "wide", + "widens", "window", "without", "work", @@ -10765,10 +10855,11 @@ "wave", "именован" ], - "search_text": "navigation\nAssess naming readiness, discover phases, and apply reviewed semantic names.\nsession-memory.stewardship.name\nname\nnaming\nphase\nsemantic-title\nименование\ncapability\nowner-verified\nhealthy\nactive\n1.0.0\ninternal\nauthored\naoa-session-memory\ncapabilities/families/session-memory.yaml\nsession-memory.stewardship\nsession-memory\ncapabilities/families/session-memory.yaml\nName session evidence\nSession set and current naming/index posture.\nsessions\nindexed-session-set\nReady, blocked, and phase-discovery-needed classifications.\nreadiness\nnaming-readiness-report\nIndex or title freshness is unknown.\nA single reviewed name is already ready for explicit application.\nA naming wave or broad semantic renaming is being considered.\navailable\nskill\nassess-readiness\nskills/aoa-session-naming-readiness/SKILL.md\nindependent-callable\nretain-deferred\nReadiness assessment is a non-mutating gate with a distinct classification output.\nexecutable\nUse before broad session renaming or semantic naming work to classify `.aoa` session archives by naming readiness, lower-layer blockers, and phase-discovery needs.\nread-only\ngenerated-write\nTreating readiness as approval to rename.\nHiding lower-layer index blockers.\nForcing one title onto multi-phase sessions.\nbounded-judgment\nreversible\nStop after a bounded readiness report and next route per class.\nsession-memory CLI\ncurrent naming policy and indexes\nEvery classified session names its evidence and blocker.\nThe report performs no rename.\nskill.aoa-session-naming-readiness\nnaming-readiness\nnaming\nblockers\nphase-discovery\nsemantic-title\nskill\nhypothesis\nchallenger\nexperimental\n1.0.0\ndeferred\nNo session name changed.\nEach class has a bounded next route.\nRegenerate the derived report from current indexes.\nauthored\naoa-session-memory\nskills/aoa-session-naming-readiness/SKILL.md\nsession-memory.stewardship.name\nskills/aoa-session-naming-readiness/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-naming-readiness/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nClassify naming readiness before any semantic title mutation.\nforbidden\nread-session-archives\nwrite-derived-session-index\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nSession naming readiness\nauthored-procedure\nReviewed phase and title candidates.\nphases\nphase-candidate-set\nApplied names, receipts, and quality audit refs.\nnames\nnamed-session-set\nThe wave mixes sessions with incompatible readiness classes.\nReadiness\nphase candidates\nreview approval\nor current index freshness is missing.\nA reviewed bounded set of phase or title candidates is ready for a guarded naming wave.\navailable\nskill\nname-wave\nskills/aoa-session-naming-wave/SKILL.md\nindependent-callable\nretain-deferred\nNaming wave has an explicit reviewed mutation boundary, receipts, and quality audit.\nexecutable\nUse when many `.aoa` session archives need fast, reviewable semantic naming across readiness, sync/reindex preflight, review plans, guarded apply, and quality audit.\nruntime-mutation\nhuman-decision\nApplying an unreviewed plan.\nRenaming while reindex mutates the same sessions.\nLosing old-name and new-name receipts.\nbounded-judgment\nconditionally-reversible\nStop after audited apply\nreviewed no-op\nor preserved conflict requiring a new plan.\nsession-memory CLI\nreviewed naming plan\nwrite access to selected root\nPreflight is current.\nApply uses only reviewed plan entries.\nQuality audit resolves every changed session.\nskill.aoa-session-naming-wave\nnaming-wave\nsemantic-name\nguarded-apply\nquality-audit\nrename\nskill\nhypothesis\nchallenger\nexperimental\n1.0.0\ndeferred\nEvery applied name has a receipt.\nNaming quality audit passes or names the exact failed entries.\nUse old-name and new-name receipts to prepare a reviewed reverse plan.\nReindex after recovery.\nauthored\naoa-session-memory\nskills/aoa-session-naming-wave/SKILL.md\nsession-memory.stewardship.name\nskills/aoa-session-naming-wave/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-naming-wave/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nBuild, review, apply, and audit one explicit semantic naming wave.\nforbidden\nread-session-evidence\nwrite-session-names\nhuman-review\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nReviewed session naming wave\nauthored-procedure\nReadiness record identifying phase-discovery need.\nreadiness\nnaming-readiness-report\nEvidence-linked phase and title candidates.\nphases\nphase-candidate-set\nThe target session or its current index cannot be resolved uniquely.\nA short session already has one reviewed semantic name.\nA long or multi-topic session needs phase candidates before semantic naming.\navailable\nskill\ndiscover-phases\nskills/aoa-session-phase-discovery/SKILL.md\nindependent-callable\nretain-deferred\nPhase extraction has a distinct evidence-span output and precedes any naming mutation.\nexecutable\nUse for long `.aoa` Codex session archives that need phase/topic candidate extraction before applying semantic session names.\ngenerated-write\nApplying names during discovery.\nTreating every topical mention as a phase.\nReading unbounded raw content.\nbounded-judgment\nreversible\nStop after reviewable phase candidates or an explicit insufficient-evidence result.\nsession-memory CLI\nindexed session and bounded raw refs\nPhase candidates cite bounded evidence spans.\nCandidate names remain unapplied.\nskill.aoa-session-phase-discovery\nphase-discovery\ntopics\nlong-session\nsemantic-name\nevidence-span\nskill\nhypothesis\nchallenger\nexperimental\n1.0.0\ndeferred\nNo session names changed.\nPhase candidates carry source refs.\nRegenerate or reject candidate artifacts without changing the archive.\nauthored\naoa-session-memory\nskills/aoa-session-phase-discovery/SKILL.md\nsession-memory.stewardship.name\nskills/aoa-session-phase-discovery/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-phase-discovery/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nExtract reviewable phase candidates from long sessions before name application.\nforbidden\nread-session-archives\nwrite-derived-session-index\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nSession phase discovery\nauthored-procedure\n---\nname: aoa-session-naming-readiness\ndescription: Use before broad session renaming or semantic naming work to classify `.aoa` session archives by naming readiness, lower-layer blockers, and phase-discovery needs.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-naming-readiness\n\nUse this before applying session names, semantic aliases, or physical relabels.\n\nNaming is a pressure test of lower layers. Do not start by naming everything.\nStart by asking which sessions are ready, which need phase/topic discovery, and\nwhich must be repaired at raw/index level first.\n\n## Trigger Boundary\n\n- The user asks to rename sessions or improve session names.\n- `SESSION_NAMES.md` or `sessions/INDEX.md` feels too weak to navigate.\n- A long session needs a future continuation route.\n- A session has a custom semantic name proposal but no raw evidence anchor yet.\n- The agent needs a queue before running `name-session`.\n\n## Procedure\n\nRefresh the generated readiness maps:\n\n```bash\npython3 scripts/aoa_session_memory.py naming-readiness all \\\n --workspace-root \\\n --aoa-root \\\n --refresh-indexes \\\n --write-report\n```\n\nFor a bounded window:\n\n```bash\npython3 scripts/aoa_session_memory.py naming-readiness all \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --refresh-indexes \\\n --write-report\n```\n\nFor one target:\n\n```bash\npython3 scripts/aoa_session_memory.py naming-readiness \\\n --workspace-root \\\n --aoa-root \\\n --write-report\n```\n\n## Reading The Result\n\n- `blocked`: repair missing or unrecoverable raw/index state before naming.\n- `diagnostic_only`: leave the raw-unavailable diagnostic visible unless a\n transcript candidate appears.\n- `needs_reindex`: refresh generated segments/indexes from preserved raw before\n choosing a semantic name.\n- `needs_phase_discovery`: inspect segments and create phase/topic candidates\n before assigning a whole-session name.\n- `phase_discovery_ready`: review the generated phase/topic candidate artifact\n before applying a whole-session name.\n- `ready_for_semantic_name`: apply a semantic session name with raw evidence\n refs, not a blind folder rename.\n- `readable_label`: keep the canonical label unless review finds a better\n semantic name.\n- `low_signal`: likely probe or tiny session; leave it unless it matters.\n- `named`: verify or refine the existing semantic name.\n\n## Verification\n\n- Every scoped session has one readiness class, evidence refs, and an exact\n next route.\n- Index/title freshness and owner-resolution blockers remain visible.\n- The readiness pass changes no semantic session name.\n\n## Stop Line\n\nDo not use readiness as reviewed truth. It is a routing index for the next\npass. Every applied semantic name still needs raw refs and bridge anchors.\n\n## Phase Discovery\n\nFor a session routed to `phase_topic_discovery_before_session_name`, generate\nopen candidates first:\n\n```bash\npython3 scripts/aoa_session_memory.py phase-discovery \\\n --workspace-root \\\n --aoa-root \\\n --write \\\n --write-report\n```\n\nThis writes `naming/phase-discovery.json` and `.md` inside the session. Treat\nthose files as review input, not applied names.\n\n---\nname: aoa-session-naming-wave\ndescription: Use when many `.aoa` session archives need fast, reviewable semantic naming across readiness, sync/reindex preflight, review plans, guarded apply, and quality audit.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-naming-wave\n\nUse this after `naming-readiness` exists but the operator needs to name many\nsessions without opening every archive manually.\n\nThis skill creates a mass review surface. It does not physically rename\narchive directories and it does not treat machine candidates as reviewed truth.\n\n## Trigger Boundary\n\nUse this only after naming readiness and phase/title candidates define a\nbounded reviewable set. Do not apply when indexes are stale, candidates are\nunreviewed, or the wave mixes incompatible readiness classes.\n\n## Procedure\n\n### Build A Wave\n\n```bash\npython3 scripts/aoa_session_memory.py naming-wave build \\\n --workspace-root \\\n --aoa-root \\\n --write \\\n --write-report\n```\n\nThe build step writes a `naming-wave-plan.json` under\n`diagnostics/naming-waves//`. Each item has:\n\n- the current readiness route;\n- the proposed semantic session name, when available;\n- raw evidence refs and coverage;\n- sync/reindex preflight actions, when needed;\n- `reviewed_name`, initially empty;\n- `physical_relabel_allowed=false`.\n\n### Review The Plan\n\nEdit only the plan JSON. For each session that is ready, fill\n`reviewed_name` with the accepted umbrella session name. Leave it empty to\nskip. For preflight items, either set `approved=true` on the item or pass\n`--apply-preflight` deliberately.\n\nDo not use the wave to create aliases. Superseded names should not accumulate\nas routing noise.\n\n### Apply Reviewed Work\n\n```bash\npython3 scripts/aoa_session_memory.py naming-wave apply \\\n --workspace-root \\\n --aoa-root \\\n --plan diagnostics/naming-waves//naming-wave-plan.json \\\n --apply \\\n --write-report\n```\n\n`apply` writes semantic `session` names only for non-empty `reviewed_name`\nitems. It refreshes `SESSION_NAMES.md`, `session-name-index.json`,\n`sessions/INDEX.md`, and `sessions/index.json`.\n\nFor a deliberately fast high-confidence pass, `--accept-proposed` can accept\nonly proposed names whose candidate quality is `ok`. Use it after sampling the\nplan, not as the default route.\n\n### Audit Quality\n\n```bash\npython3 scripts/aoa_session_memory.py naming-wave audit \\\n --workspace-root \\\n --aoa-root \\\n --plan diagnostics/naming-waves//naming-wave-plan.json \\\n --sample-size 18 \\\n --sample-seed wave-quality-1 \\\n --write-report\n```\n\nThe audit reports missing active session names, stale coverage, open phase\nqueues, duplicate slugs, missing anchors, banned placeholder terms, and\ncandidate quality flags. With `--sample-size`, it also writes a deterministic\nstratified sample with raw evidence previews. Treat each sampled defect as a\nclass: add a small golden case or classifier rule, rebuild the wave, and sample\nagain with a new seed.\n\n## Verification\n\n- Preflight and source indexes are current.\n- Apply uses only explicit reviewed names or separately authorized sampled\n high-confidence candidates.\n- Every changed name has old/new refs and refreshed index entries.\n- The deterministic quality audit reports no hidden or unclassified failure.\n\n## Stop Line\n\nMass naming is still a review layer. Use it to compress and route human/agent\nattention, not to replace raw evidence or to move archive directories.\n\n---\nname: aoa-session-phase-discovery\ndescription: Use for long `.aoa` Codex session archives that need phase/topic candidate extraction before applying semantic session names.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-phase-discovery\n\nUse this after `naming-readiness` routes a session to\n`phase_topic_discovery_before_session_name`, or when a long session needs a\ncontinuation name but its internal phases are not yet clear.\n\nThis skill generates open candidates. It does not apply semantic names and does\nnot close review.\n\n## Trigger Boundary\n\nUse this when naming readiness identifies a long or multi-topic session that\nneeds phase candidates. Do not use it for a short session with one reviewed\nname, or when the target/index cannot be resolved uniquely.\n\n## Procedure\n\nGenerate the candidate layer:\n\n```bash\npython3 scripts/aoa_session_memory.py phase-discovery \\\n --workspace-root \\\n --aoa-root \\\n --write \\\n --write-report\n```\n\nThen refresh the indexes:\n\n```bash\npython3 scripts/aoa_session_memory.py naming-readiness all \\\n --workspace-root \\\n --aoa-root \\\n --refresh-indexes \\\n --write-report\n```\n\n## Reading The Artifact\n\n- `naming/phase-discovery.json`: machine-readable candidate list.\n- `naming/phase-discovery.md`: human-readable review table.\n- `candidate.status=candidate_unreviewed`: still open evidence.\n- `candidate.coverage.raw_ranges`: raw-line interval covered by the candidate.\n- `candidate.evidence`: raw refs to inspect before applying a name.\n- `candidate.confidence`: routing confidence, not truth confidence.\n- `candidate.name_basis`: whether the name came from a specific user intent or\n from linked path/event signals.\n- `candidate.quality_flags`: why the candidate needs caution, such as\n `generic_user_intent_present`, `no_specific_user_intent`, or\n `path_or_event_based_name`.\n- `candidate.linked_signals`: the signal bundle used for naming, including\n primary intent, supporting paths, and event-type counts.\n- `candidate.review`: the next action for the candidate. Weak candidates use\n `status=needs_semantic_synthesis` and include an `apply_template` for the\n `review-phase-name` route after synthesis.\n- root `review_queue`: candidates that need semantic synthesis before they can\n be raw-checked and applied.\n\nGeneric prompts such as \"Давай, действуй\" or \"Разложи план\" should not become\ndurable phase names by themselves. They should route to linked path/event\nsignals and remain low-confidence until reviewed.\n\nDo not stop after seeing `quality_flags`. Use `review_queue` as the next work\nsurface: inspect the linked signals, synthesize a stronger reviewed name, then\napply it with the provided command template.\n\n## Applying Names\n\nFor faster long-session work, build batch review packets before synthesizing\nnames in chat:\n\n```bash\npython3 scripts/aoa_session_memory.py phase-review-assist \\\n --workspace-root \\\n --aoa-root \\\n --from-segment \\\n --limit 8 \\\n --write \\\n --write-report\n```\n\nThis writes `naming/phase-review-assist.json`, `.md`, and a\n`phase-review-plan.template.json`. It does not apply names. Use the packets to\nreview several segments at once: user requests, progress markers, decisions,\nchecks, errors, mutations, commands, top paths, and raw refs are already\ncollected from source raw.\n\nAfter reviewed names are filled into a plan JSON, preview or apply the batch\nthrough the guarded plan route:\n\n```bash\npython3 scripts/aoa_session_memory.py apply-phase-review-plan \\\n --plan sessions//naming/phase-review-plan.json \\\n --apply \\\n --write-report\n```\n\nThis still calls `review-phase-name` per segment under the hood. Empty\n`reviewed_name` entries are skipped, and machine candidates are not accepted as\nreviewed truth by the plan route.\n\nPreview one candidate before applying it:\n\n```bash\npython3 scripts/aoa_session_memory.py review-phase-name \\\n --segment \n```\n\nApply only after the name has been reviewed. For weak candidates, pass the\nreviewed name explicitly:\n\n```bash\npython3 scripts/aoa_session_memory.py review-phase-name \\\n --segment \\\n --reviewed-name \"\" \\\n --apply \\\n --write-report\n```\n\nFor candidates marked `ready_for_raw_check`, `--use-candidate` is accepted only\nafter raw samples are checked. It is rejected for\n`needs_semantic_synthesis`.\n\n## Verification\n\n- Every phase candidate carries bounded raw ranges and evidence refs.\n- Generic prompts alone do not become durable names.\n- Candidate confidence remains routing confidence, not truth confidence.\n- No phase or session name changes during discovery.\n\n## Stop Line\n\nDo not rename archive directories from phase-discovery output. Use semantic\n`review-phase-name` entries first, and keep the raw archive as source truth.\n", + "search_text": "navigation\nAssess naming readiness, discover phases, and apply reviewed semantic names.\nsession-memory.stewardship.name\nname\nnaming\nphase\nsemantic-title\nименование\ncapability\nowner-verified\nhealthy\nactive\n1.0.0\ninternal\nauthored\naoa-session-memory\ncapabilities/families/session-memory.yaml\nsession-memory.stewardship\nsession-memory\ncapabilities/families/session-memory.yaml\nName session evidence\nSession set and current naming/index posture.\nsessions\nindexed-session-set\nReady, blocked, and phase-discovery-needed classifications.\nreadiness\nnaming-readiness-report\nIndex or title freshness is unknown.\nA single reviewed name is already ready for explicit application.\nA naming wave or broad semantic renaming is being considered.\navailable\nskill\nassess-readiness\nskills/aoa-session-naming-readiness/SKILL.md\nindependent-callable\nretain-deferred\nReadiness assessment is a non-mutating gate with a distinct classification output.\nexecutable\nUse before broad session renaming or semantic naming work to classify `.aoa` session archives by naming readiness, lower-layer blockers, and phase-discovery needs.\nread-only\ngenerated-write\nTreating readiness as approval to rename.\nHiding lower-layer index blockers.\nForcing one title onto multi-phase sessions.\nbounded-judgment\nreversible\nStop after a bounded readiness report and next route per class.\nsession-memory CLI\ncurrent naming policy and indexes\nEvery classified session names its evidence and blocker.\nThe report performs no rename.\nskill.aoa-session-naming-readiness\nnaming-readiness\nnaming\nblockers\nphase-discovery\nsemantic-title\nskill\nhypothesis\nchallenger\nexperimental\n1.0.0\ndeferred\nNo session name changed.\nEach class has a bounded next route.\nRegenerate the derived report from current indexes.\nauthored\naoa-session-memory\nskills/aoa-session-naming-readiness/SKILL.md\nsession-memory.stewardship.name\nskills/aoa-session-naming-readiness/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-naming-readiness/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nClassify naming readiness before any semantic title mutation.\nforbidden\nread-session-archives\nwrite-derived-session-index\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nSession naming readiness\nauthored-procedure\nReviewed phase and title candidates.\nphases\nphase-candidate-set\nApplied names, receipts, and quality audit refs.\nnames\nnamed-session-set\nThe wave mixes sessions with incompatible readiness classes.\nReadiness\nphase candidates\nreview approval\nor current index freshness is missing.\nA reviewed bounded set of phase or title candidates is ready for a guarded naming wave.\navailable\nskill\nname-wave\nskills/aoa-session-naming-wave/SKILL.md\nindependent-callable\nretain-deferred\nNaming wave has an explicit reviewed mutation boundary, receipts, and quality audit.\nexecutable\nUse when many `.aoa` session archives need fast, reviewable semantic naming across readiness, sync/reindex preflight, review plans, guarded apply, and quality audit.\nruntime-mutation\nhuman-decision\nApplying an unreviewed plan.\nRenaming while reindex mutates the same sessions.\nLosing old-name and new-name receipts.\nbounded-judgment\nconditionally-reversible\nStop after audited apply\nreviewed no-op\nor preserved conflict requiring a new plan.\nsession-memory CLI\nreviewed naming plan\nwrite access to selected root\nPreflight is current.\nApply uses only reviewed plan entries.\nQuality audit resolves every changed session.\nskill.aoa-session-naming-wave\nnaming-wave\nsemantic-name\nguarded-apply\nquality-audit\nrename\nskill\nhypothesis\nchallenger\nexperimental\n1.0.0\ndeferred\nEvery applied name has a receipt.\nNaming quality audit passes or names the exact failed entries.\nUse old-name and new-name receipts to prepare a reviewed reverse plan.\nReindex after recovery.\nauthored\naoa-session-memory\nskills/aoa-session-naming-wave/SKILL.md\nsession-memory.stewardship.name\nskills/aoa-session-naming-wave/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-naming-wave/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nBuild, review, apply, and audit one explicit semantic naming wave.\nforbidden\nread-session-evidence\nwrite-session-names\nhuman-review\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nReviewed session naming wave\nauthored-procedure\nReadiness record identifying phase-discovery need.\nreadiness\nnaming-readiness-report\nEvidence-linked phase and title candidates.\nphases\nphase-candidate-set\nThe target session or its current index cannot be resolved uniquely.\nA short session already has one reviewed semantic name.\nA long or multi-topic session needs phase candidates before semantic naming.\navailable\nskill\ndiscover-phases\nskills/aoa-session-phase-discovery/SKILL.md\nindependent-callable\nretain-deferred\nPhase extraction has a distinct evidence-span output and precedes any naming mutation.\nexecutable\nUse for long `.aoa` Codex session archives that need phase/topic candidate extraction before applying semantic session names.\ngenerated-write\nApplying names during discovery.\nTreating every topical mention as a phase.\nReading unbounded raw content.\nbounded-judgment\nreversible\nStop after reviewable phase candidates or an explicit insufficient-evidence result.\nsession-memory CLI\nindexed session and bounded raw refs\nPhase candidates cite bounded evidence spans.\nCandidate names remain unapplied.\nskill.aoa-session-phase-discovery\nphase-discovery\ntopics\nlong-session\nsemantic-name\nevidence-span\nskill\nhypothesis\nchallenger\nexperimental\n1.0.1\ndeferred\nNo session names changed.\nPhase candidates carry source refs.\nRegenerate or reject candidate artifacts without changing the archive.\nauthored\naoa-session-memory\nskills/aoa-session-phase-discovery/SKILL.md\nsession-memory.stewardship.name\nskills/aoa-session-phase-discovery/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-phase-discovery/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nExtract reviewable phase candidates from long sessions before name application.\nforbidden\nread-session-archives\nwrite-derived-session-index\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nSession phase discovery\nauthored-procedure\n---\nname: aoa-session-naming-readiness\ndescription: Use before broad session renaming or semantic naming work to classify `.aoa` session archives by naming readiness, lower-layer blockers, and phase-discovery needs.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-naming-readiness\n\nUse this before applying session names, semantic aliases, or physical relabels.\n\nNaming is a pressure test of lower layers. Do not start by naming everything.\nStart by asking which sessions are ready, which need phase/topic discovery, and\nwhich must be repaired at raw/index level first.\n\n## Trigger Boundary\n\n- The user asks to rename sessions or improve session names.\n- `SESSION_NAMES.md` or `sessions/INDEX.md` feels too weak to navigate.\n- A long session needs a future continuation route.\n- A session has a custom semantic name proposal but no raw evidence anchor yet.\n- The agent needs a queue before running `name-session`.\n\n## Procedure\n\nRefresh the generated readiness maps:\n\n```bash\npython3 scripts/aoa_session_memory.py naming-readiness all \\\n --workspace-root \\\n --aoa-root \\\n --refresh-indexes \\\n --write-report\n```\n\nFor a bounded window:\n\n```bash\npython3 scripts/aoa_session_memory.py naming-readiness all \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --refresh-indexes \\\n --write-report\n```\n\nFor one target:\n\n```bash\npython3 scripts/aoa_session_memory.py naming-readiness \\\n --workspace-root \\\n --aoa-root \\\n --write-report\n```\n\n## Reading The Result\n\n- `blocked`: repair missing or unrecoverable raw/index state before naming.\n- `diagnostic_only`: leave the raw-unavailable diagnostic visible unless a\n transcript candidate appears.\n- `needs_reindex`: refresh generated segments/indexes from preserved raw before\n choosing a semantic name.\n- `needs_phase_discovery`: inspect segments and create phase/topic candidates\n before assigning a whole-session name.\n- `phase_discovery_ready`: review the generated phase/topic candidate artifact\n before applying a whole-session name.\n- `ready_for_semantic_name`: apply a semantic session name with raw evidence\n refs, not a blind folder rename.\n- `readable_label`: keep the canonical label unless review finds a better\n semantic name.\n- `low_signal`: likely probe or tiny session; leave it unless it matters.\n- `named`: verify or refine the existing semantic name.\n\n## Verification\n\n- Every scoped session has one readiness class, evidence refs, and an exact\n next route.\n- Index/title freshness and owner-resolution blockers remain visible.\n- The readiness pass changes no semantic session name.\n\n## Stop Line\n\nDo not use readiness as reviewed truth. It is a routing index for the next\npass. Every applied semantic name still needs raw refs and bridge anchors.\n\n## Phase Discovery\n\nFor a session routed to `phase_topic_discovery_before_session_name`, generate\nopen candidates first:\n\n```bash\npython3 scripts/aoa_session_memory.py phase-discovery \\\n --workspace-root \\\n --aoa-root \\\n --write \\\n --write-report\n```\n\nThis writes `naming/phase-discovery.json` and `.md` inside the session. Treat\nthose files as review input, not applied names.\n\n---\nname: aoa-session-naming-wave\ndescription: Use when many `.aoa` session archives need fast, reviewable semantic naming across readiness, sync/reindex preflight, review plans, guarded apply, and quality audit.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-naming-wave\n\nUse this after `naming-readiness` exists but the operator needs to name many\nsessions without opening every archive manually.\n\nThis skill creates a mass review surface. It does not physically rename\narchive directories and it does not treat machine candidates as reviewed truth.\n\n## Trigger Boundary\n\nUse this only after naming readiness and phase/title candidates define a\nbounded reviewable set. Do not apply when indexes are stale, candidates are\nunreviewed, or the wave mixes incompatible readiness classes.\n\n## Procedure\n\n### Build A Wave\n\n```bash\npython3 scripts/aoa_session_memory.py naming-wave build \\\n --workspace-root \\\n --aoa-root \\\n --write \\\n --write-report\n```\n\nThe build step writes a `naming-wave-plan.json` under\n`diagnostics/naming-waves//`. Each item has:\n\n- the current readiness route;\n- the proposed semantic session name, when available;\n- raw evidence refs and coverage;\n- sync/reindex preflight actions, when needed;\n- `reviewed_name`, initially empty;\n- `physical_relabel_allowed=false`.\n\n### Review The Plan\n\nEdit only the plan JSON. For each session that is ready, fill\n`reviewed_name` with the accepted umbrella session name. Leave it empty to\nskip. For preflight items, either set `approved=true` on the item or pass\n`--apply-preflight` deliberately.\n\nDo not use the wave to create aliases. Superseded names should not accumulate\nas routing noise.\n\n### Apply Reviewed Work\n\n```bash\npython3 scripts/aoa_session_memory.py naming-wave apply \\\n --workspace-root \\\n --aoa-root \\\n --plan diagnostics/naming-waves//naming-wave-plan.json \\\n --apply \\\n --write-report\n```\n\n`apply` writes semantic `session` names only for non-empty `reviewed_name`\nitems. It refreshes `SESSION_NAMES.md`, `session-name-index.json`,\n`sessions/INDEX.md`, and `sessions/index.json`.\n\nFor a deliberately fast high-confidence pass, `--accept-proposed` can accept\nonly proposed names whose candidate quality is `ok`. Use it after sampling the\nplan, not as the default route.\n\n### Audit Quality\n\n```bash\npython3 scripts/aoa_session_memory.py naming-wave audit \\\n --workspace-root \\\n --aoa-root \\\n --plan diagnostics/naming-waves//naming-wave-plan.json \\\n --sample-size 18 \\\n --sample-seed wave-quality-1 \\\n --write-report\n```\n\nThe audit reports missing active session names, stale coverage, open phase\nqueues, duplicate slugs, missing anchors, banned placeholder terms, and\ncandidate quality flags. With `--sample-size`, it also writes a deterministic\nstratified sample with raw evidence previews. Treat each sampled defect as a\nclass: add a small golden case or classifier rule, rebuild the wave, and sample\nagain with a new seed.\n\n## Verification\n\n- Preflight and source indexes are current.\n- Apply uses only explicit reviewed names or separately authorized sampled\n high-confidence candidates.\n- Every changed name has old/new refs and refreshed index entries.\n- The deterministic quality audit reports no hidden or unclassified failure.\n\n## Stop Line\n\nMass naming is still a review layer. Use it to compress and route human/agent\nattention, not to replace raw evidence or to move archive directories.\n\n---\nname: aoa-session-phase-discovery\ndescription: Use for long `.aoa` Codex session archives that need phase/topic candidate extraction before applying semantic session names.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-phase-discovery\n\nUse this after `naming-readiness` routes a session to\n`phase_topic_discovery_before_session_name`, or when a long session needs a\ncontinuation name but its internal phases are not yet clear.\n\nThis skill generates open candidates. It does not apply semantic names and does\nnot close review.\n\n## Trigger Boundary\n\nUse this when naming readiness identifies a long or multi-topic session that\nneeds phase candidates. Do not use it for a short session with one reviewed\nname, or when the target/index cannot be resolved uniquely.\n\n## Procedure\n\nGenerate the candidate layer:\n\n```bash\npython3 scripts/aoa_session_memory.py phase-discovery \\\n --workspace-root \\\n --aoa-root \\\n --write \\\n --write-report\n```\n\nThen refresh the indexes:\n\n```bash\npython3 scripts/aoa_session_memory.py naming-readiness \\\n --workspace-root \\\n --aoa-root \\\n --refresh-indexes \\\n --write-report\n```\n\nKeep the same session selector through this follow-on route. The refresh may\nrewrite shared naming maps as a generated dependency, but `all` is a separate\nscope choice: use it only when that scope is explicitly authorized and a\nshared index dependency makes it necessary. Discovery never widens one\nselected session into an archive-wide naming pass by itself.\n\n## Reading The Artifact\n\n- `naming/phase-discovery.json`: machine-readable candidate list.\n- `naming/phase-discovery.md`: human-readable review table.\n- `candidate.status=candidate_unreviewed`: still open evidence.\n- `candidate.coverage.raw_ranges`: raw-line interval covered by the candidate.\n- `candidate.evidence`: raw refs to inspect before applying a name.\n- `candidate.confidence`: routing confidence, not truth confidence.\n- `candidate.name_basis`: whether the name came from a specific user intent or\n from linked path/event signals.\n- `candidate.quality_flags`: why the candidate needs caution, such as\n `generic_user_intent_present`, `no_specific_user_intent`, or\n `path_or_event_based_name`.\n- `candidate.linked_signals`: the signal bundle used for naming, including\n primary intent, supporting paths, and event-type counts.\n- `candidate.review`: the next action for the candidate. Weak candidates use\n `status=needs_semantic_synthesis` and include an `apply_template` for the\n `review-phase-name` route after synthesis.\n- root `review_queue`: candidates that need semantic synthesis before they can\n be raw-checked and applied.\n\nGeneric prompts such as \"Давай, действуй\" or \"Разложи план\" should not become\ndurable phase names by themselves. They should route to linked path/event\nsignals and remain low-confidence until reviewed.\n\nDo not stop after seeing `quality_flags`. Use `review_queue` as the next work\nsurface: inspect the linked signals, synthesize a stronger reviewed name, then\napply it with the provided command template.\n\n## Applying Names\n\nFor faster long-session work, build batch review packets before synthesizing\nnames in chat:\n\n```bash\npython3 scripts/aoa_session_memory.py phase-review-assist \\\n --workspace-root \\\n --aoa-root \\\n --from-segment \\\n --limit 8 \\\n --write \\\n --write-report\n```\n\nThis writes `naming/phase-review-assist.json`, `.md`, and a\n`phase-review-plan.template.json`. It does not apply names. Use the packets to\nreview several segments at once: user requests, progress markers, decisions,\nchecks, errors, mutations, commands, top paths, and raw refs are already\ncollected from source raw.\n\nAfter reviewed names are filled into a plan JSON, preview or apply the batch\nthrough the guarded plan route:\n\n```bash\npython3 scripts/aoa_session_memory.py apply-phase-review-plan \\\n --plan sessions//naming/phase-review-plan.json \\\n --apply \\\n --write-report\n```\n\nThis still calls `review-phase-name` per segment under the hood. Empty\n`reviewed_name` entries are skipped, and machine candidates are not accepted as\nreviewed truth by the plan route.\n\nPreview one candidate before applying it:\n\n```bash\npython3 scripts/aoa_session_memory.py review-phase-name \\\n --segment \n```\n\nApply only after the name has been reviewed. For weak candidates, pass the\nreviewed name explicitly:\n\n```bash\npython3 scripts/aoa_session_memory.py review-phase-name \\\n --segment \\\n --reviewed-name \"\" \\\n --apply \\\n --write-report\n```\n\nFor candidates marked `ready_for_raw_check`, `--use-candidate` is accepted only\nafter raw samples are checked. It is rejected for\n`needs_semantic_synthesis`.\n\n## Verification\n\n- Every phase candidate carries bounded raw ranges and evidence refs.\n- Generic prompts alone do not become durable names.\n- Candidate confidence remains routing confidence, not truth confidence.\n- No phase or session name changes during discovery.\n\n## Stop Line\n\nDo not rename archive directories from phase-discovery output. Use semantic\n`review-phase-name` entries first, and keep the raw archive as source truth.\n", "title": "Name session evidence", "tokens": [ "1.0.0", + "1.0.1", "18", "21", "accept", @@ -10813,6 +10904,7 @@ "approval", "approved", "archive", + "archive-wide", "archives", "artifact", "artifacts", @@ -10883,6 +10975,7 @@ "check", "checked", "checks", + "choice", "choosing", "cite", "class", @@ -10923,6 +11016,7 @@ "deferred", "define", "deliberately", + "dependency", "derived", "description", "deterministic", @@ -10974,6 +11068,8 @@ "first", "flags", "folder", + "follow", + "follow-on", "forbidden", "forcing", "freshness", @@ -11031,6 +11127,7 @@ "item", "items", "its", + "itself", "json", "judgment", "keep", @@ -11055,6 +11152,7 @@ "lower-layer", "machine", "machine-readable", + "makes", "manual", "manually", "many", @@ -11063,6 +11161,7 @@ "markers", "mass", "matters", + "may", "md", "memory", "memory.py", @@ -11095,9 +11194,11 @@ "naming-waves", "navigate", "navigation", + "necessary", "need", "needed", "needs", + "never", "new", "new-name", "next", @@ -11226,6 +11327,7 @@ "reviewable", "reviewed", "reviewed-name", + "rewrite", "root", "roots", "route", @@ -11252,9 +11354,11 @@ "segment-id", "segments", "selected", + "selector", "semantic", "semantic-name", "semantic-title", + "separate", "separately", "session", "session-label-or-id", @@ -11266,6 +11370,7 @@ "sessions", "set", "several", + "shared", "short", "should", "signal", @@ -11366,6 +11471,8 @@ "whole-session", "whose", "why", + "wide", + "widens", "window", "without", "work", @@ -11389,6 +11496,7 @@ { "contract_tokens": [ "1.0.0", + "1.0.1", "abi", "access", "active", @@ -11590,6 +11698,7 @@ ], "package_tokens": [ "10", + "21", "absent", "action", "actor", @@ -11607,6 +11716,8 @@ "archives", "artifacts", "audit", + "authorized", + "automatic", "available", "backlog", "bash", @@ -11616,20 +11727,26 @@ "broad", "but", "cached", + "carry", "catch", "catch-up", "catchup", "changed", "changes", "classifier", + "command", + "companion", "completeness", "contain", "correlation", "counts", "counts.diagnostic", "current", + "days", + "declared", "deep", "delete", + "dependency", "description", "diagnostic", "diagnostics", @@ -11638,8 +11755,11 @@ "doctor", "dry", "dry-run", + "each", "event", + "every", "evidence", + "exact", "existing", "explicit", "explicitly", @@ -11647,6 +11767,8 @@ "family", "fields", "finish", + "follow", + "follow-on", "fresh", "full", "generated", @@ -11676,22 +11798,27 @@ "metadata", "missing", "mode", + "moving", "name", "named", "need", "needed", "needs", + "never", "next", "no", "not", + "obtain", "old", "one", + "one-session", "only", "outcome", "packet", - "pass", "payload", "phase", + "plus", + "predicate", "preserved", "procedure", "profile", @@ -11706,6 +11833,7 @@ "re", "re-importing", "reads", + "reason", "rebuild", "rebuilt", "records", @@ -11720,6 +11848,7 @@ "relationship", "remaining", "repair", + "repeat", "report", "reports", "requested", @@ -11729,19 +11858,27 @@ "route", "run", "running", + "same", "schema", "scope", "scripts", "search", "segment", "segments", + "selected", + "selector", "semantic", + "separate", + "separately", "session", "session-label-or-id", "session-memory", "sessions", + "shared", + "shared-dependency", "shows", - "smoke", + "since", + "since-days", "stale", "start", "status", @@ -11751,6 +11888,7 @@ "taxonomy", "tests", "through", + "trial", "trigger", "under", "universal", @@ -11762,6 +11900,7 @@ "verify", "when", "where", + "window", "without", "workspace", "workspace-root", @@ -11830,11 +11969,13 @@ "schema", "индекс" ], - "search_text": "navigation\nRebuild deterministic session and search projections from preserved raw evidence.\nsession-memory.stewardship.project\nproject\nreindex\ngenerated\nprojection\nиндекс\ncapability\nowner-verified\nhealthy\nactive\n1.0.0\ninternal\nauthored\naoa-session-memory\ncapabilities/families/session-memory.yaml\nsession-memory.stewardship\nsession-memory\ncapabilities/families/session-memory.yaml\nProject session evidence\nPreserved raw archive set and rebuild scope.\narchives\narchived-session-set\nRebuilt segments, indexes, and projection receipts.\nindexes\nindexed-session-set\nProvider freshness is stale but the owning projection has not been identified.\nRaw evidence itself is missing or the request only needs a query against a current index.\nPreserved archives require projection rebuild after source-owned classifier\nschema\ntaxonomy\nor relation changes.\navailable\nskill\nreindex\nskills/aoa-session-reindex/SKILL.md\nindependent-callable\nretain-deferred\nProjection rebuild has a distinct archive-to-index ABI and raw-preservation invariant.\nexecutable\nUse when existing `.aoa` session archives need generated segment Markdown and indexes rebuilt from preserved raw JSONL after taxonomy, classifier, relationship, or index-schema changes.\ngenerated-write\nruntime-mutation\nMutating raw evidence.\nReindexing all sessions before a focused trial.\nClaiming current provider freshness without status verification.\ndeterministic\nreversible\nStop after bounded rebuild parity or a precise source-integrity blocker.\npython3\nsession-memory CLI\nwrite access to derived projection paths\nRaw source hashes remain unchanged.\nGenerated parity and provider freshness pass.\nRegistry and doctor remain healthy.\nskill.aoa-session-reindex\nreindex\nrebuild\nprojection\nclassifier\nschema\nraw-preservation\nskill\nhypothesis\nchallenger\nexperimental\n1.0.0\ndeferred\nGenerated projections match current source contracts.\nRaw hashes are unchanged.\nRebuild again from preserved raw blocks.\nRestore only generated snapshots when a consumer requires rollback.\nauthored\naoa-session-memory\nskills/aoa-session-reindex/SKILL.md\nsession-memory.stewardship.project\nskills/aoa-session-reindex/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-reindex/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nDeterministically rebuild derived session projections without changing raw evidence.\nforbidden\nread-session-archives\nwrite-derived-session-index\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nSession projection rebuild\nauthored-procedure\n---\nname: aoa-session-reindex\ndescription: Use when existing `.aoa` session archives need generated segment Markdown and indexes rebuilt from preserved raw JSONL after taxonomy, classifier, relationship, or index-schema changes.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-reindex\n\nUse this when the archive already has raw JSONL but generated segment indexes\nneed to be regenerated under the current classifier.\n\n## Trigger Boundary\n\n- Event taxonomy, universal facets, or relationship indexing changed.\n- Existing sessions need fresh `segments/*.index.json` without re-importing raw.\n- A batch report shows stale or missing index fields.\n- The agent needs to verify old archives under the current index schema.\n\n## Procedure\n\nStart with a dry run:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions all \\\n --workspace-root \\\n --aoa-root \\\n --dry-run \\\n --write-report\n```\n\nFor a bounded smoke pass:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions all \\\n --workspace-root \\\n --aoa-root \\\n --limit 10 \\\n --write-report\n```\n\nFor one target session:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions \\\n --workspace-root \\\n --aoa-root \\\n --write-report\n```\n\nAfter a classifier or schema reindex, refresh generated projections through the\nnamed catch-up route:\n\n```bash\npython3 scripts/aoa_session_memory.py projection-catchup all \\\n --workspace-root \\\n --aoa-root \\\n --apply \\\n --write-report\n```\n\nUse `--profile deep` only when the catch-up payload reports that a heavy full\nsearch rebuild or graph repair is required.\n\n## Verification\n\n- `counts.diagnostic` is absent or zero.\n- Segment indexes contain `by_family`, `by_phase`, `by_actor`,\n `by_action`, `by_outcome`, and `by_correlation`.\n- Event records contain universal facets and relationship refs where available.\n- `projection-catchup` reports no remaining projection backlog, or returns the\n explicit next route needed to finish it.\n- `projection-status` reads the latest projection-catchup completeness packet\n without running the writer route, and uses cached maintenance diagnostics\n unless `--refresh-maintenance` is explicitly requested.\n- Run `doctor`, `audit`, and tests after broad reindexing.\n\n## Stop Line\n\nDo not delete raw JSONL or distillation artifacts. Reindex regenerates generated\nsegments and indexes from raw evidence; it is not a semantic promotion step.\n", + "search_text": "navigation\nRebuild deterministic session and search projections from preserved raw evidence.\nsession-memory.stewardship.project\nproject\nreindex\ngenerated\nprojection\nиндекс\ncapability\nowner-verified\nhealthy\nactive\n1.0.0\ninternal\nauthored\naoa-session-memory\ncapabilities/families/session-memory.yaml\nsession-memory.stewardship\nsession-memory\ncapabilities/families/session-memory.yaml\nProject session evidence\nPreserved raw archive set and rebuild scope.\narchives\narchived-session-set\nRebuilt segments, indexes, and projection receipts.\nindexes\nindexed-session-set\nProvider freshness is stale but the owning projection has not been identified.\nRaw evidence itself is missing or the request only needs a query against a current index.\nPreserved archives require projection rebuild after source-owned classifier\nschema\ntaxonomy\nor relation changes.\navailable\nskill\nreindex\nskills/aoa-session-reindex/SKILL.md\nindependent-callable\nretain-deferred\nProjection rebuild has a distinct archive-to-index ABI and raw-preservation invariant.\nexecutable\nUse when existing `.aoa` session archives need generated segment Markdown and indexes rebuilt from preserved raw JSONL after taxonomy, classifier, relationship, or index-schema changes.\ngenerated-write\nruntime-mutation\nMutating raw evidence.\nReindexing all sessions before a focused trial.\nClaiming current provider freshness without status verification.\ndeterministic\nreversible\nStop after bounded rebuild parity or a precise source-integrity blocker.\npython3\nsession-memory CLI\nwrite access to derived projection paths\nRaw source hashes remain unchanged.\nGenerated parity and provider freshness pass.\nRegistry and doctor remain healthy.\nskill.aoa-session-reindex\nreindex\nrebuild\nprojection\nclassifier\nschema\nraw-preservation\nskill\nhypothesis\nchallenger\nexperimental\n1.0.1\ndeferred\nGenerated projections match current source contracts.\nRaw hashes are unchanged.\nRebuild again from preserved raw blocks.\nRestore only generated snapshots when a consumer requires rollback.\nauthored\naoa-session-memory\nskills/aoa-session-reindex/SKILL.md\nsession-memory.stewardship.project\nskills/aoa-session-reindex/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-reindex/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nDeterministically rebuild derived session projections without changing raw evidence.\nforbidden\nread-session-archives\nwrite-derived-session-index\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nSession projection rebuild\nauthored-procedure\n---\nname: aoa-session-reindex\ndescription: Use when existing `.aoa` session archives need generated segment Markdown and indexes rebuilt from preserved raw JSONL after taxonomy, classifier, relationship, or index-schema changes.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-reindex\n\nUse this when the archive already has raw JSONL but generated segment indexes\nneed to be regenerated under the current classifier.\n\n## Trigger Boundary\n\n- Event taxonomy, universal facets, or relationship indexing changed.\n- Existing sessions need fresh `segments/*.index.json` without re-importing raw.\n- A batch report shows stale or missing index fields.\n- The agent needs to verify old archives under the current index schema.\n\n## Procedure\n\nStart with a dry run for the selected session:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions \\\n --workspace-root \\\n --aoa-root \\\n --dry-run \\\n --write-report\n```\n\nFor an explicitly authorized bounded batch with a shared projection\ndependency, use `all` with the same declared window and limit in every batch\ncommand:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions all \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --limit 10 \\\n --write-report\n```\n\n`all` is never an automatic companion to a one-session trial. Carry the\nselected session or the exact bounded batch predicate into each follow-on\nroute, and obtain separate scope plus a shared-dependency reason when moving\nfrom one session to `all`.\n\nFor one target session:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions \\\n --workspace-root \\\n --aoa-root \\\n --write-report\n```\n\nAfter a classifier or schema reindex, refresh generated projections through the\nnamed catch-up route for the same selected session:\n\n```bash\npython3 scripts/aoa_session_memory.py projection-catchup \\\n --workspace-root \\\n --aoa-root \\\n --apply \\\n --write-report\n```\n\nFor a separately authorized bounded batch, repeat the same `all` selector and\nwindow explicitly:\n\n```bash\npython3 scripts/aoa_session_memory.py projection-catchup all \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --limit 10 \\\n --apply \\\n --write-report\n```\n\nUse `--profile deep` only when the catch-up payload reports that a heavy full\nsearch rebuild or graph repair is required.\n\n## Verification\n\n- `counts.diagnostic` is absent or zero.\n- Segment indexes contain `by_family`, `by_phase`, `by_actor`,\n `by_action`, `by_outcome`, and `by_correlation`.\n- Event records contain universal facets and relationship refs where available.\n- `projection-catchup` reports no remaining projection backlog, or returns the\n explicit next route needed to finish it.\n- `projection-status` reads the latest projection-catchup completeness packet\n without running the writer route, and uses cached maintenance diagnostics\n unless `--refresh-maintenance` is explicitly requested.\n- Run `doctor`, `audit`, and tests after broad reindexing.\n\n## Stop Line\n\nDo not delete raw JSONL or distillation artifacts. Reindex regenerates generated\nsegments and indexes from raw evidence; it is not a semantic promotion step.\n", "title": "Project session evidence", "tokens": [ "1.0.0", + "1.0.1", "10", + "21", "abi", "absent", "access", @@ -11866,6 +12007,8 @@ "audit", "authored", "authored-procedure", + "authorized", + "automatic", "available", "backlog", "bash", @@ -11883,6 +12026,7 @@ "capabilities", "capability", "capability-home-v1", + "carry", "catch", "catch-up", "catchup", @@ -11894,6 +12038,7 @@ "classifier", "cli", "command", + "companion", "completeness", "consumer", "contain", @@ -11903,9 +12048,12 @@ "counts.diagnostic", "current", "data", + "days", + "declared", "deep", "deferred", "delete", + "dependency", "derived", "description", "deterministic", @@ -11918,8 +12066,11 @@ "doctor", "dry", "dry-run", + "each", "event", + "every", "evidence", + "exact", "executable", "existing", "experimental", @@ -11931,6 +12082,8 @@ "fields", "finish", "focused", + "follow", + "follow-on", "forbidden", "fresh", "freshness", @@ -11981,6 +12134,7 @@ "metadata", "missing", "mode", + "moving", "mutating", "mutation", "name", @@ -11989,11 +12143,14 @@ "need", "needed", "needs", + "never", "next", "no", "not", + "obtain", "old", "one", + "one-session", "only", "outcome", "owned", @@ -12007,7 +12164,9 @@ "paths", "payload", "phase", + "plus", "precise", + "predicate", "preservation", "preserved", "procedure", @@ -12029,6 +12188,7 @@ "read", "read-session-archives", "reads", + "reason", "rebuild", "rebuilt", "receipts", @@ -12047,6 +12207,7 @@ "remain", "remaining", "repair", + "repeat", "report", "reports", "request", @@ -12068,13 +12229,18 @@ "running", "runtime", "runtime-mutation", + "same", "schema", "scope", "scripts", "search", "segment", "segments", + "selected", + "selector", "semantic", + "separate", + "separately", "session", "session-label-or-id", "session-memory", @@ -12083,12 +12249,15 @@ "session-memory.yaml", "sessions", "set", + "shared", + "shared-dependency", "shows", + "since", + "since-days", "skill", "skill.aoa-session-reindex", "skill.md", "skills", - "smoke", "snapshots", "source", "source-integrity", @@ -12121,6 +12290,7 @@ "verify", "when", "where", + "window", "without", "workspace", "workspace-root", @@ -17528,7 +17698,7 @@ }, { "contract_tokens": [ - "1.0.0", + "1.0.1", "accepted", "across", "active", @@ -17732,6 +17902,7 @@ "use" ], "package_tokens": [ + "10", "21", "active", "adaptive", @@ -17746,6 +17917,7 @@ "all", "already", "amend", + "any", "aoa", "aoa-root", "aoa-session-batch-distill", @@ -17755,13 +17927,16 @@ "apply", "applying", "archive", + "archive-wide", "archived", + "argument", "artifact", "artifacts", "asks", "assisted", "attention", - "audit", + "authorization", + "authorized", "auto", "automatic", "automation", @@ -17770,25 +17945,38 @@ "batch-distill", "been", "before", + "behavior", + "binding", "boundary", + "bounded", "broad", "bundle", + "but", "can", "candidate", "candidates", "carry", "change", + "changed", "checking", + "checks", + "chronological", "claim", "claims", "classification", "cli", "coherent", "command", + "compare", "contains", "context", "conveyor", + "current", + "data", + "data-processing", "days", + "decision", + "declare", "description", "design", "design.agents.md", @@ -17799,15 +17987,17 @@ "distillation", "do", "docs", - "doctor", + "does", "durable", "each", + "emit", "entire", "entry", "every", "evidence", "evidence-sampled", "existing", + "explicit", "explicitly", "facing", "failure", @@ -17815,17 +18005,24 @@ "first", "first-pass", "first-wave", + "follow", + "follow-on", "force", "gaps", "grounded", "grounding", "group", + "handoff", + "handoffs", "has", "health", "historical", "hook", "hooks", + "ids", "if", + "implementations", + "implied", "imply", "imported", "improve", @@ -17834,9 +18031,11 @@ "index", "indexed", "indexes", + "inside", "inspect", "interpretation", "invocation", + "its", "itself", "laid", "lanes", @@ -17845,6 +18044,8 @@ "license", "limit", "line", + "maintenance", + "make", "manifests", "manual", "manual-review", @@ -17860,6 +18061,7 @@ "memory", "memory.py", "metadata", + "mismatch", "misses", "missing", "mode", @@ -17870,14 +18072,19 @@ "nearest", "need", "needs", + "never", + "new", "no", "noisy", "not", + "one", "only", "open", "operator", + "oriented", "out", "owner", + "owner-routed", "packetizing", "parser", "pass", @@ -17886,11 +18093,15 @@ "patterns", "plan", "planning", + "positional", + "predicate", "present", "pretending", + "prior", "procedure", "process", "processed", + "processing", "produced", "profile", "project", @@ -17907,6 +18118,8 @@ "queue", "queues", "raw", + "re", + "re-plan", "read", "reading", "readme", @@ -17927,11 +18140,15 @@ "resolution", "resolved", "responsible", + "retrain", "review", "reviewed", "rolling", "root", + "route", + "routed", "rule", + "run", "safe", "same", "sampled", @@ -17940,10 +18157,15 @@ "scoped", "scripts", "segment", + "selected", + "selector", + "separately", "separates", "session", "session-memory", "sessions", + "set", + "set-oriented", "shape", "should", "shows", @@ -17953,18 +18175,26 @@ "skills", "skip", "smoke", + "source", "specific", "start", "stop", "such", "surface", + "task", "terminal", "tests", "them", + "then", + "through", + "title", + "title-repair", "titles", "transcript", "trigger", "truth", + "under", + "until", "use", "user", "verification", @@ -17973,6 +18203,7 @@ "weak", "when", "while", + "wide", "window", "without", "work", @@ -18035,10 +18266,11 @@ "review", "wave" ], - "search_text": "Reviewed bounded session set.\nsessions\nindexed-session-set\nProvisional candidates and separated review queues.\ncandidates\npromotion-candidate-set\nNaming or indexing quality is too weak to define the batch safely.\nExactly one indexed session is in scope; use first-pass distill.\nThe operator expects automatic promotion.\nA reviewed set of indexed sessions needs a bounded provisional distillation wave.\navailable\nskill\ndistill-batch\nskills/aoa-session-batch-distill/SKILL.md\nindependent-callable\nretain-deferred\nBatch orchestration has distinct resource, completeness, and queue-separation failure modes.\nexecutable\nUse when many indexed `.aoa` sessions need a first-wave distillation conveyor that separates safe automatic first-pass artifacts from manual review and mechanics-improvement queues.\ngenerated-write\nruntime-mutation\nUnbounded batch size.\nHiding skipped or failed sessions.\nMixing mechanics-improvement pressure with accepted knowledge.\nbounded-judgment\nreversible\nStop after the declared wave is fully receipted or a resource or evidence gate blocks it.\nsession-memory CLI\nindexed sessions\nmaintenance coordination\nEvery session has a terminal result.\nCandidate and manual-review queues remain separate.\nNo promotion occurs.\nskill.aoa-session-batch-distill\nbatch-distill\nconveyor\nwave\nmanual-review-queue\nmechanics-queue\nskill\nhypothesis\nchallenger\nexperimental\n1.0.0\ndeferred\nEvery scoped session has a terminal receipt.\nReview queues remain unpromoted.\nResume from per-session receipts.\nRemove or supersede only generated provisional wave artifacts.\nauthored\naoa-session-memory\nskills/aoa-session-batch-distill/SKILL.md\nsession-memory.stewardship.curate\nskills/aoa-session-batch-distill/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-batch-distill/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nApply bounded first-pass extraction across a reviewed session set and separate terminal review queues.\nforbidden\nread-session-archives\nwrite-derived-session-index\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nBatch session distillation\nauthored-procedure\n---\nname: aoa-session-batch-distill\ndescription: Use when many indexed `.aoa` sessions need a first-wave distillation conveyor that separates safe automatic first-pass artifacts from manual review and mechanics-improvement queues.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-batch-distill\n\nUse this when a group of archived sessions needs to be laid out for first-wave\ndistillation without pretending that automatic classification is reviewed\ntruth.\n\n## Trigger Boundary\n\n- The user asks to process many historical sessions.\n- A rolling window has already been imported into `.aoa`.\n- The agent needs a queue that separates automatic first-pass work from manual\n reading, mechanics candidates, and diagnostics.\n- The session-memory mechanism itself may improve while the queue is processed.\n\n## Procedure\n\nStart with a planning report:\n\n```bash\npython3 scripts/aoa_session_memory.py batch-distill \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --write-report\n```\n\nReview the report lanes:\n\n- `auto_first_pass`: safe to write provisional first-pass artifacts from\n indexes.\n- `manual_review`: requires a responsible review layer before promotion; this\n can be agent-assisted and evidence-sampled, not raw rereading by the operator.\n- `mechanics_candidate`: may imply tests, skills, hooks, docs, or CLI\n improvements.\n- `diagnostic`: repair raw/index health before distillation.\n\nInspect owner quality before applying a broad pass. Each profile contains\n`project_grounding` and `owner_resolution`; fallback grounding is not the same\nas a resolved owner.\n\nRepair weak imported titles before a broad manual review wave:\n\n```bash\npython3 scripts/aoa_session_memory.py repair-session-titles all \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --write-report\n```\n\nAdd `--apply` only after checking the plan.\n\nApply only after the queue shape is coherent:\n\n```bash\npython3 scripts/aoa_session_memory.py batch-distill \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --apply \\\n --write-report\n```\n\nUse `--limit` for the first smoke batch. Use `--force` only when an existing\nfirst-pass artifact must be rebuilt.\n\nAfter the automatic first-pass layer is coherent, use\n`aoa-session-manual-review` for packetizing manual-review lanes and aggregating\npromotion candidates without promoting them.\n\n## Review Rule\n\nAutomatic work may write only provisional first-pass distillation artifacts.\nIt may not promote a pattern, amend a skill, add automation, or mark a claim as\nreviewed.\n\nManual review means project-grounded review. Before promoting a claim, inspect\nthe session's `project_grounding` entry and read the nearest relevant\n`AGENTS.md`, `DESIGN.md`, agent-facing design surface such as\n`DESIGN.AGENTS.md` when present, or README. The operator should review\npromoted claims and samples, not carry the entire archive in active attention.\n\n## Adaptive Rule\n\nAfter each batch, inspect `improvement_candidates` in the report. If the queue\nshows recurring parser misses, noisy names, missing indexes, hook gaps, or\nrepeatable command patterns, improve the bundle itself with a narrow patch and\nrerun `doctor`, `audit`, and tests.\n\n## Verification\n\n- Every scoped session has an automatic, manual-review, mechanics-candidate,\n diagnostic, skip, or failure terminal receipt.\n- All produced artifacts remain explicitly provisional.\n- Owner resolution and evidence refs are present before project-specific\n interpretation.\n- No claim, skill change, automation, or durable lesson was promoted.\n\n## Stop Line\n\nDo not open every raw transcript in context. Use the batch report, registry,\nmanifests, distillation indexes, and segment indexes first.\n\n---\nname: aoa-session-batch-distill\ndescription: Use when many indexed `.aoa` sessions need a first-wave distillation conveyor that separates safe automatic first-pass artifacts from manual review and mechanics-improvement queues.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-batch-distill\n\nUse this when a group of archived sessions needs to be laid out for first-wave\ndistillation without pretending that automatic classification is reviewed\ntruth.\n\n## Trigger Boundary\n\n- The user asks to process many historical sessions.\n- A rolling window has already been imported into `.aoa`.\n- The agent needs a queue that separates automatic first-pass work from manual\n reading, mechanics candidates, and diagnostics.\n- The session-memory mechanism itself may improve while the queue is processed.\n\n## Procedure\n\nStart with a planning report:\n\n```bash\npython3 scripts/aoa_session_memory.py batch-distill \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --write-report\n```\n\nReview the report lanes:\n\n- `auto_first_pass`: safe to write provisional first-pass artifacts from\n indexes.\n- `manual_review`: requires a responsible review layer before promotion; this\n can be agent-assisted and evidence-sampled, not raw rereading by the operator.\n- `mechanics_candidate`: may imply tests, skills, hooks, docs, or CLI\n improvements.\n- `diagnostic`: repair raw/index health before distillation.\n\nInspect owner quality before applying a broad pass. Each profile contains\n`project_grounding` and `owner_resolution`; fallback grounding is not the same\nas a resolved owner.\n\nRepair weak imported titles before a broad manual review wave:\n\n```bash\npython3 scripts/aoa_session_memory.py repair-session-titles all \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --write-report\n```\n\nAdd `--apply` only after checking the plan.\n\nApply only after the queue shape is coherent:\n\n```bash\npython3 scripts/aoa_session_memory.py batch-distill \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --apply \\\n --write-report\n```\n\nUse `--limit` for the first smoke batch. Use `--force` only when an existing\nfirst-pass artifact must be rebuilt.\n\nAfter the automatic first-pass layer is coherent, use\n`aoa-session-manual-review` for packetizing manual-review lanes and aggregating\npromotion candidates without promoting them.\n\n## Review Rule\n\nAutomatic work may write only provisional first-pass distillation artifacts.\nIt may not promote a pattern, amend a skill, add automation, or mark a claim as\nreviewed.\n\nManual review means project-grounded review. Before promoting a claim, inspect\nthe session's `project_grounding` entry and read the nearest relevant\n`AGENTS.md`, `DESIGN.md`, agent-facing design surface such as\n`DESIGN.AGENTS.md` when present, or README. The operator should review\npromoted claims and samples, not carry the entire archive in active attention.\n\n## Adaptive Rule\n\nAfter each batch, inspect `improvement_candidates` in the report. If the queue\nshows recurring parser misses, noisy names, missing indexes, hook gaps, or\nrepeatable command patterns, improve the bundle itself with a narrow patch and\nrerun `doctor`, `audit`, and tests.\n\n## Verification\n\n- Every scoped session has an automatic, manual-review, mechanics-candidate,\n diagnostic, skip, or failure terminal receipt.\n- All produced artifacts remain explicitly provisional.\n- Owner resolution and evidence refs are present before project-specific\n interpretation.\n- No claim, skill change, automation, or durable lesson was promoted.\n\n## Stop Line\n\nDo not open every raw transcript in context. Use the batch report, registry,\nmanifests, distillation indexes, and segment indexes first.\n", + "search_text": "Reviewed bounded session set.\nsessions\nindexed-session-set\nProvisional candidates and separated review queues.\ncandidates\npromotion-candidate-set\nNaming or indexing quality is too weak to define the batch safely.\nExactly one indexed session is in scope; use first-pass distill.\nThe operator expects automatic promotion.\nA reviewed set of indexed sessions needs a bounded provisional distillation wave.\navailable\nskill\ndistill-batch\nskills/aoa-session-batch-distill/SKILL.md\nindependent-callable\nretain-deferred\nBatch orchestration has distinct resource, completeness, and queue-separation failure modes.\nexecutable\nUse when many indexed `.aoa` sessions need a first-wave distillation conveyor that separates safe automatic first-pass artifacts from manual review and mechanics-improvement queues.\ngenerated-write\nruntime-mutation\nUnbounded batch size.\nHiding skipped or failed sessions.\nMixing mechanics-improvement pressure with accepted knowledge.\nbounded-judgment\nreversible\nStop after the declared wave is fully receipted or a resource or evidence gate blocks it.\nsession-memory CLI\nindexed sessions\nmaintenance coordination\nEvery session has a terminal result.\nCandidate and manual-review queues remain separate.\nNo promotion occurs.\nskill.aoa-session-batch-distill\nbatch-distill\nconveyor\nwave\nmanual-review-queue\nmechanics-queue\nskill\nhypothesis\nchallenger\nexperimental\n1.0.1\ndeferred\nEvery scoped session has a terminal receipt.\nReview queues remain unpromoted.\nResume from per-session receipts.\nRemove or supersede only generated provisional wave artifacts.\nauthored\naoa-session-memory\nskills/aoa-session-batch-distill/SKILL.md\nsession-memory.stewardship.curate\nskills/aoa-session-batch-distill/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-batch-distill/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nApply bounded first-pass extraction across a reviewed session set and separate terminal review queues.\nforbidden\nread-session-archives\nwrite-derived-session-index\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nBatch session distillation\nauthored-procedure\n---\nname: aoa-session-batch-distill\ndescription: Use when many indexed `.aoa` sessions need a first-wave distillation conveyor that separates safe automatic first-pass artifacts from manual review and mechanics-improvement queues.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-batch-distill\n\nUse this when a group of archived sessions needs to be laid out for first-wave\ndistillation without pretending that automatic classification is reviewed\ntruth.\n\n## Trigger Boundary\n\n- The user asks to process many historical sessions.\n- A rolling window has already been imported into `.aoa`.\n- The agent needs a queue that separates automatic first-pass work from manual\n reading, mechanics candidates, and diagnostics.\n- The session-memory mechanism itself may improve while the queue is processed.\n\n## Procedure\n\nBatch distillation is set-oriented and has no positional session argument.\nDeclare a bounded set with `--since`, `--since-days`, `--until`, and/or\n`--limit`, then carry the same predicate through any separately authorized\nfollow-on route. The current batch and title-repair implementations use the\nsame chronological registry selector, but a report is the binding set: before\nany follow-on apply, compare its selected session IDs with the prior report.\nStop on any mismatch and re-plan that changed set under explicit scope\nauthorization. An archive-wide `all` selector in a maintenance command is a\nnew scope decision; it is never implied by processing one session or one\nbounded batch.\n\nStart with a planning report:\n\n```bash\npython3 scripts/aoa_session_memory.py batch-distill \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --limit 10 \\\n --write-report\n```\n\nReview the report lanes:\n\n- `auto_first_pass`: safe to write provisional first-pass artifacts from\n indexes.\n- `manual_review`: requires a responsible review layer before promotion; this\n can be agent-assisted and evidence-sampled, not raw rereading by the operator.\n- `mechanics_candidate`: may imply tests, skills, hooks, docs, or CLI\n improvements.\n- `diagnostic`: repair raw/index health before distillation.\n\nInspect owner quality before applying a broad pass. Each profile contains\n`project_grounding` and `owner_resolution`; fallback grounding is not the same\nas a resolved owner.\n\nIf title repair is separately authorized for this same bounded set, repair\nweak imported titles before a broad manual review wave:\n\n```bash\npython3 scripts/aoa_session_memory.py repair-session-titles all \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --limit 10 \\\n --write-report\n```\n\nAdd `--apply` only after checking the plan.\n\nApply only after the queue shape is coherent:\n\n```bash\npython3 scripts/aoa_session_memory.py batch-distill \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --limit 10 \\\n --apply \\\n --write-report\n```\n\nUse `--limit` for the first smoke batch. Use `--force` only when an existing\nfirst-pass artifact must be rebuilt.\n\nAfter the automatic first-pass layer is coherent, use\n`aoa-session-manual-review` for packetizing manual-review lanes and aggregating\npromotion candidates without promoting them.\n\n## Review Rule\n\nAutomatic work may write only provisional first-pass distillation artifacts.\nIt may not promote a pattern, amend a skill, add automation, or mark a claim as\nreviewed.\n\nManual review means project-grounded review. Before promoting a claim, inspect\nthe session's `project_grounding` entry and read the nearest relevant\n`AGENTS.md`, `DESIGN.md`, agent-facing design surface such as\n`DESIGN.AGENTS.md` when present, or README. The operator should review\npromoted claims and samples, not carry the entire archive in active attention.\n\n## Adaptive Rule\n\nAfter each batch, inspect `improvement_candidates` in the report. If the queue\nshows recurring parser misses, noisy names, missing indexes, hook gaps, or\nrepeatable command patterns, emit the candidate as a provisional owner-routed\nhandoff. Do not patch, retrain, change hooks or CLI behavior, or rerun a repair\ninside the data-processing batch. A separately authorized owner task may\ninspect the candidate, make a narrow source change, run its owner checks, and\nstart a new bounded batch after review.\n\n## Verification\n\n- Every scoped session has an automatic, manual-review, mechanics-candidate,\n diagnostic, skip, or failure terminal receipt.\n- All produced artifacts remain explicitly provisional.\n- Owner resolution and evidence refs are present before project-specific\n interpretation.\n- Mechanics candidates remain owner-routed handoffs; the batch does not change\n the bundle or its processing mechanism.\n- No claim, skill change, automation, or durable lesson was promoted.\n\n## Stop Line\n\nDo not open every raw transcript in context. Use the batch report, registry,\nmanifests, distillation indexes, and segment indexes first.\n\n---\nname: aoa-session-batch-distill\ndescription: Use when many indexed `.aoa` sessions need a first-wave distillation conveyor that separates safe automatic first-pass artifacts from manual review and mechanics-improvement queues.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-batch-distill\n\nUse this when a group of archived sessions needs to be laid out for first-wave\ndistillation without pretending that automatic classification is reviewed\ntruth.\n\n## Trigger Boundary\n\n- The user asks to process many historical sessions.\n- A rolling window has already been imported into `.aoa`.\n- The agent needs a queue that separates automatic first-pass work from manual\n reading, mechanics candidates, and diagnostics.\n- The session-memory mechanism itself may improve while the queue is processed.\n\n## Procedure\n\nBatch distillation is set-oriented and has no positional session argument.\nDeclare a bounded set with `--since`, `--since-days`, `--until`, and/or\n`--limit`, then carry the same predicate through any separately authorized\nfollow-on route. The current batch and title-repair implementations use the\nsame chronological registry selector, but a report is the binding set: before\nany follow-on apply, compare its selected session IDs with the prior report.\nStop on any mismatch and re-plan that changed set under explicit scope\nauthorization. An archive-wide `all` selector in a maintenance command is a\nnew scope decision; it is never implied by processing one session or one\nbounded batch.\n\nStart with a planning report:\n\n```bash\npython3 scripts/aoa_session_memory.py batch-distill \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --limit 10 \\\n --write-report\n```\n\nReview the report lanes:\n\n- `auto_first_pass`: safe to write provisional first-pass artifacts from\n indexes.\n- `manual_review`: requires a responsible review layer before promotion; this\n can be agent-assisted and evidence-sampled, not raw rereading by the operator.\n- `mechanics_candidate`: may imply tests, skills, hooks, docs, or CLI\n improvements.\n- `diagnostic`: repair raw/index health before distillation.\n\nInspect owner quality before applying a broad pass. Each profile contains\n`project_grounding` and `owner_resolution`; fallback grounding is not the same\nas a resolved owner.\n\nIf title repair is separately authorized for this same bounded set, repair\nweak imported titles before a broad manual review wave:\n\n```bash\npython3 scripts/aoa_session_memory.py repair-session-titles all \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --limit 10 \\\n --write-report\n```\n\nAdd `--apply` only after checking the plan.\n\nApply only after the queue shape is coherent:\n\n```bash\npython3 scripts/aoa_session_memory.py batch-distill \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --limit 10 \\\n --apply \\\n --write-report\n```\n\nUse `--limit` for the first smoke batch. Use `--force` only when an existing\nfirst-pass artifact must be rebuilt.\n\nAfter the automatic first-pass layer is coherent, use\n`aoa-session-manual-review` for packetizing manual-review lanes and aggregating\npromotion candidates without promoting them.\n\n## Review Rule\n\nAutomatic work may write only provisional first-pass distillation artifacts.\nIt may not promote a pattern, amend a skill, add automation, or mark a claim as\nreviewed.\n\nManual review means project-grounded review. Before promoting a claim, inspect\nthe session's `project_grounding` entry and read the nearest relevant\n`AGENTS.md`, `DESIGN.md`, agent-facing design surface such as\n`DESIGN.AGENTS.md` when present, or README. The operator should review\npromoted claims and samples, not carry the entire archive in active attention.\n\n## Adaptive Rule\n\nAfter each batch, inspect `improvement_candidates` in the report. If the queue\nshows recurring parser misses, noisy names, missing indexes, hook gaps, or\nrepeatable command patterns, emit the candidate as a provisional owner-routed\nhandoff. Do not patch, retrain, change hooks or CLI behavior, or rerun a repair\ninside the data-processing batch. A separately authorized owner task may\ninspect the candidate, make a narrow source change, run its owner checks, and\nstart a new bounded batch after review.\n\n## Verification\n\n- Every scoped session has an automatic, manual-review, mechanics-candidate,\n diagnostic, skip, or failure terminal receipt.\n- All produced artifacts remain explicitly provisional.\n- Owner resolution and evidence refs are present before project-specific\n interpretation.\n- Mechanics candidates remain owner-routed handoffs; the batch does not change\n the bundle or its processing mechanism.\n- No claim, skill change, automation, or durable lesson was promoted.\n\n## Stop Line\n\nDo not open every raw transcript in context. Use the batch report, registry,\nmanifests, distillation indexes, and segment indexes first.\n", "title": "Batch session distillation", "tokens": [ - "1.0.0", + "1.0.1", + "10", "21", "accepted", "across", @@ -18068,16 +18300,19 @@ "apply", "applying", "archive", + "archive-wide", "archived", "archives", + "argument", "artifact", "artifacts", "asks", "assisted", "attention", - "audit", "authored", "authored-procedure", + "authorization", + "authorized", "auto", "automatic", "automation", @@ -18087,12 +18322,15 @@ "batch-distill", "been", "before", + "behavior", + "binding", "blocks", "boundary", "bounded", "bounded-judgment", "broad", "bundle", + "but", "callable", "can", "candidate", @@ -18103,21 +18341,29 @@ "carry", "challenger", "change", + "changed", "checking", + "checks", + "chronological", "claim", "claims", "classification", "cli", "coherent", "command", + "compare", "completeness", "contains", "context", "conveyor", "coordination", "curate", + "current", "data", + "data-processing", "days", + "decision", + "declare", "declared", "deferred", "define", @@ -18134,9 +18380,10 @@ "distinct", "do", "docs", - "doctor", + "does", "durable", "each", + "emit", "entire", "entry", "every", @@ -18147,6 +18394,7 @@ "existing", "expects", "experimental", + "explicit", "explicitly", "extraction", "facing", @@ -18157,6 +18405,8 @@ "first", "first-pass", "first-wave", + "follow", + "follow-on", "forbidden", "force", "fully", @@ -18167,6 +18417,8 @@ "grounded", "grounding", "group", + "handoff", + "handoffs", "has", "health", "hiding", @@ -18175,7 +18427,10 @@ "hook", "hooks", "hypothesis", + "ids", "if", + "implementations", + "implied", "imply", "imported", "improve", @@ -18188,11 +18443,13 @@ "indexed-session-set", "indexes", "indexing", + "inside", "inspect", "installation", "interpretation", "invocation", "invoking", + "its", "itself", "judgment", "knowledge", @@ -18205,6 +18462,7 @@ "line", "logical", "maintenance", + "make", "manifests", "manual", "manual-review", @@ -18222,6 +18480,7 @@ "memory", "memory.py", "metadata", + "mismatch", "misses", "missing", "mixing", @@ -18236,6 +18495,8 @@ "nearest", "need", "needs", + "never", + "new", "no", "noisy", "not", @@ -18245,8 +18506,10 @@ "open", "operator", "orchestration", + "oriented", "out", "owner", + "owner-routed", "owner-skill-procedure", "packetizing", "parser", @@ -18258,12 +18521,16 @@ "per-session", "plan", "planning", + "positional", + "predicate", "present", "pressure", "pretending", + "prior", "procedure", "process", "processed", + "processing", "produced", "profile", "project", @@ -18282,6 +18549,8 @@ "queue-separation", "queues", "raw", + "re", + "re-plan", "read", "read-session-archives", "reading", @@ -18312,13 +18581,17 @@ "resume", "retain", "retain-deferred", + "retrain", "reversible", "review", "reviewed", "rolling", "root", "roots", + "route", + "routed", "rule", + "run", "runtime", "runtime-mutation", "safe", @@ -18330,8 +18603,11 @@ "scoped", "scripts", "segment", + "selected", + "selector", "separate", "separated", + "separately", "separates", "separation", "session", @@ -18340,6 +18616,7 @@ "session-memory.yaml", "sessions", "set", + "set-oriented", "shape", "should", "shows", @@ -18353,6 +18630,7 @@ "skip", "skipped", "smoke", + "source", "specific", "start", "stewardship", @@ -18360,10 +18638,14 @@ "such", "supersede", "surface", + "task", "terminal", "tests", "them", + "then", "through", + "title", + "title-repair", "titles", "too", "transcript", @@ -18372,7 +18654,9 @@ "trigger", "truth", "unbounded", + "under", "unpromoted", + "until", "use", "user", "v1", @@ -18382,6 +18666,7 @@ "weak", "when", "while", + "wide", "window", "without", "work", @@ -28214,7 +28499,7 @@ }, { "contract_tokens": [ - "1.0.0", + "1.0.1", "active", "adapter", "adapter-specific", @@ -28410,9 +28695,11 @@ "apply-phase-review-plan", "applying", "archive", + "archive-wide", "archives", "artifact", "assist", + "authorized", "based", "bash", "basis", @@ -28446,6 +28733,7 @@ "check", "checked", "checks", + "choice", "clear", "close", "codex", @@ -28458,6 +28746,7 @@ "coverage", "covered", "decisions", + "dependency", "description", "directories", "discovery", @@ -28478,8 +28767,11 @@ "filled", "first", "flags", + "follow", + "follow-on", "from-segment", "generate", + "generated", "generates", "generic", "guarded", @@ -28499,6 +28791,7 @@ "interval", "invocation", "its", + "itself", "json", "keep", "label", @@ -28514,9 +28807,12 @@ "low-confidence", "machine", "machine-readable", + "makes", "manual", + "maps", "marked", "markers", + "may", "md", "memory", "memory.py", @@ -28529,8 +28825,10 @@ "names", "naming", "naming-readiness", + "necessary", "need", "needs", + "never", "next", "no", "not", @@ -28587,10 +28885,12 @@ "review-phase-name", "reviewed", "reviewed-name", + "rewrite", "root", "route", "routes", "routing", + "same", "samples", "scope", "scripts", @@ -28598,12 +28898,16 @@ "segment", "segment-id", "segments", + "selected", + "selector", "semantic", + "separate", "session", "session-label-or-id", "session-memory", "sessions", "several", + "shared", "short", "should", "signal", @@ -28647,6 +28951,8 @@ "when", "whether", "why", + "wide", + "widens", "work", "workspace", "workspace-root", @@ -28708,10 +29014,10 @@ "span", "topics" ], - "search_text": "Readiness record identifying phase-discovery need.\nreadiness\nnaming-readiness-report\nEvidence-linked phase and title candidates.\nphases\nphase-candidate-set\nThe target session or its current index cannot be resolved uniquely.\nA short session already has one reviewed semantic name.\nA long or multi-topic session needs phase candidates before semantic naming.\navailable\nskill\ndiscover-phases\nskills/aoa-session-phase-discovery/SKILL.md\nindependent-callable\nretain-deferred\nPhase extraction has a distinct evidence-span output and precedes any naming mutation.\nexecutable\nUse for long `.aoa` Codex session archives that need phase/topic candidate extraction before applying semantic session names.\ngenerated-write\nApplying names during discovery.\nTreating every topical mention as a phase.\nReading unbounded raw content.\nbounded-judgment\nreversible\nStop after reviewable phase candidates or an explicit insufficient-evidence result.\nsession-memory CLI\nindexed session and bounded raw refs\nPhase candidates cite bounded evidence spans.\nCandidate names remain unapplied.\nskill.aoa-session-phase-discovery\nphase-discovery\ntopics\nlong-session\nsemantic-name\nevidence-span\nskill\nhypothesis\nchallenger\nexperimental\n1.0.0\ndeferred\nNo session names changed.\nPhase candidates carry source refs.\nRegenerate or reject candidate artifacts without changing the archive.\nauthored\naoa-session-memory\nskills/aoa-session-phase-discovery/SKILL.md\nsession-memory.stewardship.name\nskills/aoa-session-phase-discovery/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-phase-discovery/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nExtract reviewable phase candidates from long sessions before name application.\nforbidden\nread-session-archives\nwrite-derived-session-index\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nSession phase discovery\nauthored-procedure\n---\nname: aoa-session-phase-discovery\ndescription: Use for long `.aoa` Codex session archives that need phase/topic candidate extraction before applying semantic session names.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-phase-discovery\n\nUse this after `naming-readiness` routes a session to\n`phase_topic_discovery_before_session_name`, or when a long session needs a\ncontinuation name but its internal phases are not yet clear.\n\nThis skill generates open candidates. It does not apply semantic names and does\nnot close review.\n\n## Trigger Boundary\n\nUse this when naming readiness identifies a long or multi-topic session that\nneeds phase candidates. Do not use it for a short session with one reviewed\nname, or when the target/index cannot be resolved uniquely.\n\n## Procedure\n\nGenerate the candidate layer:\n\n```bash\npython3 scripts/aoa_session_memory.py phase-discovery \\\n --workspace-root \\\n --aoa-root \\\n --write \\\n --write-report\n```\n\nThen refresh the indexes:\n\n```bash\npython3 scripts/aoa_session_memory.py naming-readiness all \\\n --workspace-root \\\n --aoa-root \\\n --refresh-indexes \\\n --write-report\n```\n\n## Reading The Artifact\n\n- `naming/phase-discovery.json`: machine-readable candidate list.\n- `naming/phase-discovery.md`: human-readable review table.\n- `candidate.status=candidate_unreviewed`: still open evidence.\n- `candidate.coverage.raw_ranges`: raw-line interval covered by the candidate.\n- `candidate.evidence`: raw refs to inspect before applying a name.\n- `candidate.confidence`: routing confidence, not truth confidence.\n- `candidate.name_basis`: whether the name came from a specific user intent or\n from linked path/event signals.\n- `candidate.quality_flags`: why the candidate needs caution, such as\n `generic_user_intent_present`, `no_specific_user_intent`, or\n `path_or_event_based_name`.\n- `candidate.linked_signals`: the signal bundle used for naming, including\n primary intent, supporting paths, and event-type counts.\n- `candidate.review`: the next action for the candidate. Weak candidates use\n `status=needs_semantic_synthesis` and include an `apply_template` for the\n `review-phase-name` route after synthesis.\n- root `review_queue`: candidates that need semantic synthesis before they can\n be raw-checked and applied.\n\nGeneric prompts such as \"Давай, действуй\" or \"Разложи план\" should not become\ndurable phase names by themselves. They should route to linked path/event\nsignals and remain low-confidence until reviewed.\n\nDo not stop after seeing `quality_flags`. Use `review_queue` as the next work\nsurface: inspect the linked signals, synthesize a stronger reviewed name, then\napply it with the provided command template.\n\n## Applying Names\n\nFor faster long-session work, build batch review packets before synthesizing\nnames in chat:\n\n```bash\npython3 scripts/aoa_session_memory.py phase-review-assist \\\n --workspace-root \\\n --aoa-root \\\n --from-segment \\\n --limit 8 \\\n --write \\\n --write-report\n```\n\nThis writes `naming/phase-review-assist.json`, `.md`, and a\n`phase-review-plan.template.json`. It does not apply names. Use the packets to\nreview several segments at once: user requests, progress markers, decisions,\nchecks, errors, mutations, commands, top paths, and raw refs are already\ncollected from source raw.\n\nAfter reviewed names are filled into a plan JSON, preview or apply the batch\nthrough the guarded plan route:\n\n```bash\npython3 scripts/aoa_session_memory.py apply-phase-review-plan \\\n --plan sessions//naming/phase-review-plan.json \\\n --apply \\\n --write-report\n```\n\nThis still calls `review-phase-name` per segment under the hood. Empty\n`reviewed_name` entries are skipped, and machine candidates are not accepted as\nreviewed truth by the plan route.\n\nPreview one candidate before applying it:\n\n```bash\npython3 scripts/aoa_session_memory.py review-phase-name \\\n --segment \n```\n\nApply only after the name has been reviewed. For weak candidates, pass the\nreviewed name explicitly:\n\n```bash\npython3 scripts/aoa_session_memory.py review-phase-name \\\n --segment \\\n --reviewed-name \"\" \\\n --apply \\\n --write-report\n```\n\nFor candidates marked `ready_for_raw_check`, `--use-candidate` is accepted only\nafter raw samples are checked. It is rejected for\n`needs_semantic_synthesis`.\n\n## Verification\n\n- Every phase candidate carries bounded raw ranges and evidence refs.\n- Generic prompts alone do not become durable names.\n- Candidate confidence remains routing confidence, not truth confidence.\n- No phase or session name changes during discovery.\n\n## Stop Line\n\nDo not rename archive directories from phase-discovery output. Use semantic\n`review-phase-name` entries first, and keep the raw archive as source truth.\n\n---\nname: aoa-session-phase-discovery\ndescription: Use for long `.aoa` Codex session archives that need phase/topic candidate extraction before applying semantic session names.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-phase-discovery\n\nUse this after `naming-readiness` routes a session to\n`phase_topic_discovery_before_session_name`, or when a long session needs a\ncontinuation name but its internal phases are not yet clear.\n\nThis skill generates open candidates. It does not apply semantic names and does\nnot close review.\n\n## Trigger Boundary\n\nUse this when naming readiness identifies a long or multi-topic session that\nneeds phase candidates. Do not use it for a short session with one reviewed\nname, or when the target/index cannot be resolved uniquely.\n\n## Procedure\n\nGenerate the candidate layer:\n\n```bash\npython3 scripts/aoa_session_memory.py phase-discovery \\\n --workspace-root \\\n --aoa-root \\\n --write \\\n --write-report\n```\n\nThen refresh the indexes:\n\n```bash\npython3 scripts/aoa_session_memory.py naming-readiness all \\\n --workspace-root \\\n --aoa-root \\\n --refresh-indexes \\\n --write-report\n```\n\n## Reading The Artifact\n\n- `naming/phase-discovery.json`: machine-readable candidate list.\n- `naming/phase-discovery.md`: human-readable review table.\n- `candidate.status=candidate_unreviewed`: still open evidence.\n- `candidate.coverage.raw_ranges`: raw-line interval covered by the candidate.\n- `candidate.evidence`: raw refs to inspect before applying a name.\n- `candidate.confidence`: routing confidence, not truth confidence.\n- `candidate.name_basis`: whether the name came from a specific user intent or\n from linked path/event signals.\n- `candidate.quality_flags`: why the candidate needs caution, such as\n `generic_user_intent_present`, `no_specific_user_intent`, or\n `path_or_event_based_name`.\n- `candidate.linked_signals`: the signal bundle used for naming, including\n primary intent, supporting paths, and event-type counts.\n- `candidate.review`: the next action for the candidate. Weak candidates use\n `status=needs_semantic_synthesis` and include an `apply_template` for the\n `review-phase-name` route after synthesis.\n- root `review_queue`: candidates that need semantic synthesis before they can\n be raw-checked and applied.\n\nGeneric prompts such as \"Давай, действуй\" or \"Разложи план\" should not become\ndurable phase names by themselves. They should route to linked path/event\nsignals and remain low-confidence until reviewed.\n\nDo not stop after seeing `quality_flags`. Use `review_queue` as the next work\nsurface: inspect the linked signals, synthesize a stronger reviewed name, then\napply it with the provided command template.\n\n## Applying Names\n\nFor faster long-session work, build batch review packets before synthesizing\nnames in chat:\n\n```bash\npython3 scripts/aoa_session_memory.py phase-review-assist \\\n --workspace-root \\\n --aoa-root \\\n --from-segment \\\n --limit 8 \\\n --write \\\n --write-report\n```\n\nThis writes `naming/phase-review-assist.json`, `.md`, and a\n`phase-review-plan.template.json`. It does not apply names. Use the packets to\nreview several segments at once: user requests, progress markers, decisions,\nchecks, errors, mutations, commands, top paths, and raw refs are already\ncollected from source raw.\n\nAfter reviewed names are filled into a plan JSON, preview or apply the batch\nthrough the guarded plan route:\n\n```bash\npython3 scripts/aoa_session_memory.py apply-phase-review-plan \\\n --plan sessions//naming/phase-review-plan.json \\\n --apply \\\n --write-report\n```\n\nThis still calls `review-phase-name` per segment under the hood. Empty\n`reviewed_name` entries are skipped, and machine candidates are not accepted as\nreviewed truth by the plan route.\n\nPreview one candidate before applying it:\n\n```bash\npython3 scripts/aoa_session_memory.py review-phase-name \\\n --segment \n```\n\nApply only after the name has been reviewed. For weak candidates, pass the\nreviewed name explicitly:\n\n```bash\npython3 scripts/aoa_session_memory.py review-phase-name \\\n --segment \\\n --reviewed-name \"\" \\\n --apply \\\n --write-report\n```\n\nFor candidates marked `ready_for_raw_check`, `--use-candidate` is accepted only\nafter raw samples are checked. It is rejected for\n`needs_semantic_synthesis`.\n\n## Verification\n\n- Every phase candidate carries bounded raw ranges and evidence refs.\n- Generic prompts alone do not become durable names.\n- Candidate confidence remains routing confidence, not truth confidence.\n- No phase or session name changes during discovery.\n\n## Stop Line\n\nDo not rename archive directories from phase-discovery output. Use semantic\n`review-phase-name` entries first, and keep the raw archive as source truth.\n", + "search_text": "Readiness record identifying phase-discovery need.\nreadiness\nnaming-readiness-report\nEvidence-linked phase and title candidates.\nphases\nphase-candidate-set\nThe target session or its current index cannot be resolved uniquely.\nA short session already has one reviewed semantic name.\nA long or multi-topic session needs phase candidates before semantic naming.\navailable\nskill\ndiscover-phases\nskills/aoa-session-phase-discovery/SKILL.md\nindependent-callable\nretain-deferred\nPhase extraction has a distinct evidence-span output and precedes any naming mutation.\nexecutable\nUse for long `.aoa` Codex session archives that need phase/topic candidate extraction before applying semantic session names.\ngenerated-write\nApplying names during discovery.\nTreating every topical mention as a phase.\nReading unbounded raw content.\nbounded-judgment\nreversible\nStop after reviewable phase candidates or an explicit insufficient-evidence result.\nsession-memory CLI\nindexed session and bounded raw refs\nPhase candidates cite bounded evidence spans.\nCandidate names remain unapplied.\nskill.aoa-session-phase-discovery\nphase-discovery\ntopics\nlong-session\nsemantic-name\nevidence-span\nskill\nhypothesis\nchallenger\nexperimental\n1.0.1\ndeferred\nNo session names changed.\nPhase candidates carry source refs.\nRegenerate or reject candidate artifacts without changing the archive.\nauthored\naoa-session-memory\nskills/aoa-session-phase-discovery/SKILL.md\nsession-memory.stewardship.name\nskills/aoa-session-phase-discovery/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-phase-discovery/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nExtract reviewable phase candidates from long sessions before name application.\nforbidden\nread-session-archives\nwrite-derived-session-index\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nSession phase discovery\nauthored-procedure\n---\nname: aoa-session-phase-discovery\ndescription: Use for long `.aoa` Codex session archives that need phase/topic candidate extraction before applying semantic session names.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-phase-discovery\n\nUse this after `naming-readiness` routes a session to\n`phase_topic_discovery_before_session_name`, or when a long session needs a\ncontinuation name but its internal phases are not yet clear.\n\nThis skill generates open candidates. It does not apply semantic names and does\nnot close review.\n\n## Trigger Boundary\n\nUse this when naming readiness identifies a long or multi-topic session that\nneeds phase candidates. Do not use it for a short session with one reviewed\nname, or when the target/index cannot be resolved uniquely.\n\n## Procedure\n\nGenerate the candidate layer:\n\n```bash\npython3 scripts/aoa_session_memory.py phase-discovery \\\n --workspace-root \\\n --aoa-root \\\n --write \\\n --write-report\n```\n\nThen refresh the indexes:\n\n```bash\npython3 scripts/aoa_session_memory.py naming-readiness \\\n --workspace-root \\\n --aoa-root \\\n --refresh-indexes \\\n --write-report\n```\n\nKeep the same session selector through this follow-on route. The refresh may\nrewrite shared naming maps as a generated dependency, but `all` is a separate\nscope choice: use it only when that scope is explicitly authorized and a\nshared index dependency makes it necessary. Discovery never widens one\nselected session into an archive-wide naming pass by itself.\n\n## Reading The Artifact\n\n- `naming/phase-discovery.json`: machine-readable candidate list.\n- `naming/phase-discovery.md`: human-readable review table.\n- `candidate.status=candidate_unreviewed`: still open evidence.\n- `candidate.coverage.raw_ranges`: raw-line interval covered by the candidate.\n- `candidate.evidence`: raw refs to inspect before applying a name.\n- `candidate.confidence`: routing confidence, not truth confidence.\n- `candidate.name_basis`: whether the name came from a specific user intent or\n from linked path/event signals.\n- `candidate.quality_flags`: why the candidate needs caution, such as\n `generic_user_intent_present`, `no_specific_user_intent`, or\n `path_or_event_based_name`.\n- `candidate.linked_signals`: the signal bundle used for naming, including\n primary intent, supporting paths, and event-type counts.\n- `candidate.review`: the next action for the candidate. Weak candidates use\n `status=needs_semantic_synthesis` and include an `apply_template` for the\n `review-phase-name` route after synthesis.\n- root `review_queue`: candidates that need semantic synthesis before they can\n be raw-checked and applied.\n\nGeneric prompts such as \"Давай, действуй\" or \"Разложи план\" should not become\ndurable phase names by themselves. They should route to linked path/event\nsignals and remain low-confidence until reviewed.\n\nDo not stop after seeing `quality_flags`. Use `review_queue` as the next work\nsurface: inspect the linked signals, synthesize a stronger reviewed name, then\napply it with the provided command template.\n\n## Applying Names\n\nFor faster long-session work, build batch review packets before synthesizing\nnames in chat:\n\n```bash\npython3 scripts/aoa_session_memory.py phase-review-assist \\\n --workspace-root \\\n --aoa-root \\\n --from-segment \\\n --limit 8 \\\n --write \\\n --write-report\n```\n\nThis writes `naming/phase-review-assist.json`, `.md`, and a\n`phase-review-plan.template.json`. It does not apply names. Use the packets to\nreview several segments at once: user requests, progress markers, decisions,\nchecks, errors, mutations, commands, top paths, and raw refs are already\ncollected from source raw.\n\nAfter reviewed names are filled into a plan JSON, preview or apply the batch\nthrough the guarded plan route:\n\n```bash\npython3 scripts/aoa_session_memory.py apply-phase-review-plan \\\n --plan sessions//naming/phase-review-plan.json \\\n --apply \\\n --write-report\n```\n\nThis still calls `review-phase-name` per segment under the hood. Empty\n`reviewed_name` entries are skipped, and machine candidates are not accepted as\nreviewed truth by the plan route.\n\nPreview one candidate before applying it:\n\n```bash\npython3 scripts/aoa_session_memory.py review-phase-name \\\n --segment \n```\n\nApply only after the name has been reviewed. For weak candidates, pass the\nreviewed name explicitly:\n\n```bash\npython3 scripts/aoa_session_memory.py review-phase-name \\\n --segment \\\n --reviewed-name \"\" \\\n --apply \\\n --write-report\n```\n\nFor candidates marked `ready_for_raw_check`, `--use-candidate` is accepted only\nafter raw samples are checked. It is rejected for\n`needs_semantic_synthesis`.\n\n## Verification\n\n- Every phase candidate carries bounded raw ranges and evidence refs.\n- Generic prompts alone do not become durable names.\n- Candidate confidence remains routing confidence, not truth confidence.\n- No phase or session name changes during discovery.\n\n## Stop Line\n\nDo not rename archive directories from phase-discovery output. Use semantic\n`review-phase-name` entries first, and keep the raw archive as source truth.\n\n---\nname: aoa-session-phase-discovery\ndescription: Use for long `.aoa` Codex session archives that need phase/topic candidate extraction before applying semantic session names.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-phase-discovery\n\nUse this after `naming-readiness` routes a session to\n`phase_topic_discovery_before_session_name`, or when a long session needs a\ncontinuation name but its internal phases are not yet clear.\n\nThis skill generates open candidates. It does not apply semantic names and does\nnot close review.\n\n## Trigger Boundary\n\nUse this when naming readiness identifies a long or multi-topic session that\nneeds phase candidates. Do not use it for a short session with one reviewed\nname, or when the target/index cannot be resolved uniquely.\n\n## Procedure\n\nGenerate the candidate layer:\n\n```bash\npython3 scripts/aoa_session_memory.py phase-discovery \\\n --workspace-root \\\n --aoa-root \\\n --write \\\n --write-report\n```\n\nThen refresh the indexes:\n\n```bash\npython3 scripts/aoa_session_memory.py naming-readiness \\\n --workspace-root \\\n --aoa-root \\\n --refresh-indexes \\\n --write-report\n```\n\nKeep the same session selector through this follow-on route. The refresh may\nrewrite shared naming maps as a generated dependency, but `all` is a separate\nscope choice: use it only when that scope is explicitly authorized and a\nshared index dependency makes it necessary. Discovery never widens one\nselected session into an archive-wide naming pass by itself.\n\n## Reading The Artifact\n\n- `naming/phase-discovery.json`: machine-readable candidate list.\n- `naming/phase-discovery.md`: human-readable review table.\n- `candidate.status=candidate_unreviewed`: still open evidence.\n- `candidate.coverage.raw_ranges`: raw-line interval covered by the candidate.\n- `candidate.evidence`: raw refs to inspect before applying a name.\n- `candidate.confidence`: routing confidence, not truth confidence.\n- `candidate.name_basis`: whether the name came from a specific user intent or\n from linked path/event signals.\n- `candidate.quality_flags`: why the candidate needs caution, such as\n `generic_user_intent_present`, `no_specific_user_intent`, or\n `path_or_event_based_name`.\n- `candidate.linked_signals`: the signal bundle used for naming, including\n primary intent, supporting paths, and event-type counts.\n- `candidate.review`: the next action for the candidate. Weak candidates use\n `status=needs_semantic_synthesis` and include an `apply_template` for the\n `review-phase-name` route after synthesis.\n- root `review_queue`: candidates that need semantic synthesis before they can\n be raw-checked and applied.\n\nGeneric prompts such as \"Давай, действуй\" or \"Разложи план\" should not become\ndurable phase names by themselves. They should route to linked path/event\nsignals and remain low-confidence until reviewed.\n\nDo not stop after seeing `quality_flags`. Use `review_queue` as the next work\nsurface: inspect the linked signals, synthesize a stronger reviewed name, then\napply it with the provided command template.\n\n## Applying Names\n\nFor faster long-session work, build batch review packets before synthesizing\nnames in chat:\n\n```bash\npython3 scripts/aoa_session_memory.py phase-review-assist \\\n --workspace-root \\\n --aoa-root \\\n --from-segment \\\n --limit 8 \\\n --write \\\n --write-report\n```\n\nThis writes `naming/phase-review-assist.json`, `.md`, and a\n`phase-review-plan.template.json`. It does not apply names. Use the packets to\nreview several segments at once: user requests, progress markers, decisions,\nchecks, errors, mutations, commands, top paths, and raw refs are already\ncollected from source raw.\n\nAfter reviewed names are filled into a plan JSON, preview or apply the batch\nthrough the guarded plan route:\n\n```bash\npython3 scripts/aoa_session_memory.py apply-phase-review-plan \\\n --plan sessions//naming/phase-review-plan.json \\\n --apply \\\n --write-report\n```\n\nThis still calls `review-phase-name` per segment under the hood. Empty\n`reviewed_name` entries are skipped, and machine candidates are not accepted as\nreviewed truth by the plan route.\n\nPreview one candidate before applying it:\n\n```bash\npython3 scripts/aoa_session_memory.py review-phase-name \\\n --segment \n```\n\nApply only after the name has been reviewed. For weak candidates, pass the\nreviewed name explicitly:\n\n```bash\npython3 scripts/aoa_session_memory.py review-phase-name \\\n --segment \\\n --reviewed-name \"\" \\\n --apply \\\n --write-report\n```\n\nFor candidates marked `ready_for_raw_check`, `--use-candidate` is accepted only\nafter raw samples are checked. It is rejected for\n`needs_semantic_synthesis`.\n\n## Verification\n\n- Every phase candidate carries bounded raw ranges and evidence refs.\n- Generic prompts alone do not become durable names.\n- Candidate confidence remains routing confidence, not truth confidence.\n- No phase or session name changes during discovery.\n\n## Stop Line\n\nDo not rename archive directories from phase-discovery output. Use semantic\n`review-phase-name` entries first, and keep the raw archive as source truth.\n", "title": "Session phase discovery", "tokens": [ - "1.0.0", + "1.0.1", "accepted", "action", "active", @@ -28734,12 +29040,14 @@ "apply-phase-review-plan", "applying", "archive", + "archive-wide", "archives", "artifact", "artifacts", "assist", "authored", "authored-procedure", + "authorized", "available", "based", "bash", @@ -28783,6 +29091,7 @@ "check", "checked", "checks", + "choice", "cite", "clear", "cli", @@ -28801,6 +29110,7 @@ "data", "decisions", "deferred", + "dependency", "derived", "description", "directories", @@ -28832,6 +29142,8 @@ "filled", "first", "flags", + "follow", + "follow-on", "forbidden", "from-segment", "generate", @@ -28866,6 +29178,7 @@ "invocation", "invoking", "its", + "itself", "json", "judgment", "keep", @@ -28883,9 +29196,12 @@ "low-confidence", "machine", "machine-readable", + "makes", "manual", + "maps", "marked", "markers", + "may", "md", "memory", "memory.py", @@ -28901,8 +29217,10 @@ "naming", "naming-readiness", "naming-readiness-report", + "necessary", "need", "needs", + "never", "next", "no", "not", @@ -28974,11 +29292,13 @@ "reviewable", "reviewed", "reviewed-name", + "rewrite", "root", "roots", "route", "routes", "routing", + "same", "samples", "scope", "scripts", @@ -28986,8 +29306,11 @@ "segment", "segment-id", "segments", + "selected", + "selector", "semantic", "semantic-name", + "separate", "session", "session-label-or-id", "session-memory", @@ -28996,6 +29319,7 @@ "sessions", "set", "several", + "shared", "short", "should", "signal", @@ -29054,6 +29378,8 @@ "when", "whether", "why", + "wide", + "widens", "without", "work", "workspace", @@ -30142,7 +30468,7 @@ }, { "contract_tokens": [ - "1.0.0", + "1.0.1", "abi", "access", "active", @@ -30337,6 +30663,7 @@ ], "package_tokens": [ "10", + "21", "absent", "action", "actor", @@ -30354,6 +30681,8 @@ "archives", "artifacts", "audit", + "authorized", + "automatic", "available", "backlog", "bash", @@ -30363,20 +30692,26 @@ "broad", "but", "cached", + "carry", "catch", "catch-up", "catchup", "changed", "changes", "classifier", + "command", + "companion", "completeness", "contain", "correlation", "counts", "counts.diagnostic", "current", + "days", + "declared", "deep", "delete", + "dependency", "description", "diagnostic", "diagnostics", @@ -30385,8 +30720,11 @@ "doctor", "dry", "dry-run", + "each", "event", + "every", "evidence", + "exact", "existing", "explicit", "explicitly", @@ -30394,6 +30732,8 @@ "family", "fields", "finish", + "follow", + "follow-on", "fresh", "full", "generated", @@ -30423,22 +30763,27 @@ "metadata", "missing", "mode", + "moving", "name", "named", "need", "needed", "needs", + "never", "next", "no", "not", + "obtain", "old", "one", + "one-session", "only", "outcome", "packet", - "pass", "payload", "phase", + "plus", + "predicate", "preserved", "procedure", "profile", @@ -30453,6 +30798,7 @@ "re", "re-importing", "reads", + "reason", "rebuild", "rebuilt", "records", @@ -30467,6 +30813,7 @@ "relationship", "remaining", "repair", + "repeat", "report", "reports", "requested", @@ -30476,19 +30823,27 @@ "route", "run", "running", + "same", "schema", "scope", "scripts", "search", "segment", "segments", + "selected", + "selector", "semantic", + "separate", + "separately", "session", "session-label-or-id", "session-memory", "sessions", + "shared", + "shared-dependency", "shows", - "smoke", + "since", + "since-days", "stale", "start", "status", @@ -30498,6 +30853,7 @@ "taxonomy", "tests", "through", + "trial", "trigger", "under", "universal", @@ -30509,6 +30865,7 @@ "verify", "when", "where", + "window", "without", "workspace", "workspace-root", @@ -30565,11 +30922,12 @@ "reindex", "schema" ], - "search_text": "Preserved raw archive set and rebuild scope.\narchives\narchived-session-set\nRebuilt segments, indexes, and projection receipts.\nindexes\nindexed-session-set\nProvider freshness is stale but the owning projection has not been identified.\nRaw evidence itself is missing or the request only needs a query against a current index.\nPreserved archives require projection rebuild after source-owned classifier\nschema\ntaxonomy\nor relation changes.\navailable\nskill\nreindex\nskills/aoa-session-reindex/SKILL.md\nindependent-callable\nretain-deferred\nProjection rebuild has a distinct archive-to-index ABI and raw-preservation invariant.\nexecutable\nUse when existing `.aoa` session archives need generated segment Markdown and indexes rebuilt from preserved raw JSONL after taxonomy, classifier, relationship, or index-schema changes.\ngenerated-write\nruntime-mutation\nMutating raw evidence.\nReindexing all sessions before a focused trial.\nClaiming current provider freshness without status verification.\ndeterministic\nreversible\nStop after bounded rebuild parity or a precise source-integrity blocker.\npython3\nsession-memory CLI\nwrite access to derived projection paths\nRaw source hashes remain unchanged.\nGenerated parity and provider freshness pass.\nRegistry and doctor remain healthy.\nskill.aoa-session-reindex\nreindex\nrebuild\nprojection\nclassifier\nschema\nraw-preservation\nskill\nhypothesis\nchallenger\nexperimental\n1.0.0\ndeferred\nGenerated projections match current source contracts.\nRaw hashes are unchanged.\nRebuild again from preserved raw blocks.\nRestore only generated snapshots when a consumer requires rollback.\nauthored\naoa-session-memory\nskills/aoa-session-reindex/SKILL.md\nsession-memory.stewardship.project\nskills/aoa-session-reindex/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-reindex/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nDeterministically rebuild derived session projections without changing raw evidence.\nforbidden\nread-session-archives\nwrite-derived-session-index\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nSession projection rebuild\nauthored-procedure\n---\nname: aoa-session-reindex\ndescription: Use when existing `.aoa` session archives need generated segment Markdown and indexes rebuilt from preserved raw JSONL after taxonomy, classifier, relationship, or index-schema changes.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-reindex\n\nUse this when the archive already has raw JSONL but generated segment indexes\nneed to be regenerated under the current classifier.\n\n## Trigger Boundary\n\n- Event taxonomy, universal facets, or relationship indexing changed.\n- Existing sessions need fresh `segments/*.index.json` without re-importing raw.\n- A batch report shows stale or missing index fields.\n- The agent needs to verify old archives under the current index schema.\n\n## Procedure\n\nStart with a dry run:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions all \\\n --workspace-root \\\n --aoa-root \\\n --dry-run \\\n --write-report\n```\n\nFor a bounded smoke pass:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions all \\\n --workspace-root \\\n --aoa-root \\\n --limit 10 \\\n --write-report\n```\n\nFor one target session:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions \\\n --workspace-root \\\n --aoa-root \\\n --write-report\n```\n\nAfter a classifier or schema reindex, refresh generated projections through the\nnamed catch-up route:\n\n```bash\npython3 scripts/aoa_session_memory.py projection-catchup all \\\n --workspace-root \\\n --aoa-root \\\n --apply \\\n --write-report\n```\n\nUse `--profile deep` only when the catch-up payload reports that a heavy full\nsearch rebuild or graph repair is required.\n\n## Verification\n\n- `counts.diagnostic` is absent or zero.\n- Segment indexes contain `by_family`, `by_phase`, `by_actor`,\n `by_action`, `by_outcome`, and `by_correlation`.\n- Event records contain universal facets and relationship refs where available.\n- `projection-catchup` reports no remaining projection backlog, or returns the\n explicit next route needed to finish it.\n- `projection-status` reads the latest projection-catchup completeness packet\n without running the writer route, and uses cached maintenance diagnostics\n unless `--refresh-maintenance` is explicitly requested.\n- Run `doctor`, `audit`, and tests after broad reindexing.\n\n## Stop Line\n\nDo not delete raw JSONL or distillation artifacts. Reindex regenerates generated\nsegments and indexes from raw evidence; it is not a semantic promotion step.\n\n---\nname: aoa-session-reindex\ndescription: Use when existing `.aoa` session archives need generated segment Markdown and indexes rebuilt from preserved raw JSONL after taxonomy, classifier, relationship, or index-schema changes.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-reindex\n\nUse this when the archive already has raw JSONL but generated segment indexes\nneed to be regenerated under the current classifier.\n\n## Trigger Boundary\n\n- Event taxonomy, universal facets, or relationship indexing changed.\n- Existing sessions need fresh `segments/*.index.json` without re-importing raw.\n- A batch report shows stale or missing index fields.\n- The agent needs to verify old archives under the current index schema.\n\n## Procedure\n\nStart with a dry run:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions all \\\n --workspace-root \\\n --aoa-root \\\n --dry-run \\\n --write-report\n```\n\nFor a bounded smoke pass:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions all \\\n --workspace-root \\\n --aoa-root \\\n --limit 10 \\\n --write-report\n```\n\nFor one target session:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions \\\n --workspace-root \\\n --aoa-root \\\n --write-report\n```\n\nAfter a classifier or schema reindex, refresh generated projections through the\nnamed catch-up route:\n\n```bash\npython3 scripts/aoa_session_memory.py projection-catchup all \\\n --workspace-root \\\n --aoa-root \\\n --apply \\\n --write-report\n```\n\nUse `--profile deep` only when the catch-up payload reports that a heavy full\nsearch rebuild or graph repair is required.\n\n## Verification\n\n- `counts.diagnostic` is absent or zero.\n- Segment indexes contain `by_family`, `by_phase`, `by_actor`,\n `by_action`, `by_outcome`, and `by_correlation`.\n- Event records contain universal facets and relationship refs where available.\n- `projection-catchup` reports no remaining projection backlog, or returns the\n explicit next route needed to finish it.\n- `projection-status` reads the latest projection-catchup completeness packet\n without running the writer route, and uses cached maintenance diagnostics\n unless `--refresh-maintenance` is explicitly requested.\n- Run `doctor`, `audit`, and tests after broad reindexing.\n\n## Stop Line\n\nDo not delete raw JSONL or distillation artifacts. Reindex regenerates generated\nsegments and indexes from raw evidence; it is not a semantic promotion step.\n", + "search_text": "Preserved raw archive set and rebuild scope.\narchives\narchived-session-set\nRebuilt segments, indexes, and projection receipts.\nindexes\nindexed-session-set\nProvider freshness is stale but the owning projection has not been identified.\nRaw evidence itself is missing or the request only needs a query against a current index.\nPreserved archives require projection rebuild after source-owned classifier\nschema\ntaxonomy\nor relation changes.\navailable\nskill\nreindex\nskills/aoa-session-reindex/SKILL.md\nindependent-callable\nretain-deferred\nProjection rebuild has a distinct archive-to-index ABI and raw-preservation invariant.\nexecutable\nUse when existing `.aoa` session archives need generated segment Markdown and indexes rebuilt from preserved raw JSONL after taxonomy, classifier, relationship, or index-schema changes.\ngenerated-write\nruntime-mutation\nMutating raw evidence.\nReindexing all sessions before a focused trial.\nClaiming current provider freshness without status verification.\ndeterministic\nreversible\nStop after bounded rebuild parity or a precise source-integrity blocker.\npython3\nsession-memory CLI\nwrite access to derived projection paths\nRaw source hashes remain unchanged.\nGenerated parity and provider freshness pass.\nRegistry and doctor remain healthy.\nskill.aoa-session-reindex\nreindex\nrebuild\nprojection\nclassifier\nschema\nraw-preservation\nskill\nhypothesis\nchallenger\nexperimental\n1.0.1\ndeferred\nGenerated projections match current source contracts.\nRaw hashes are unchanged.\nRebuild again from preserved raw blocks.\nRestore only generated snapshots when a consumer requires rollback.\nauthored\naoa-session-memory\nskills/aoa-session-reindex/SKILL.md\nsession-memory.stewardship.project\nskills/aoa-session-reindex/SKILL.md\nTrigger Boundary\nProcedure\nVerification\nStop Line\nResolve logical roots through the active installation before invoking any adapter-specific command.\nauthored\nskills/aoa-session-reindex/SKILL.md\ncapability-home-v1\naoa-session-memory\nowner-skill-procedure\nDeterministically rebuild derived session projections without changing raw evidence.\nforbidden\nread-session-archives\nwrite-derived-session-index\ntreat-as-data\nsession-memory\ncapabilities/families/session-memory.yaml\nSession projection rebuild\nauthored-procedure\n---\nname: aoa-session-reindex\ndescription: Use when existing `.aoa` session archives need generated segment Markdown and indexes rebuilt from preserved raw JSONL after taxonomy, classifier, relationship, or index-schema changes.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-reindex\n\nUse this when the archive already has raw JSONL but generated segment indexes\nneed to be regenerated under the current classifier.\n\n## Trigger Boundary\n\n- Event taxonomy, universal facets, or relationship indexing changed.\n- Existing sessions need fresh `segments/*.index.json` without re-importing raw.\n- A batch report shows stale or missing index fields.\n- The agent needs to verify old archives under the current index schema.\n\n## Procedure\n\nStart with a dry run for the selected session:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions \\\n --workspace-root \\\n --aoa-root \\\n --dry-run \\\n --write-report\n```\n\nFor an explicitly authorized bounded batch with a shared projection\ndependency, use `all` with the same declared window and limit in every batch\ncommand:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions all \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --limit 10 \\\n --write-report\n```\n\n`all` is never an automatic companion to a one-session trial. Carry the\nselected session or the exact bounded batch predicate into each follow-on\nroute, and obtain separate scope plus a shared-dependency reason when moving\nfrom one session to `all`.\n\nFor one target session:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions \\\n --workspace-root \\\n --aoa-root \\\n --write-report\n```\n\nAfter a classifier or schema reindex, refresh generated projections through the\nnamed catch-up route for the same selected session:\n\n```bash\npython3 scripts/aoa_session_memory.py projection-catchup \\\n --workspace-root \\\n --aoa-root \\\n --apply \\\n --write-report\n```\n\nFor a separately authorized bounded batch, repeat the same `all` selector and\nwindow explicitly:\n\n```bash\npython3 scripts/aoa_session_memory.py projection-catchup all \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --limit 10 \\\n --apply \\\n --write-report\n```\n\nUse `--profile deep` only when the catch-up payload reports that a heavy full\nsearch rebuild or graph repair is required.\n\n## Verification\n\n- `counts.diagnostic` is absent or zero.\n- Segment indexes contain `by_family`, `by_phase`, `by_actor`,\n `by_action`, `by_outcome`, and `by_correlation`.\n- Event records contain universal facets and relationship refs where available.\n- `projection-catchup` reports no remaining projection backlog, or returns the\n explicit next route needed to finish it.\n- `projection-status` reads the latest projection-catchup completeness packet\n without running the writer route, and uses cached maintenance diagnostics\n unless `--refresh-maintenance` is explicitly requested.\n- Run `doctor`, `audit`, and tests after broad reindexing.\n\n## Stop Line\n\nDo not delete raw JSONL or distillation artifacts. Reindex regenerates generated\nsegments and indexes from raw evidence; it is not a semantic promotion step.\n\n---\nname: aoa-session-reindex\ndescription: Use when existing `.aoa` session archives need generated segment Markdown and indexes rebuilt from preserved raw JSONL after taxonomy, classifier, relationship, or index-schema changes.\nlicense: Apache-2.0\nmetadata:\n aoa_scope: session-memory\n aoa_invocation_mode: manual\n---\n\n# aoa-session-reindex\n\nUse this when the archive already has raw JSONL but generated segment indexes\nneed to be regenerated under the current classifier.\n\n## Trigger Boundary\n\n- Event taxonomy, universal facets, or relationship indexing changed.\n- Existing sessions need fresh `segments/*.index.json` without re-importing raw.\n- A batch report shows stale or missing index fields.\n- The agent needs to verify old archives under the current index schema.\n\n## Procedure\n\nStart with a dry run for the selected session:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions \\\n --workspace-root \\\n --aoa-root \\\n --dry-run \\\n --write-report\n```\n\nFor an explicitly authorized bounded batch with a shared projection\ndependency, use `all` with the same declared window and limit in every batch\ncommand:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions all \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --limit 10 \\\n --write-report\n```\n\n`all` is never an automatic companion to a one-session trial. Carry the\nselected session or the exact bounded batch predicate into each follow-on\nroute, and obtain separate scope plus a shared-dependency reason when moving\nfrom one session to `all`.\n\nFor one target session:\n\n```bash\npython3 scripts/aoa_session_memory.py reindex-sessions \\\n --workspace-root \\\n --aoa-root \\\n --write-report\n```\n\nAfter a classifier or schema reindex, refresh generated projections through the\nnamed catch-up route for the same selected session:\n\n```bash\npython3 scripts/aoa_session_memory.py projection-catchup \\\n --workspace-root \\\n --aoa-root \\\n --apply \\\n --write-report\n```\n\nFor a separately authorized bounded batch, repeat the same `all` selector and\nwindow explicitly:\n\n```bash\npython3 scripts/aoa_session_memory.py projection-catchup all \\\n --workspace-root \\\n --aoa-root \\\n --since-days 21 \\\n --limit 10 \\\n --apply \\\n --write-report\n```\n\nUse `--profile deep` only when the catch-up payload reports that a heavy full\nsearch rebuild or graph repair is required.\n\n## Verification\n\n- `counts.diagnostic` is absent or zero.\n- Segment indexes contain `by_family`, `by_phase`, `by_actor`,\n `by_action`, `by_outcome`, and `by_correlation`.\n- Event records contain universal facets and relationship refs where available.\n- `projection-catchup` reports no remaining projection backlog, or returns the\n explicit next route needed to finish it.\n- `projection-status` reads the latest projection-catchup completeness packet\n without running the writer route, and uses cached maintenance diagnostics\n unless `--refresh-maintenance` is explicitly requested.\n- Run `doctor`, `audit`, and tests after broad reindexing.\n\n## Stop Line\n\nDo not delete raw JSONL or distillation artifacts. Reindex regenerates generated\nsegments and indexes from raw evidence; it is not a semantic promotion step.\n", "title": "Session projection rebuild", "tokens": [ - "1.0.0", + "1.0.1", "10", + "21", "abi", "absent", "access", @@ -30601,6 +30959,8 @@ "audit", "authored", "authored-procedure", + "authorized", + "automatic", "available", "backlog", "bash", @@ -30618,6 +30978,7 @@ "capabilities", "capability", "capability-home-v1", + "carry", "catch", "catch-up", "catchup", @@ -30629,6 +30990,7 @@ "classifier", "cli", "command", + "companion", "completeness", "consumer", "contain", @@ -30638,9 +31000,12 @@ "counts.diagnostic", "current", "data", + "days", + "declared", "deep", "deferred", "delete", + "dependency", "derived", "description", "deterministic", @@ -30653,8 +31018,11 @@ "doctor", "dry", "dry-run", + "each", "event", + "every", "evidence", + "exact", "executable", "existing", "experimental", @@ -30666,6 +31034,8 @@ "fields", "finish", "focused", + "follow", + "follow-on", "forbidden", "fresh", "freshness", @@ -30715,6 +31085,7 @@ "metadata", "missing", "mode", + "moving", "mutating", "mutation", "name", @@ -30722,11 +31093,14 @@ "need", "needed", "needs", + "never", "next", "no", "not", + "obtain", "old", "one", + "one-session", "only", "outcome", "owned", @@ -30739,7 +31113,9 @@ "paths", "payload", "phase", + "plus", "precise", + "predicate", "preservation", "preserved", "procedure", @@ -30761,6 +31137,7 @@ "read", "read-session-archives", "reads", + "reason", "rebuild", "rebuilt", "receipts", @@ -30779,6 +31156,7 @@ "remain", "remaining", "repair", + "repeat", "report", "reports", "request", @@ -30800,13 +31178,18 @@ "running", "runtime", "runtime-mutation", + "same", "schema", "scope", "scripts", "search", "segment", "segments", + "selected", + "selector", "semantic", + "separate", + "separately", "session", "session-label-or-id", "session-memory", @@ -30814,12 +31197,15 @@ "session-memory.yaml", "sessions", "set", + "shared", + "shared-dependency", "shows", + "since", + "since-days", "skill", "skill.aoa-session-reindex", "skill.md", "skills", - "smoke", "snapshots", "source", "source-integrity", @@ -30851,6 +31237,7 @@ "verify", "when", "where", + "window", "without", "workspace", "workspace-root", @@ -32016,7 +32403,7 @@ ], "schema_version": "aoa-capability-graph-v1", "source": { - "content_hash": "8e0659361a4ff83f8b7bbcaea696e4dadfb41b3871bdec37b81a0825fd6a9fd7", + "content_hash": "3aaf12c1c030d6381e8b864db4ee8397cf11648edf3e314cd8c0686ea559ef80", "contract": { "contract_files": [ { @@ -32069,7 +32456,7 @@ "family_files": [ { "path": "capabilities/families/session-memory.yaml", - "sha256": "1f1827e83cc443c17008810816a94023cc3f43d941024f77d872d37fc22a3e9a" + "sha256": "ecd86047c81b2796fe23c88dc64bde22b261159b585cabd29c21c4c99e7648a4" } ], "port_manifest": { @@ -32095,7 +32482,7 @@ }, { "path": "skills/aoa-session-batch-distill/SKILL.md", - "sha256": "0d1bb58c5db22b8554f03e74e5a094b5a7e88d3bf0933527225104df13102a12" + "sha256": "af3f91709a7f7b4f9c2a3d60ca398624ab30f9211177703dfe90abea03089b75" }, { "path": "skills/aoa-session-experience-metabolism/SKILL.md", @@ -32155,7 +32542,7 @@ }, { "path": "skills/aoa-session-phase-discovery/SKILL.md", - "sha256": "4adef9f568ad5cae83262f00d791a59412f6afc3cc9f8eecc9759b9159f2258d" + "sha256": "e3c4ad2193a8059945c751b955aac1e8db7cb149105abbd97dbf6f7210827796" }, { "path": "skills/aoa-session-raw-diagnostic/SKILL.md", @@ -32167,7 +32554,7 @@ }, { "path": "skills/aoa-session-reindex/SKILL.md", - "sha256": "85eb7df9325e52c4dc7515d321360ce6833a53926b851cad0a41637c405484e1" + "sha256": "ba500bcf9616e89a840cb51f31bb9bfcf72ce9c3b375a4ad5a3fa657bd0ccc55" }, { "path": "skills/aoa-session-search/SKILL.md", diff --git a/generated/capability_graph.md b/generated/capability_graph.md index 4eeeafae..e0ab8550 100644 --- a/generated/capability_graph.md +++ b/generated/capability_graph.md @@ -2,7 +2,7 @@ Derived from `capabilities/families/*.yaml`. This file is a read model, not capability authority. -Source content hash: `8e0659361a4ff83f8b7bbcaea696e4dadfb41b3871bdec37b81a0825fd6a9fd7` +Source content hash: `3aaf12c1c030d6381e8b864db4ee8397cf11648edf3e314cd8c0686ea559ef80` ## Semantic tree diff --git a/skills/aoa-session-batch-distill/SKILL.md b/skills/aoa-session-batch-distill/SKILL.md index fa5aeed5..544a7193 100644 --- a/skills/aoa-session-batch-distill/SKILL.md +++ b/skills/aoa-session-batch-distill/SKILL.md @@ -23,6 +23,17 @@ truth. ## Procedure +Batch distillation is set-oriented and has no positional session argument. +Declare a bounded set with `--since`, `--since-days`, `--until`, and/or +`--limit`, then carry the same predicate through any separately authorized +follow-on route. The current batch and title-repair implementations use the +same chronological registry selector, but a report is the binding set: before +any follow-on apply, compare its selected session IDs with the prior report. +Stop on any mismatch and re-plan that changed set under explicit scope +authorization. An archive-wide `all` selector in a maintenance command is a +new scope decision; it is never implied by processing one session or one +bounded batch. + Start with a planning report: ```bash @@ -30,6 +41,7 @@ python3 scripts/aoa_session_memory.py batch-distill \ --workspace-root \ --aoa-root \ --since-days 21 \ + --limit 10 \ --write-report ``` @@ -47,13 +59,15 @@ Inspect owner quality before applying a broad pass. Each profile contains `project_grounding` and `owner_resolution`; fallback grounding is not the same as a resolved owner. -Repair weak imported titles before a broad manual review wave: +If title repair is separately authorized for this same bounded set, repair +weak imported titles before a broad manual review wave: ```bash python3 scripts/aoa_session_memory.py repair-session-titles all \ --workspace-root \ --aoa-root \ --since-days 21 \ + --limit 10 \ --write-report ``` @@ -66,6 +80,7 @@ python3 scripts/aoa_session_memory.py batch-distill \ --workspace-root \ --aoa-root \ --since-days 21 \ + --limit 10 \ --apply \ --write-report ``` @@ -93,8 +108,11 @@ promoted claims and samples, not carry the entire archive in active attention. After each batch, inspect `improvement_candidates` in the report. If the queue shows recurring parser misses, noisy names, missing indexes, hook gaps, or -repeatable command patterns, improve the bundle itself with a narrow patch and -rerun `doctor`, `audit`, and tests. +repeatable command patterns, emit the candidate as a provisional owner-routed +handoff. Do not patch, retrain, change hooks or CLI behavior, or rerun a repair +inside the data-processing batch. A separately authorized owner task may +inspect the candidate, make a narrow source change, run its owner checks, and +start a new bounded batch after review. ## Verification @@ -103,6 +121,8 @@ rerun `doctor`, `audit`, and tests. - All produced artifacts remain explicitly provisional. - Owner resolution and evidence refs are present before project-specific interpretation. +- Mechanics candidates remain owner-routed handoffs; the batch does not change + the bundle or its processing mechanism. - No claim, skill change, automation, or durable lesson was promoted. ## Stop Line diff --git a/skills/aoa-session-memory-global-route/references/capability-router.md b/skills/aoa-session-memory-global-route/references/capability-router.md index b65456c6..653365d6 100644 --- a/skills/aoa-session-memory-global-route/references/capability-router.md +++ b/skills/aoa-session-memory-global-route/references/capability-router.md @@ -2,7 +2,7 @@ Generated from owner capability contracts. This card is a retrieval read model, not procedure or proof authority. -Source graph hash: `8e0659361a4ff83f8b7bbcaea696e4dadfb41b3871bdec37b81a0825fd6a9fd7` +Source graph hash: `3aaf12c1c030d6381e8b864db4ee8397cf11648edf3e314cd8c0686ea559ef80` Federation: `aoa-session-memory` specializes `aoa-skills:sessions`. | skill | visibility | use when | do not use when | version | fingerprint | @@ -13,7 +13,7 @@ Federation: `aoa-session-memory` specializes `aoa-skills:sessions`. | `aoa-codex-hooks-status` | deferred | Native Codex hook registration or trust must be inspected for one selected root. | The runtime is not Codex or the question concerns archive content rather than hook state. | 1.0.0 | `adc1e110880d28ee` | | `aoa-codex-session-segment-archive` | deferred | A concrete Codex transcript must be archived or a missed archive event must be replayed. | The source is not a Codex transcript or the raw source cannot be read and verified. | 1.0.0 | `06f718756dbb22dd` | | `aoa-session-archive-init` | deferred | A workspace lacks a valid session-memory root or requires an explicit install or repair. | The selected root is already healthy and no install or repair was requested. | 1.0.0 | `87fec5f9466556ab` | -| `aoa-session-batch-distill` | deferred | A reviewed set of indexed sessions needs a bounded provisional distillation wave. | Exactly one indexed session is in scope; use first-pass distill.; The operator expects automatic promotion. | 1.0.0 | `653ff014b7b39c0f` | +| `aoa-session-batch-distill` | deferred | A reviewed set of indexed sessions needs a bounded provisional distillation wave. | Exactly one indexed session is in scope; use first-pass distill.; The operator expects automatic promotion. | 1.0.1 | `07641eb703fa9889` | | `aoa-session-experience-metabolism` | deferred | A bounded set of closed; reviewed; aligned stage profiles needs privacy-safe recurring-motif candidates. | The evidence is raw; live; provisional; or asks for an eval verdict or automatic adoption. | 1.0.0 | `c7b79fab929414cd` | | `aoa-session-first-pass-distill` | deferred | One indexed session needs provisional candidate extraction. | The task asks for reviewed truth; final promotion; or a multi-session conveyor. | 1.0.0 | `2b577834951dd51f` | | `aoa-session-history-import` | deferred | Historical Codex JSONL sources must be discovered and imported into one selected root. | Only the current live transcript needs archiving or the history source is not explicitly bound. | 1.0.0 | `9aa0e6b23b0a92fa` | @@ -23,10 +23,10 @@ Federation: `aoa-session-memory` specializes `aoa-skills:sessions`. | `aoa-session-memory-stress-pass` | deferred | A large archive or logical compaction boundary requires bounded stress validation. | A normal root health or release readiness check is sufficient. | 1.0.0 | `2f7b1a05b8f48775` | | `aoa-session-naming-readiness` | deferred | A naming wave or broad semantic renaming is being considered. | A single reviewed name is already ready for explicit application. | 1.0.0 | `fb178af39591faa8` | | `aoa-session-naming-wave` | deferred | A reviewed bounded set of phase or title candidates is ready for a guarded naming wave. | Readiness; phase candidates; review approval; or current index freshness is missing. | 1.0.0 | `79685864e99daf24` | -| `aoa-session-phase-discovery` | deferred | A long or multi-topic session needs phase candidates before semantic naming. | A short session already has one reviewed semantic name. | 1.0.0 | `f42f29065ad5da68` | +| `aoa-session-phase-discovery` | deferred | A long or multi-topic session needs phase candidates before semantic naming. | A short session already has one reviewed semantic name. | 1.0.1 | `aaba1ef4cec35f32` | | `aoa-session-raw-diagnostic` | deferred | A transcript read failed during hook or manual archive processing. | The raw source is readable or no concrete archive failure exists. | 1.0.0 | `d31074a22beda78e` | | `aoa-session-rehydrate` | deferred | A named archived session must be resumed or inspected without full raw loading. | The current active session already contains the required state or raw forensic review is explicitly required. | 1.0.0 | `dfe4d4924145df48` | -| `aoa-session-reindex` | deferred | Preserved archives require projection rebuild after source-owned classifier; schema; taxonomy; or relation changes. | Raw evidence itself is missing or the request only needs a query against a current index. | 1.0.0 | `5749a8e863003dac` | +| `aoa-session-reindex` | deferred | Preserved archives require projection rebuild after source-owned classifier; schema; taxonomy; or relation changes. | Raw evidence itself is missing or the request only needs a query against a current index. | 1.0.1 | `aff124cb63b3067e` | | `aoa-session-search` | deferred | A bounded archive query or explicit portable search-index refresh is required. | A current file; owner API; or typed entity route answers the question without archive search. | 1.0.0 | `42e8da2474fb99d3` | Load the named `SKILL.md` for procedure. Use the full generated graph for ABI, effects, failures, relations, and composition; do not infer invocation or benefit from selection alone. diff --git a/skills/aoa-session-phase-discovery/SKILL.md b/skills/aoa-session-phase-discovery/SKILL.md index c6501c90..b1ea74f3 100644 --- a/skills/aoa-session-phase-discovery/SKILL.md +++ b/skills/aoa-session-phase-discovery/SKILL.md @@ -37,13 +37,19 @@ python3 scripts/aoa_session_memory.py phase-discovery \ Then refresh the indexes: ```bash -python3 scripts/aoa_session_memory.py naming-readiness all \ +python3 scripts/aoa_session_memory.py naming-readiness \ --workspace-root \ --aoa-root \ --refresh-indexes \ --write-report ``` +Keep the same session selector through this follow-on route. The refresh may +rewrite shared naming maps as a generated dependency, but `all` is a separate +scope choice: use it only when that scope is explicitly authorized and a +shared index dependency makes it necessary. Discovery never widens one +selected session into an archive-wide naming pass by itself. + ## Reading The Artifact - `naming/phase-discovery.json`: machine-readable candidate list. diff --git a/skills/aoa-session-reindex/SKILL.md b/skills/aoa-session-reindex/SKILL.md index ab14843c..49fe4f1d 100644 --- a/skills/aoa-session-reindex/SKILL.md +++ b/skills/aoa-session-reindex/SKILL.md @@ -21,26 +21,34 @@ need to be regenerated under the current classifier. ## Procedure -Start with a dry run: +Start with a dry run for the selected session: ```bash -python3 scripts/aoa_session_memory.py reindex-sessions all \ +python3 scripts/aoa_session_memory.py reindex-sessions \ --workspace-root \ --aoa-root \ --dry-run \ --write-report ``` -For a bounded smoke pass: +For an explicitly authorized bounded batch with a shared projection +dependency, use `all` with the same declared window and limit in every batch +command: ```bash python3 scripts/aoa_session_memory.py reindex-sessions all \ --workspace-root \ --aoa-root \ + --since-days 21 \ --limit 10 \ --write-report ``` +`all` is never an automatic companion to a one-session trial. Carry the +selected session or the exact bounded batch predicate into each follow-on +route, and obtain separate scope plus a shared-dependency reason when moving +from one session to `all`. + For one target session: ```bash @@ -51,12 +59,25 @@ python3 scripts/aoa_session_memory.py reindex-sessions \ ``` After a classifier or schema reindex, refresh generated projections through the -named catch-up route: +named catch-up route for the same selected session: + +```bash +python3 scripts/aoa_session_memory.py projection-catchup \ + --workspace-root \ + --aoa-root \ + --apply \ + --write-report +``` + +For a separately authorized bounded batch, repeat the same `all` selector and +window explicitly: ```bash python3 scripts/aoa_session_memory.py projection-catchup all \ --workspace-root \ --aoa-root \ + --since-days 21 \ + --limit 10 \ --apply \ --write-report ```