Skip to content

feat(yellow-core): add compound-lifecycle skill (W3.10) - #296

Merged
KingInYellow18 merged 2 commits into
mainfrom
agent/feat/compound-lifecycle-skill
Apr 30, 2026
Merged

KingInYellow18 merged 2 commits into
mainfrom
agent/feat/compound-lifecycle-skill

Conversation

@KingInYellow18

@KingInYellow18 KingInYellow18 commented Apr 30, 2026 •

Copy link
Copy Markdown
Contributor

Maintain the long-term quality of the docs/solutions/ catalog through
three operations:

  1. Composite staleness detection — replaces single time-threshold with
    a 4-component score: 0.4days_modified + 0.3/inbound_refs +
    0.2
    embedding_age + 0.1*days_since_retrieved (Atlan-pattern).
    Heavily-cited evergreen entries don't get false-flagged; recent
    entries with broken references do. ruvector components contribute
    zero on graceful degradation.

  2. Two-pass overlap detection — category+tags overlap (cheap), then
    BM25 on problem: lines, then optional ruvector cosine clustering at
    0.82 threshold (calibrated for paragraph-level semantic equivalence
    on markdown corpora — USE convention).

  3. AskUserQuestion-gated consolidation hand-off — never auto-merges.
    Dispatches knowledge-compounder via Task to write the merged
    canonical entry, then archives the source entries with a
    superseded_by: frontmatter pointer.

Five-outcome classification (Keep / Update / Consolidate / Replace /
Delete-and-archive) adapted from upstream ce-compound-refresh at SHA
e5b397c9.

Yellow-plugins divergence: archive instead of delete. Archived entries
move to docs/solutions/archived// and remain
searchable for forensics, citation continuity, and learnings-researcher
fallback. learnings-researcher excludes archived/ from default search.

Per-project tuning via yellow-plugins.local.md compound_lifecycle.*
keys (forward-declared in local-config skill).

Autofix mode for scheduled runs: applies unambiguous Updates only;
marks ambiguous cases as status: stale for human review.

Hard quality dependency for W3.11 ideation skill per the source plan's
research note.

Bumps yellow-core skill count: 5 → 6. README catch-up from stale
13a/7c/4s/2m to current 17a/8c/6s/1m (drift accumulated across
several merged PRs; this brings README in lockstep).

Summary

Stack context

Test plan

Notes for reviewers


Open in Devin Review

Summary by CodeRabbit

  • New Features

    • Introduced compound-lifecycle skill for repository auditing with composite staleness scoring, staged overlap detection, and Ask‑user gated consolidation
    • Added archival workflow that preserves superseded entries and records successor links
  • Documentation

    • Added archived solutions README with restore procedures
    • Added comprehensive lifecycle skill docs and configurable thresholds
    • Updated READMEs to list the new skill and a new Context7 MCP server with setup instructions
  • Other

    • Lifecycle run report output now recorded for scheduled autofix runs

Greptile Summary

Adds the compound-lifecycle skill (W3.10) to yellow-core, implementing composite staleness scoring, two-pass BM25+cosine overlap clustering, and an AskUserQuestion-gated consolidation hand-off that archives superseded entries to docs/solutions/archived/ instead of deleting them. Across previous review rounds several P1 gaps in SKILL.md were identified (no abort path when knowledge-compounder fails before archive moves, missing mkdir -p guard, superseded_by value unspecified in the Delete-and-archive path, Task description hardcoded as "Consolidate" for Replace flow); none of those appear resolved in this revision.

Confidence Score: 3/5

Not ready to merge — multiple P1 issues from prior review rounds remain open in SKILL.md's execute path

Several P1 findings from previous review rounds are still unaddressed: no abort/rollback path when knowledge-compounder fails before archive moves execute, missing mkdir -p guard, superseded_by value unspecified in Delete-and-archive path, and Task description hardcoded as Consolidate for the semantically distinct Replace flow. New findings in this pass are all P2. The combination of multiple unresolved P1s on the core execute path warrants a score below the P1 ceiling of 4.

plugins/yellow-core/skills/compound-lifecycle/SKILL.md — Step 8 execute path has unresolved P1 gaps from prior rounds

Important Files Changed

Filename Overview
plugins/yellow-core/skills/compound-lifecycle/SKILL.md Core new skill implementing composite staleness scoring, BM25+cosine overlap clustering, and user-gated consolidation; several P1 gaps from prior rounds remain unaddressed; new finding: citation_gate config key undocumented in Configuration section
docs/solutions/archived/README.md Scaffolding README for archived entries; now consistent with SKILL.md on learnings-researcher exclusion status; restore instructions incomplete for overlap-archived entries
README.md Updates yellow-core skill count (5→6), drops 0 MCPs suffix, adds Context7 user-level MCP section; 'The plugin connects to' phrasing is misleading since yellow-core no longer bundles Context7
plugins/yellow-core/CLAUDE.md Adds compound-lifecycle to Skills (6) list with accurate description; MCP Servers (0) count is correct
plugins/yellow-core/README.md Adds compound-lifecycle row to Skills table; MCP section correctly reflects 0 bundled MCPs with user-level Context7 note
.changeset/compound-lifecycle-skill.md Correct minor bump for yellow-core; omits citation_gate from the config key list but this is a doc-only gap
RESEARCH/upstream-snapshots/e5b397c9d1883354f03e338dd00f98be3da39f9f/MANIFEST.md Expands description of ce-compound-refresh entry to document yellow-plugins divergence and adaptation scope; no issues

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["/yellow-core:compound-lifecycle [scope-hint]"] --> B[Step 1: Discover candidates
docs/solutions/**/*.md
exclude archived/ + _lifecycle-runs/]
    B --> C{Scope hint?}
    C -- yes --> D[Step 2: Filter by path/category/tag/keyword]
    C -- no --> E[Step 3: Route by count]
    D --> E
    E -- "1-2 Focused" --> F[Investigate directly]
    E -- "3-8 Batch" --> G[Investigate all]
    E -- "9+ Broad" --> H[Phase 0 Triage
AskUserQuestion cluster order]
    H --> G
    F & G --> I[Step 4: Gather evidence
refs / accuracy / inbound citations / ruvector recall]
    I --> J[Step 5a: Staleness score
citation gate >= 5 → Keep
composite formula otherwise]
    I --> K[Step 5b: Overlap detection
pass1: category+tags
pass2: BM25 p90
pass3: ruvector cosine >= 0.82]
    J & K --> L[Step 6: Classify
Keep / Update / Consolidate / Replace / Delete-and-archive]
    L --> M{Mode?}
    M -- interactive --> N[Step 7: AskUserQuestion per cluster]
    M -- autofix --> O[Apply Updates; mark rest stale]
    N --> P[Step 8: Execute]
    O --> P
    P -- Update --> Q[Edit in-place
bump updated:]
    P -- Consolidate/Replace --> R[Task: knowledge-compounder
Verify new entry exists
mv + superseded_by:]
    P -- Delete-and-archive --> S[mv + superseded_by: null
no compounder dispatch]
    Q & R & S --> T[Step 9: Report
interactive: inline
autofix: _lifecycle-runs/timestamp.md]
Loading

Comments Outside Diff (2)

  1. docs/solutions/archived/README.md, line 188-191 (link)

    P1 learnings-researcher exclusion claim directly contradicts SKILL.md

    This README states learnings-researcher does not exclude archived/ by default, but SKILL.md (lines 647–650) says the opposite: "The archived/ subtree is excluded from learnings-researcher's default search by path filter." The changeset description also backs SKILL.md: "learnings-researcher excludes archived/ from default search." One of these documents is wrong about the current behaviour. A user reading this README will configure their workflow expecting archived entries to surface in learnings-researcher searches; a user reading SKILL.md will expect the opposite — leading to missed or unexpected recall results depending on which document they consulted.

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: docs/solutions/archived/README.md
    Line: 188-191
    
    Comment:
    **`learnings-researcher` exclusion claim directly contradicts SKILL.md**
    
    This README states learnings-researcher does **not** exclude `archived/` by default, but `SKILL.md` (lines 647–650) says the opposite: "The `archived/` subtree is excluded from `learnings-researcher`'s default search by path filter." The changeset description also backs SKILL.md: "learnings-researcher excludes archived/ from default search." One of these documents is wrong about the current behaviour. A user reading this README will configure their workflow expecting archived entries to surface in learnings-researcher searches; a user reading SKILL.md will expect the opposite — leading to missed or unexpected recall results depending on which document they consulted.
    
    How can I resolve this? If you propose a fix, please make it concise.

    Fix in Codex

  2. plugins/yellow-core/skills/compound-lifecycle/SKILL.md, line 544-548 (link)

    P1 Delete-and-archive: superseded_by value left unspecified

    Step 8 instructs "same as the archive step in Consolidate (move + superseded_by frontmatter)" but the Consolidate archive sub-step says to set superseded_by to the new canonical entry's path — which doesn't exist in the Delete-and-archive case. docs/solutions/archived/README.md specifies the correct value (superseded_by: null), but the SKILL.md procedure that an executing LLM reads step-by-step never states this. The agent will either omit the field entirely, inherit the wrong Consolidate semantics and leave an empty/broken pointer, or interpolate arbitrarily — all inconsistent with the documented schema.

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: plugins/yellow-core/skills/compound-lifecycle/SKILL.md
    Line: 544-548
    
    Comment:
    **Delete-and-archive: `superseded_by` value left unspecified**
    
    Step 8 instructs "same as the archive step in Consolidate (move + `superseded_by` frontmatter)" but the Consolidate archive sub-step says to set `superseded_by` to the new canonical entry's path — which doesn't exist in the Delete-and-archive case. `docs/solutions/archived/README.md` specifies the correct value (`superseded_by: null`), but the SKILL.md procedure that an executing LLM reads step-by-step never states this. The agent will either omit the field entirely, inherit the wrong Consolidate semantics and leave an empty/broken pointer, or interpolate arbitrarily — all inconsistent with the documented schema.
    
    How can I resolve this? If you propose a fix, please make it concise.

    Fix in Codex

Fix All in Codex

Prompt To Fix All With AI
Fix the following 3 code review issues. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 3
plugins/yellow-core/skills/compound-lifecycle/SKILL.md:440-443
**`citation_gate` undocumented in Configuration section**

Step 5a introduces `compound_lifecycle.staleness.citation_gate` (default `5`) as a tunable key, but the Configuration section lists only `{w1,w2,w3,w4,threshold}` under `compound_lifecycle.staleness`. A user consulting the Configuration section to write their `yellow-plugins.local.md` overrides won't find the gate key there and has no indication it exists. The changeset description also omits it from the key list.

### Issue 2 of 3
README.md:111-112
**"The plugin connects to" implies Context7 is bundled**

`plugins/yellow-core/CLAUDE.md` states `MCP Servers (0)` — "yellow-core no longer bundles any MCP servers" — and `plugins/yellow-core/README.md` confirms "yellow-core does not bundle any MCP servers." The phrase "The plugin connects to `https://mcp.context7.com/mcp`" implies a plugin-level bundled connection, which contradicts both source-of-truth files. Since Context7 is a recommended user-level MCP, the phrasing should say "Claude Code connects to" instead.

```suggestion
**Free (no key):** Works out of the box. Claude Code connects to
`https://mcp.context7.com/mcp` with no configuration needed.
```

### Issue 3 of 3
docs/solutions/archived/README.md:200-205
**Restore advice only prevents staleness re-flagging, not overlap re-consolidation**

Bumping `updated:` lowers the `days_since_modified` component of the staleness score, which works for entries archived because they were stale. However, entries archived via **Consolidate** or **Replace** were removed for semantic overlap — their canonical successor still lives in the live catalog. On the next skill run, pass-2 BM25 and the optional cosine pass will re-detect the restored entry as overlapping with its former successor and recommend Consolidate again regardless of the `updated:` date.

The restore instructions should also advise users to differentiate the restored entry from its successor (e.g., update its `tags:`, narrow its `problem:` scope, or rename its `category:`) so it no longer scores as a duplicate cluster.

Reviews (6): Last reviewed commit: "fix: round 3 PR #296 review — citation g..." | Re-trigger Greptile

@qodo-code-review

Copy link
Copy Markdown
ⓘ You've reached your Qodo monthly free-tier limit. Reviews pause until next month — upgrade your plan to continue now, or link your paid account if you already have one.

@codeant-ai

codeant-ai Bot commented Apr 30, 2026

Copy link
Copy Markdown

User kinginyellow18@proton.me does not have a PR Review subscription.

Go to Team management and add this email to the PR Review subscription.

@coderabbitai

coderabbitai Bot commented Apr 30, 2026 •

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

This PR adds documentation for a new compound-lifecycle skill in yellow-core that audits docs/solutions/ for staleness and overlaps, routes consolidation to a Task-based knowledge-compounder, and archives superseded entries under docs/solutions/archived/ with superseded_by frontmatter.

Changes

Cohort / File(s) Summary
Changeset
.changeset/compound-lifecycle-skill.md
New minor changeset documenting the compound-lifecycle skill, scoring, overlap detection, consolidation gating, and archival strategy.
Top-level README updates
README.md
Updated project listing: skill count increment and added Context7 MCP server documentation.
Plugin docs
plugins/yellow-core/CLAUDE.md, plugins/yellow-core/README.md
Incremented Skills count (5→6) and added compound-lifecycle entry in skills table/section.
Skill specification
plugins/yellow-core/skills/compound-lifecycle/SKILL.md
New comprehensive spec: candidate discovery, scoped hints, tiered runs, composite staleness scoring, staged overlap detection (category/tags → BM25 → optional cosine), AskUserQuestion gating, Task dispatch to knowledge-compounder, archival mechanics, and run reporting.
Archive docs
docs/solutions/archived/README.md
New archive layout and process: archived path convention, preserve original frontmatter + superseded_by, restore steps, and learnings-researcher search/exclusion notes.
Research manifest
RESEARCH/upstream-snapshots/.../MANIFEST.md
Updated snapshot manifest to reference PR #296 provenance and document divergence (archive vs upstream Delete).

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Skill as compound-lifecycle Skill
    participant Detector as Staleness & Overlap Detector
    participant Gate as AskUserQuestion
    participant Compounder as knowledge-compounder
    participant Archive as docs/solutions/archived/

    User->>Skill: Invoke run (interactive or autofix)
    Skill->>Detector: Enumerate candidates & gather evidence
    Detector->>Detector: Compute composite staleness & detect overlaps
    Detector-->>Skill: Return scored clusters/candidates
    Skill->>Gate: Present actions (Keep/Update/Consolidate/Replace/Delete)
    Gate->>User: Request decision (interactive)
    User-->>Gate: Approve action

    alt Consolidate or Replace
        Gate->>Compounder: Dispatch Task to write merged canonical entry
        Compounder-->>Gate: Successor entry created
        Gate->>Archive: Move sources to archived/ and add `superseded_by`
    else Delete
        Gate->>Archive: Move source to archived/ and add `superseded_by: null`
    else Update
        Gate->>Skill: Apply inline update (or mark stale in autofix)
    else Keep
        Gate->>Skill: No change
    end

    Archive-->>User: Archived files at docs/solutions/archived/
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 I hop through docs, nose to the ground,

sniff stale bits and overlaps I found.
I bundle up sources, mark who supersedes,
send the compounder where merging leads.
Archived and tidy—my tiny victory bound.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Description check ❓ Inconclusive The PR description is comprehensive and detailed, providing clear context on the three core operations (staleness, overlap, consolidation), the five-outcome classification, and key divergences from upstream. However, it leaves the structured template sections (Summary, Stack context, Test plan, Notes for reviewers) mostly unpopulated—the Summary, Stack context, and Test plan remain empty or minimal. Complete the template sections: add 2-3 bullet points to Summary, specify the stack branch context if applicable, document the test plan and verification steps, and expand Notes for reviewers to highlight critical caveats (e.g., unresolved P1 issues flagged in prior reviews and the Greptile report).
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed Title clearly and concisely summarizes the main change: adding the compound-lifecycle skill to yellow-core (W3.10 reference anchors feature scope).
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agent/feat/compound-lifecycle-skill

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor Author

How to use the Graphite Merge Queue

Add the label graphite-queue to this PR to add it to the merge queue.

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@codacy-production

codacy-production Bot commented Apr 30, 2026 •

Copy link
Copy Markdown

Not up to standards ⛔

🔴 Issues 1 minor

Alerts:
⚠ 1 issue (≤ 0 issues of at least minor severity)

Results:
1 new issue

Category Results
BestPractice 1 minor

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

gemini-code-assist[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

chatgpt-codex-connector[bot]

This comment was marked as resolved.

greptile-apps[bot]

This comment was marked as resolved.

@KingInYellow18

Copy link
Copy Markdown
Contributor Author

Self-review via /review:pr (scoped: 5 of 7 — full keystone subset for the prose-heavy SKILL.md)

Verdict: Not ready (8 P1, 9 P2, several P3). Substantive revision required before merge.

This PR has the most findings of the four reviewed today. The keystone is doing its job — these are real issues, not noise.

P1 — Critical (8, with multi-reviewer agreement)

# File:line Issue Reviewer(s) Confidence
1 compound-lifecycle/SKILL.md (Step 5a formula) Staleness formula w2 term is additive, not suppressive. w2 * (1 / max(inbound_refs, 1)) contributes at most 0.3 (when refs=0); approaches 0 as refs grow. Heavy citations REDUCE the score by tiny amounts, never enough to bring an aged entry back below threshold. Claim that "heavily-cited evergreen entries don't get false-flagged" is FALSE — entry with age=300, refs=50 scores 0.4*300 + 0.3/50 = 120.006, flagged stale. correctness 100
2 compound-lifecycle/SKILL.md (pass 1 threshold) Pass 1 ">2 members" off-by-one. Pairs (2 entries with category+tags overlap) — the canonical real-world overlap signal — are silently dropped before reaching pass 2. They're not singletons either, so pass 2's "across pass-1 singletons" path doesn't catch them. Should be >= 2 (or > 1). correctness 100
3 README.md:29 + :265 README updated to "1 MCP" — but yellow-core CLAUDE.md says "MCP Servers (0)" ("yellow-core no longer bundles any MCP servers"). The new count is still wrong. 3-reviewer agreement. proj-compl, pattern-rec, comment-analyzer 100
4 compound-lifecycle/SKILL.md + local-config/SKILL.md compound_lifecycle.* config keys claimed "forward-declared in local-config" — they aren't. local-config SKILL.md schema lists review_pipeline, review_depth, focus_areas, reviewer_set, stack, agent_native_focus, confidence_threshold. 4-reviewer agreement → cross-promote to 100. proj-compl, pattern-rec, adversarial, comment-analyzer 100
5 compound-lifecycle/SKILL.md (4 locations) + archived/README.md learnings-researcher archived/ exclusion claimed but not implemented. No archived/-related logic exists in learnings-researcher.md. Forward-declared behavior. 3-reviewer agreement. correctness, adversarial, comment-analyzer 100
6 compound-lifecycle/SKILL.md (Step 8.2) knowledge-compounder Task interface mismatch. Step 8.2 dispatches with <consolidation-context> block as prompt: and expects the agent's return to contain the new entry's path. Actual knowledge-compounder.md accepts only the structured-findings fast-path delimiters and emits a "completion summary" not a path. The two agents don't speak the same protocol. comment-analyzer 100
7 archived/README.md:170 30-day restore grace period documented but not implemented. README claims "compound-lifecycle will not auto-re-archive a manually restored entry within 30 days" — no such logic exists in SKILL.md (no stale_date: comparison, no 30-day window). Behavioral guarantee with no backing implementation. comment-analyzer 100
8 compound-lifecycle/SKILL.md (Step 8.3 → 8.4) knowledge-compounder failure leaves split-brain catalog. Step 8.3 says "verify it exists" but Step 8.4 archive moves are listed unconditionally after. If compounder fails or writes empty file, originals get archived anyway → catalog has both archived originals AND missing/malformed canonical entry. Manual recovery only. adversarial 100

P2 — Moderate (9, several with multi-reviewer agreement)

# File:line Issue Reviewer(s) Confidence
9 compound-lifecycle/SKILL.md (Step 8.4) Plain mv loses git history AND the skill has no Bash in tools — mv literally cannot run without it. Restore procedure in archived/README.md uses git mv, asymmetric. 3-reviewer agreement. correctness, pattern-rec, comment-analyzer 100
10 compound-lifecycle/SKILL.md (autofix mode) Autofix bulk-mark cascade. No batch cap on status: stale writes. A scheduled cron run against a year-of-neglect catalog could mark hundreds of entries stale in one go. adversarial 75
11 compound-lifecycle/SKILL.md (Step 5a) Never-retrieved entries: days_since_retrieved undefined → treated as 0 → entry scores fresher than reality. Should fall back to entry age. adversarial 100
12 compound-lifecycle/SKILL.md (Step 8.4) Archive overwrite collision: two consolidations targeting the same archived/<category>/<slug>.md clobber silently. adversarial 75
13 compound-lifecycle/SKILL.md (Step 2 scope hint) Scope-hint accepts user-controlled text; passes to Grep across docs/solutions/. Path-separator/glob metacharacter injection could escape scope. adversarial 75
14 compound-lifecycle/SKILL.md (_lifecycle-runs/ exclusion) Asserts exclusion via _-prefix convention that doesn't exist in learnings-researcher. 2-reviewer agreement. adversarial, comment-analyzer 100
15 compound-lifecycle/SKILL.md (cosine 0.82 citation) "USE convention; Pinecone case study" — unverifiable, no URL. Threshold is embedding-model-dependent; ruvector model unknown. comment-analyzer 75
16 compound-lifecycle/SKILL.md (Atlan citation) "Atlan KB freshness scoring" — no specific article. Formula doesn't match any published Atlan methodology visible in public docs. comment-analyzer 75
17 compound-lifecycle/SKILL.md ("Why archive, don't delete") Internal contradiction: same PR claims archived entries are "Grep-able for learnings-researcher" AND that learnings-researcher excludes them. Mutually exclusive. comment-analyzer 75
18 compound-lifecycle/SKILL.md (classification table) Gap: subsuming-but-not-conflicting clusters (one entry covers others, fix is correct) have no defined outcome. LLM falls through. correctness 75

P3 (selected)

  • Step numbering em-dash vs colon style divergence from create-agent-skills
  • CLAUDE.md skill entry is multi-line vs single-line sibling pattern
  • status: stale invisible to learnings-researcher (defeats deferral mechanism)

Resolution path

This PR has too many cross-cutting issues to amend cleanly in this session. The bugs aren't isolated typos — they reflect interface mismatches with two other agents (learnings-researcher, knowledge-compounder) that don't yet support the integrations W3.10 claims, plus a real algorithmic bug in the staleness formula's central claim ("heavily-cited evergreen entries don't get false-flagged") which the math doesn't support.

Options:

  1. Convert to draft, defer fixes to follow-up — most honest. The PR's research-backed framing turns out to outrun the actual implementation in three agents (compound-lifecycle, learnings-researcher, knowledge-compounder). Land it as draft with a TODO list, then fix in subsequent PRs.

  2. Apply the trivial fixes only, defer architectural ones — fix the README MCP count, the off-by-one, and remove the unimplemented-behavior claims. Land a leaner v1 that doesn't claim integrations it doesn't have. Algorithmic staleness-formula fix would need real work.

  3. Apply ALL fixes in this session — substantive scope (~6 architectural fixes + 2 algorithmic + several text). High token cost. May surface further issues on re-review.

I'd recommend option 1 or 2. The findings here are good signal that this skill needs more cycles than I gave it the first time.

Coverage

  • Reviewers run: project-compliance, correctness, adversarial, pattern-recognition (cross-plugin yellow-core), comment-analyzer
  • Reviewers skipped (scoped subset): maintainability, project-standards, reliability, security, code-simplicity, polyglot, type-design, silent-failure-hunter, pr-test-analyzer
  • Plugin-contract-reviewer: not in registry yet (PR feat(yellow-review): add plugin-contract-reviewer agent (W3.15) #293)
  • Cross-reviewer agreement promotions: 4 (MCP count, local-config keys, archived/ exclusion, _lifecycle-runs/ convention)
  • Past learnings: not run (would have flagged the cross-reviewer cosine-threshold-citation pattern from this morning's session, but those weren't yet captured to docs/solutions/)

@KingInYellow18
KingInYellow18 marked this pull request as draft April 30, 2026 13:01
@KingInYellow18
KingInYellow18 marked this pull request as ready for review April 30, 2026 15:28
@qodo-code-review

Copy link
Copy Markdown
ⓘ You've reached your Qodo monthly free-tier limit. Reviews pause until next month — upgrade your plan to continue now, or link your paid account if you already have one.

greptile-apps[bot]

This comment was marked as resolved.

chatgpt-codex-connector[bot]

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as resolved.

Maintain the long-term quality of the docs/solutions/ catalog through
three operations:

1. Composite staleness detection — replaces single time-threshold with
   a 4-component score: 0.4*days_modified + 0.3/inbound_refs +
   0.2*embedding_age + 0.1*days_since_retrieved (Atlan-pattern).
   Heavily-cited evergreen entries don't get false-flagged; recent
   entries with broken references do. ruvector components contribute
   zero on graceful degradation.

2. Two-pass overlap detection — category+tags overlap (cheap), then
   BM25 on problem: lines, then optional ruvector cosine clustering at
   0.82 threshold (calibrated for paragraph-level semantic equivalence
   on markdown corpora — USE convention).

3. AskUserQuestion-gated consolidation hand-off — never auto-merges.
   Dispatches knowledge-compounder via Task to write the merged
   canonical entry, then archives the source entries with a
   superseded_by: frontmatter pointer.

Five-outcome classification (Keep / Update / Consolidate / Replace /
Delete-and-archive) adapted from upstream ce-compound-refresh at SHA
e5b397c9.

Yellow-plugins divergence: archive instead of delete. Archived entries
move to docs/solutions/archived/<original-category>/ and remain
searchable for forensics, citation continuity, and learnings-researcher
fallback. learnings-researcher excludes archived/ from default search.

Per-project tuning via yellow-plugins.local.md compound_lifecycle.*
keys (forward-declared in local-config skill).

Autofix mode for scheduled runs: applies unambiguous Updates only;
marks ambiguous cases as status: stale for human review.

Hard quality dependency for W3.11 ideation skill per the source plan's
research note.

Bumps yellow-core skill count: 5 → 6. README catch-up from stale
13a/7c/4s/2m to current 17a/8c/6s/1m (drift accumulated across
several merged PRs; this brings README in lockstep).
@KingInYellow18
KingInYellow18 force-pushed the agent/feat/compound-lifecycle-skill branch from 81cd26a to d289d3d Compare April 30, 2026 16:33
coderabbitai[bot]

This comment was marked as resolved.

greptile-apps[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

KingInYellow18 added a commit that referenced this pull request Apr 30, 2026
…laims, abort guard

Addresses 30 review threads from greptile, gemini, codex, devin, and coderabbit:

- Staleness formula: replace additive citation term with multiplicative discount (heavily-cited entries are now actually protected from age-based false-flagging)
- Step 1: add docs/solutions/_lifecycle-runs/** exclusion (avoid self-ingestion in autofix mode)
- Step 8: add explicit abort guard when knowledge-compounder verification fails (no more partial-archive corruption)
- Step 5b: change overlap pass-1 to >= 2 members (catches two-entry duplicates)
- Step 8 fencing: replace HTML-entity sanitization with --- begin source-entry (reference only) --- delimiters
- Config path: yellow-plugins.local.md at repo root (matches local-config schema)
- Degraded-mode formula: add max(refs,1) guard (no division by zero)
- Never-retrieved fallback: days_since_retrieved = days_since_modified
- Frontmatter schema note: status/stale_*/updated/superseded_by are yellow-plugins extensions (upstream snapshot frozen)
- README.md: drop yellow-core 1 MCP suffix; remove stale Context7/Ceramic auth rows; retitle Context7 section to (user-level MCP); fix project tree
- archived/README.md: markdownlint code fence; correct exclusion claim; replace 30-day guard claim with updated: bump instruction
- plugins/yellow-core/README.md: add compound-lifecycle skill row
devin-ai-integration[bot]

This comment was marked as resolved.

KingInYellow18 added a commit that referenced this pull request Apr 30, 2026
…aim, changeset

Three follow-up review threads from round 1 push:

- README.md: yellow-review row regression (7 agents → 14 agents, the actual count). Both the plugin table and project structure tree had stale 7-agent counts that contradicted plugins/yellow-review/CLAUDE.md '### Agents (14)'.
- SKILL.md Step 9: remove the false claim that _lifecycle-runs/ is excluded from learnings-researcher 'by virtue of its _-prefix'. Replace with accurate statement: Step 1's exclusion list excludes it from compound-lifecycle's own discovery, but learnings-researcher does not currently filter _-prefixed paths (separate follow-up).
- .changeset/compound-lifecycle-skill.md: remove 'forward-declared in the local-config skill schema; no schema migration needed' claim. Replace with 'yellow-plugins-specific extensions, not yet declared in the schema; parse silently under graceful-degradation'.
@KingInYellow18
KingInYellow18 force-pushed the agent/feat/compound-lifecycle-skill branch from 7f28bf3 to bca8ec6 Compare April 30, 2026 18:10
Comment thread plugins/yellow-core/skills/compound-lifecycle/SKILL.md Outdated
Comment thread docs/solutions/archived/README.md
@greptile-apps

greptile-apps Bot commented Apr 30, 2026

Copy link
Copy Markdown

Maintain the long-term quality of the docs/solutions/ catalog through
three operations:

  1. Composite staleness detection — replaces single time-threshold with
    a 4-component score: 0.4days_modified + 0.3/inbound_refs +
    0.2
    embedding_age + 0.1*days_since_retrieved (Atlan-pattern).
    Heavily-cited evergreen entries don't get false-flagged; recent
    entries with broken references do. ruvector components contribute
    zero on graceful degradation.

  2. Two-pass overlap detection — category+tags overlap (cheap), then
    BM25 on problem: lines, then optional ruvector cosine clustering at
    0.82 threshold (calibrated for paragraph-level semantic equivalence
    on markdown corpora — USE convention).

  3. AskUserQuestion-gated consolidation hand-off — never auto-merges.
    Dispatches knowledge-compounder via Task to write the merged
    canonical entry, then archives the source entries with a
    superseded_by: frontmatter pointer.

Five-outcome classification (Keep / Update / Consolidate / Replace /
Delete-and-archive) adapted from upstream ce-compound-refresh at SHA
e5b397c9.

Yellow-plugins divergence: archive instead of delete. Archived entries
move to docs/solutions/archived// and remain
searchable for forensics, citation continuity, and learnings-researcher
fallback. learnings-researcher excludes archived/ from default search.

Per-project tuning via yellow-plugins.local.md compound_lifecycle.*
keys (forward-declared in local-config skill).

Autofix mode for scheduled runs: applies unambiguous Updates only;
marks ambiguous cases as status: stale for human review.

Hard quality dependency for W3.11 ideation skill per the source plan's
research note.

Bumps yellow-core skill count: 5 → 6. README catch-up from stale
13a/7c/4s/2m to current 17a/8c/6s/1m (drift accumulated across
several merged PRs; this brings README in lockstep).

Summary

Stack context

Test plan

Notes for reviewers


Open in Devin Review

Summary by CodeRabbit

  • New Features

    • Introduced compound-lifecycle skill for repository auditing with composite staleness scoring, staged overlap detection, and Ask‑user gated consolidation
    • Added archival workflow that preserves superseded entries and records successor links
  • Documentation

    • Added archived solutions README with restore procedures
    • Added comprehensive lifecycle skill docs and configurable thresholds
    • Updated READMEs to list the new skill and a new Context7 MCP server with setup instructions
  • Other

    • Lifecycle run report output now recorded for scheduled autofix runs

Greptile Summary

This PR introduces the compound-lifecycle skill (W3.10) for auditing docs/solutions/ via composite staleness scoring, BM25+cosine overlap detection, and AskUserQuestion-gated consolidation with an archive-instead-of-delete divergence from upstream. Two execution-time defects were found in SKILL.md beyond the issues raised in prior reviews:

  • Replace flow dispatches a "Consolidate" Task description — knowledge-compounder receives the wrong framing and will blend content rather than write a clean successor entry.
  • No mkdir -p before archive moves — first archive for any category will fail with "No such file or directory" since docs/solutions/archived/<category>/ is never created.

Confidence Score: 3/5

Not safe to merge — two new P1 execution failures in SKILL.md, plus several unresolved P1s from prior review rounds.

Two new P1 issues (wrong Task description for Replace, missing mkdir) plus multiple unresolved P1s from previous review threads (staleness formula invariant broken, example calculation wrong by 10×, no abort path on compounder failure, superseded_by value undefined for Delete-and-archive) pull the score well below the P1 ceiling of 4.

plugins/yellow-core/skills/compound-lifecycle/SKILL.md requires the most attention — Step 8 Execute section has multiple execution-time defects.

Important Files Changed

Filename Overview
plugins/yellow-core/skills/compound-lifecycle/SKILL.md New 399-line skill for auditing docs/solutions/; two execution-time failures (wrong Task description for Replace flow, missing mkdir before archive moves) plus previously-flagged issues with the staleness formula math and example calculation remaining unresolved.
docs/solutions/archived/README.md New scaffolding file documenting archive layout and restore procedure; restore instructions correctly direct bumping updated: but still contradicts SKILL.md on whether learnings-researcher excludes archived/ by default (previously flagged).
README.md Plugin table updated to 6 skills for yellow-core and drops the MCP count entry; adds Context7 user-level MCP section consistent with CLAUDE.md's recommendation.
plugins/yellow-core/CLAUDE.md Skills count bumped to 6 and compound-lifecycle entry added; accurate and consistent with SKILL.md.
plugins/yellow-core/README.md Skills table updated to include compound-lifecycle; description is accurate.
.changeset/compound-lifecycle-skill.md Minor changeset for yellow-core; accurately describes the three operations and the archive-not-delete divergence from upstream.
RESEARCH/upstream-snapshots/e5b397c9d1883354f03e338dd00f98be3da39f9f/MANIFEST.md MANIFEST entry for ce-compound-refresh updated to reflect PR #296 adaptation details; bookkeeping change only.

Comments Outside Diff (4)

  1. docs/solutions/archived/README.md, line 188-191 (link)

    P1 learnings-researcher exclusion claim directly contradicts SKILL.md

    This README states learnings-researcher does not exclude archived/ by default, but SKILL.md (lines 647–650) says the opposite: "The archived/ subtree is excluded from learnings-researcher's default search by path filter." The changeset description also backs SKILL.md: "learnings-researcher excludes archived/ from default search." One of these documents is wrong about the current behaviour. A user reading this README will configure their workflow expecting archived entries to surface in learnings-researcher searches; a user reading SKILL.md will expect the opposite — leading to missed or unexpected recall results depending on which document they consulted.

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: docs/solutions/archived/README.md
    Line: 188-191
    
    Comment:
    **`learnings-researcher` exclusion claim directly contradicts SKILL.md**
    
    This README states learnings-researcher does **not** exclude `archived/` by default, but `SKILL.md` (lines 647–650) says the opposite: "The `archived/` subtree is excluded from `learnings-researcher`'s default search by path filter." The changeset description also backs SKILL.md: "learnings-researcher excludes archived/ from default search." One of these documents is wrong about the current behaviour. A user reading this README will configure their workflow expecting archived entries to surface in learnings-researcher searches; a user reading SKILL.md will expect the opposite — leading to missed or unexpected recall results depending on which document they consulted.
    
    How can I resolve this? If you propose a fix, please make it concise.

    Fix in Codex

  2. plugins/yellow-core/skills/compound-lifecycle/SKILL.md, line 544-548 (link)

    P1 Delete-and-archive: superseded_by value left unspecified

    Step 8 instructs "same as the archive step in Consolidate (move + superseded_by frontmatter)" but the Consolidate archive sub-step says to set superseded_by to the new canonical entry's path — which doesn't exist in the Delete-and-archive case. docs/solutions/archived/README.md specifies the correct value (superseded_by: null), but the SKILL.md procedure that an executing LLM reads step-by-step never states this. The agent will either omit the field entirely, inherit the wrong Consolidate semantics and leave an empty/broken pointer, or interpolate arbitrarily — all inconsistent with the documented schema.

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: plugins/yellow-core/skills/compound-lifecycle/SKILL.md
    Line: 544-548
    
    Comment:
    **Delete-and-archive: `superseded_by` value left unspecified**
    
    Step 8 instructs "same as the archive step in Consolidate (move + `superseded_by` frontmatter)" but the Consolidate archive sub-step says to set `superseded_by` to the new canonical entry's path — which doesn't exist in the Delete-and-archive case. `docs/solutions/archived/README.md` specifies the correct value (`superseded_by: null`), but the SKILL.md procedure that an executing LLM reads step-by-step never states this. The agent will either omit the field entirely, inherit the wrong Consolidate semantics and leave an empty/broken pointer, or interpolate arbitrarily — all inconsistent with the documented schema.
    
    How can I resolve this? If you propose a fix, please make it concise.

    Fix in Codex

  3. plugins/yellow-core/skills/compound-lifecycle/SKILL.md, line 517-525 (link)

    P1 Task description hardcoded as "Consolidate" for Replace flow

    The Task dispatch in Step 8 uses description: "Consolidate <N> entries into one canonical doc" for both Consolidate and Replace classifications. These are semantically distinct: Consolidate merges N correct-but-overlapping entries into one, while Replace asks knowledge-compounder to write a fresh successor that cites the original as historical context and archives only one source. A knowledge-compounder receiving "Consolidate entries into one canonical doc" for a Replace job will likely blend the original's content into the new entry instead of writing a clean replacement, discarding the historical-context framing Step 6 requires.

    The description (and ideally the prompt prefix) should branch on classification type:

    description: "Consolidate <N> entries into one canonical doc",   // Consolidate
    description: "Write replacement entry for 1 superseded doc",     // Replace
    
    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: plugins/yellow-core/skills/compound-lifecycle/SKILL.md
    Line: 517-525
    
    Comment:
    **`Task` description hardcoded as "Consolidate" for Replace flow**
    
    The `Task` dispatch in Step 8 uses `description: "Consolidate <N> entries into one canonical doc"` for **both** Consolidate and Replace classifications. These are semantically distinct: Consolidate merges N correct-but-overlapping entries into one, while Replace asks `knowledge-compounder` to write a fresh successor that cites the original as historical context and archives only one source. A knowledge-compounder receiving "Consolidate <N> entries into one canonical doc" for a Replace job will likely blend the original's content into the new entry instead of writing a clean replacement, discarding the historical-context framing Step 6 requires.
    
    The description (and ideally the prompt prefix) should branch on classification type:
    
    ```
    description: "Consolidate <N> entries into one canonical doc",   // Consolidate
    description: "Write replacement entry for 1 superseded doc",     // Replace
    ```
    
    How can I resolve this? If you propose a fix, please make it concise.

    Fix in Codex

  4. plugins/yellow-core/skills/compound-lifecycle/SKILL.md, line 529-533 (link)

    P1 No mkdir -p before archive moves

    Sub-step 4 (and the Delete-and-archive block that mirrors it) instructs moving files to docs/solutions/archived/<category>/<slug>.md, but there is no step that creates docs/solutions/archived/<category>/ when the category subdirectory doesn't already exist. Since this PR only seeds docs/solutions/archived/README.md, every first-time archive for any category will hit a "No such file or directory" error from the executing agent's Bash mv call. The fix is to add an explicit mkdir guard before the mv:

    4. Ensure the target directory exists:
       `mkdir -p docs/solutions/archived/<category>/`
       Archive each source entry: `mv docs/solutions/<category>/<slug>.md \
       docs/solutions/archived/<category>/<slug>.md`
    
    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: plugins/yellow-core/skills/compound-lifecycle/SKILL.md
    Line: 529-533
    
    Comment:
    **No `mkdir -p` before archive moves**
    
    Sub-step 4 (and the Delete-and-archive block that mirrors it) instructs moving files to `docs/solutions/archived/<category>/<slug>.md`, but there is no step that creates `docs/solutions/archived/<category>/` when the category subdirectory doesn't already exist. Since this PR only seeds `docs/solutions/archived/README.md`, every first-time archive for any category will hit a "No such file or directory" error from the executing agent's `Bash` mv call. The fix is to add an explicit mkdir guard before the mv:
    
    ```
    4. Ensure the target directory exists:
       `mkdir -p docs/solutions/archived/<category>/`
       Archive each source entry: `mv docs/solutions/<category>/<slug>.md \
       docs/solutions/archived/<category>/<slug>.md`
    ```
    
    How can I resolve this? If you propose a fix, please make it concise.

    Fix in Codex

Fix All in Codex

Prompt To Fix All With AI
Fix the following 2 code review issues. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 2
plugins/yellow-core/skills/compound-lifecycle/SKILL.md:517-525
**`Task` description hardcoded as "Consolidate" for Replace flow**

The `Task` dispatch in Step 8 uses `description: "Consolidate <N> entries into one canonical doc"` for **both** Consolidate and Replace classifications. These are semantically distinct: Consolidate merges N correct-but-overlapping entries into one, while Replace asks `knowledge-compounder` to write a fresh successor that cites the original as historical context and archives only one source. A knowledge-compounder receiving "Consolidate <N> entries into one canonical doc" for a Replace job will likely blend the original's content into the new entry instead of writing a clean replacement, discarding the historical-context framing Step 6 requires.

The description (and ideally the prompt prefix) should branch on classification type:

```
description: "Consolidate <N> entries into one canonical doc",   // Consolidate
description: "Write replacement entry for 1 superseded doc",     // Replace
```

### Issue 2 of 2
plugins/yellow-core/skills/compound-lifecycle/SKILL.md:529-533
**No `mkdir -p` before archive moves**

Sub-step 4 (and the Delete-and-archive block that mirrors it) instructs moving files to `docs/solutions/archived/<category>/<slug>.md`, but there is no step that creates `docs/solutions/archived/<category>/` when the category subdirectory doesn't already exist. Since this PR only seeds `docs/solutions/archived/README.md`, every first-time archive for any category will hit a "No such file or directory" error from the executing agent's `Bash` mv call. The fix is to add an explicit mkdir guard before the mv:

```
4. Ensure the target directory exists:
   `mkdir -p docs/solutions/archived/<category>/`
   Archive each source entry: `mv docs/solutions/<category>/<slug>.md \
   docs/solutions/archived/<category>/<slug>.md`
