)]}'
{
  "log": [
    {
      "commit": "3f49b0021e7900d691790da5feec34034826b970",
      "tree": "6b641a439360efe4772458032b1137414d64fc3a",
      "parents": [
        "bc988fffca15a820484eb30f88cc10bfd83020a9"
      ],
      "author": {
        "name": "shuke",
        "email": "shuke987@qq.com",
        "time": "Wed Sep 30 15:11:51 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 15:11:51 2026 +0800"
      },
      "message": "Allow GPT-6.1 Sol for qualified local reviews (#15)"
    },
    {
      "commit": "bc988fffca15a820484eb30f88cc10bfd83020a9",
      "tree": "2a1995c1a19918160b71f7b2f04895694650dbf0",
      "parents": [
        "0476f3b84adeee4df75bc7ed694980306f8c6ab8"
      ],
      "author": {
        "name": "shuke",
        "email": "shuke987@qq.com",
        "time": "Tue Sep 29 11:05:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 29 11:05:21 2026 +0800"
      },
      "message": "Refresh local review policy for GPT-6 Sol and Opus 5.5 (#14)\n\nReplace GPT-5.6 Sol and Opus 5 with GPT-6 Sol and Opus 5.5, retaining the current effort thresholds and Astra/Fable models. Update qualified-runtime guidance, Sol fallback, and receipt examples. Test new-model receipt rendering and rejection of retired runtime attestations.\n\nValidation: 71 repository-review contract checks; 160 sender/receiver combinations; shell syntax and whitespace checks."
    },
    {
      "commit": "0476f3b84adeee4df75bc7ed694980306f8c6ab8",
      "tree": "7ca8b939d67ad528196638d0e000ed99c1847f6b",
      "parents": [
        "8c13ef3c96124232c6679b6d8764c33f937cf660"
      ],
      "author": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Mon Sep 14 14:26:39 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 14:26:39 2026 +0800"
      },
      "message": "feat(doris-repo-review): flag regressions per finding and floor them at Major (#12)\n\n* feat(doris-repo-review): flag regressions per finding and floor them at Major\n\nThe 2026-09-13 review of apache/doris#67900 found that the refactor had dropped\nthe per-attempt reset of the Flight result-location flag, wrote it up correctly,\nand rated it Minor because the trigger was narrow and the fix was one line. The\nverdict stayed APPROVE, a PASS receipt was posted with the regression as its\nfirst note, and the team\u0027s \"fix only Blocker/Major\" rule dropped it; the next\nreviewer sent it back as a must-fix."
    },
    {
      "commit": "8c13ef3c96124232c6679b6d8764c33f937cf660",
      "tree": "f305e07a1baae3e214395cb474a335fe7023ea1d",
      "parents": [
        "8d6236ff503eb1d34faef4e6192b054b9c45de94"
      ],
      "author": {
        "name": "shuke",
        "email": "shuke987@qq.com",
        "time": "Mon Sep 07 12:06:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 07 12:06:21 2026 +0800"
      },
      "message": "fix: prefer Astra and Fable 5.1 for repo reviews (#11)"
    },
    {
      "commit": "8d6236ff503eb1d34faef4e6192b054b9c45de94",
      "tree": "333be5adfed5b55d7fb1b15f4d0a78529dbe50c0",
      "parents": [
        "028ba927e1d9052c987156e6db1b03c6ed8856cc"
      ],
      "author": {
        "name": "shuke",
        "email": "shuke987@qq.com",
        "time": "Thu Sep 03 20:23:21 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 20:23:21 2026 +0800"
      },
      "message": "fix: require qualified reviewer runtimes (#8)\n\n* fix: require qualified reviewer runtimes\n\n* fix: publish verified local review receipts (#9)\n\n* fix: publish verified local review receipts\n\n* fix: harden verified review receipts\n\n* fix: validate model-specific review effort\n\n* fix: parse review convergence exactly"
    },
    {
      "commit": "028ba927e1d9052c987156e6db1b03c6ed8856cc",
      "tree": "c52b40ffc9d7ccc47904010b5c6bc49d05b1daf7",
      "parents": [
        "da8171aa6fbf29753a7307ba8bd2296f2c5a4638"
      ],
      "author": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Thu Aug 20 12:54:36 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 12:54:36 2026 +0800"
      },
      "message": "feat(doris-repo-review): carry review state across runs, add coverage report and premise checks (#10)\n\nA PR is normally reviewed more than once, but every run used to start from zero:\nthe dismissals were re-derived, the same files were re-read, and \"was this\nconsidered last time?\" was unanswerable. This teaches the skill to inherit from\nits own earlier runs, and closes three gaps that made a round cost more than it\nreturned.\n\nScripts:\n\n- `coverage-report.sh` (new, step 6a): mechanical check of which changed files\n  no ledger file has mentioned yet. Exits 1 when gaps remain and appends to\n  `coverage_history.tsv`. The risk scan and the merged ledger are excluded --\n  neither is evidence that a file was read.\n- `save-run-state.sh` (new, step 11): persists the merged ledger under a stable\n  per-PR state directory (`$DORIS_REVIEW_STATE`, default\n  `~/.cache/doris-repo-review`) and maintains an `index.tsv` history. Runs for\n  both verdicts.\n- `prepare-review-context.sh`: emits `coverage_checklist.tsv`, loads earlier\n  runs of the same PR into `$CTX/prior_runs/`, and records `STATE_DIR` /\n  `PRIOR_RUNS` in `meta.env`.\n\nSKILL.md:\n\n- 0.4a: evidence may live outside the repository -- open the pinned jar, the\n  sources jar, the vendored definition, and name the artifact and its version.\n- 2.1 / 3.3a: prior runs are input, not history. Dismissals carry forward with\n  their evidence; a rebased head is compared by content, not by commit hash.\n- 4.1: every risk item carries a premise and a one-command premise check, run\n  before dispatch. A false premise becomes a dismissal, not a subagent.\n- 5.1: round 1 goes out in two waves, because the ledger is empty when it\n  starts and the deduplication rule cannot work against it.\n- 7: a round converges on no new Blocker/Major plus clean coverage, not on \"no\n  new candidates at all\" -- a run still yielding Minor/Nit has converged.\n- 9: documents are named by reviewed head (`pr-\u003cN\u003e-review.\u003chead7\u003e.{en,zh}.md`)\n  with symlinks to the newest pair; an earlier run\u0027s pair is never overwritten.\n- 13: six new traps drawn from the above.\n\nReferences:\n\n- `prompts.md`: `{TECHNIQUE}` placeholder plus section D, a catalogue of the\n  eight techniques that actually produce findings, so a subagent is aimed\n  rather than left to invent \"read the diff and look for mistakes\".\n- `doc-templates.md`: `Builds on` header row, convergence stated separately\n  from the verdict, and three additions to \"Coverage and Limits\" (outside\n  evidence, inherited runs, convergence) in both languages.\n\nREADME: the skill\u0027s one-line description now names the new mechanics.\n\n\nClaude-Session: https://claude.ai/code/session_01GWPzxwYKXgPKrsXVSazJnr\n\nCo-authored-by: morningman \u003cmoringman@apache.org\u003e\nCo-authored-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "da8171aa6fbf29753a7307ba8bd2296f2c5a4638",
      "tree": "c60ec4503946065a746725e00429ee615f54b0b2",
      "parents": [
        "a535621ae6907965d34056192596da86745cb2e5"
      ],
      "author": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Mon Aug 17 23:28:25 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 23:28:25 2026 +0800"
      },
      "message": "[opt] opt review skill to post comment once psas (#7)"
    },
    {
      "commit": "a535621ae6907965d34056192596da86745cb2e5",
      "tree": "92105a6c1466e2330add8eba09f2c0835d157f09",
      "parents": [
        "dcde62263ee9bda5eb18643242e293e7a40c7bfe"
      ],
      "author": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Mon Aug 17 14:11:56 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 14:11:56 2026 +0800"
      },
      "message": "feat: add doris-repo-review skill and reorganize the README (#6)\n\n* feat: add doris-repo-review skill\n\nAdds a contributor-side skill that reviews an apache/doris Pull Request\nagainst a local source clone, running the same flow as the repository\u0027s CI\nCode Review Runner (.github/workflows/code-review-runner.yml):\n\n- align the current worktree to the PR head, refusing to switch when tracked\n  files are modified (never commits, stashes, resets or deletes for the user);\n- build one authoritative context: three-dot diff, new-side changed line\n  ranges, required AGENTS.md guides, existing inline review threads;\n- main-agent risk scan, then 1-3 full-review subagents plus risk-focused\n  subagents converging over a shared ledger for at most 3 rounds;\n- emit an English and a Chinese review document under review-docs/.\n\nA local run has no GitHub inline comments, so every finding carries a\n`path:line` anchor plus a verbatim snippet, and scripts/verify-anchors.py\nproves the anchors resolve and that both documents expose the same finding\nIDs.\n\nThe review is read-only: no build, no tests, no repository source changes and\nnothing posted to GitHub. Unlike the other skills here it works on a Doris\nsource checkout rather than a running cluster, which the README now states.\nThe README layout tree is also brought back in sync with skills/.\n\nCo-Authored-By: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* docs: reorganize README around the two families of skills\n\nThe repository is no longer only cluster-diagnosis knowledge, so the docs no\nlonger read as if it were.\n\nREADME:\n- open with what a skill is and the two kinds of work covered (working with a\n  cluster / working on Doris itself) instead of the deployment-only framing;\n- split the Skills table by family and give every row a \"Use it when\" column,\n  plus a link to the skill directory;\n- add a \"You say / what loads\" table so a reader can see how skills are\n  actually reached;\n- move the doriscli setup out of the opening paragraphs into \"Install -\u003e\n  Optional: doriscli\", where it belongs - it is a cluster-side dependency, and\n  doris-repo-review needs git/gh/jq/python3 instead;\n- state which skills have no L1/L2 coverage and that adding cases for a new\n  skill is welcome but not a merge requirement;\n- add \"Contributing a skill\": the directory layout, what the description has to\n  do for the router, and the existing brand-neutrality / CLI-contract rules,\n  which were previously filed under \"Authoring rules\" with no surrounding\n  context.\n\nCLI-CONTRACT.md and verify/README.md: scope both to the cluster-side skills, so\n\"these skills\" no longer implies coverage of skills they do not describe.\n\nCo-Authored-By: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: morningman \u003cmoringman@apache.org\u003e\nCo-authored-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "dcde62263ee9bda5eb18643242e293e7a40c7bfe",
      "tree": "e3cf5b135db7e906d80d2747d5bde01f41b5185f",
      "parents": [
        "aeeb2fe31071918257846b3d58ac09ffa151d4c1"
      ],
      "author": {
        "name": "ZhenchaoXu",
        "email": "49646212+ixzc@users.noreply.github.com",
        "time": "Wed Aug 12 15:46:11 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 12 15:46:11 2026 +0800"
      },
      "message": "docs: add doris-profile-reader to README Skills table (#4)\n\nThe skill exists under skills/ but was missing from the README listing."
    },
    {
      "commit": "aeeb2fe31071918257846b3d58ac09ffa151d4c1",
      "tree": "98f25db41710ada7d79a1221ec208360353e9f49",
      "parents": [
        "3151c5c54a3f35be79e7d18ae4b941146355b953"
      ],
      "author": {
        "name": "ZhenchaoXu",
        "email": "49646212+ixzc@users.noreply.github.com",
        "time": "Sat Jul 25 07:41:00 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 07:41:00 2026 +0800"
      },
      "message": "docs: translate remaining Chinese content to English in doris-debug skills (#5)\n\n* docs: translate remaining Chinese content to English in doris-debug skills\n\nTranslate all Chinese prose, table text, and code-block annotations to\nEnglish across 18 doris-debug reference/case/guide files. Command lines,\nconfig keys, metric names, class names, and SQL are left untouched.\n\n* docs: polish case index headings and unify case count\n\nAddress review feedback on #5:\n- Fix Q6 title: \u0027Query Results Flap\u0027 -\u003e \u0027Query Results Fluctuate Across Runs\u0027\n- Drop redundant \u0027(Xxx Diagnostics)\u0027 suffixes from domain headings\n- Unify case count to 45 (matches actual entries and #3 description)"
    },
    {
      "commit": "3151c5c54a3f35be79e7d18ae4b941146355b953",
      "tree": "8902536e6b7a3aee7c51a0023ab3aa3b13307979",
      "parents": [
        "c0aca2f0bacd85b9f45d1d124267b8367443a4ae"
      ],
      "author": {
        "name": "ZhenchaoXu",
        "email": "49646212+ixzc@users.noreply.github.com",
        "time": "Fri Jul 24 16:50:46 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 16:50:46 2026 +0800"
      },
      "message": "feat: add doris-debug diagnostic skills (#3)\n\n* feat: add doris-debug diagnostic skills\n\nAdd a comprehensive diagnostic skill suite for Apache Doris production\ntroubleshooting, all under a single skills/doris-debug/ directory.\n\nStructure:\n  skills/doris-debug/\n  ├── SKILL.md              # Router with symptom-to-skill mapping\n  ├── query/SKILL.md        # Slow/hanging/timeout queries\n  ├── import/SKILL.md       # Stream/Broker/Routine Load\n  ├── compaction/SKILL.md   # -235 / version accumulation\n  ├── node/SKILL.md         # OOM / crash / memory leak\n  ├── materialized-view/    # Sync MV / MTMV\n  ├── tablet/               # Replica / clone / disk skew\n  ├── deployment/           # FE/BE startup / ports\n  ├── data-lake/            # Hive/Iceberg/Paimon/Glue\n  ├── resource-isolation/   # Workload Group / spill\n  ├── cloud/                # Storage-compute separation\n  └── shared/               # References, guides, case index\n\nEach sub-skill contains SKILL.md with Cause tables, Metric Taxonomy,\ndecision trees, and code anchors. Includes 16 detailed case files\n(Environment → Symptom → Investigation → Root Cause → Fix) and\n45 production case patterns in shared/references/03-case-index.md.\n\nCompanion to existing doris-profile-reader, doris-best-practices, and\ndoris-architecture-advisor skills.\n\n* docs: add doris-debug suite to README Skills table"
    },
    {
      "commit": "c0aca2f0bacd85b9f45d1d124267b8367443a4ae",
      "tree": "24c521e7091e393d6fff15c63fa65fc6fb4e93ef",
      "parents": [
        "410500567f60a53cca88edf003f7c68ec6eaf0bf"
      ],
      "author": {
        "name": "zclllyybb",
        "email": "zhaochangle@selectdb.com",
        "time": "Mon Jun 08 18:57:57 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 18:57:57 2026 +0800"
      },
      "message": "enhance: better profile reader skill(v2) (#2)"
    },
    {
      "commit": "410500567f60a53cca88edf003f7c68ec6eaf0bf",
      "tree": "5a6c96f68b7572d924f5735bc0b0b747bfb78bdf",
      "parents": [
        "d64addcc2de081a4d5e8db589a63cac46ca3a857"
      ],
      "author": {
        "name": "zclllyybb",
        "email": "zhaochangle@selectdb.com",
        "time": "Mon Jun 01 17:13:31 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 17:13:31 2026 +0800"
      },
      "message": "Add doris-profile-reader (#1)"
    },
    {
      "commit": "d64addcc2de081a4d5e8db589a63cac46ca3a857",
      "tree": "00f8f883e195453ea2387516f3edefad2cda57b2",
      "parents": [
        "0528604a5cab97d0fed3fb861a738b530bfc136a"
      ],
      "author": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Sun May 31 00:09:04 2026 +0800"
      },
      "committer": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Sun May 31 00:09:04 2026 +0800"
      },
      "message": "docs: document the verify/ suite and link the doris-cli repo\n\nAdd a Verification section (L1 knowledge / L2 CLI contract / L3 behavior)\nwith a pointer to verify/, add verify/ to the layout tree, and link the two\ncompanion doris-cli repository references to https://github.com/apache/doris-cli.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "0528604a5cab97d0fed3fb861a738b530bfc136a",
      "tree": "2b4f8cf629a67c1254bcc965939b717cf3cc2cca",
      "parents": [
        "14dd9cedb17accb3bfcbde288fa4230f42100263"
      ],
      "author": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Sat May 30 23:55:19 2026 +0800"
      },
      "committer": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Sat May 30 23:55:19 2026 +0800"
      },
      "message": "test(verify): add L3 behavioral verification layer\n\nDrive a nested `claude -p` to check the skills *behave* as written, not\njust that the prose is correct — three harnesses:\n\nbehavior/run.sh — guardrail cases with the skill injected via\n  --append-system-prompt: evidence-first hard gate, connection-first,\n  --profile safety gate, sizing-as-total-vCPU, brand-neutrality. Two\n  nondeterministic guardrails (brand vendor-leak, sizing per-node) use a\n  non-fatal `warnassert` (the L3 analogue of L2\u0027s xassert) so a slip is\n  surfaced loudly without failing CI. (18 pass / 0 fail / 2 warn)\nbehavior/e2e-advisor-ddl.sh — advisor -\u003e CREATE TABLE -\u003e live cluster\n  loopback; the live Doris is the judge. REUSE\u003d1 re-validates the last\n  saved advisor response without a new model call. 3/3 created on 5.0.0.\nbehavior/triggering.sh — skill-router triggering: install the skills in\n  an isolated .claude/skills/ (excluding the global velodb-best-practices\n  look-alike, asserted from the init event\u0027s .skills[]) and detect\n  activation structurally from the `Skill` tool-use event in stream-json,\n  not from prose markers (the base model emits Doris DDL unprompted). 5/5.\n\nFindings the suite surfaced: a `;`-in-comment DDL truncation that faked a\n\"created\" (extractor now strips comments before splitting); the model\nfrequently name-drops a commercial distribution even with the neutral\nskill loaded; the skill\u0027s own per-node sizing tables tempt the per-node\noutput the rule forbids. Skills left as-is by choice.\n\nAlso force LC_ALL\u003den_US.UTF-8 in run.sh — under the C locale BSD grep\nmis-handles (and can abort on) the multibyte Chinese assertion patterns.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "14dd9cedb17accb3bfcbde288fa4230f42100263",
      "tree": "a63291f7a1d11aeab61d6fa51efba90e09410d38",
      "parents": [
        "67e33cfaf5c5c4fea42252c06abc6fa948abb907"
      ],
      "author": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Sat May 30 21:39:16 2026 +0800"
      },
      "committer": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Sat May 30 21:39:16 2026 +0800"
      },
      "message": "test(verify): extend L1/L2 and verify on Doris 5.0.0\n\nL1 (now 29 cases, was 27) — re-verified green on 5.0.0/cloud:\n- async-mv-refresh-interval-second.fail: EVERY 30 SECOND rejected (min 1 MINUTE)\n- bool-default-null.fail: BOOLEAN DEFAULT \"null\" rejected (invalid boolean literal)\n\nL2 (now 25 checks):\n- add assertions for profile diff, profile history, and use (existence-only)\n- add xassert (xfail/xpass) mechanism for known, version-specific doriscli gaps\n- surfaced + tracked the query_stats.total_scan_rows parser gap, then confirmed\n  its fix (doris-cli dd3f417) via the xfail-\u003expass flip; reverted to a plain assert\n\nDocs: README L1/L2 sections updated for 5.0.0; CLI-CONTRACT.md documents the\nprofile diff/history fields and notes use has no JSON contract.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "67e33cfaf5c5c4fea42252c06abc6fa948abb907",
      "tree": "1cd99caa7f6949a85d3580ade9326bb9c61905c0",
      "parents": [
        "673605732ad0a12ca1c4fe6d71ec081b6c9a8413"
      ],
      "author": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Sat May 30 19:17:39 2026 +0800"
      },
      "committer": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Sat May 30 19:17:39 2026 +0800"
      },
      "message": "docs: correct cli-investigation.md against doris-cli source\n\nAudited references/cli-investigation.md claim-by-claim against\n../doris-cli/src. Commands, flags, the tablet-fields table, most\nprofile fields, p50/p99, and the REST URLs all check out. Fixed 4\ninaccuracies:\n\n- scanned_tables is a JSON object keyed by table name (not an array);\n  each entry carries ddl/total_rows/tablet_skew\n- auth status mysql_status is \"connected\" or \"error: \u003creason\u003e\", never\n  \"unreachable\" (that value is http_status only)\n- on profile-fetch failure the response surfaces note + fetch_attempts;\n  served_by/fetch_via are success-only\n- profile eviction is a per-FE count cap (max_query_profile_num), not a\n  5-15 minute time window\n\nAlso added the npm install hint to match the README.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "673605732ad0a12ca1c4fe6d71ec081b6c9a8413",
      "tree": "d56582b01df8be38d2679b1dc75e61abc047c496",
      "parents": [
        "b5468a9b3308c972474fabf193dac629845d86fd"
      ],
      "author": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Sat May 30 19:17:32 2026 +0800"
      },
      "committer": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Sat May 30 19:17:32 2026 +0800"
      },
      "message": "docs: recommend npm install for doriscli\n\nPromote `npm install -g @apache-doris/doriscli` (prebuilt binaries, no\nRust toolchain) as the primary way to install doriscli, matching the\ndoris-cli README. Keep the companion repo as the pointer for source\nbuilds / other platforms, and preserve the SQL + HTTP fallback note.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "b5468a9b3308c972474fabf193dac629845d86fd",
      "tree": "09845fde922acb56ebd2989f8c4ee1f7cbb5d83f",
      "parents": [
        "4d7fa0cadaa97a0ddcccccf9b9c61094a3ec03d3"
      ],
      "author": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Sat May 30 07:37:27 2026 +0800"
      },
      "committer": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Sat May 30 07:37:27 2026 +0800"
      },
      "message": "test: add verify/ regression suite for skill claims\n\nGround-truth verification of the skills against a real Doris cluster +\ndoriscli, as a reusable (CI-friendly) suite:\n\n- L1 (verify/run.sh): runs each DDL template (T1-T5) and every §2 DDL\n  hard-constraint as an accept/reject case over the MySQL protocol,\n  asserting Doris accepts/rejects it exactly as the skill claims (27\n  cases; reject cases also assert the documented error reason). Version /\n  deployment-mode gated; uses a guarded throwaway database.\n- L2 (verify/cli/run.sh): asserts every command + JSON field in\n  CLI-CONTRACT.md resolves against the live cluster via doriscli\n  (auto-detecting the binary and FE HTTP port).\n\nConnection config in verify/env.sh and reports/ are gitignored.\nVerified on Doris 4.1.1.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "4d7fa0cadaa97a0ddcccccf9b9c61094a3ec03d3",
      "tree": "e663f40b05afac165b9442c5a2a30204c2cb8315",
      "parents": [
        "c7472737487c5b2feb0338e929ca9c4d5f2729a4"
      ],
      "author": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Sat May 30 07:37:26 2026 +0800"
      },
      "committer": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Sat May 30 07:37:26 2026 +0800"
      },
      "message": "fix: store_row_column works on DUPLICATE in Doris 4.x\n\nThe DDL gotcha claimed `store_row_column\u003d\"true\"` is rejected on both\nAGGREGATE and DUPLICATE. Verified against Doris 4.1.1: it is accepted and\npersisted on DUPLICATE — only AGGREGATE is rejected (\"Aggregate table\ncan\u0027t support row column\"). Corrected the Pre-Flight Checklist (SKILL.md)\nand the DDL Gotchas reference.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "c7472737487c5b2feb0338e929ca9c4d5f2729a4",
      "tree": "308c5b77703726acccace049988c27344818230f",
      "parents": [
        "790efae7fd14b78bbd6f375754252cbeecb7a742"
      ],
      "author": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Fri May 29 15:43:40 2026 +0800"
      },
      "committer": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Fri May 29 15:44:58 2026 +0800"
      },
      "message": "docs: broaden install/usage beyond Claude Code\n\nThe skills are plain Agent Skills (SKILL.md) and work across agent tools, not just\nClaude Code. Document `npx skills add apache/doris-skills` (cross-agent, auto-discovers\nboth skills and bundles references/) as the primary install, keeping manual cp as fallback.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "790efae7fd14b78bbd6f375754252cbeecb7a742",
      "tree": "6cd5f0dad2f5e00e7fbcbce4a70351ee2d60e8c6",
      "parents": [
        "0e68b1f837df3a838fe070b1b4d637e07c22f46f"
      ],
      "author": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Fri May 29 15:23:50 2026 +0800"
      },
      "committer": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Fri May 29 15:23:50 2026 +0800"
      },
      "message": "chore: inline doriscli/Apache Doris, drop placeholder render layer\n\nThe skills now pair directly with doriscli (the Apache Doris CLI) instead of\nrendering per-distribution via a placeholder/values mechanism.\n\n- Inline the 5 placeholder tokens to their Apache Doris values\n  (doriscli, Apache Doris, DORIS_CLI_PATH, Apache Doris cloud mode).\n- Neutralize cloud content: drop the nonexistent `cloud cluster get` command\n  (use `doriscli auth status` backends instead) and the CLOUD_OPS_SKILL refs.\n- Remove scaffolding: PLACEHOLDERS.md, scripts/ (render.sh + lint), and the\n  redundant hand-maintained AGENTS.md.\n- Add CLI-CONTRACT.md documenting the doriscli commands/fields the skills rely on.\n- Rewrite README to \"pairs with doriscli\".\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "0e68b1f837df3a838fe070b1b4d637e07c22f46f",
      "tree": "e1d458e9ea3151d5d624b5f586294e724beec3a2",
      "parents": [
        "bf305c0a8fd0d2f8c8632fa13e919e458a9c8e98"
      ],
      "author": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Fri May 29 06:42:15 2026 +0800"
      },
      "committer": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Fri May 29 06:42:15 2026 +0800"
      },
      "message": "add license and .asf.yaml\n"
    },
    {
      "commit": "bf305c0a8fd0d2f8c8632fa13e919e458a9c8e98",
      "tree": "24627319661aed8a8a528d7da1d74d6894fa39f9",
      "parents": [],
      "author": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Fri May 29 06:11:47 2026 +0800"
      },
      "committer": {
        "name": "Mingyu Chen (Rayner)",
        "email": "yunyou@selectdb.com",
        "time": "Fri May 29 06:11:47 2026 +0800"
      },
      "message": "Initial: Apache Doris agent skills (shared kernel)\n\nBrand-neutral doris-best-practices and doris-architecture-advisor skills,\nextracted from velodb-agent-skills with 5 placeholder tokens ({{CLI}},\n{{PRODUCT_NAME}}, {{CLOUD_PRODUCT_NAME}}, {{CLOUD_OPS_SKILL}},\n{{CLI_PATH_ENV}}) for brand repos to render at install time.\n\nCo-Authored-By: tomz-alt \u003cheisenzhang996@gmail.com\u003e\n"
    }
  ]
}
