Commit Graph

604 Commits

Author SHA1 Message Date
Trevin Chow 3980a2b117 fix(concepts): seed core domain nouns at CONCEPTS.md creation
Accretion alone captures only the peripheral terms that surface through
friction; the stable-central nouns a project is built around never break,
so they never appear in a learning and never get defined. The live output
(PR #896) proved it: a scoped run produced Beta skill / Confidence anchor /
Autofix class with zero core domain nouns, so the captured terms dangled
against undefined siblings.

Reverse the no-cold-start-scan stance and seed proactively:

- concepts-vocabulary.md: add accretion-vs-seeding framing and a Seed goal
  expressed as goal + qualifying bar (codebase sets the count, no fixed
  number); distinguish in-scope seeding from repo-wide bootstrap; require
  entries to lean only on defined siblings or general English; sharpen the
  no-current-config rule (state behavior, not threshold numbers).
- ce-compound: stop refusing CONCEPTS.md bootstrap — redirect standalone
  requests to ce-compound-refresh; seed the learning's area at creation;
  widen the opportunistic-fix pass into a bounded coherence-neighborhood
  refresh.
- ce-compound-refresh: standalone bootstrap now asks "create the concept
  map" vs "run a refresh cycle" (create does the repo-wide seed); creation
  seeds in-scope core nouns; every run reconciles in-scope core nouns as a
  safety net for stable-central terms.

Both concepts-vocabulary.md copies kept byte-identical.
2026-06-01 23:45:04 -07:00
Trevin Chow e5b096ecec test(ce-sessions): add terminology-preservation eval suite
Adds an eval suite that tests whether ce-sessions findings preserve
terminology resolution context — specifically, whether distinctive
coined terms and their resolution rationale survive the
session-historian synthesis step intact.

Four test cases with ground truth from recently merged PRs:
- synthesis-gate-recovery (PR #822) — distinctive term recovery
- mode-headless-semantic-alignment (PR #813) — multi-piece nuance
- tangential-term-recovery — indexing-gap test
- near-miss-false-positive — discriminating-power test

Two-stage grader: programmatic substring match per criticality tier,
plus LLM-graded context preservation. Variance protocol: 3 runs per
eval.

This suite was built during PR #838's design exploration to validate
a load-bearing assumption (that ce-sessions findings could feed
ce-compound Phase 2.4's vocabulary scan). That assumption was
ultimately retired in favor of doc-and-conversation-only scanning,
so the suite is not load-bearing for PR #838. Kept as future
infrastructure for validating ce-sessions's behavior as the skill
evolves — e.g., when changing the session-historian synthesis prompt
or adjusting scan-window defaults.

Iteration-1 results (executed via skill-creator framework, captured
to /tmp/compound-engineering/ce-sessions/evals/iteration-1/) showed
ce-sessions preserved terminology strongly across all 4 evals with
100% must-tier recall and 0% stddev — but this is a capability test
of the skill in isolation, not a test of any specific integration.
2026-06-01 17:59:40 -07:00
Trevin Chow 27f9ac48cb fix(concepts): drop ce-sessions as scan input for Phase 2.4
Earlier in this branch, Phase 2.4's vocabulary scan was extended to
include ce-sessions findings as a third input. Architectural review
surfaced two problems with that wiring:

- ce-compound's payload to ce-sessions includes a "directly relevant
  to this specific problem; ignore unrelated work" filter rule, which
  actively suppresses the tangential context where vocabulary often
  lives. The filter is correct for fix-context retrieval but wrong
  for vocabulary capture — the two needs pull in opposite directions.
- Wiring named external sources into Phase 2.4 creates maintenance
  debt: every new research input (future Slack research, Linear
  context, etc.) requires updating the scan input list.

Revert to scanning only the new doc and the surrounding conversation.
Both are always available to the orchestrating agent — no plumbing,
no filter-rule mismatch. Conversation catches mid-dialogue vocabulary
resolutions that didn't make the doc; the doc captures terms the
writer judged worth recording. Terms that emerged only in
non-conversation sources (research subagents, ce-sessions) flow into
Phase 2.4 indirectly via the doc-writer's synthesis, which is the
right level of curation.

If external-source vocabulary mining ever becomes a real need, design
it as a dedicated dispatch with a vocabulary-tuned payload, not as a
Phase 2.4 scan input.
2026-06-01 17:59:40 -07:00
Trevin Chow a8fea842f3 fix(concepts): sharpen CONCEPTS.md framing and capture from sessions
After comparing against grill-with-docs (third-party skill for a
similar artifact), sharpen how CONCEPTS.md is framed across the
plugin and close a terminology-capture gap.

In references/concepts-vocabulary.md (both copies):
- Lead with "Be opinionated" as the file's stance.
- Replace the enumerated "What never appears" list with the principle
  "The file stands on its own" — one mental test that subsumes the
  existing exclusions and extends to cases we hadn't enumerated.
- Add aliases-per-entry format (*Avoid: X, Y*) so retired synonyms
  ride alongside their canonical term.
- Tighten "Per entry" to one-sentence base definition; explicit
  second-paragraph allowance for non-obvious behavioral rules only.
- Add optional Relationships section when structure is load-bearing.
- Rename "Resolved ambiguities" to "Flagged ambiguities."

In ce-brainstorm Phase 1.1: reframe CONCEPTS.md as the project's
authoritative vocabulary (was: shared domain vocabulary that anchors
terms here). Carries authority across the whole session without
needing to restate "use canonical names" at every downstream phase.

In ce-compound Phase 2.4: extend the vocabulary scan to include
ce-sessions findings when Full mode runs. Session findings carry
terminology resolution context from prior brainstorm, plan, and
work dialogues; without this, that context was being pulled in for
research but ignored at capture time.

Also replace "scratchpad" with "catch-all" across four locations —
clearer naming of the failure mode (dumping ground for things that
don't fit elsewhere).
2026-06-01 17:59:40 -07:00
Trevin Chow b492073f58 fix(concepts): tighten qualifying bar at CONCEPTS.md creation
The "at least one qualifying term" gate in ce-compound Phase 2.4 and
ce-compound-refresh Phase 4.5 step 3 could allow a permissive agent
to seed CONCEPTS.md from a routine bug fix that only surfaced class
or table names dressed up as entities. The criteria in
concepts-vocabulary.md are correct but judgmental, and lenience at
the creation moment seeds a thin file the team didn't actually need.

Add an explicit "hold the qualifying bar conservatively at creation"
rule to both skills. Borderline terms defer to a later run with
stronger signal. The conservatism is quality, not count — the
asymmetric-trap defense against minimum-count gating is preserved.
Updates to an existing file continue to follow normal criteria.
2026-06-01 17:59:40 -07:00
Trevin Chow c01810947c fix(concepts): write visible preamble when bootstrapping CONCEPTS.md
When ce-compound or ce-compound-refresh first creates CONCEPTS.md,
write a short preamble at the top explaining what the file is, how
it accretes, and what it isn't (glossary only, not a spec or
scratchpad). Visible prose under the # Concepts heading so both
humans browsing the rendered file and agents reading the raw file
see the same framing — an HTML comment would have hidden the model
from human readers on GitHub for no real gain.
2026-06-01 17:59:40 -07:00
Trevin Chow 86558fbbe6 fix(concepts): self-correct violations during compound and refresh
ce-compound Phase 2.4 and ce-compound-refresh Phase 4.5 establish the
glossary-only rule for CONCEPTS.md but only apply it prospectively to
new entries. Existing drift (file paths, class names, function
signatures, status/owner metadata) survived every run.

Add active correction at two scopes matched to each skill's character.
ce-compound fixes opportunistically — only entries being touched or
adjacent to them — because compound is not an audit. ce-compound-refresh
runs a full sweep as Phase 4.5 step 6 because refresh is an audit.
Extend the refresh report's CONCEPTS.md line to surface the scrubbed
count alongside added and refined.
2026-06-01 17:59:40 -07:00
Trevin Chow f37b72a942 feat(ce-compound): intercept CONCEPTS.md bootstrap requests
Users may type "create my CONCEPTS.md" without an existing learning
corpus, particularly in cold repos. Previously this had no clean
routing path — ce-compound's description didn't match the request,
so the main agent ad-hoc'd a response.

Update ce-compound's description to declare CONCEPTS.md as a stated
responsibility, and add a short intercept block near the top of the
skill body. The block redirects without performing a bootstrap:
explains the accretion model, notes that cold-start codebase scans
are intentionally unsupported (the qualifying bar is judgmental),
and offers three real next steps — run ce-compound on a real
learning, ce-compound-refresh on an existing corpus, or hand-edit
directly.
2026-06-01 17:59:40 -07:00
Trevin Chow 954f3a91e3 fix(concepts): add glossary-only boundary to contributor skills
ce-brainstorm Phase 1.4 and ce-plan §5 gap-fill are contributors to
CONCEPTS.md but neither loads concepts-vocabulary.md, so the criteria
preventing implementation details from creeping in lived only where
the contributors couldn't see them. Add an inline negative-framing
line to both ("domain entities, named processes, and status concepts
with project-specific meaning only — not file paths, class names, or
implementation decisions"). Also drop rationale tails that did not
change agent behavior at runtime.
2026-06-01 17:59:40 -07:00
Trevin Chow e446611639 fix(ce-compound): close Phase 2 hand-off and vocab-capture loopholes
External test surfaced two structural failures in ce-compound that an
LLM orchestrator can hit even when following the skill text:

1. ce-sessions return read as a terminus. Phase 1's parallel block ended
   on three subagents, then ce-sessions ran synchronously as the final
   input. Phase 2 said "WAIT for all Phase 1 subagents" -- which an LLM
   could read as not including the skill call. The agent emitted
   ce-sessions's output to the user and stopped.

   Fix: add a forward-edge sentence at the end of step 4 ("ce-sessions
   is the final Phase 1 input, not a workflow stop"), and broaden the
   Phase 2 WAIT line to "all Phase 1 inputs" with an explicit note that
   ce-sessions counts despite being a skill rather than a subagent.

2. Phase 2.4's "skip entirely if no terms qualify" let agents vibe-judge
   "nothing qualifies" from the inline criteria teaser and skip reading
   references/concepts-vocabulary.md entirely -- the opposite of the
   stated intent.

   Fix: invert the phase so "First, read the reference" is the
   unconditional opener, drop the inline criteria teaser (per the
   no-duplication-with-references principle), and replace the silent-
   skip path with a visible "Vocabulary capture: scanned, no qualifying
   terms" outcome the agent must record.

Propagated the Phase 2.4 fix to ce-compound-refresh's Phase 4.5 -- same
structural risk, same shared reference, both phases introduced on this
branch. Tightened both success-output templates from the ambiguous
"skipped (no qualifying terms)" to the unambiguous "scanned, no
qualifying terms" so the audit signal cannot be confused with "didn't
bother to check".
2026-06-01 17:59:40 -07:00
Trevin Chow 24b7e4a43b fix(ce-compound-refresh): include step-5 edits in follow-up commit flow
Step 6's amend/follow-up commit logic only mentioned step 4 (docs/solutions
discoverability edit). When step 4 produces no edit but step 5 (the new
CONCEPTS.md discoverability path) does, the new instruction-file change
would be left out of the commit sequence and end up as a dirty worktree
or an omitted edit. Cover both edit paths in step 6.
2026-06-01 17:59:40 -07:00
Trevin Chow 7c59a427e3 feat(concepts): introduce CONCEPTS.md as shared vocabulary substrate
Adds a domain-vocabulary artifact maintained as a side effect of compounding.
CONCEPTS.md is the substrate that learnings cite — entities, named processes,
and status concepts with project-specific precise meaning. Lazy creation,
opportunistic AGENTS.md discoverability, no user prompts.

Ownership model:
- ce-compound and ce-compound-refresh create and maintain the file. Both also
  surface CONCEPTS.md to AGENTS.md/CLAUDE.md on first creation via the existing
  Discoverability Check, so future agents discover the file.
- ce-brainstorm and ce-plan are contributors only — they add to or refine
  CONCEPTS.md when terms surface, but skip writes entirely when the file
  doesn't exist. Avoids speculative bootstrapping from pre-implementation work.
- ce-learnings-researcher reads CONCEPTS.md as grounding before keyword
  extraction so result distillation uses canonical terminology.

ce-compound and ce-compound-refresh both bundle a concepts-vocabulary.md
reference with inclusion criteria, format rules, and an illustrative example.
ce-brainstorm and ce-plan intentionally do not — they learn format from the
existing file's contents. Plugin AGENTS.md gains a note that the two reference
copies must stay in sync.
2026-06-01 17:59:40 -07:00
Trevin Chow 3e77a7bd84 fix(ce-resolve-pr-feedback): drop clustering, default to merit-based fixing (#893) 2026-06-01 17:24:36 -07:00
github-actions[bot] 422ffc77d1 chore: release main (#887) 2026-05-31 10:35:31 -07:00
Trevin Chow ece9fa1f1f fix(ce-plan): add answer-seeking disposition to universal planning (#886) 2026-05-31 10:34:34 -07:00
github-actions[bot] 85987d496f chore: release main (#874)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-28 12:23:52 -07:00
Trevin Chow b3e396d0bf fix(ce-plan): honor explicit external-research requests and route them by intent (#875) 2026-05-28 12:22:49 -07:00
Trevin Chow 253dba80dd fix(ce-sessions): emit repo root path instead of basename subshell (#873) 2026-05-27 15:21:06 -07:00
github-actions[bot] 2bab351c81 chore: release main (#872)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-27 11:17:53 -07:00
Trevin Chow e5e3fc3630 fix(ce-brainstorm,ce-plan): add conceptual-diagram affordance to brainstorm docs (#871) 2026-05-27 11:12:39 -07:00
github-actions[bot] 48cd9140b2 chore: release main (#869)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-27 09:54:04 -07:00
Trevin Chow 1051132d04 fix(html-rendering): constrain measure and surface execution notes (#870) 2026-05-27 09:52:22 -07:00
Trevin Chow 5c88212c1f fix(ce-brainstorm,ce-plan): restore default-on requirements grouping (#868) 2026-05-27 09:47:08 -07:00
github-actions[bot] e2c9cd2352 chore: release main (#852)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-26 10:02:33 -07:00
Trevin Chow 11e12e5739 feat(ce-plan,ce-brainstorm): contract-driven sections + optional HTML output (#826) 2026-05-26 09:53:14 -07:00
Trevin Chow 673dcfacb8 fix(simplify-code): guard against over-simplification and behavior drift (#859) 2026-05-24 22:03:03 -07:00
Trevin Chow 26a802551e fix(commit): auto-create feature branch on default branch (#856) 2026-05-22 21:53:59 -07:00
Trevin Chow 5297a9440f refactor(review): consolidate migration personas and trim stack reviewers (#854)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-21 22:37:42 -07:00
Trevin Chow 67d273622e fix(ce-commit-push-pr): require user-visible bug summaries (#853) 2026-05-21 18:42:02 -07:00
Kieran Klaassen 0aa6b55a80 feat(ce-dogfood-beta): add diff-scoped browser QA dogfood skill (#848)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 12:14:02 -05:00
github-actions[bot] 08bb589903 chore: release main (#850)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-21 00:21:38 -07:00
Trevin Chow ac1c6d9a99 fix(ce-compound): drop date suffix from generated doc filenames (#849) 2026-05-21 00:20:43 -07:00
Brian Paden 796bea75b7 fix(agents): rename .agent.md to .md for VS Code Copilot tool access (#846)
Co-authored-by: Trevin Chow <trevin@trevinchow.com>
2026-05-21 00:18:17 -07:00
Trevin Chow 2a46670958 fix(ce-proof): update HITL flow for Proof v2 (#847) 2026-05-21 00:16:52 -07:00
github-actions[bot] f61d1b33ea chore: release main (#834)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-18 09:34:16 -07:00
Trevin Chow fd88fd8fd7 fix(ce-commit-push-pr): rewrite pr-description around a core principle (#841) 2026-05-17 13:30:00 -07:00
Trevin Chow 82b8af415d fix(ce-coherence-reviewer): remove Bash from tool allowlist (#837) 2026-05-16 01:45:10 -07:00
Trevin Chow 6fa1277e57 fix(ce-web-researcher): use any web tool, not just Claude built-ins (#836) 2026-05-16 00:30:10 -07:00
Trevin Chow 39cb9da3a1 fix(ce-plan): inline synthesis gate output into SKILL.md (#822) 2026-05-14 20:42:40 -07:00
github-actions[bot] 705f28a7a9 chore: release main (#831)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-14 10:54:13 -07:00
Trevin Chow 6df3f96580 fix(ce-brainstorm): scoping synthesis and Q&A interaction cleanup (#829) 2026-05-13 22:29:40 -07:00
github-actions[bot] b07aac55b5 chore: release main (#817)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-11 16:45:52 -07:00
Trevin Chow 60c1c938d5 fix(ce-plan): compress synthesis confirmation to prose + call-outs (#819) 2026-05-11 12:09:52 -07:00
Trevin Chow d090bde0ff fix(ce-code-review): replace resolve-base.sh with prose-driven base detection (#815) 2026-05-10 16:23:19 -07:00
github-actions[bot] 85548a5cff chore: release main (#814)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-10 12:53:45 -07:00
Trevin Chow 9b45a83d7e feat(ce-compound): add mode:headless for non-interactive use (#813) 2026-05-10 12:50:12 -07:00
github-actions[bot] 834ca4e58a chore: release main (#808)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-08 16:50:44 -07:00
Trevin Chow 07a6d52879 fix(ce-resolve-pr-feedback): paginate GraphQL connections (#807) 2026-05-08 15:18:12 -07:00
github-actions[bot] dbac0245b5 chore: release main (#806)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-08 14:43:50 -07:00
Trevin Chow 62279b0583 refactor(skills): extract conditional content to references (#804) 2026-05-08 13:51:56 -07:00