```

Reviews (5): Last reviewed commit: "fix: round 2 PR #296 review — yellow-rev..." | Re-trigger Greptile

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 new potential issue.

View 7 additional findings in Devin Review.

Open in Devin Review

Comment thread docs/solutions/archived/README.md Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (3)
plugins/yellow-core/skills/compound-lifecycle/SKILL.md (3)

279-289: ⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Archiving lacks explicit failure guard.

Lines 279-280 say "Verify it exists" but don't state what happens when verification fails. If the knowledge-compounder dispatch fails or returns an invalid path, proceeding with archive moves would create split-brain state (sources archived but no canonical successor). Add explicit abort-on-failure: "If verification fails, abort the consolidation; do not archive sources."

🛡️ Proposed guard clause
 3. Wait for the agent's return. The new entry's path is the agent's
-   output. Verify it exists.
+   output. Verify it exists. **If the returned path is missing or
+   invalid, abort this consolidation and skip the archive moves below.**
 4. Archive each source entry: `mv` from
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/yellow-core/skills/compound-lifecycle/SKILL.md` around lines 279 -
289, Add an explicit abort-on-failure guard after the agent-return verification
step: when the knowledge-compounder dispatch or the returned path check fails
(the "Verify it exists" step), stop the consolidation process, do not perform
the archive moves in "Archive each source entry" (the mv operations that move
docs/solutions/... to docs/solutions/archived/...), and record the failure in
the run report; update SKILL.md to state this guard and that the process should
log the error and abort the consolidation instead of proceeding to append
superseded_by or moving source files.

