Skip to content

chore(memory): promote strong-fit configuration drafts from memory-pipeline for review#130

Open
Hareet wants to merge 15 commits into
mainfrom
memory/promote-configuration
Open

chore(memory): promote strong-fit configuration drafts from memory-pipeline for review#130
Hareet wants to merge 15 commits into
mainfrom
memory/promote-configuration

Conversation

@Hareet

@Hareet Hareet commented Jun 24, 2026

Copy link
Copy Markdown
Member

Promotes 10 strong-fit configuration drafts from agent-memory/_pending/ into agent-memory/domains/configuration/issues/ for squad content review.

Categories: feature (6), bug (4)
Themes: translations & RTL support, branding/partners doc validation, header-tab ordering, UI-extension service-worker rebuilds.

All 10 carry domainFit: strong + a ## Domain Rationale section. 18 weak-fit drafts deferred to Stream Cconfiguration was a catch-all in this run (64% weak), so this PR is intentionally the distilled minority.

Hareet and others added 15 commits June 24, 2026 09:22
LLM_PROVIDER=claude-cli runs filter/distill via 'claude -p' on the operator's
subscription (no API key). isRateLimitError/isAuthError/isBatchFatalError detect
global LLM failures so the runner can stop the batch instead of flagging each PR.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…auth

--concurrency (PIPELINE_CONCURRENCY, [1,10]) worker pool; --last removes the
~100-PR per-run cap; --resume skips processed PRs; --force bypasses filter.
Rate-limit/auth errors stop the batch (exit 2) with a resume hint.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… gate; pin Node 22

CI validates the domains/ corpus on PRs and fresh drafts in the pipeline run.
.env.example set for claude-cli + Opus 4.8/max + concurrency 4; .nvmrc=22.18.0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…runbook

Self-contained seeder image (claude -p + gh, read-only GH_TOKEN). Base docker
tree vendored from #114 to build standalone; dedupe once #114 lands.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…rlaps #87)

Drop non-service values (shared-libs/typescript) from services; config->webapp
on 9915 so the corpus passes validate-schema. Reconcile with #87 at merge.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ructure to VALID_DOMAINS

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ft with a test

Derive CHTDomain/CHTService/CHTWorkflow from the CHT_DOMAINS/CHT_SERVICES/CHT_WORKFLOWS
const arrays; pipeline.ts re-exports instead of re-declaring; distiller imports
CHT_SERVICES. New test asserts schema.json enums == the const arrays.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
schema.json enums, doc-search Record maps, TEMPLATE.md, and distiller/domain-inference tests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…n't rejected

Both VALID_DOMAINS hand-lists now derive from CHT_DOMAINS; updates the validator test message.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ons, re-export)

Shared linear JSON extractor; CC refactors + justified NOSONAR; more

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…R not honored)

Extracted helpers; SonarCloud Automatic Analysis ignores the NOSONAR block, so refactored to <=5.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…rameters)

logPrStart/processBatchItem/runWorker now take a shared BatchCtx, each <=4 params; CC still <=5.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…rage exclude

Proxyquire tests for the run-pipeline helpers + concurrency>1; export 3 helpers for testing.

Only providers/open-review-pr/domain-inference stay excluded; coverage gate green

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@sugat009 sugat009 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Requesting changes, though to be clear the fix is upstream and not something to patch by hand here. This seeder faithfully promotes what the distillation pipeline generated, so nothing is wrong with the promotion itself. The problem is in the drafts the pipeline produced, and I verified it against the live medic/cht-core API for every draft in this PR.

The defect: issueNumber / issueUrl name the merge PR, not the resolved issue

One precise note up front, because the intuitive version of this is not what is happening: issueNumber and issueUrl always agree with each other (the URL is literally /issues/<issueNumber>). The bug is that in 4 of 10 drafts here, that shared number is a pull request, so /issues/N silently redirects to /pull/N. The real resolved issue survives only in the PR-title slug. For example:

  • 10198-fix8026-validate-empty-branding-doc.md stores issueNumber: 10198 / issueUrl: .../issues/10198, but 10198 is the merge PR ("fix(#8026): validate empty branding doc"). The real issue is #8026 (closed): "Admin app fails to update branding if existing document is malformed".
  • 9407-fix9406-disable-unsupported-languages.md stores issueNumber: 9407 / issueUrl: .../issues/9407, but 9407 is the merge PR ("fix(#9406): disable unsupported languages"). The real issue is #9406 (closed): "Update default configurations to disable unsupported languages".

This is the same scraper behaviour flagged on #121, and it is pipeline-wide: across the four clean seeders, 60 of 107 drafts are affected.

Why request-changes rather than merge-and-fix-later

This corpus is the agent's memory of resolved issues (consumed by the Context Analysis Agent, see #135). A reference that resolves to a PR instead of the issue is simply wrong data, and it specifically defeats #135's planned de-duplication by issue id, since the "id" ends up being the PR id. Regenerating the drafts after the upstream fix will rewrite most of these files anyway, so merging now would churn the corpus twice.

Suggested fix (at the source, not file by file)

  1. Fix the distiller/scraper to take the resolved issue from the type(#N): PR title (the filename slug already extracts it correctly), and keep the PR number in source_pr where it belongs.
  2. Regenerate and re-promote this domain's drafts.
  3. Add de-duplication by real issue id (also a #135 acceptance item).

Open to discussing the approach. Once the drafts carry the real issue references, this should be a quick re-review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants