Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1487 commits
Select commit Hold shift + click to select a range
5d49a78
fix(debug): fix handler crash, PR submission kwargs, and mission locking
Koan-Bot Jun 17, 2026
92b88f1
fix(burn-rate): suppress warnings when unlimited_quota is set
Koan-Bot Jun 17, 2026
94db284
fix(burn-rate): make is_unlimited_quota() internally safe, remove cal…
Koan-Bot Jun 17, 2026
4c612a7
fix: resolve CI failures on #2003 (attempt 1)
Koan-Bot Jun 17, 2026
2887416
Merge pull request #1991 from Koan-Bot/koan.atoomic/implement-1986
atoomic Jun 17, 2026
b1143f8
Merge pull request #2003 from Koan-Bot/koan.atoomic/suppress-burn-rat…
atoomic Jun 17, 2026
c7a348c
fix(skills): resolve project aliases across all skill handlers
Koan-Bot Jun 17, 2026
a3ef53d
refactor(skills): centralize alias resolution into shared helpers per…
Koan-Bot Jun 17, 2026
b701659
Merge pull request #2002 from Koan-Bot/koan.atoomic/fix-ai-project-alias
atoomic Jun 17, 2026
12818eb
fix(stats): resolve project aliases in --perf mode
Koan-Bot Jun 17, 2026
bcff42b
fix(quota): harden is_unlimited_quota() and fix budget_mode fallback
Koan-Bot Jun 17, 2026
698546b
fix(quota): harden _get_budget_mode() for non-dict usage config per r…
Koan-Bot Jun 17, 2026
0397c82
Merge pull request #2008 from Koan-Bot/koan.atoomic/fix-stats-perf-alias
atoomic Jun 17, 2026
50b3065
Merge pull request #2007 from Koan-Bot/koan.atoomic/stronger-unlimite…
atoomic Jun 17, 2026
6831315
feat(skill): add /time core skill with /date alias
Koan-Bot Jun 17, 2026
f27f03b
Merge pull request #2010 from Koan-Bot/koan.atoomic/add-time-skill
atoomic Jun 17, 2026
3d3b627
feat(github): thread replies and add command acknowledgments
Koan-Bot Jun 17, 2026
1e181f5
feat(review): add review_verdict.approved toggle to control verdict s…
Koan-Bot Jun 17, 2026
d789ced
fix(review): fail closed on verdict config errors + add review_verdic…
Koan-Bot Jun 17, 2026
43ee85e
fix(review): fail closed on verdict config errors + add review_verdic…
Koan-Bot Jun 17, 2026
7758fe5
feat(skills): add parallel flag to combo skills for batch insertion
Koan-Bot Jun 17, 2026
fa4b7a4
feat(skills): add audit_all parallel combo skill
Koan-Bot Jun 17, 2026
e693128
docs: document parallel combo skills and audit_all
Koan-Bot Jun 17, 2026
3efbc11
test: add parallel combo skill tests and backward compatibility checks
Koan-Bot Jun 17, 2026
fd5b250
fix(skills): make combo skills executable from direct dispatch path
Koan-Bot Jun 17, 2026
ee71485
fix(skills): check combo expansion result and remove unused import
Koan-Bot Jun 17, 2026
9d8c7eb
feat(status): show current branch in header
Koan-Bot Jun 17, 2026
c3c89b6
fix(github): apply review feedback for threading and ack reliability
Koan-Bot Jun 17, 2026
194fd2c
fix(tests): update mock targets from post_reply to post_threaded_reply
Koan-Bot Jun 17, 2026
45be321
Merge pull request #2012 from Koan-Bot/koan.atoomic/status-show-branch
atoomic Jun 18, 2026
7f0157d
Merge pull request #1961 from exciton/claude/fix-unified-retry-cap
atoomic Jun 18, 2026
796388a
Merge pull request #2005 from Koan-Bot/koan.atoomic/implement-1988
atoomic Jun 18, 2026
f9e3133
Merge pull request #2009 from Koan-Bot/koan.atoomic/review-verdict-ap…
atoomic Jun 18, 2026
440cc5c
feat(parallel): activate session orchestration in main loop
Koan-Bot Jun 6, 2026
cdf6cc5
fix(parallel): apply review feedback — skill guard, quota fallback, e…
Koan-Bot Jun 6, 2026
513a0f9
fix(parallel): apply review feedback — skill guard, quota fallback, e…
Koan-Bot Jun 18, 2026
48e3323
Merge pull request #2011 from Koan-Bot/koan.atoomic/improve-pr-reply-…
atoomic Jun 18, 2026
646a982
fix(github): trust existing GH_TOKEN instead of false auth warning
atoomic Jun 18, 2026
1eabfb2
fix(github): default github.ack_enabled to false
atoomic Jun 18, 2026
0de4f6d
Merge pull request #2022 from atoomic/ack-false
atoomic Jun 18, 2026
5c9b48c
Merge pull request #2020 from atoomic/koan/fix-github-auth-false-warning
atoomic Jun 18, 2026
2fc8f65
Merge pull request #1532 from Koan-Bot/koan.atoomic/implement-1304
atoomic Jun 18, 2026
bf47425
fix(github): process all @mentions in a thread, not just the last one
Koan-Bot Jun 18, 2026
41def3c
Make /review finding locations clickable file links
atoomic Jun 18, 2026
9d5eea7
Merge pull request #2024 from atoomic/review-lines
atoomic Jun 18, 2026
9503ca4
Merge pull request #2023 from Koan-Bot/koan.atoomic/fix-multi-mention…
atoomic Jun 18, 2026
67ade7e
fix(recover): guard per-mission tracker calls against runtime errors
Koan-Bot Jun 18, 2026
9f519fc
fix(recover): propagate tracker write errors and log safe-wrapper fai…
Koan-Bot Jun 18, 2026
9ec945f
feat(api): enrich /v1/status with elapsed_seconds, signals, and atten…
Koan-Bot Jun 18, 2026
345eee2
fix(api): log attention errors and extract status helpers per review
Koan-Bot Jun 18, 2026
0f1cb9f
feat(review): skip closed/merged PRs unless --force
Koan-Bot Jun 18, 2026
ac65d45
feat(status): show parallel worker count in header when > 1
Koan-Bot Jun 18, 2026
5443fe1
fix(notify): use 🚦 for ci_dispatch failure notifications too
Koan-Bot Jun 18, 2026
7c2f8ba
fix(github): address multi-mention review concerns from PR #2023
Koan-Bot Jun 18, 2026
ff12e5a
Merge pull request #2025 from Koan-Bot/koan.atoomic/abort-review-clos…
atoomic Jun 18, 2026
f920c0c
Merge pull request #2027 from Koan-Bot/koan.atoomic/ci-failure-emoji-…
atoomic Jun 18, 2026
42b7dc0
Merge pull request #2028 from Koan-Bot/koan.atoomic/fix-multi-mention…
atoomic Jun 18, 2026
45186ad
Merge pull request #2026 from Koan-Bot/koan.atoomic/status-show-paral…
atoomic Jun 18, 2026
777d56c
Merge pull request #2013 from Koan-Bot/koan.atoomic/fix-recover-track…
atoomic Jun 18, 2026
94ac0e8
Merge pull request #2014 from Koan-Bot/koan.atoomic/implement-1659
atoomic Jun 18, 2026
f6b3449
feat: add /gh skill to show GitHub CLI auth status
Koan-Bot Jun 18, 2026
454fbfb
Merge pull request #2030 from Koan-Bot/koan.atoomic/add-gh-skill
atoomic Jun 18, 2026
b51a363
fix: check_auto_merge returns None when auto-merge not configured
Koan-Bot Jun 18, 2026
ac9a503
fix(github): stop reply spam on closed and reprocessed PRs
atoomic Jun 18, 2026
346336d
fix(github): address review feedback on reply breaker silent failures
Koan-Bot Jun 18, 2026
16be907
fix: check_auto_merge distinguishes merge-skip from merge-success
Koan-Bot Jun 18, 2026
0c70b29
fix: resolve CI failures on #2031 (attempt 1)
Koan-Bot Jun 18, 2026
79847af
Merge pull request #2029 from atoomic/koan/fix-github-reply-spam
atoomic Jun 19, 2026
7b25f09
Merge pull request #2031 from Koan-Bot/koan.atoomic/fix-autoreview-me…
atoomic Jun 19, 2026
bb701c9
feat(bridge): ignore group messages addressed to other users
Koan-Bot Jun 18, 2026
fdef11c
fix(bridge): add diagnostic output to getMe exception handler
Koan-Bot Jun 19, 2026
a022419
fix: use prompt template for /claudemd INIT mode instead of /init
Koan-Bot Jun 18, 2026
54df9ff
fix: use /init for claude provider, prompt template for others in INI…
Koan-Bot Jun 19, 2026
55f6f01
Merge pull request #2033 from Koan-Bot/koan.atoomic/ignore-other-user…
atoomic Jun 19, 2026
b472546
Merge pull request #2032 from Koan-Bot/koan.atoomic/fix-claudemd-init…
atoomic Jun 19, 2026
b163bbc
feat(skills): validate SKILL.md frontmatter at parse time
Koan-Bot Jun 19, 2026
b602994
test(skills): add core skill compliance check for validate_skill_meta…
Koan-Bot Jun 19, 2026
65d610a
Merge pull request #2034 from Koan-Bot/koan.atoomic/skill-md-validation
atoomic Jun 19, 2026
a66598b
test: ignore pycache-only dirs in orphan skill check
Koan-Bot Jun 19, 2026
8793111
fix(ci_dispatch): distinguish API failure from CI green in fetch_fail…
Koan-Bot Jun 19, 2026
536eddb
Fixup ssh connection
atoomic Jun 19, 2026
51befe3
feat(slack): in-thread replies and fix dropped events
atoomic Jun 19, 2026
302e420
feat(slack): show a "thinking" status while replying
atoomic Jun 19, 2026
aa9278f
docs(slack): correct the assistant status rendering scope
atoomic Jun 19, 2026
cb62ad2
style(tests): fix ruff lint in test_skills.py
atoomic Jun 19, 2026
43f634d
fix(memory): add fsync after truncate+write in prune_memory_log()
Koan-Bot Jun 19, 2026
c411c7e
Merge pull request #2039 from Anantys-oss/slack-integration
atoomic Jun 19, 2026
87973e4
refactor(prompt_builder): replace regex with sentinel markers for foc…
Koan-Bot Jun 19, 2026
17b70f6
fix(prompt_builder): guard against misordered focus mode sentinels
Koan-Bot Jun 19, 2026
2af1f4c
Merge pull request #2040 from Koan-Bot/koan.atoomic/fsync-prune-memor…
atoomic Jun 19, 2026
08cc994
Merge pull request #2038 from Koan-Bot/koan.atoomic/ci-dispatch-api-v…
atoomic Jun 19, 2026
6ccab7c
perf(stagnation): cache _migrate_tracker_filename to avoid per-iterat…
Koan-Bot Jun 19, 2026
b60a9cf
refactor(memory): extract _extract_file_header() to deduplicate heade…
Koan-Bot Jun 19, 2026
a140552
fix(stagnation): exception-safe test cleanup and real-fs assertions p…
Koan-Bot Jun 19, 2026
089aa39
Merge pull request #2049 from Koan-Bot/koan.atoomic/fix-issue-2044
atoomic Jun 19, 2026
08cd2f4
Merge pull request #2048 from Koan-Bot/koan.atoomic/fix-issue-2042
atoomic Jun 19, 2026
80da023
Merge pull request #2046 from Koan-Bot/koan.atoomic/focus-mode-sentin…
atoomic Jun 19, 2026
5dbe88e
Merge pull request #2035 from Koan-Bot/koan.atoomic/orphan-skill-test…
atoomic Jun 19, 2026
403ddb9
feat: add /update_last_release to checkout latest release tag
Koan-Bot Jun 19, 2026
467ed91
fix: address review feedback for /update_last_release robustness
Koan-Bot Jun 19, 2026
b83b47c
fix: constrain release tags to upstream, detect downgrades, fix API r…
Koan-Bot Jun 20, 2026
6da567e
feat(bridge): promote bare core-skill words to slash commands
Master-Koan Jun 20, 2026
8063eab
Merge pull request #2047 from Koan-Bot/koan.atoomic/update-last-release
atoomic Jun 20, 2026
ad4b77d
ci: bump Docker GitHub Actions to latest major versions
Koan-Bot Jun 20, 2026
ac47fd6
feat(memory): add structured metadata layer to memory entries
Koan-Bot Jun 18, 2026
2ffb70e
fix(memory): narrow exception handling and log suppressed errors per …
Koan-Bot Jun 18, 2026
ce5f59d
fix(memory): enforce expiry in JSONL fallback and wire skill-aware re…
Koan-Bot Jun 19, 2026
3af11df
fix(memory): narrow exception handling and log suppressed errors per …
Koan-Bot Jun 19, 2026
9cc8423
fix(memory): narrow exception handling and log suppressed errors per …
Koan-Bot Jun 20, 2026
17045ae
feat(security): propagate security findings to sibling code paths via…
Koan-Bot Jun 17, 2026
a4ed029
fix(security): address variant analysis review feedback — fallback, l…
Koan-Bot Jun 17, 2026
764e31f
fix(security): address variant analysis review feedback — fallback, l…
Koan-Bot Jun 17, 2026
42a7ee1
fix(security): address variant analysis review feedback — fallback, l…
Koan-Bot Jun 18, 2026
9cb3f47
fix: resolve CI failures on #2006 (attempt 1)
Koan-Bot Jun 18, 2026
a42f879
fix: resolve CI failures on #2006 (attempt 1)
Koan-Bot Jun 18, 2026
456313e
fix(security): address variant analysis review feedback — fallback, l…
Koan-Bot Jun 20, 2026
f9593e4
feat(review): add bot-review comment triage pass for /review
Koan-Bot Jun 18, 2026
abca917
fix(review): pass project_path to bot triage and deduplicate bot replies
Koan-Bot Jun 19, 2026
ca250b6
fix(review): pass bot triage through incremental skip and narrow tabl…
Koan-Bot Jun 20, 2026
f080cb1
feat(fix): add diagnostic prompt template for pre-fix hypothesis phase
Koan-Bot Jun 18, 2026
b6f7497
feat(fix): add fix_diagnose module for pre-fix hypothesis analysis
Koan-Bot Jun 18, 2026
c94b61f
feat(fix): wire diagnostic step into run_fix() before _execute_fix()
Koan-Bot Jun 18, 2026
48a18d4
test(fix): add tests for diagnostic integration and --skip-diagnose flag
Koan-Bot Jun 18, 2026
a191e49
docs(fix): document diagnostic phase and --skip-diagnose flag
Koan-Bot Jun 18, 2026
df062f1
fix(fix): apply review feedback — mock ordering, unused code, error d…
Koan-Bot Jun 18, 2026
288da5e
fix(fix): apply review feedback — consistent dict shape, prompt safet…
Koan-Bot Jun 18, 2026
972fe1c
fix(fix): apply review feedback — enforce read-only tools, error gran…
Koan-Bot Jun 20, 2026
132db4e
feat(dashboard): add /api/efficiency endpoint for token-per-productiv…
Koan-Bot Jun 18, 2026
250559f
feat(dashboard): add Waste % column and efficiency bar chart to usage…
Koan-Bot Jun 18, 2026
01d498c
fix(dashboard): add offset support to /api/efficiency and address rev…
Koan-Bot Jun 19, 2026
34f53b3
fix(dashboard): add offset support to /api/efficiency and address rev…
Koan-Bot Jun 20, 2026
cee9d7a
feat(memory): scan memory entries for injection at assembly time
atoomic Jun 19, 2026
148e546
test(memory): add FTS5 read path coverage for injection sanitization
Koan-Bot Jun 20, 2026
785b9b4
feat(bridge): refresh soul.md/summary.md in chat without restart
atoomic Jun 19, 2026
63bfa7d
fix(bridge): distinguish empty context files from missing ones in cache
Koan-Bot Jun 20, 2026
13511f1
feat(trackers): add time-based pruning to JSON tracker files
Koan-Bot Jun 19, 2026
e08dee8
fix(stagnation): prune legacy scalar retry entries and preserve updat…
Koan-Bot Jun 19, 2026
3cccce7
docs: document tracker_max_age_days config for ci_dispatch and review…
Koan-Bot Jun 20, 2026
ea46d6f
feat(security): add 9 missing patterns to scan_diff_for_patterns()
Koan-Bot Jun 19, 2026
9cb5f52
fix(security): add word boundary to verify=False pattern, build AWS t…
Koan-Bot Jun 19, 2026
c512f7e
fix(security): exclude yaml.SafeLoader from unsafe deserialization pa…
Koan-Bot Jun 20, 2026
c14a24b
Merge pull request #2051 from Koan-Bot/koan.atoomic/update-ci-docker-…
atoomic Jun 20, 2026
bf893fe
Merge pull request #2017 from Koan-Bot/koan.atoomic/implement-1732
atoomic Jun 20, 2026
05b3eec
Merge pull request #2015 from Koan-Bot/koan.atoomic/implement-1995
atoomic Jun 20, 2026
4592c6e
Merge pull request #2006 from Koan-Bot/koan.atoomic/implement-1987
atoomic Jun 20, 2026
d993391
Merge pull request #2019 from Koan-Bot/koan.atoomic/implement-1980
atoomic Jun 20, 2026
8fc5b4e
Merge pull request #2050 from Koan-Bot/koan/telegram-bare-skill-promo…
atoomic Jun 20, 2026
64a3605
Merge pull request #2037 from Koan-Bot/koan.atoomic/refresh-chat-cont…
atoomic Jun 20, 2026
71ecabe
Merge pull request #2036 from Koan-Bot/koan.atoomic/implement-1983
atoomic Jun 20, 2026
9d4d7d3
Merge pull request #2045 from Koan-Bot/koan.atoomic/security-scan-pat…
atoomic Jun 20, 2026
02f87cd
Merge pull request #2041 from Koan-Bot/koan.atoomic/tracker-time-pruning
atoomic Jun 20, 2026
6538d47
Merge pull request #2016 from Koan-Bot/koan.atoomic/implement-1940
atoomic Jun 20, 2026
4772e56
feat(dashboard): add recurring tasks management page
Koan-Bot Jun 20, 2026
3f75f43
fix(dashboard): add file locking and input validation to recurring AP…
Koan-Bot Jun 21, 2026
f44fd55
Merge pull request #2053 from Koan-Bot/koan.atoomic/recurring-dashboard
atoomic Jun 21, 2026
8f06897
fix(review): make checklist cross-references accurate via finding ind…
atoomic Jun 22, 2026
c51ce3d
Merge pull request #2054 from atoomic/koan/accurate-review-checklist-…
atoomic Jun 22, 2026
1a531f4
Queue reviews from requested-review scans
atoomic Jun 22, 2026
33ec20c
Harden requested-review scan: exact-URL dedup + throttle/parallel
atoomic Jun 22, 2026
359533f
ci: bump GitHub Actions to latest major versions
atoomic Jun 22, 2026
0991315
Merge pull request #2056 from atoomic/ci-review
atoomic Jun 22, 2026
a57092a
Merge pull request #2055 from atoomic/gh-scan
atoomic Jun 23, 2026
7f02269
feat(dashboard): add GitHub icon link to sidebar brand
Koan-Bot Jun 23, 2026
a233308
Add private review gate for PR-producing skills
atoomic Jun 23, 2026
d025206
Strengthen project memory in code reviews
atoomic Jun 23, 2026
358f810
feat: add /orphans skill to recover orphan branches via rebase + draf…
Koan-Bot Jun 23, 2026
e2eb3c4
fix: harden /orphans error handling — check abort/fetch/checkout retu…
Koan-Bot Jun 23, 2026
4d2a732
Harden private review gate cost and quota accounting
atoomic Jun 23, 2026
87734bd
Slim the private review gate fix prompt
atoomic Jun 23, 2026
b067784
Deduplicate private review gate skill wrappers
atoomic Jun 23, 2026
ac69772
Refresh coverage baseline for the private review gate feature
atoomic Jun 23, 2026
fb8541b
Give /review a dedicated prior-review context slot
atoomic Jun 23, 2026
a0b96e4
Merge pull request #2057 from Koan-Bot/koan.atoomic/dashboard-github-…
atoomic Jun 24, 2026
b82c0ad
Merge pull request #2059 from atoomic/fix-implement
atoomic Jun 24, 2026
6577b5c
ci: use Father-Koan as review fallback bot
Father-Koan Jun 24, 2026
1397cea
Merge pull request #2060 from Father-Koan/koan/fallback-bot-father-koan
atoomic Jun 24, 2026
8bb53f0
Merge pull request #2058 from Koan-Bot/koan.atoomic/orphans-skill
atoomic Jun 24, 2026
b309789
ci: use GITHUB_TOKEN for request-review workflow
Koan-Bot Jun 24, 2026
aa4b103
Merge pull request #2066 from Koan-Bot/koan.atoomic/request-review-gi…
atoomic Jun 24, 2026
3eba58e
feat: enrich PR review prompt with tracker issue context
Koan-Bot Jun 24, 2026
4ffd7e7
implement: address private review findings
Koan-Bot Jun 24, 2026
46ea1a5
implement: address private review findings
Koan-Bot Jun 24, 2026
3177a4b
Merge pull request #2068 from Koan-Bot/koan.atoomic/implement-707-enrich
atoomic Jun 24, 2026
c01fe03
fix: isolate TUI refresh_dynamic render failures
Koan-Bot Jun 24, 2026
054a0ea
feat(memory): add MemoryAccessor class for unified skill memory API
Koan-Bot Jun 24, 2026
656cc95
feat(memory): wire MemoryAccessor into SkillContext with lazy property
Koan-Bot Jun 24, 2026
b855768
test(memory): end-to-end read_block validation over real memory files
Koan-Bot Jun 24, 2026
1f2edc9
implement: address private review findings
Koan-Bot Jun 24, 2026
abb34f5
docs(memory): clarify read_block is not a drop-in for build_memory_bl…
Koan-Bot Jun 24, 2026
3f68796
feat: inject receiving-code-review protocol into PR feedback workflows
Koan-Bot Jun 24, 2026
1c4154a
test: cover receiving-code-review include in rebase/recreate prompts
Koan-Bot Jun 24, 2026
0c8c55f
perf(quota): share one BurnRateSnapshot in /quota burn-rate line
Koan-Bot Jun 24, 2026
cf67991
docs(burn_rate): note free-function shims are single-use, reload per …
Koan-Bot Jun 24, 2026
f12baf5
feat(review): opt-in inline PR comments for findings
Koan-Bot Jun 24, 2026
5a7b62f
fix: surface TUI render failures via module logger and clarify logs-p…
Koan-Bot Jun 24, 2026
3b1d5e1
fix(review): surface inline-post failures, dedup re-runs, anchor mult…
Koan-Bot Jun 24, 2026
6a5bad0
fix: stop infinite mission re-pick loop on [complexity:X] tags (#2083)
sukria Jun 24, 2026
01e8274
fix(missions): stop zombie In Progress entries from start_mission TOC…
sukria Jun 24, 2026
a6d9bb4
refactor(logs): extract log tailing into app/log_reader.py for reuse
Koan-Bot Jun 24, 2026
14fbb27
refactor(usage): extract usage payload builder into app/usage_service.py
Koan-Bot Jun 24, 2026
972e269
feat(api): add /v1/usage, /v1/metrics, /v1/logs observability endpoints
Koan-Bot Jun 24, 2026
519eb5b
refactor(logs): surface log read errors, fix multi-source tail drop, …
Koan-Bot Jun 24, 2026
b1d8019
docs: list observability API modules in CLAUDE.md
Koan-Bot Jun 24, 2026
a30565d
refactor(api): return 422 on malformed observability params, guard me…
Koan-Bot Jun 24, 2026
59da636
feat: resolve projects.yaml from instance/ with priority (#2075)
sukria-koan0 Jun 24, 2026
9332914
feat(railway): click & play deploy via KOAN_DEPLOY=railway (#2091)
sukria-koan0 Jun 24, 2026
26acecc
Merge pull request #2073 from Koan-Bot/koan.atoomic/implement-2061
atoomic Jun 24, 2026
b55ae24
feat(github): multi-PR /review and fallback mention scan
atoomic Jun 24, 2026
d0d91a2
fix(usage): respect disabled budget mode in gating
atoomic Jun 24, 2026
86c5657
fix(rebase): keep review feedback moving past pre-commit hooks
atoomic Jun 24, 2026
8ed9c56
fix(config): honor legacy unlimited quota key
atoomic Jun 24, 2026
a2da896
Merge pull request #2069 from Koan-Bot/koan.atoomic/fix-issue-1855
atoomic Jun 24, 2026
72659cd
Merge pull request #2067 from Koan-Bot/koan.atoomic/implement-763
atoomic Jun 24, 2026
89c7bb9
fix(github): harden fallback mention scan failure paths
atoomic Jun 24, 2026
c25a557
fix(git): assume possible edits when worktree inspection fails
atoomic Jun 24, 2026
c55c3cb
Merge pull request #2095 from atoomic/gh-checks
atoomic Jun 24, 2026
63d51e7
fix: redirect /fix on a PR to /rebase, preserving context
Koan-Bot Jun 24, 2026
aa3114d
docs: document /fix-on-PR redirect and /rebase focus-area context
Koan-Bot Jun 24, 2026
6e45315
Merge pull request #2096 from Koan-Bot/koan.atoomic/fix-on-pr-redirec…
atoomic Jun 24, 2026
111acd2
feat(docker): recommend prebuilt GHCR image
atoomic Jun 24, 2026
bd3db67
docs(docker): drop nonexistent v-prefix from image tag examples
Koan-Bot Jun 24, 2026
5628248
Merge pull request #2065 from Koan-Bot/koan.atoomic/implement-1979
atoomic Jun 24, 2026
4985c8e
Merge pull request #2070 from Koan-Bot/koan.atoomic/implement-1660
atoomic Jun 24, 2026
af86c81
feat(provider): deprecate the local CLI provider with a runtime + doc…
Koan-Bot Jun 24, 2026
47f31ce
feat(provider)!: remove the deprecated local CLI provider (preserve o…
Koan-Bot Jun 24, 2026
136c77d
docs(provider): document make ollama dead path after local provider r…
Koan-Bot Jun 24, 2026
0ec201b
test(onboarding): mock provider readiness in step_final ollama-launch…
Koan-Bot Jun 24, 2026
f4dca12
Merge pull request #2071 from Koan-Bot/koan.atoomic/implement-1819
atoomic Jun 24, 2026
db4f90b
feat(messaging): add messaging.level (debug/normal) to quiet the bridge
Koan-Bot Jun 24, 2026
2de0336
implement: address private review findings
Koan-Bot Jun 24, 2026
7f31ed3
implement: address private review findings
Koan-Bot Jun 24, 2026
ba10df7
implement: address private review findings
Koan-Bot Jun 24, 2026
aab1cc2
implement: address private review findings
Koan-Bot Jun 24, 2026
76a0ac1
fix: resolve CI failures on #2080 (attempt 1)
Koan-Bot Jun 24, 2026
68a7a71
Merge pull request #2097 from atoomic/docker-readme
atoomic Jun 24, 2026
60af976
Merge pull request #2072 from Koan-Bot/koan.atoomic/implement-2043
atoomic Jun 24, 2026
d4b4bd3
Merge pull request #2080 from Koan-Bot/koan.atoomic/implement-2064
atoomic Jun 24, 2026
5c337cc
fix(messaging): auto-detect provider from credentials before warning
Koan-Bot Jun 24, 2026
dab1a99
fix(messaging): skip provider auto-detect when telegram configured; l…
Koan-Bot Jun 25, 2026
ecd7ce9
fix(messaging): telegram-present guard checks only env vars, matching…
Koan-Bot Jun 25, 2026
c087cf1
Merge pull request #2098 from Koan-Bot/koan.atoomic/messaging-provide…
atoomic Jun 25, 2026
d5fcf82
feat(bridge): split worker into independent chat and bg lanes
Koan-Bot Jun 25, 2026
e6b6ec3
implement: address private review findings
Koan-Bot Jun 25, 2026
9b273a8
docs(bridge): correct bg-lane workload and clarify busy message wordi…
Koan-Bot Jun 25, 2026
09ef0b4
fix(git-prep): keep launching repo on its custom branch
Koan-Bot Jun 25, 2026
babd909
fix(git-prep): rename _is_same_dir, log realpath errors, document bas…
Koan-Bot Jun 25, 2026
d1ad97f
docs(bridge): scrub last GitHub-notification reference from bg-lane c…
Koan-Bot Jun 25, 2026
2aad9db
Merge pull request #2101 from Koan-Bot/koan.atoomic/implement-2099
atoomic Jun 25, 2026
148a8ff
Merge pull request #2100 from Koan-Bot/koan.atoomic/keep-launching-re…
atoomic Jun 25, 2026
54f951e
test(github_intent): add behavioral edge cases for classification nor…
Koan-Bot Jun 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
118 changes: 118 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
name: 🚀 Release

on:
workflow_dispatch:
inputs:
version:
description: "Release version (e.g. v0.5, v1.0.0)"
required: true
type: string
update_stable:
description: "Update the 'stable' tag to point to this release"
required: false
type: boolean
default: true

permissions:
contents: write
packages: write

jobs:
release:
runs-on: ubuntu-latest
timeout-minutes: 30
name: release

steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
fetch-tags: true

- name: 🔍 Validate version format
run: |
if ! echo "${{ inputs.version }}" | grep -qE '^v[0-9]+(\.[0-9]+){1,2}$'; then
echo "::error::Version must match vMAJOR.MINOR or vMAJOR.MINOR.PATCH (e.g. v0.5, v1.0.0)"
exit 1
fi

- name: 🔍 Check tag does not already exist
run: |
if git rev-parse "${{ inputs.version }}" >/dev/null 2>&1; then
echo "::error::Tag ${{ inputs.version }} already exists"
exit 1
fi

- name: 📝 Check for commits since last tag
id: changelog
run: |
LAST_TAG=$(git tag --sort=-v:refname --list 'v*' | head -1)
if [ -n "$LAST_TAG" ]; then
RANGE="${LAST_TAG}..HEAD"
COMMIT_COUNT=$(git rev-list --count "$RANGE")
if [ "$COMMIT_COUNT" -eq 0 ]; then
echo "::error::No commits since $LAST_TAG — nothing to release"
exit 1
fi
NOTES=$(git log "$RANGE" --pretty=format:"- %s (%h)")
else
NOTES=$(git log --pretty=format:"- %s (%h)")
fi

# Write notes to file (multi-line safe)
echo "$NOTES" > /tmp/release-notes.md
echo "last_tag=${LAST_TAG:-none}" >> "$GITHUB_OUTPUT"

- name: 🏷️ Create and push tag
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git tag -a "${{ inputs.version }}" -m "Release ${{ inputs.version }}"
git push origin "${{ inputs.version }}"

- name: 🏷️ Update stable tag
if: inputs.update_stable
run: |
echo "Updating stable tag → ${{ inputs.version }}"
git tag -f stable "${{ inputs.version }}"
git push origin stable --force

- name: 🚀 Create GitHub release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release create "${{ inputs.version }}" \
--title "Kōan ${{ inputs.version }}" \
--notes-file /tmp/release-notes.md \
--latest

- name: 🐳 Set up Docker Buildx
uses: docker/setup-buildx-action@v4

- name: 🔑 Log in to GHCR
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: 🏷️ Extract Docker metadata
id: meta
uses: docker/metadata-action@v6
with:
images: ghcr.io/${{ github.repository }}
tags: |
type=semver,pattern={{version}},value=${{ inputs.version }}
type=semver,pattern={{major}}.{{minor}},value=${{ inputs.version }}
type=raw,value=latest
type=raw,value=stable,enable=${{ inputs.update_stable }}

- name: 🐳 Build and push Docker image
uses: docker/build-push-action@v7
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
43 changes: 43 additions & 0 deletions .github/workflows/request-review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: 🔍 Request Review
on:
pull_request_target:
types: [opened]

permissions:
pull-requests: write

jobs:
assign:
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v9
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const bot = 'Koan-Bot';
const fallbackBot = 'Father-Koan';
const author = context.payload.pull_request.user.login;
let commented = false;

if (author !== bot) {
try {
await github.rest.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
reviewers: [bot]
});
commented = true;
} catch (e) {}
}

if (!commented) {
try {
await github.rest.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
reviewers: [fallbackBot]
});
} catch (e) {}
}
100 changes: 90 additions & 10 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Tests
name: 🧪 Tests

on:
push:
Expand All @@ -23,6 +23,7 @@ jobs:
strategy:
fail-fast: true
matrix:
python-version: ${{ github.event_name == 'pull_request' && fromJSON('["3.14"]') || fromJSON('["3.11", "3.14"]') }}
group:
- name: fast
marker: "not slow"
Expand All @@ -36,25 +37,25 @@ jobs:
marker: "slow"
split_group: 3

name: test (${{ matrix.group.name }})
name: test (py${{ matrix.python-version }}, ${{ matrix.group.name }})

steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7

- name: Set up Python 3.14
- name: ⚙️ Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: "3.14"
python-version: "${{ matrix.python-version }}"
allow-prereleases: true
cache: 'pip'
cache-dependency-path: koan/requirements.txt

- name: Install dependencies
- name: 📦 Install dependencies
run: |
pip install -r koan/requirements.txt
pip install pytest pytest-split
pip install pytest pytest-split pytest-cov pytest-xdist

- name: Run tests (${{ matrix.group.name }})
- name: ▶️ Run tests (${{ matrix.group.name }})
if: ${{ !inputs.group || matrix.group.name == inputs.group }}
working-directory: koan
env:
Expand All @@ -64,7 +65,86 @@ jobs:
KOAN_TELEGRAM_CHAT_ID: "123456789"
run: |
if [ -n "${{ matrix.group.split_group }}" ]; then
pytest tests/ -m "${{ matrix.group.marker }}" --splits 3 --group ${{ matrix.group.split_group }} -v
pytest tests/ -m "${{ matrix.group.marker }}" --splits 3 --group ${{ matrix.group.split_group }} -v \
-n auto --dist loadfile \
--cov=app --cov-report=term-missing
else
pytest tests/ -m "${{ matrix.group.marker }}" -v
pytest tests/ -m "${{ matrix.group.marker }}" -v \
-n auto --dist loadfile \
--cov=app --cov-report=term-missing
fi

- name: ⬆️ Upload coverage data
if: ${{ !inputs.group || matrix.group.name == inputs.group }}
uses: actions/upload-artifact@v7
with:
name: coverage-py${{ matrix.python-version }}-${{ matrix.group.name }}
path: koan/.coverage
include-hidden-files: true

check-coverage:
needs: test
runs-on: ubuntu-latest
timeout-minutes: 5
name: check-coverage

steps:
- uses: actions/checkout@v7

- name: ⚙️ Set up Python 3.14
uses: actions/setup-python@v6
with:
python-version: "3.14"
allow-prereleases: true

- name: 📦 Install coverage
run: pip install coverage

- name: ⬇️ Download all coverage artifacts
uses: actions/download-artifact@v8
with:
pattern: coverage-py*
path: coverage-parts

- name: 🔍 Combine coverage and check baselines
working-directory: koan
env:
KOAN_ROOT: ${{ github.workspace }}/koan
run: |
# Collect all .coverage files and rename for combine
i=0
for f in ../coverage-parts/coverage-*/.coverage; do
cp "$f" ".coverage.$i"
i=$((i + 1))
done

coverage combine
TOTAL_COV=$(coverage report --format=total 2>/dev/null || coverage report | grep '^TOTAL' | awk '{print $NF}' | tr -d '%')
echo "Total coverage: ${TOTAL_COV}%"

# Read baselines
BASELINE_COV=$(cat ../coverage-baseline.txt | tr -d '[:space:]')
echo "Baseline coverage: ${BASELINE_COV}%"

# Allow 0.5% tolerance on coverage
python3 -c "
import sys
actual = float('${TOTAL_COV}')
baseline = float('${BASELINE_COV}')
tolerance = 0.5
if actual < baseline - tolerance:
print(f'FAIL: Coverage {actual}% is below baseline {baseline}% (tolerance {tolerance}%)')
sys.exit(1)
print(f'OK: Coverage {actual}% meets baseline {baseline}% (tolerance {tolerance}%)')
"

- name: ✅ Check test count baseline
run: |
BASELINE_COUNT=$(cat test-count-baseline.txt | tr -d '[:space:]')
echo "Test count baseline: ${BASELINE_COUNT}"

# Sum test counts from all matrix job logs
# The test count check is best-effort from the coverage report;
# the authoritative count comes from running all tests.
# For now, this is informational — the hard enforcement is on coverage.
echo "INFO: Test count baseline is ${BASELINE_COUNT}. Monitor via PR review."
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ __pycache__/
.venv/
venv/
.coverage
.coverage.*
htmlcov/
koan/htmlcov/

# Runtime
.koan-status
Expand Down Expand Up @@ -46,9 +49,15 @@ projects.docker.yaml

# Process log files (root only, not koan/skills/core/logs/)
/logs/

# Runtime state files
.branch-cleanup-tracker.json
.aider*

# Docker (generated by setup-docker.sh)
docker-compose.override.yml
.env.docker
claude-auth/
.spec/

devcontainer-tmp/
Loading