Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
330 commits
Select commit Hold shift + click to select a range
c325392
Merge pull request 'Fix #2721: propagate kg_concepts in Insufficient …
AlexMikhalev Aug 30, 2026
3ab03f4
Merge branch 'main' into task/2723-rust-engineer-role-fix
AlexMikhalev Aug 30, 2026
19dd54d
Merge pull request 'Fix #2723: set rust-engineer shortname to match -…
AlexMikhalev Aug 30, 2026
29cf5fa
Merge branch 'main' into task/2171-ci-enrichment-feature
AlexMikhalev Aug 30, 2026
208661f
Merge pull request 'Fix terraphim/terraphim-ai#2171: add --features e…
AlexMikhalev Aug 30, 2026
69faea4
Merge branch 'main' into task/48-impl
AlexMikhalev Aug 30, 2026
9136734
Merge pull request 'Fix #48: suppress spurious thesaurus NotFound ERR…
AlexMikhalev Aug 30, 2026
ad13206
fix(ci): add --features enrichment to Gitea native CI Refs #2171
Jun 22, 2026
9837794
Merge pull request 'Fix terraphim/terraphim-ai#2171: add --features e…
AlexMikhalev Aug 30, 2026
b0b53ef
test(grep): add default-feature zero-chunk smoke guard
Jun 29, 2026
ee847c2
Merge pull request 'Fix terraphim/terraphim-ai#4325: add grep default…
AlexMikhalev Aug 30, 2026
d54f28f
Merge pull request 'Fix #58: make terraphim_grep 1.21.0 publishable t…
AlexMikhalev Aug 30, 2026
c0d0a86
docs(quality): capture verification + validation reports for PRs #44,…
Aug 30, 2026
b988d06
feat(memory): scaffold terraphim-agent memory CLI namespace with 10 s…
AlexMikhalev Jul 1, 2026
725e4d1
feat(memory): wire terraphim_agent_evolution into CLI with capture/li…
AlexMikhalev Jul 1, 2026
6bb2025
feat(memory): implement rubric scorer, second-run signal, policy doc,…
AlexMikhalev Jul 1, 2026
fd33fcd
feat(memory): add cross-invocation persistence via JSON file store Re…
AlexMikhalev Jul 1, 2026
7b35c26
fix(memory): address PR review findings -- P1 capture semantics, P2 d…
AlexMikhalev Jul 1, 2026
cd77b86
fix(grep): resolve project thesaurus by role shortname
AlexMikhalev Jul 3, 2026
c2c6a08
fix(grep): rank KG matches above substring metadata
AlexMikhalev Jul 3, 2026
2219ed3
feat(grep): add update commands via shared updater
AlexMikhalev Jul 4, 2026
6cdc42f
fix(update): rotate zipsign release verifier key
AlexMikhalev Jul 4, 2026
bbcfc70
fix(update): preserve release asset name for verification
AlexMikhalev Jul 4, 2026
9b79bac
fix(agent): use clients release assets for updates
AlexMikhalev Jul 4, 2026
69f4f75
fix(rebase): repair post-rebase fallout in PR #61
AlexMikhalev Aug 30, 2026
357d29b
fix(update): revert redundant with_repo to unbreak packaged install gate
AlexMikhalev Aug 30, 2026
d2349f6
docs(quality): add PR #61 verification report
AlexMikhalev Aug 30, 2026
66388ac
docs(quality): add PR #61 validation report
AlexMikhalev Aug 30, 2026
572ae18
Merge pull request 'feat(memory): unified Memory Lifecycle CLI + Reli…
AlexMikhalev Aug 30, 2026
70979c2
docs(quality): PR #84 verification + validation -- documents 57 pre-e…
AlexMikhalev Aug 31, 2026
fd01ac2
test(fixtures): sync terraphim_server test fixtures from terraphim-ai…
AlexMikhalev Aug 31, 2026
7df45f6
fix(agent): make PreToolUse hook rewriting opt-in, default-on guard
AlexMikhalev Aug 30, 2026
a344bbd
feat(agent): --explain for guard, README robot-mode fix, priority docs
AlexMikhalev Aug 30, 2026
e531b92
test(grep): pin --search-only flag and LLM-client skip
AlexMikhalev Aug 30, 2026
f5196f5
feat(robot): mark REPL-only commands in schema output
AlexMikhalev Aug 30, 2026
ef033d8
docs: ADRs for guard priority and pretool rewrite, reference, blog posts
AlexMikhalev Aug 30, 2026
959251b
feat(robot): add CLI chat schema, mark summarize REPL-only
AlexMikhalev Aug 30, 2026
b3eea2f
test(agent): pin chat and summarize repl_only correctness
AlexMikhalev Aug 30, 2026
2c0a33a
refactor(agent): extract GuardTrace::print, make check delegate to ch…
AlexMikhalev Aug 30, 2026
9f9b138
docs: clarify REPL vs CLI chat in robot-mode blog and reference
AlexMikhalev Aug 30, 2026
8eb1601
ci(native-ci): build terraphim_server from terraphim-ai and run #113 …
AlexMikhalev Aug 31, 2026
cffc48b
style(robot,grep,agent): apply rustfmt to cherry-picked commits (Refs…
AlexMikhalev Aug 31, 2026
84605f0
test(kg-ranking): point haystack at synced fixtures, replace missing …
Aug 31, 2026
fbdcc4e
Merge pull request 'Fix #113: build terraphim_server from terraphim-a…
AlexMikhalev Aug 31, 2026
4810f9a
Merge pull request 'Robot mode polish, guard ADRs, and reference docs…
AlexMikhalev Aug 31, 2026
908710b
test(cross-mode): un-ignore test_role_consistency_across_modes via pe…
Aug 31, 2026
0d47ff7
test(cross-mode): drop unnecessary explicit deref flagged by clippy
Aug 31, 2026
504f39a
Merge pull request 'Refs #113b: un-ignore test_role_consistency_acros…
AlexMikhalev Aug 31, 2026
ecb2281
fix(terraphim_agent): filter sub-word matches in extract (Refs #46)
claude Aug 31, 2026
75930d8
Merge pull request 'Fix #46: filter sub-word matches in terraphim-age…
AlexMikhalev Aug 31, 2026
aadc769
test: provision docs/src/kg fixture + extend manifest fixture (Refs #…
AlexMikhalev Aug 31, 2026
4625cdd
test(terraphim_update): derive manifest fixture + document KG format …
AlexMikhalev Aug 31, 2026
12bffd7
ci(terraphim-clients): run all workspace targets in test gate
Aug 3, 2026
5dbfe1b
Fix #142: repoint find_files KG-scorer fixture at mcp_server (#12)
AlexMikhalev Sep 1, 2026
785d4f1
Fix #143: hermetic MCP stdio tests (#13)
AlexMikhalev Sep 1, 2026
bd0a1e1
Fix #144: hermetic user_prompt_submit tests via TERRAPHIM_DEFAULT_DAT…
AlexMikhalev Sep 1, 2026
f1888ba
test: resolve workspace binaries via CARGO_BIN_EXE, honour TERRAPHIM_…
AlexMikhalev Sep 1, 2026
5d800be
ci: provision terraphim_server before the all-targets test gate
AlexMikhalev Sep 1, 2026
70410ba
test: make hook_safety and search_only_flag hermetic
AlexMikhalev Sep 1, 2026
7eddb0f
Merge pull request 'ci: run all workspace targets in test gate' (#84)…
AlexMikhalev Sep 1, 2026
fe6d2d9
docs(plans): add cass-parity session-search test plan + traceability …
AlexMikhalev Sep 3, 2026
5d62274
Merge pull request 'docs(plans): cass-parity session-search test plan…
AlexMikhalev Sep 3, 2026
cf55578
docs(plans): design + issue split for cass-parity session test suite …
AlexMikhalev Sep 3, 2026
26f34f0
Merge pull request 'docs(plans): design + issue split for cass-parity…
AlexMikhalev Sep 3, 2026
bf42455
test(sessions): parity harness — shared fixture builders + --all-feat…
AlexMikhalev Sep 3, 2026
119cab2
Merge pull request 'Fix #150: parity harness — shared fixture builder…
AlexMikhalev Sep 3, 2026
c300cc8
test(sessions): hybrid KG-boost ordering suite (P0 parity rows)
AlexMikhalev Sep 3, 2026
2480ef6
Merge pull request 'Fix #151: hybrid KG-boost ordering suite (P0 pari…
AlexMikhalev Sep 3, 2026
f01fd78
test(sessions): import contracts — global limit, auto-import single-a…
AlexMikhalev Sep 3, 2026
bd92572
test(sessions): per-connector hermetic import suites (cline, aider)
AlexMikhalev Sep 3, 2026
6c08dc0
Merge pull request 'Fix #152: import contracts + per-connector hermet…
AlexMikhalev Sep 3, 2026
3dcb588
test(agent): REPL/CLI session contract tests (robot JSON, exit-4, fla…
AlexMikhalev Sep 3, 2026
a360a1e
Merge pull request 'Fix #153: REPL/CLI session contract tests (robot …
AlexMikhalev Sep 3, 2026
65e35cd
test(agent): DOCS-DRIFT probes + NFR bench wiring (port #3014 into cl…
AlexMikhalev Sep 3, 2026
4f1a5ec
Merge pull request 'Fix #154: DOCS-DRIFT probes + NFR bench wiring (p…
AlexMikhalev Sep 3, 2026
f77c124
docs(verification): wave-1 verification report for session-test-suite…
AlexMikhalev Sep 3, 2026
a215733
fix(tests): address PR-review P2 findings — panic-safe tempdirs, drop…
AlexMikhalev Sep 3, 2026
ec733d6
Merge pull request 'fix(tests): address PR-review P2 findings — panic…
AlexMikhalev Sep 3, 2026
264ccd5
docs(terraphim_agent): document LearningStore hybrid scoring (Refs #850)
Sep 1, 2026
0362627
style: cargo fmt on sessions_cli_contract.rs (fmt gate caught drift)
AlexMikhalev Sep 3, 2026
b2f05eb
Merge pull request 'docs(terraphim_agent): document LearningStore hyb…
AlexMikhalev Sep 3, 2026
84f24f9
docs(verification): addendum — structured PR review round results for…
AlexMikhalev Sep 3, 2026
417d23c
feat(sessions): redact API keys and secrets in session import connect…
Jun 13, 2026
eb654cf
fix(redaction): compile redaction patterns once via OnceLock
AlexMikhalev Sep 4, 2026
4fe445e
Merge pull request 'Fix terraphim/terraphim-ai#1986: redact API keys …
AlexMikhalev Sep 4, 2026
e886ab2
test(procedure): add CLI integration tests for learn procedure from-s…
Jun 13, 2026
0a2d3ba
fix(tests): make from-session CLI tests platform-hermetic + align ded…
AlexMikhalev Sep 4, 2026
62fbba5
Merge pull request 'Fix terraphim/terraphim-ai#2350: CLI integration …
AlexMikhalev Sep 4, 2026
b9d35ed
docs(verification): addendum 2 — PR queue triage, revived PRs, >=4/5 …
AlexMikhalev Sep 4, 2026
38ac3fb
ci: add manual publish-registry workflow for terraphim registry Refs …
Jun 25, 2026
e71d8d3
Merge pull request 'ci: add manual publish-registry workflow for terr…
AlexMikhalev Sep 4, 2026
943613e
feat(sessions): implement expand subcommand (Task 2.6.4) Refs terraph…
Jun 14, 2026
3c8fb7b
style: cargo fmt + drop unused cache_dir binding in dedup test
AlexMikhalev Sep 4, 2026
5412561
Merge pull request 'feat(sessions): implement expand subcommand (terr…
AlexMikhalev Sep 4, 2026
c4fe4a8
feat(learn): auto-suggest corrections from KG in capture_failed_comma…
Jun 13, 2026
168a713
feat(learn): implement KG auto-suggest corrections in capture_failed_…
Jun 21, 2026
ab9e2f0
fix(learn): resolve duplicate test name breaking PR #29 build
Jun 21, 2026
35f1c6f
fix(learn): borrow corrections thesaurus in find_matches (1.21.x borr…
AlexMikhalev Sep 4, 2026
b93139f
Merge pull request 'feat(learn): KG auto-suggest corrections in captu…
AlexMikhalev Sep 4, 2026
8c4becd
feat(learnings): implement CorrectionEvent CLI and security hardening…
Jun 10, 2026
381606b
Merge pull request 'feat(learnings): CorrectionEvent CLI subcommands …
AlexMikhalev Sep 4, 2026
5626de0
feat(terraphim_lsp): add KG analysis engine with Aho-Corasick term ma…
AlexMikhalev Sep 4, 2026
4778cea
Merge pull request 'feat(terraphim_lsp): add KG analysis engine with …
AlexMikhalev Sep 4, 2026
9e9189f
test(agent): REPL /sessions parser contract tests (adapted from #39, …
AlexMikhalev Sep 7, 2026
28c4a94
Merge pull request 'test(agent): REPL /sessions parser contract tests…
AlexMikhalev Sep 7, 2026
d22c3bd
feat(agent): add shared-learning to default features (Refs terraphim-…
AlexMikhalev Sep 7, 2026
7feccd4
Merge pull request 'feat(agent): add shared-learning to default featu…
AlexMikhalev Sep 7, 2026
c0b91a7
refactor(agent): bin reuses lib modules — eliminates twin module tree
AlexMikhalev Sep 7, 2026
06fe29b
refactor(robot): drop dead_code allows on submodules (twin-tree fix m…
AlexMikhalev Sep 7, 2026
f980045
refactor(agent): purge remaining dead_code suppressions — wire, read,…
AlexMikhalev Sep 7, 2026
d173aeb
refactor(tsa): bin reuses lib modules + purge dead correlation code
AlexMikhalev Sep 7, 2026
f9b0951
refactor: purge all production dead_code suppressions (closes #5, #1)
AlexMikhalev Sep 7, 2026
122e5e6
Merge pull request 'refactor: purge all production dead_code suppress…
AlexMikhalev Sep 7, 2026
17d2608
fix(agent): derive thesaurus_matched from the boundary-aware matcher
AlexMikhalev Sep 7, 2026
3c5af37
fix(agent): honour --fail-on-empty in server mode
AlexMikhalev Sep 7, 2026
08c36df
Merge pull request 'Fix #197: derive thesaurus_matched from the bound…
AlexMikhalev Sep 7, 2026
d3232b6
fix(redaction): apply central redaction before every persistence boun…
Sep 8, 2026
8e19605
Merge pull request 'fix(redaction): apply central redaction before ev…
Sep 8, 2026
0c7d78a
fix(security): validate wiki_page_name + XSS strip + component valida…
Sep 8, 2026
e53d8c0
Merge pull request 'fix(security): validate wiki_page_name + XSS stri…
Sep 8, 2026
cbf7301
fix(hooks): correct replacement count to actual match count (Refs #190)
Sep 8, 2026
6d25883
Merge pull request 'fix(hooks): correct replacement count to actual m…
Sep 8, 2026
77446f5
chore(clients): bump workspace to 1.21.14, update terraphim_types to …
AlexMikhalev Sep 9, 2026
df89905
docs(clients): document registry policy in [patch.crates-io] comment
AlexMikhalev Sep 9, 2026
fbfbab7
refactor(terraphim_agent): extract cli_helpers module (~200 LOC)
Sep 9, 2026
8fd7ff6
Merge pull request 'refactor(terraphim_agent): extract cli_helpers mo…
AlexMikhalev Sep 9, 2026
657e73c
refactor(terraphim_agent): extract cli_schema module (~878 LOC)
Sep 9, 2026
79f2cc1
Merge pull request 'refactor(terraphim_agent): extract cli_schema mod…
AlexMikhalev Sep 9, 2026
8315667
refactor(terraphim_agent): extract robot_dispatch module (~390 LOC)
AlexMikhalev Sep 9, 2026
85e7e75
Merge pull request 'refactor(terraphim_agent): extract robot_dispatch…
AlexMikhalev Sep 9, 2026
7a254d8
fix(clients): bump terraphim_automata to 1.21.1, terraphim_types to 1…
AlexMikhalev Sep 9, 2026
175d86b
fix(terraphim_update): bump zip 8 -> 7 (drop getrandom 0.4 transitive)
AlexMikhalev Sep 9, 2026
4fb87a6
Merge pull request 'fix(terraphim_update): bump zip to 7 to resolve w…
AlexMikhalev Sep 9, 2026
596e8dd
Merge pull request 'chore(clients): bump terraphim_automata to 1.21.1…
AlexMikhalev Sep 9, 2026
37a1ad1
Revert "Merge pull request #215 from fix/automata-1.21.1-types-1.22.1"
AlexMikhalev Sep 9, 2026
4da623e
Merge pull request 'fix: revert PR #215 (workspace cannot lift to ter…
AlexMikhalev Sep 9, 2026
dfd5cc6
chore(clients): bump terraphim_types to 1.22.1 across all member crates
AlexMikhalev Sep 10, 2026
f5a8a0d
Merge pull request 'chore(clients): bump terraphim_types to 1.22.1 ac…
AlexMikhalev Sep 10, 2026
c464205
refactor(terraphim_agent): extract handle_guard_command (step 4.1 of …
AlexMikhalev Sep 10, 2026
268d77c
Merge pull request 'refactor(terraphim_agent): extract handle_guard_c…
AlexMikhalev Sep 10, 2026
1867ac0
refactor(terraphim_agent): extract handle_check_update_command (step …
AlexMikhalev Sep 10, 2026
9f58ac6
Merge pull request 'refactor(terraphim_agent): extract handle_check_u…
AlexMikhalev Sep 10, 2026
3cb71e6
refactor(terraphim_agent): extract handle_setup_command (step 4.3 of …
AlexMikhalev Sep 10, 2026
6b12fbf
Merge pull request 'refactor(terraphim_agent): extract handle_setup_c…
AlexMikhalev Sep 10, 2026
fe7223a
refactor(terraphim_agent): extract handle_update_command (step 4.4 of…
AlexMikhalev Sep 10, 2026
cba77e8
Merge pull request 'refactor(terraphim_agent): extract handle_update_…
AlexMikhalev Sep 10, 2026
a07865f
refactor(terraphim_agent): extract handle_roles_list_command (step 4.…
AlexMikhalev Sep 10, 2026
917ee00
Merge pull request 'refactor(terraphim_agent): extract handle_roles_l…
AlexMikhalev Sep 10, 2026
892a717
refactor(terraphim_agent): extract handle_replace_command (step 5.1 o…
AlexMikhalev Sep 10, 2026
abf69ac
refactor(terraphim_agent): extract handle_suggest_command (step 5.5 o…
AlexMikhalev Sep 10, 2026
54770f3
Merge PR #224 (5.1 Replace) into release
AlexMikhalev Sep 10, 2026
f8f759d
refactor(terraphim_agent): extract handle_validate_command (step 5.2 …
AlexMikhalev Sep 10, 2026
072d3a2
refactor(terraphim_agent): extract handle_hook_command (step 5.3 of #…
Sep 10, 2026
d6740ae
Merge PR #227 (5.4 Search) into release
AlexMikhalev Sep 10, 2026
30340bb
fix(terraphim_agent): de-interleave handle_suggest_command/handle_rep…
AlexMikhalev Sep 10, 2026
9f98f4d
refactor(terraphim_agent): extract handle_sessions_command (step 5.6 …
AlexMikhalev Sep 10, 2026
a4cc58e
refactor(terraphim_agent): extract handle_config_command (step 5.7 of…
AlexMikhalev Sep 10, 2026
65573cd
refactor(terraphim_agent): extract handle_roles_command (step 5.8 of …
AlexMikhalev Sep 10, 2026
b1bc055
refactor(terraphim_agent): extract handle_graph/kg/chat/extract_comma…
AlexMikhalev Sep 11, 2026
52c1f0e
style(clients): cargo fmt pass before release merge (#209)
AlexMikhalev Sep 11, 2026
fa40ea8
style(clients): move classify_error_tests to end of robot_dispatch.rs
AlexMikhalev Sep 11, 2026
6161df6
Merge pull request 'Release: bump workspace to 1.21.14 with terraphim…
AlexMikhalev Sep 11, 2026
2c27102
style(clients): restore native-ci gates on main after #200/#201/#203
AlexMikhalev Sep 11, 2026
fe13065
refactor(terraphim_agent): extract server_command module (step 6.1 of…
AlexMikhalev Sep 11, 2026
baa860a
refactor(terraphim_agent): extract memory_command module (step 6.2 of…
AlexMikhalev Sep 11, 2026
50987dc
refactor(terraphim_agent): extract learn_command module (step 6.3 of …
AlexMikhalev Sep 11, 2026
3b46949
feat(memory): implement `memory retrieve` on the rolegraph Refs #202
AlexMikhalev Sep 8, 2026
8b130b7
perf(memory): retrieve builds a single-role service instead of every …
AlexMikhalev Sep 11, 2026
24a07c8
feat(terraphim_grep): human-readable sufficiency explanations in JSON…
AlexMikhalev Sep 11, 2026
1050e26
ci(native-ci): fail fast with a clear error when zipsign is missing
AlexMikhalev Sep 11, 2026
84ac30e
feat(memory): implement memory apply as a real hook preview
AlexMikhalev Sep 11, 2026
9aecb9e
feat(terraphim_agent): native judge scaffolding (Refs #193)
AlexMikhalev Sep 11, 2026
1120180
ci(native-ci): use allowlisted `test` instead of `if`/`then`/`fi` in …
AlexMikhalev Sep 11, 2026
793f50c
feat(terraphim_agent): add memory_bench module with judge-free recall…
AlexMikhalev Sep 11, 2026
8ae1820
test(terraphim_agent): add retrieval quality integration test and com…
AlexMikhalev Sep 11, 2026
351cef2
feat(memory): name the rubric scorer heuristic-v1 and read both reten…
AlexMikhalev Sep 11, 2026
f3cbbdf
test(memory): CLI tests for rubric scorer label and long-term visibility
AlexMikhalev Sep 11, 2026
5c62133
feat(terraphim_agent): committed redacted memory benchmark fixture
AlexMikhalev Sep 12, 2026
dddf5e7
Merge remote-tracking branch 'gitea/task/259-memory-fixture' into tas…
AlexMikhalev Sep 12, 2026
02c31d5
test(terraphim_agent): record first-run recall@5 floor and thesaurus …
AlexMikhalev Sep 12, 2026
b4aa2d1
feat(terraphim_agent): report injected bytes and estimated tokens in …
AlexMikhalev Sep 12, 2026
a176a1c
bench(terraphim_agent): Criterion latency bench for memory_retrieve a…
AlexMikhalev Sep 12, 2026
534e522
Merge remote-tracking branch 'gitea/task/262-rubric-scorer' into task…
AlexMikhalev Sep 12, 2026
4785b3a
feat(terraphim_agent): hash queries.jsonl into the memory bench report
AlexMikhalev Sep 12, 2026
137a2f5
fix(memory): order list across buckets before the limit; validate emi…
AlexMikhalev Sep 12, 2026
837fad8
fix(terraphim_agent): redact every host in the memory fixture and enf…
AlexMikhalev Sep 12, 2026
ecd4e68
Merge remote-tracking branch 'gitea/task/259-memory-fixture' into tas…
AlexMikhalev Sep 12, 2026
4b6e090
docs(terraphim_agent): memory benchmark disclosure with pipeline, res…
AlexMikhalev Sep 12, 2026
1f3d316
test(terraphim_agent): assert the floor quoted in docs/memory-benchma…
AlexMikhalev Sep 12, 2026
b428687
docs(terraphim_agent): correct latency procedure wording in memory-be…
AlexMikhalev Sep 12, 2026
dc7c9ed
docs(terraphim_agent): state the injection payload origin, real apply…
AlexMikhalev Sep 12, 2026
001d8ff
fix(terraphim_agent): redact project path tails in the memory fixture
AlexMikhalev Sep 12, 2026
8821f19
Merge remote-tracking branch 'gitea/task/259-memory-fixture' into tas…
AlexMikhalev Sep 12, 2026
e5947b6
Merge remote-tracking branch 'gitea/task/260-memory-bench' into task/…
AlexMikhalev Sep 12, 2026
5c7867c
Merge remote-tracking branch 'gitea/task/261-latency-bench' into task…
AlexMikhalev Sep 12, 2026
81c2dd1
Merge remote-tracking branch 'gitea/task/262-rubric-scorer' into task…
AlexMikhalev Sep 12, 2026
5bfe831
docs(terraphim_agent): refresh memory-benchmark.md numbers against th…
AlexMikhalev Sep 12, 2026
d355eed
Merge pull request 'Fix #259: committed redacted memory benchmark fix…
AlexMikhalev Sep 12, 2026
e54d3d2
Merge pull request 'Fix #260: memory_bench module with judge-free rec…
AlexMikhalev Sep 12, 2026
a159c35
Merge pull request 'Fix #261: Criterion latency bench and injected by…
AlexMikhalev Sep 12, 2026
2725b4d
docs(terraphim_agent): drop the item count from the apply script docs…
AlexMikhalev Sep 12, 2026
bccef7e
Merge branch 'main' into task/262-rubric-scorer
AlexMikhalev Sep 12, 2026
4041dfb
fix(session-analyzer): parse Codex response role (#264)
AlexMikhalev Sep 12, 2026
6fbea28
test(agent): make KG ranking baseline hermetic (#275)
AlexMikhalev Sep 12, 2026
7a0a06c
test(learn): update correction CLI integration (#276)
AlexMikhalev Sep 12, 2026
192b3c5
fix(packaging): canonicalize client metadata and licenses (#246)
AlexMikhalev Sep 11, 2026
47c5d11
fix(update): respect pacman-managed installations (#247)
AlexMikhalev Sep 11, 2026
408f332
fix(update): respect package-managed installations
AlexMikhalev Sep 12, 2026
37b8cdf
Merge pull request 'fix(update): respect package-managed installation…
Sep 12, 2026
914bb24
Merge pull request 'Fix #262: memory rubric names heuristic-v1 scorer…
AlexMikhalev Sep 13, 2026
d645e57
Merge pull request 'Fix #263: docs/memory-benchmark.md with disclosed…
AlexMikhalev Sep 13, 2026
6657b5f
ci(release): add correlated stage-only client artifacts
AlexMikhalev Sep 13, 2026
a593f1f
chore: gitignore insta diff artefacts and runtime logs
AlexMikhalev Sep 15, 2026
ad745d0
Merge pull request 'chore: gitignore insta diff artefacts and runtime…
AlexMikhalev Sep 15, 2026
c6e95a2
Fix #313: ci: switch both coverage lanes from in-process cargo llvm-c…
AlexMikhalev Sep 16, 2026
9570df2
docs(verification): record post-merge smoke evidence for #313 — runne…
AlexMikhalev Sep 16, 2026
d2fc9da
Fix #328: policy-safe native-ci coverage step (single-line command, b…
Sep 16, 2026
daf7285
Fix #328: env-independent CA check and coverage step (runner applies …
Sep 16, 2026
a0575c1
Fix #328: install coverage toolchain to VM-writable /tmp/cov-tools
Sep 16, 2026
053db95
Fix #328: cargo fmt (ci_guards.rs shipped unformatted in the #313 merge)
Sep 16, 2026
039d7c8
Fix #328: pin coverage tools to the GH ci.yml versions (0.8.5 / 0.9.144)
Sep 16, 2026
eac2a55
Fix #328: expose the pinned tools to the test lanes via PATH
Sep 16, 2026
b80c6d4
Fix #328: install pinned tools into the session CARGO_HOME (not a --r…
Sep 16, 2026
0303076
Merge pull request 'Fix #328: policy-safe native-ci coverage step (si…
AlexMikhalev Sep 16, 2026
e5c664f
Merge remote-tracking branch 'gitea/main' into task/322-stage-only-re…
AlexMikhalev Sep 18, 2026
b29baad
ci: rerun after runner config isolation
AlexMikhalev Sep 18, 2026
bab6032
Merge pull request 'ci(release): correlate stage-only client artifact…
Sep 18, 2026
abe6e8d
feat(release): make client publication immutable and correlated
AlexMikhalev Sep 18, 2026
78474f2
feat(release): add immutable client package producers
AlexMikhalev Sep 19, 2026
65cb7c8
Merge pull request 'feat(release): immutable correlated DEB/RPM produ…
Sep 19, 2026
00aee4f
fix(release): portable lipo order and path-safe RPM extraction (1.21.16)
AlexMikhalev Sep 19, 2026
8a245e5
ci(native): alias GITEA_TOKEN with Bearer scheme for packaged-graph c…
AlexMikhalev Sep 19, 2026
1882f60
Merge pull request 'fix(release): portable producers for v1.21.16' (#…
Sep 19, 2026
090b02c
Fix #335: conditional registry token alias (VM runners have no step env)
Sep 24, 2026
5ac57f0
Merge pull request 'Fix #335: conditional registry token alias (VM ru…
AlexMikhalev Sep 24, 2026
176c490
chore(release): adopt the canonical GitHub .github/ and scripts/ tree…
Oct 1, 2026
03bcfcf
Merge pull request 'chore(release): adopt the canonical GitHub .githu…
AlexMikhalev Oct 1, 2026
fff32ac
docs(plans): research for re-pointing coverage tool-pinning guard at …
Oct 2, 2026
4f51968
docs(plans): design for re-pointing coverage tool-pinning guard at na…
Oct 2, 2026
6c4b4e2
fix(ci): re-point coverage_tool_pinning_matches_local_toolchain at na…
Oct 2, 2026
2223aea
docs(verification): report + traceability matrix for fix-coverage-pin…
Oct 2, 2026
9fa79a7
docs(plans): KLS quality reviews for research + design artefacts
Oct 2, 2026
1047567
fix(ci): rename native install steps to match canonical-pin reality
Oct 2, 2026
15b1790
Merge pull request 'fix(ci): re-point coverage tool-pinning guard at …
AlexMikhalev Oct 2, 2026
9e84f58
Merge remote-tracking branch 'gitea/main' into task/reconcile-gitea-i…
Oct 4, 2026
ff9e1eb
fix(grep): raise RLM max_tokens to 8000 and surface empty-content war…
Oct 4, 2026
e9c5d06
chore: sync crate code from gitea/main canonical line
Oct 4, 2026
8bc9fd8
fix(grep): raise RLM max_tokens to 8000 and surface empty-content war…
Oct 4, 2026
fb957d7
chore: sync test directories from gitea/main canonical line
Oct 4, 2026
9e1092e
fix(grep): address P1+P2 findings from structural PR review
Oct 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
271 changes: 271 additions & 0 deletions .codex/skills/native-requirements-validator.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,271 @@
# Native Requirements Validator

**Role**: Native requirements validation PR gate producer for digital-twin API pull requests.
**Gate**: Requirements validation (canonical context `adf/validation`).
**Invocation**: The ADF orchestrator dispatches a bounded PR evidence prompt via the native PR gate path. No tools. One human report plus exactly one canonical `adf:gate-result` block.

---

## Constraints

- The orchestrator has assembled all evidence. **Do not call any tools.**
- Do not post Gitea comments or update commit statuses. The orchestrator owns those side-effects.
- Process only what appears in the dispatched evidence prompt. Do not fetch additional context.
- Emit **exactly one** `adf:gate-result` block per run, as the final element of the output.
- Do not fabricate diff content, contract details, or SDK results. If a section is absent or `N/A`, mark the affected check `skip`.
- Do not reference anything outside the evidence prompt -- no memory of past PRs, no assumptions about crate or vendor internals beyond what the evidence shows.
- Keep the human report under 1 200 words. British English, no emoji.

---

## Evidence Prompt Sections

The dispatch prompt is rendered by the orchestrator (`build_pr_gate_prompt`).
Sections as dispatched, in order, with their trust level:

```
Rules (always present)
Bounded-evidence rules: no tools, no side-effects, one gate-result block.

Gate-specific instructions (always present)
One-line validation mandate for this gate.

Evidence quality (always present)
PR change classification (unknown | doc_only | config_only | infrastructure | code)
and evidence_truncated (true | false). See Change-Kind Calibration.

PR metadata (always present)
Project, PR number, title, author, head SHA, diff LOC, linked issue.

Changed files (always present)
Path list from the PR diff. May be empty in fallback packs.

Terraphim matched concepts (always present)
Orchestrator-matched concepts. Context only; never evidence of correctness.

Diff evidence (always present)
Unified diff excerpt in a fenced block, capped by the orchestrator. May be
truncated (evidence_truncated=true).

Relevant context (optional)
KG-matched chunks with source attribution. Best-effort context only.

Required final block shape (always present)
Template block embedding the verbatim agent, context, pr_number, and
head_sha this run must echo.
```

Sections that are part of this gate's target contract for digital-twin API
PRs but are **not yet dispatched by the orchestrator**:

```
## API Contract Snapshot (future)
Crate or twin name, routes, request/response types, status codes,
error variants.

## SDK Validation Results (future)
Suite name, pass/fail counts, failing endpoints, coverage JSON.

## CI Status (future)
cargo build / test / clippy / fmt outcomes.
```

Treat every absent, empty, or `N/A` section as `skip` (non-blocking), never
as failure, and reduce confidence per the derivation below.

---

## Validation Dimensions

Work through all three dimensions in order. Record all findings before rendering output.

### Change-Kind Calibration

The `PR change classification` in Evidence quality calibrates every dimension:

| Classification | Calibration |
|---------------|-------------|
| `code` | Full three-dimension evaluation. |
| `infrastructure` | Config and documentation only. Do not demand tests, API contracts, or SDK runs; evaluate acceptance-criteria traceability and consistency. |
| `config_only` | As `infrastructure`, scoped to configuration correctness and orchestrator contract consistency. |
| `doc_only` | Evaluate documentation accuracy against the linked issue only. |
| `unknown` | Fall back to full evaluation; treat missing code evidence as unverifiable, not failed. |

Never block a `doc_only` or `config_only` PR for absent SDK validation or
API contract evidence.

### Dimension 1 -- Acceptance Criteria

For each acceptance criterion stated in the linked issue evidence:

1. Search `Diff Evidence` and `Changed Files` for a traceable implementation of the criterion.
2. Classify each criterion:
- **satisfied**: diff contains a traceable implementation -- non-blocking
- **unsatisfied**: no corresponding change can be traced -- `BLOCKER`
- **unverifiable**: evidence lacks sufficient diff context to decide -- `WARN`
3. When no linked issue is present: dimension verdict is `skip` (non-blocking). Reduce confidence by one.
4. When the linked issue is present but no acceptance criteria were dispatched -- the orchestrator does not yet populate issue bodies, so this is the common case today -- dimension verdict is `skip`; note the evidence gap in the report, reduce confidence by one, and record no finding.

### Dimension 2 -- API Contract Fidelity

Ground truth is the `API Contract Snapshot`, not the issue description or commit message.
Cross-check every route, type, and status code in the snapshot against the `Diff Evidence`:

| Check | Pass condition | Failure label |
|-------|---------------|---------------|
| Route presence | every listed route appears in the diff | BLOCKER |
| Method correctness | HTTP verb matches the handler annotation (axum) | BLOCKER |
| Request field names | field names match the snapshot (case-sensitive for JSON) | BLOCKER |
| Response shape | required fields present in the serialised type; extra fields are not a failure | BLOCKER |
| Status codes | `StatusCode` values in the diff match the snapshot | BLOCKER |
| Error paths | new error variants have typed cases; no `unwrap()` on fallible handler paths | WARN |
| Pagination and headers | cursor/page semantics and required headers honoured when part of the diff | WARN |

Framework context: axum 0.8, serde 1, thiserror 2, Rust edition 2024.
A route that compiles but violates REST semantics (for example, mutating state via GET) is a fidelity failure.
Intentional twin mock relaxations documented by the orchestrator (for example, disabled JWT validation in test environments) are `INFO`, not `BLOCKER`, unless an acceptance criterion explicitly requires production-grade behaviour.

When `API Contract Snapshot` is `N/A`: dimension verdict is `skip` (non-blocking). Reduce confidence by one.

### Dimension 3 -- SDK Compatibility

Using `SDK Validation Results`:

- `success_rate: 100` for the affected suite -- dimension verdict **pass**
- Any value below 100 -- dimension verdict **fail**; list the failing endpoints
- `CI Status` showing `cargo test: fail` overrides the SDK JSON -- mark **fail** and note the discrepancy
- New endpoint in the diff with no corresponding SDK test -- `WARN`
- Existing SDK test removed or disabled -- `BLOCKER`
- When the section is `N/A`: dimension verdict is `skip` (non-blocking). Reduce confidence by one.

Per-twin verdicts are evaluated independently; the overall SDK verdict is the worst across all touched twins.

### Severity Labels

| Label | Meaning | Blocks gate |
|-------|---------|-------------|
| `BLOCKER` | Requirement unmet, contract broken, or SDK regression | Yes |
| `WARN` | Questionable or fragile, not a definitive break | No |
| `INFO` | Observation worth noting; no action required | No |

---

## Verdict Derivation

Overall gate status derives from the three dimension verdicts:

| Dimension verdicts | `status` field | Human-report verdict |
|--------------------|----------------|----------------------|
| Any dimension `fail`, or any `BLOCKER` finding | `"fail"` | FAIL |
| No `BLOCKER`; at least one `WARN` finding | `"concerns"` | NEEDS-REVISION |
| All dimensions `pass` or `skip`, no findings | `"pass"` | PASS |

These rules are authoritative. The prose dimensions above are the derivation path; this table is the machine contract.

### Confidence Derivation

`confidence` is an integer from 1 to 5 reflecting evidence quality, not verdict severity:

1. Start at 5.
2. Subtract one for each absent recommended section (`API Contract Snapshot`, `SDK Validation Results`, `CI Status`) **that the change-kind calibration makes relevant** -- for `doc_only`, `config_only`, and `infrastructure` PRs the API and SDK sections are out of scope and cost nothing.
3. Subtract one when the `Diff Evidence` excerpt is truncated and left criteria unverifiable.
4. Floor at 1; never exceed 5.

### Blocking Findings Count

`blocking_findings` is the integer count of `BLOCKER`-severity findings across all three dimensions.

The dispatch prompt phrases this as "the count of P0/P1 findings"; `BLOCKER`
is this gate's equivalent tier. `WARN` and `INFO` never count.

---

## Output Structure

Two parts, in this order. No text between or after them.

### Part 1 -- Human Report (Markdown)

```markdown
## PR #<n> Native Requirements Validation Report

**Verdict**: PASS | NEEDS-REVISION | FAIL

### Summary
<two or three lines: what the PR claims, what was checked, overall outcome>

### Acceptance Criteria
| ID | Criterion (short) | Status | Notes |
|-------|-------------------|--------------|-------|
| AC-1 | ... | SATISFIED | ... |

### API Contract Fidelity
<prose findings; one short paragraph per route or type checked;
write "skipped: no contract snapshot dispatched" when absent>

### SDK Compatibility
<prose findings: suite name, pass rate, failing endpoints if any;
write "skipped: no SDK results dispatched" when absent>

### Evidence
<what the dispatch supplied: change classification, truncation state,
linked-issue criteria, sections present or absent>

### Findings
| Severity | Dimension | Finding |
|----------|------------------------|--------------------------------------|
| BLOCKER | api-contract-fidelity | response field `id` missing |

### Verdict
<one line restating PASS | NEEDS-REVISION | FAIL with the decisive reason>
```

The report must be self-contained. A human reading it without the evidence prompt must understand what was checked and what was found.

### Part 2 -- Canonical Gate Result Block

Immediately after the human report, on its own lines, emit exactly one HTML comment block containing a single JSON object:

<!-- adf:gate-result
{
"schema_version": 1,
"agent": "pr-validator",
"context": "adf/validation",
"pr_number": 0,
"head_sha": "0000000000000000000000000000000000000000",
"status": "pass",
"confidence": 5,
"blocking_findings": 0,
"summary": "one-line summary of the verdict"
}
-->

Field rules:

| Field | Rule |
|-------|------|
| `schema_version` | always the integer `1` |
| `agent`, `context`, `pr_number`, `head_sha` | copy **verbatim** from the `Required final block shape` embedded in the dispatch prompt; the orchestrator validates all four against dispatch metadata and fails the gate closed on any mismatch |
| `status` | exactly one of `"pass"`, `"concerns"`, `"fail"` per the verdict table |
| `confidence` | integer 1 to 5 per the confidence derivation |
| `blocking_findings` | integer count of BLOCKER findings |
| `summary` | one specific line describing this PR's outcome; never a placeholder |

The block must be the **last** element of the output. Exactly one block per run; a second block, a fenced-code variant, or a YAML variant is a contract violation and the orchestrator will fail the gate closed.

---

## Edge Cases

| Situation | Behaviour |
|-----------|-----------|
| Evidence prompt has no recognisable sections | `status: "fail"`, `confidence: 1`, explain in report |
| No linked issue | skip AC dimension; reduce confidence by one |
| `Diff evidence` truncated (`evidence_truncated: true`) | truncation alone is at most concerns, never blocking; unverifiable criteria become `WARN` |
| Recommended section `N/A` | skip that dimension where it is the sole ground truth; reduce confidence by one |
| Multiple linked issues | evaluate all AC lists; overall AC verdict is the worst across issues |
| Multiple twins in diff | evaluate contract fidelity per twin; overall is the worst across twins |
| Intentional mock relaxations | note in report as `INFO`; do not escalate to `BLOCKER` |
| Snapshot contradicts issue criteria | flag the discrepancy as `WARN` in both dimensions; do not auto-resolve |
| SDK JSON has neither `results` nor `tests` key | mark SDK check `skip`; note the shape error; reduce confidence by one |
| Never increase test timeouts | unless a criterion explicitly covers an LLM or slow external service |
Loading
Loading