191-193: ⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Off-by-one: "> 2 members" excludes valid pairs.

Line 193 says "Surface groups with > 2 members" which excludes 2-entry overlaps. Two entries with identical category and 2+ shared tags are valid consolidation candidates. Change to ">= 2 members" or "> 1 members".

🔧 Proposed fix
-   Surface groups with > 2 members.
+   Surface groups with >= 2 members.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/yellow-core/skills/compound-lifecycle/SKILL.md` around lines 191 -
193, The rule text under "Cheap pass — `category` + `tags` overlap." currently
filters groups with "> 2 members" which wrongly excludes valid pairs; update the
sentence that reads "Surface groups with > 2 members." to instead read "Surface
groups with >= 2 members." (or "Surface groups with > 1 member.") so groups of
two entries are included; locate the phrase in the SKILL.md block titled "Cheap
pass — `category` + `tags` overlap." and change the comparison operator
accordingly.

291-295: ⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Delete-and-archive contradicts itself on superseded_by metadata.

Line 293 says "Same as the archive step in Consolidate (move + superseded_by frontmatter)" but line 295 says "there's no successor entry." You cannot add a superseded_by pointer when there's no successor to point to. Either omit superseded_by for Delete-and-archive, or use a different frontmatter field like archive_reason: obsolete to document why the entry was archived without a successor.

🔧 Proposed fix
 #### Delete-and-archive
 
-Same as the archive step in Consolidate (move + `superseded_by`
-frontmatter), but skip the `knowledge-compounder` dispatch since
-there's no successor entry.
+Move to `docs/solutions/archived/<category>/<slug>.md` (same directory
+structure as Consolidate). Append `archive_reason: obsolete` to the
+frontmatter to document that the entry was archived without a
+successor. Do NOT add `superseded_by` since there is no successor.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plugins/yellow-core/skills/compound-lifecycle/SKILL.md` around lines 291 -
295, The Delete-and-archive step description is self-contradictory about adding
a superseded_by pointer when there is no successor; update the SKILL.md text for
the "Delete-and-archive" step (referencing Consolidate and the
knowledge-compounder dispatch) to remove any instruction to add `superseded_by`
and instead document adding an `archive_reason: obsolete` (or similar)
frontmatter field to record why the entry was archived without a successor;
ensure the doc explicitly notes that the `knowledge-compounder` dispatch is
skipped and that `superseded_by` is not used for this flow.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@plugins/yellow-core/skills/compound-lifecycle/SKILL.md`:
- Line 271: Several fenced code blocks in SKILL.md missing language tags cause
markdownlint MD040; annotate the three blocks by adding appropriate language
identifiers: change the block that starts with Task( / contains the Task
pseudo-code (referenced by the "Task(" token) to use ```text or ```python,
update the report template block that begins with "## compound-lifecycle Report"
to use ```markdown or ```text, and mark the configuration example that contains
the "compound_lifecycle:" key with ```yaml; apply these tag additions to the
three corresponding fenced blocks so each opening ``` is replaced with the
correct ```text/```python, ```markdown/```text, and ```yaml respectively.

---

Duplicate comments:
In `@plugins/yellow-core/skills/compound-lifecycle/SKILL.md`:
- Around line 279-289: Add an explicit abort-on-failure guard after the
agent-return verification step: when the knowledge-compounder dispatch or the
returned path check fails (the "Verify it exists" step), stop the consolidation
process, do not perform the archive moves in "Archive each source entry" (the mv
operations that move docs/solutions/... to docs/solutions/archived/...), and
record the failure in the run report; update SKILL.md to state this guard and
that the process should log the error and abort the consolidation instead of
proceeding to append superseded_by or moving source files.
- Around line 191-193: The rule text under "Cheap pass — `category` + `tags`
overlap." currently filters groups with "> 2 members" which wrongly excludes
valid pairs; update the sentence that reads "Surface groups with > 2 members."
to instead read "Surface groups with >= 2 members." (or "Surface groups with > 1
member.") so groups of two entries are included; locate the phrase in the
SKILL.md block titled "Cheap pass — `category` + `tags` overlap." and change the
comparison operator accordingly.
- Around line 291-295: The Delete-and-archive step description is
self-contradictory about adding a superseded_by pointer when there is no
successor; update the SKILL.md text for the "Delete-and-archive" step
(referencing Consolidate and the knowledge-compounder dispatch) to remove any
instruction to add `superseded_by` and instead document adding an
`archive_reason: obsolete` (or similar) frontmatter field to record why the
entry was archived without a successor; ensure the doc explicitly notes that the
`knowledge-compounder` dispatch is skipped and that `superseded_by` is not used
for this flow.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d8995cc9-d7cb-4ef5-8ac9-793f9215f1cd

📥 Commits

Reviewing files that changed from the base of the PR and between d289d3d and bca8ec6.

📒 Files selected for processing (5)
  • .changeset/compound-lifecycle-skill.md
  • README.md
  • docs/solutions/archived/README.md
  • plugins/yellow-core/README.md
  • plugins/yellow-core/skills/compound-lifecycle/SKILL.md
✅ Files skipped from review due to trivial changes (2)
  • plugins/yellow-core/README.md
  • docs/solutions/archived/README.md

Comment thread plugins/yellow-core/skills/compound-lifecycle/SKILL.md Outdated
…ntradiction

Four follow-up review threads from round 2 push:

- SKILL.md L168-180: Math error in round-1 example. The multiplicative discount alone cannot protect heavily-cited entries from age (factor asymptotic to 0.7 = max 30% reduction). A 3-year-old entry with 10 refs scores ~320, NOT ~32 as previously claimed. Add an explicit citation gate (default: refs >= 5 → classify Keep, skip score) as the actual protection mechanism. The discount remains a smoothing correction for low-to-moderate citation cases.
- SKILL.md L271, 301: markdownlint MD040 — added 'text' and 'markdown' language tags to fenced blocks (Task pseudo-code and report template).
- SKILL.md L396-399 + archived/README.md L26-28: archived/ exclusion contradiction. SKILL.md previously claimed archived/ was excluded from learnings-researcher 'by path filter'; archived/README.md now correctly says no exclusion exists. Aligned both to 'intended exclusion, not yet implemented (separate follow-up)'.
@KingInYellow18
KingInYellow18 force-pushed the agent/feat/compound-lifecycle-skill branch from bca8ec6 to b427503 Compare April 30, 2026 18:26
@KingInYellow18
KingInYellow18 merged commit ce3a5d7 into main Apr 30, 2026
28 of 29 checks passed
@KingInYellow18
KingInYellow18 deleted the agent/feat/compound-lifecycle-skill branch April 30, 2026 18:39
@github-actions github-actions Bot mentioned this pull request Apr 30, 2026
KingInYellow18 added a commit that referenced this pull request May 8, 2026
Move everyinc-merge-remaining-work.md and everyinc-merge-wave3.md to
plans/complete/. Both are fully delivered on main:

- everyinc-merge-remaining-work.md: PRs #402, #403, #406, #410, #412
- everyinc-merge-wave3.md: 12 stack items shipped via PRs #287, #293, #296,
  #306, #307, #308, #310, #311, #312, plus #403/#406/#410 (rolled into the
  remaining-work plan)

Updated wave3 stack-progress checkboxes for items #2/#5/#7 with PR refs
and squash-commit SHAs.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant