katvan 0.2.3__tar.gz → 0.2.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. {katvan-0.2.3 → katvan-0.2.4}/.github/workflows/docs-check.yml +2 -8
  2. {katvan-0.2.3 → katvan-0.2.4}/CHANGELOG.md +14 -0
  3. {katvan-0.2.3 → katvan-0.2.4}/PKG-INFO +1 -1
  4. {katvan-0.2.3 → katvan-0.2.4}/pyproject.toml +1 -1
  5. {katvan-0.2.3 → katvan-0.2.4}/site/docs/architecture/shared-vs-cited.md +2 -2
  6. {katvan-0.2.3 → katvan-0.2.4}/site/docs/attention.md +4 -4
  7. {katvan-0.2.3 → katvan-0.2.4}/site/docs/coverage-baseline.md +2 -2
  8. {katvan-0.2.3 → katvan-0.2.4}/uv.lock +1 -1
  9. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/cicd/SKILL.md +0 -0
  10. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/cicd/scripts/_resolve-nick.sh +0 -0
  11. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/cicd/scripts/portability-lint.sh +0 -0
  12. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/cicd/scripts/pr-reply.sh +0 -0
  13. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/cicd/scripts/pr-status.sh +0 -0
  14. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/cicd/scripts/workflow.sh +0 -0
  15. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/communicate/SKILL.md +0 -0
  16. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/communicate/scripts/fetch-issues.sh +0 -0
  17. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/communicate/scripts/mesh-message.sh +0 -0
  18. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/communicate/scripts/post-comment.sh +0 -0
  19. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/communicate/scripts/post-issue.sh +0 -0
  20. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/communicate/scripts/templates/skill-update-brief.md +0 -0
  21. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/librarian/SKILL.md +0 -0
  22. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/librarian/scripts/_frontmatter.py +0 -0
  23. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/librarian/scripts/_repos.sh +0 -0
  24. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/librarian/scripts/doctor.sh +0 -0
  25. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/librarian/scripts/overview.sh +0 -0
  26. {katvan-0.2.3 → katvan-0.2.4}/.claude/skills/librarian/scripts/pull.sh +0 -0
  27. {katvan-0.2.3 → katvan-0.2.4}/.flake8 +0 -0
  28. {katvan-0.2.3 → katvan-0.2.4}/.github/workflows/publish.yml +0 -0
  29. {katvan-0.2.3 → katvan-0.2.4}/.github/workflows/reference-sync.yml +0 -0
  30. {katvan-0.2.3 → katvan-0.2.4}/.github/workflows/tests.yml +0 -0
  31. {katvan-0.2.3 → katvan-0.2.4}/.gitignore +0 -0
  32. {katvan-0.2.3 → katvan-0.2.4}/LICENSE +0 -0
  33. {katvan-0.2.3 → katvan-0.2.4}/README.md +0 -0
  34. {katvan-0.2.3 → katvan-0.2.4}/culture.yaml +0 -0
  35. {katvan-0.2.3 → katvan-0.2.4}/docs/skill-sources.md +0 -0
  36. {katvan-0.2.3 → katvan-0.2.4}/docs/superpowers/audits/2026-05-17-existing-site-docs-audit.md +0 -0
  37. {katvan-0.2.3 → katvan-0.2.4}/docs/superpowers/audits/2026-05-18-sitemap-robots-verification.md +0 -0
  38. {katvan-0.2.3 → katvan-0.2.4}/docs/superpowers/plans/2026-05-14-culture-site-migration.md +0 -0
  39. {katvan-0.2.3 → katvan-0.2.4}/docs/superpowers/plans/2026-05-17-culture-dev-marketing-rebuild.md +0 -0
  40. {katvan-0.2.3 → katvan-0.2.4}/docs/superpowers/specs/2026-05-14-culture-site-migration-design.md +0 -0
  41. {katvan-0.2.3 → katvan-0.2.4}/docs/superpowers/specs/2026-05-17-culture-dev-marketing-rebuild-design.md +0 -0
  42. {katvan-0.2.3 → katvan-0.2.4}/katvan/__init__.py +0 -0
  43. {katvan-0.2.3 → katvan-0.2.4}/katvan/__main__.py +0 -0
  44. {katvan-0.2.3 → katvan-0.2.4}/katvan/cli/__init__.py +0 -0
  45. {katvan-0.2.3 → katvan-0.2.4}/katvan/cli/_commands/__init__.py +0 -0
  46. {katvan-0.2.3 → katvan-0.2.4}/katvan/cli/_commands/doctor.py +0 -0
  47. {katvan-0.2.3 → katvan-0.2.4}/katvan/cli/_commands/explain.py +0 -0
  48. {katvan-0.2.3 → katvan-0.2.4}/katvan/cli/_commands/learn.py +0 -0
  49. {katvan-0.2.3 → katvan-0.2.4}/katvan/cli/_commands/overview.py +0 -0
  50. {katvan-0.2.3 → katvan-0.2.4}/katvan/cli/_commands/pull.py +0 -0
  51. {katvan-0.2.3 → katvan-0.2.4}/katvan/cli/_errors.py +0 -0
  52. {katvan-0.2.3 → katvan-0.2.4}/katvan/cli/_output.py +0 -0
  53. {katvan-0.2.3 → katvan-0.2.4}/katvan/explain/__init__.py +0 -0
  54. {katvan-0.2.3 → katvan-0.2.4}/katvan/explain/catalog.py +0 -0
  55. {katvan-0.2.3 → katvan-0.2.4}/katvan/frontmatter.py +0 -0
  56. {katvan-0.2.3 → katvan-0.2.4}/katvan/repos.py +0 -0
  57. {katvan-0.2.3 → katvan-0.2.4}/site/Gemfile +0 -0
  58. {katvan-0.2.3 → katvan-0.2.4}/site/Gemfile.lock +0 -0
  59. {katvan-0.2.3 → katvan-0.2.4}/site/_config.base.yml +0 -0
  60. {katvan-0.2.3 → katvan-0.2.4}/site/_config.culture.yml +0 -0
  61. {katvan-0.2.3 → katvan-0.2.4}/site/_data/agentculture_repos.yml +0 -0
  62. {katvan-0.2.3 → katvan-0.2.4}/site/_data/culture_subcommands.yml +0 -0
  63. {katvan-0.2.3 → katvan-0.2.4}/site/_data/landing.yml +0 -0
  64. {katvan-0.2.3 → katvan-0.2.4}/site/_data/sites.yml +0 -0
  65. {katvan-0.2.3 → katvan-0.2.4}/site/_data/style.yml +0 -0
  66. {katvan-0.2.3 → katvan-0.2.4}/site/_includes/analytics.html +0 -0
  67. {katvan-0.2.3 → katvan-0.2.4}/site/_includes/head_custom.html +0 -0
  68. {katvan-0.2.3 → katvan-0.2.4}/site/_includes/repo_table.html +0 -0
  69. {katvan-0.2.3 → katvan-0.2.4}/site/_includes/subcommand_table.html +0 -0
  70. {katvan-0.2.3 → katvan-0.2.4}/site/_layouts/home.html +0 -0
  71. {katvan-0.2.3 → katvan-0.2.4}/site/_sass/color_schemes/anthropic.scss +0 -0
  72. {katvan-0.2.3 → katvan-0.2.4}/site/_sass/color_schemes/dark-terminal.scss +0 -0
  73. {katvan-0.2.3 → katvan-0.2.4}/site/_sass/custom/custom.scss +0 -0
  74. {katvan-0.2.3 → katvan-0.2.4}/site/assets/images/IMG_3183.png +0 -0
  75. {katvan-0.2.3 → katvan-0.2.4}/site/assets/images/apple-touch-icon.png +0 -0
  76. {katvan-0.2.3 → katvan-0.2.4}/site/assets/images/favicon-16x16.png +0 -0
  77. {katvan-0.2.3 → katvan-0.2.4}/site/assets/images/favicon-32x32.png +0 -0
  78. {katvan-0.2.3 → katvan-0.2.4}/site/assets/images/favicon.ico +0 -0
  79. {katvan-0.2.3 → katvan-0.2.4}/site/assets/images/og-agentirc.png +0 -0
  80. {katvan-0.2.3 → katvan-0.2.4}/site/assets/images/og-culture.png +0 -0
  81. {katvan-0.2.3 → katvan-0.2.4}/site/docs/afi-cli/index.md +0 -0
  82. {katvan-0.2.3 → katvan-0.2.4}/site/docs/afi-cli/reference/index.md +0 -0
  83. {katvan-0.2.3 → katvan-0.2.4}/site/docs/afi-cli/reference/learn.md +0 -0
  84. {katvan-0.2.3 → katvan-0.2.4}/site/docs/agentirc/index.md +0 -0
  85. {katvan-0.2.3 → katvan-0.2.4}/site/docs/agex-cli/index.md +0 -0
  86. {katvan-0.2.3 → katvan-0.2.4}/site/docs/agtag/index.md +0 -0
  87. {katvan-0.2.3 → katvan-0.2.4}/site/docs/agtag/reference/index.md +0 -0
  88. {katvan-0.2.3 → katvan-0.2.4}/site/docs/agtag/reference/learn.md +0 -0
  89. {katvan-0.2.3 → katvan-0.2.4}/site/docs/antoine/index.md +0 -0
  90. {katvan-0.2.3 → katvan-0.2.4}/site/docs/appsec/index.md +0 -0
  91. {katvan-0.2.3 → katvan-0.2.4}/site/docs/architecture/agent-harness-spec.md +0 -0
  92. {katvan-0.2.3 → katvan-0.2.4}/site/docs/architecture/index.md +0 -0
  93. {katvan-0.2.3 → katvan-0.2.4}/site/docs/architecture/layers.md +0 -0
  94. {katvan-0.2.3 → katvan-0.2.4}/site/docs/architecture/subsites.md +0 -0
  95. {katvan-0.2.3 → katvan-0.2.4}/site/docs/architecture/threads.md +0 -0
  96. {katvan-0.2.3 → katvan-0.2.4}/site/docs/auntiepypi/index.md +0 -0
  97. {katvan-0.2.3 → katvan-0.2.4}/site/docs/auntiepypi/reference/index.md +0 -0
  98. {katvan-0.2.3 → katvan-0.2.4}/site/docs/auntiepypi/reference/learn.md +0 -0
  99. {katvan-0.2.3 → katvan-0.2.4}/site/docs/categories/core-runtime.md +0 -0
  100. {katvan-0.2.3 → katvan-0.2.4}/site/docs/categories/identity-secrets.md +0 -0
  101. {katvan-0.2.3 → katvan-0.2.4}/site/docs/categories/org-site.md +0 -0
  102. {katvan-0.2.3 → katvan-0.2.4}/site/docs/categories/resident-culture.md +0 -0
  103. {katvan-0.2.3 → katvan-0.2.4}/site/docs/categories/resident-domain.md +0 -0
  104. {katvan-0.2.3 → katvan-0.2.4}/site/docs/categories/workspace-experience.md +0 -0
  105. {katvan-0.2.3 → katvan-0.2.4}/site/docs/code-lens-cli/index.md +0 -0
  106. {katvan-0.2.3 → katvan-0.2.4}/site/docs/code-lens-cli/reference/index.md +0 -0
  107. {katvan-0.2.3 → katvan-0.2.4}/site/docs/code-lens-cli/reference/learn.md +0 -0
  108. {katvan-0.2.3 → katvan-0.2.4}/site/docs/culture/index.md +0 -0
  109. {katvan-0.2.3 → katvan-0.2.4}/site/docs/cultureagent/index.md +0 -0
  110. {katvan-0.2.3 → katvan-0.2.4}/site/docs/cultureagent/reference/index.md +0 -0
  111. {katvan-0.2.3 → katvan-0.2.4}/site/docs/cultureagent/reference/learn.md +0 -0
  112. {katvan-0.2.3 → katvan-0.2.4}/site/docs/cultureflare/index.md +0 -0
  113. {katvan-0.2.3 → katvan-0.2.4}/site/docs/ecosystem.md +0 -0
  114. {katvan-0.2.3 → katvan-0.2.4}/site/docs/ghafi/index.md +0 -0
  115. {katvan-0.2.3 → katvan-0.2.4}/site/docs/ghafi/reference/index.md +0 -0
  116. {katvan-0.2.3 → katvan-0.2.4}/site/docs/ghafi/reference/learn.md +0 -0
  117. {katvan-0.2.3 → katvan-0.2.4}/site/docs/irc-lens/index.md +0 -0
  118. {katvan-0.2.3 → katvan-0.2.4}/site/docs/irc-lens/reference/index.md +0 -0
  119. {katvan-0.2.3 → katvan-0.2.4}/site/docs/irc-lens/reference/learn.md +0 -0
  120. {katvan-0.2.3 → katvan-0.2.4}/site/docs/katvan/index.md +0 -0
  121. {katvan-0.2.3 → katvan-0.2.4}/site/docs/katvan/reference/index.md +0 -0
  122. {katvan-0.2.3 → katvan-0.2.4}/site/docs/katvan/reference/learn.md +0 -0
  123. {katvan-0.2.3 → katvan-0.2.4}/site/docs/landing-page/index.md +0 -0
  124. {katvan-0.2.3 → katvan-0.2.4}/site/docs/office-agent/index.md +0 -0
  125. {katvan-0.2.3 → katvan-0.2.4}/site/docs/quickstart.md +0 -0
  126. {katvan-0.2.3 → katvan-0.2.4}/site/docs/shushu/index.md +0 -0
  127. {katvan-0.2.3 → katvan-0.2.4}/site/docs/steward/index.md +0 -0
  128. {katvan-0.2.3 → katvan-0.2.4}/site/docs/telek/index.md +0 -0
  129. {katvan-0.2.3 → katvan-0.2.4}/site/docs/tipalti/index.md +0 -0
  130. {katvan-0.2.3 → katvan-0.2.4}/site/docs/why.md +0 -0
  131. {katvan-0.2.3 → katvan-0.2.4}/site/docs/zehut/index.md +0 -0
  132. {katvan-0.2.3 → katvan-0.2.4}/site/favicon.ico +0 -0
  133. {katvan-0.2.3 → katvan-0.2.4}/site/index.md +0 -0
  134. {katvan-0.2.3 → katvan-0.2.4}/site/robots.txt +0 -0
  135. {katvan-0.2.3 → katvan-0.2.4}/site/sitemap-agentirc.html +0 -0
  136. {katvan-0.2.3 → katvan-0.2.4}/site/sitemap-main.html +0 -0
  137. {katvan-0.2.3 → katvan-0.2.4}/site/sitemap.html +0 -0
  138. {katvan-0.2.3 → katvan-0.2.4}/sonar-project.properties +0 -0
  139. {katvan-0.2.3 → katvan-0.2.4}/tests/__init__.py +0 -0
  140. {katvan-0.2.3 → katvan-0.2.4}/tests/cli/__init__.py +0 -0
  141. {katvan-0.2.3 → katvan-0.2.4}/tests/cli/test_doctor.py +0 -0
  142. {katvan-0.2.3 → katvan-0.2.4}/tests/cli/test_overview.py +0 -0
  143. {katvan-0.2.3 → katvan-0.2.4}/tests/cli/test_pull.py +0 -0
  144. {katvan-0.2.3 → katvan-0.2.4}/tests/fixtures/__init__.py +0 -0
  145. {katvan-0.2.3 → katvan-0.2.4}/tests/fixtures/fake_afi_bin.py +0 -0
  146. {katvan-0.2.3 → katvan-0.2.4}/tests/test_cli.py +0 -0
  147. {katvan-0.2.3 → katvan-0.2.4}/tests/unit/__init__.py +0 -0
  148. {katvan-0.2.3 → katvan-0.2.4}/tests/unit/test_doctor.py +0 -0
  149. {katvan-0.2.3 → katvan-0.2.4}/tests/unit/test_explain.py +0 -0
  150. {katvan-0.2.3 → katvan-0.2.4}/tests/unit/test_frontmatter.py +0 -0
  151. {katvan-0.2.3 → katvan-0.2.4}/tests/unit/test_learn.py +0 -0
  152. {katvan-0.2.3 → katvan-0.2.4}/tests/unit/test_output.py +0 -0
  153. {katvan-0.2.3 → katvan-0.2.4}/tests/unit/test_overview.py +0 -0
  154. {katvan-0.2.3 → katvan-0.2.4}/tests/unit/test_pull.py +0 -0
  155. {katvan-0.2.3 → katvan-0.2.4}/tests/unit/test_repos.py +0 -0
@@ -46,15 +46,9 @@ jobs:
46
46
  # need it.
47
47
  run: gem install --no-document html-proofer -v "~> 5.0"
48
48
 
49
- - name: Check internal links (advisory)
50
- # Warn-only for now: 3 vendored pages (attention, coverage-baseline,
51
- # architecture/shared-vs-cited) carry repo-relative paths from their
52
- # source repos; rewriting those belongs in the librarian import, not
53
- # here. Flip continue-on-error off once that lands.
49
+ - name: Check internal links
54
50
  working-directory: site
55
- continue-on-error: true
56
51
  run: |
57
52
  htmlproofer _site_culture \
58
53
  --disable-external \
59
- --allow-hash-href \
60
- --ignore-files "/attention/index.html$/,/coverage-baseline/index.html$/,/architecture/shared-vs-cited/index.html$/"
54
+ --allow-hash-href
@@ -9,6 +9,20 @@ artifacts.
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [0.2.4] — 2026-05-18
13
+
14
+ ### Fixed
15
+
16
+ - Site: rewrote the 7 broken internal links in the three vendored
17
+ pages (`attention`, `coverage-baseline`, `architecture/shared-vs-cited`)
18
+ whose repo-relative paths (`../pyproject.toml`,
19
+ `superpowers/specs/…`, `../../CLAUDE.md#citation-pattern`) carried
20
+ over from the original culture-repo import. Each now resolves to an
21
+ absolute GitHub URL on `agentculture/culture`.
22
+ - CI: dropped the file-scoped `--ignore-files` workaround and the
23
+ `continue-on-error: true` flag from the html-proofer step in
24
+ `docs-check.yml`. The link check is now a hard gate.
25
+
12
26
  ## [0.2.3] — 2026-05-18
13
27
 
14
28
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: katvan
3
- Version: 0.2.3
3
+ Version: 0.2.4
4
4
  Summary: Maintain sibling-repo docs under one roof on the culture.dev site.
5
5
  Project-URL: Homepage, https://github.com/agentculture/katvan
6
6
  Project-URL: Issues, https://github.com/agentculture/katvan/issues
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "katvan"
3
- version = "0.2.3"
3
+ version = "0.2.4"
4
4
  description = "Maintain sibling-repo docs under one roof on the culture.dev site."
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -12,7 +12,7 @@ permalink: /architecture/shared-vs-cited/
12
12
  **Status (culture 11.0.0, 2026-05-11):** This rule is now historical for
13
13
  culture's own tree. The agent harness moved to the sibling
14
14
  [`cultureagent`](https://github.com/agentculture/cultureagent) package in
15
- Phase 1 of the [extraction](../superpowers/specs/2026-05-09-cultureagent-extraction-design.md);
15
+ Phase 1 of the [extraction](https://github.com/agentculture/culture/blob/4595fc7/docs/superpowers/specs/2026-05-09-cultureagent-extraction-design.md);
16
16
  culture's `culture/clients/<backend>/{config,constants}.py` and
17
17
  `culture/clients/shared/*.py` are re-export shims forwarding to
18
18
  `cultureagent.clients.<backend>.*` / `cultureagent.clients.shared.*`,
@@ -32,7 +32,7 @@ qualify; orchestration that reads SDK-specific shapes does not.
32
32
 
33
33
  Cited modules live in `packages/agent-harness/` and are copied byte-for-byte
34
34
  into each backend at `culture/clients/<backend>/`. The
35
- [all-backends rule](../../CLAUDE.md#citation-pattern) — "a feature in only
35
+ [all-backends rule](https://github.com/agentculture/culture/blob/main/CLAUDE.md#citation-pattern) — "a feature in only
36
36
  one backend is a bug" — applies to the cited tier.
37
37
 
38
38
  Shared modules live in `culture/clients/shared/` and are imported directly
@@ -14,7 +14,7 @@ bands — `HOT`, `WARM`, `COOL`, `IDLE` — each with its own polling interval a
14
14
  decay-hold duration.
15
15
 
16
16
  Implemented in [#345](https://github.com/agentculture/culture/issues/345).
17
- Spec: [`docs/superpowers/specs/2026-05-08-dynamic-attention-levels-design.md`](superpowers/specs/2026-05-08-dynamic-attention-levels-design.md).
17
+ Spec: [`docs/superpowers/specs/2026-05-08-dynamic-attention-levels-design.md`](https://github.com/agentculture/culture/blob/4595fc7/docs/superpowers/specs/2026-05-08-dynamic-attention-levels-design.md).
18
18
 
19
19
  ## Defaults
20
20
 
@@ -140,6 +140,6 @@ an enum value via a tool call.
140
140
 
141
141
  ## Reference
142
142
 
143
- - Spec: [`docs/superpowers/specs/2026-05-08-dynamic-attention-levels-design.md`](superpowers/specs/2026-05-08-dynamic-attention-levels-design.md)
144
- - Plan: [`docs/superpowers/plans/2026-05-08-dynamic-attention-levels.md`](superpowers/plans/2026-05-08-dynamic-attention-levels.md)
145
- - Implementation: `culture/clients/shared/attention.py` (imported by every backend; see [shared-vs-cited](architecture/shared-vs-cited.md))
143
+ - Spec: [`docs/superpowers/specs/2026-05-08-dynamic-attention-levels-design.md`](https://github.com/agentculture/culture/blob/4595fc7/docs/superpowers/specs/2026-05-08-dynamic-attention-levels-design.md)
144
+ - Plan: [`docs/superpowers/plans/2026-05-08-dynamic-attention-levels.md`](https://github.com/agentculture/culture/blob/4595fc7/docs/superpowers/plans/2026-05-08-dynamic-attention-levels.md)
145
+ - Implementation: `culture/clients/shared/attention.py` (imported by every backend; see [shared-vs-cited](/architecture/shared-vs-cited/))
@@ -20,8 +20,8 @@ The baseline was measured by `uv run pytest -n auto --cov=culture --cov-report=x
20
20
 
21
21
  ## Locks
22
22
 
23
- - **pytest CI gate:** [`[tool.coverage.report] fail_under = 56`](../pyproject.toml) in `pyproject.toml`. Drops below 56% fail the PR locally / in CI before SonarCloud reports back.
24
- - **SonarCloud Quality Gate:** `sonar.qualitygate.wait=true` in [`sonar-project.properties`](../sonar-project.properties) blocks CI on the gate decision. Gate threshold managed in SonarCloud's project settings (out-of-tree).
23
+ - **pytest CI gate:** [`[tool.coverage.report] fail_under = 56`](https://github.com/agentculture/culture/blob/4595fc7/pyproject.toml) in `pyproject.toml`. Drops below 56% fail the PR locally / in CI before SonarCloud reports back.
24
+ - **SonarCloud Quality Gate:** `sonar.qualitygate.wait=true` in [`sonar-project.properties`](https://github.com/agentculture/culture/blob/4595fc7/sonar-project.properties) blocks CI on the gate decision. Gate threshold managed in SonarCloud's project settings (out-of-tree).
25
25
  - **CI scanner:** `.github/workflows/tests.yml` runs `SonarSource/sonarqube-scan-action` after pytest, uploading `coverage.xml` to the SonarCloud project (`agentculture_culture`). Fork PRs without `SONAR_TOKEN` skip the scan cleanly.
26
26
 
27
27
  ## Per-domain growth path (Phase 0a)
@@ -286,7 +286,7 @@ wheels = [
286
286
 
287
287
  [[package]]
288
288
  name = "katvan"
289
- version = "0.2.3"
289
+ version = "0.2.4"
290
290
  source = { editable = "." }
291
291
 
292
292
  [package.dev-dependencies]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes