groundtruth-kb 0.3.1__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 (156) hide show
  1. groundtruth_kb-0.3.1/.editorconfig +27 -0
  2. groundtruth_kb-0.3.1/.github/ISSUE_TEMPLATE/bug_report.yml +69 -0
  3. groundtruth_kb-0.3.1/.github/ISSUE_TEMPLATE/feature_request.yml +50 -0
  4. groundtruth_kb-0.3.1/.github/copilot-instructions.md +73 -0
  5. groundtruth_kb-0.3.1/.github/dependabot.yml +27 -0
  6. groundtruth_kb-0.3.1/.github/pull_request_template.md +23 -0
  7. groundtruth_kb-0.3.1/.github/workflows/ci.yml +67 -0
  8. groundtruth_kb-0.3.1/.github/workflows/codeql.yml +38 -0
  9. groundtruth_kb-0.3.1/.github/workflows/docs-check.yml +53 -0
  10. groundtruth_kb-0.3.1/.github/workflows/docs.yml +53 -0
  11. groundtruth_kb-0.3.1/.github/workflows/docstring-coverage.yml +29 -0
  12. groundtruth_kb-0.3.1/.github/workflows/publish.yml +88 -0
  13. groundtruth_kb-0.3.1/.github/workflows/security.yml +76 -0
  14. groundtruth_kb-0.3.1/.github/workflows/sonarcloud.yml +42 -0
  15. groundtruth_kb-0.3.1/.gitignore +12 -0
  16. groundtruth_kb-0.3.1/.pre-commit-config.yaml +23 -0
  17. groundtruth_kb-0.3.1/CHANGELOG.md +107 -0
  18. groundtruth_kb-0.3.1/CODE_OF_CONDUCT.md +55 -0
  19. groundtruth_kb-0.3.1/CONTRIBUTING.md +87 -0
  20. groundtruth_kb-0.3.1/LICENSE +661 -0
  21. groundtruth_kb-0.3.1/Makefile +38 -0
  22. groundtruth_kb-0.3.1/PKG-INFO +184 -0
  23. groundtruth_kb-0.3.1/README.md +145 -0
  24. groundtruth_kb-0.3.1/SECURITY.md +54 -0
  25. groundtruth_kb-0.3.1/docs/architecture/product-split.md +114 -0
  26. groundtruth_kb-0.3.1/docs/bootstrap.md +226 -0
  27. groundtruth_kb-0.3.1/docs/changelog.md +107 -0
  28. groundtruth_kb-0.3.1/docs/contributing.md +56 -0
  29. groundtruth_kb-0.3.1/docs/desktop-setup.md +161 -0
  30. groundtruth_kb-0.3.1/docs/examples/task-tracker.md +218 -0
  31. groundtruth_kb-0.3.1/docs/index.md +47 -0
  32. groundtruth_kb-0.3.1/docs/method/00-vision.md +32 -0
  33. groundtruth_kb-0.3.1/docs/method/01-overview.md +144 -0
  34. groundtruth_kb-0.3.1/docs/method/02-specifications.md +138 -0
  35. groundtruth_kb-0.3.1/docs/method/03-testing.md +84 -0
  36. groundtruth_kb-0.3.1/docs/method/04-work-items.md +94 -0
  37. groundtruth_kb-0.3.1/docs/method/05-governance.md +134 -0
  38. groundtruth_kb-0.3.1/docs/method/06-dual-agent.md +157 -0
  39. groundtruth_kb-0.3.1/docs/method/07-sessions.md +89 -0
  40. groundtruth_kb-0.3.1/docs/method/08-architecture.md +100 -0
  41. groundtruth_kb-0.3.1/docs/method/09-adoption.md +165 -0
  42. groundtruth_kb-0.3.1/docs/method/10-tooling.md +237 -0
  43. groundtruth_kb-0.3.1/docs/method/11-operational-configuration.md +134 -0
  44. groundtruth_kb-0.3.1/docs/method/12-file-bridge-automation.md +271 -0
  45. groundtruth_kb-0.3.1/docs/method/13-deliberation-archive.md +231 -0
  46. groundtruth_kb-0.3.1/docs/method/README.md +39 -0
  47. groundtruth_kb-0.3.1/docs/reference/assertion-language.md +200 -0
  48. groundtruth_kb-0.3.1/docs/reference/cli.md +495 -0
  49. groundtruth_kb-0.3.1/docs/reference/configuration.md +182 -0
  50. groundtruth_kb-0.3.1/docs/reference/templates.md +108 -0
  51. groundtruth_kb-0.3.1/docs/start-here.md +230 -0
  52. groundtruth_kb-0.3.1/examples/task-tracker/.github/workflows/build.yml +46 -0
  53. groundtruth_kb-0.3.1/examples/task-tracker/.github/workflows/deploy.yml +61 -0
  54. groundtruth_kb-0.3.1/examples/task-tracker/.github/workflows/test.yml +44 -0
  55. groundtruth_kb-0.3.1/examples/task-tracker/CLAUDE.md +40 -0
  56. groundtruth_kb-0.3.1/examples/task-tracker/Dockerfile +15 -0
  57. groundtruth_kb-0.3.1/examples/task-tracker/MEMORY.md +19 -0
  58. groundtruth_kb-0.3.1/examples/task-tracker/README.md +60 -0
  59. groundtruth_kb-0.3.1/examples/task-tracker/REVIEW-EXAMPLE.md +64 -0
  60. groundtruth_kb-0.3.1/examples/task-tracker/WALKTHROUGH.md +205 -0
  61. groundtruth_kb-0.3.1/examples/task-tracker/docker-compose.yml +9 -0
  62. groundtruth_kb-0.3.1/examples/task-tracker/groundtruth.toml +6 -0
  63. groundtruth_kb-0.3.1/examples/task-tracker/pyproject.toml +26 -0
  64. groundtruth_kb-0.3.1/examples/task-tracker/seed_kb.py +354 -0
  65. groundtruth_kb-0.3.1/examples/task-tracker/src/task_tracker/__init__.py +3 -0
  66. groundtruth_kb-0.3.1/examples/task-tracker/src/task_tracker/app.py +60 -0
  67. groundtruth_kb-0.3.1/examples/task-tracker/src/task_tracker/models.py +116 -0
  68. groundtruth_kb-0.3.1/examples/task-tracker/tests/conftest.py +21 -0
  69. groundtruth_kb-0.3.1/examples/task-tracker/tests/test_api.py +89 -0
  70. groundtruth_kb-0.3.1/mkdocs.yml +83 -0
  71. groundtruth_kb-0.3.1/pyproject.toml +92 -0
  72. groundtruth_kb-0.3.1/scripts/check_docs_cli_coverage.py +360 -0
  73. groundtruth_kb-0.3.1/sonar-project.properties +15 -0
  74. groundtruth_kb-0.3.1/src/groundtruth_kb/__init__.py +53 -0
  75. groundtruth_kb-0.3.1/src/groundtruth_kb/assertion_schema.py +150 -0
  76. groundtruth_kb-0.3.1/src/groundtruth_kb/assertions.py +732 -0
  77. groundtruth_kb-0.3.1/src/groundtruth_kb/bootstrap.py +260 -0
  78. groundtruth_kb-0.3.1/src/groundtruth_kb/bridge/__init__.py +48 -0
  79. groundtruth_kb-0.3.1/src/groundtruth_kb/bridge/context.py +980 -0
  80. groundtruth_kb-0.3.1/src/groundtruth_kb/bridge/handshake.py +209 -0
  81. groundtruth_kb-0.3.1/src/groundtruth_kb/bridge/launcher.py +359 -0
  82. groundtruth_kb-0.3.1/src/groundtruth_kb/bridge/poller.py +621 -0
  83. groundtruth_kb-0.3.1/src/groundtruth_kb/bridge/runtime.py +1455 -0
  84. groundtruth_kb-0.3.1/src/groundtruth_kb/bridge/worker.py +820 -0
  85. groundtruth_kb-0.3.1/src/groundtruth_kb/cli.py +660 -0
  86. groundtruth_kb-0.3.1/src/groundtruth_kb/config.py +146 -0
  87. groundtruth_kb-0.3.1/src/groundtruth_kb/db.py +3763 -0
  88. groundtruth_kb-0.3.1/src/groundtruth_kb/gates.py +180 -0
  89. groundtruth_kb-0.3.1/src/groundtruth_kb/gates_transport.py +136 -0
  90. groundtruth_kb-0.3.1/src/groundtruth_kb/project/__init__.py +15 -0
  91. groundtruth_kb-0.3.1/src/groundtruth_kb/project/doctor.py +537 -0
  92. groundtruth_kb-0.3.1/src/groundtruth_kb/project/manifest.py +81 -0
  93. groundtruth_kb-0.3.1/src/groundtruth_kb/project/profiles.py +74 -0
  94. groundtruth_kb-0.3.1/src/groundtruth_kb/project/scaffold.py +517 -0
  95. groundtruth_kb-0.3.1/src/groundtruth_kb/project/upgrade.py +203 -0
  96. groundtruth_kb-0.3.1/src/groundtruth_kb/seed.py +273 -0
  97. groundtruth_kb-0.3.1/src/groundtruth_kb/web/__init__.py +4 -0
  98. groundtruth_kb-0.3.1/src/groundtruth_kb/web/app.py +307 -0
  99. groundtruth_kb-0.3.1/src/groundtruth_kb/web/static/style.css +429 -0
  100. groundtruth_kb-0.3.1/src/groundtruth_kb/web/templates/assertions.html +42 -0
  101. groundtruth_kb-0.3.1/src/groundtruth_kb/web/templates/base.html +44 -0
  102. groundtruth_kb-0.3.1/src/groundtruth_kb/web/templates/dashboard.html +75 -0
  103. groundtruth_kb-0.3.1/src/groundtruth_kb/web/templates/env.html +51 -0
  104. groundtruth_kb-0.3.1/src/groundtruth_kb/web/templates/env_detail.html +47 -0
  105. groundtruth_kb-0.3.1/src/groundtruth_kb/web/templates/history.html +57 -0
  106. groundtruth_kb-0.3.1/src/groundtruth_kb/web/templates/op_detail.html +73 -0
  107. groundtruth_kb-0.3.1/src/groundtruth_kb/web/templates/ops.html +39 -0
  108. groundtruth_kb-0.3.1/src/groundtruth_kb/web/templates/pipeline.html +179 -0
  109. groundtruth_kb-0.3.1/src/groundtruth_kb/web/templates/spec_detail.html +114 -0
  110. groundtruth_kb-0.3.1/src/groundtruth_kb/web/templates/specs.html +68 -0
  111. groundtruth_kb-0.3.1/src/groundtruth_kb/web/templates/test_detail.html +48 -0
  112. groundtruth_kb-0.3.1/src/groundtruth_kb/web/templates/tests.html +47 -0
  113. groundtruth_kb-0.3.1/templates/BRIDGE-INVENTORY.md +98 -0
  114. groundtruth_kb-0.3.1/templates/CLAUDE.md +109 -0
  115. groundtruth_kb-0.3.1/templates/MEMORY.md +33 -0
  116. groundtruth_kb-0.3.1/templates/README.md +85 -0
  117. groundtruth_kb-0.3.1/templates/bridge-os-poller-setup-prompt.md +77 -0
  118. groundtruth_kb-0.3.1/templates/ci/build.yml +46 -0
  119. groundtruth_kb-0.3.1/templates/ci/deploy.yml +61 -0
  120. groundtruth_kb-0.3.1/templates/ci/test.yml +44 -0
  121. groundtruth_kb-0.3.1/templates/hooks/assertion-check.py +76 -0
  122. groundtruth_kb-0.3.1/templates/hooks/credential-scan.py +114 -0
  123. groundtruth_kb-0.3.1/templates/hooks/destructive-gate.py +72 -0
  124. groundtruth_kb-0.3.1/templates/hooks/scheduler.py +54 -0
  125. groundtruth_kb-0.3.1/templates/hooks/spec-classifier.py +76 -0
  126. groundtruth_kb-0.3.1/templates/project/.editorconfig +27 -0
  127. groundtruth_kb-0.3.1/templates/project/.pre-commit-config.yaml +19 -0
  128. groundtruth_kb-0.3.1/templates/project/AGENTS.md +137 -0
  129. groundtruth_kb-0.3.1/templates/project/Dockerfile +47 -0
  130. groundtruth_kb-0.3.1/templates/project/Makefile +26 -0
  131. groundtruth_kb-0.3.1/templates/project/codex-bootstrap/CODEX-REVIEW-OPERATING-CONTRACT.md +99 -0
  132. groundtruth_kb-0.3.1/templates/project/codex-bootstrap/CODEX-SESSION-BOOTSTRAP.md +62 -0
  133. groundtruth_kb-0.3.1/templates/project/codex-bootstrap/CODEX-WAY-OF-WORKING.md +83 -0
  134. groundtruth_kb-0.3.1/templates/project/codex-bootstrap/LOYAL-OPPOSITION-LOG.md +33 -0
  135. groundtruth_kb-0.3.1/templates/project/docker-compose.yml +57 -0
  136. groundtruth_kb-0.3.1/templates/project/env.example +34 -0
  137. groundtruth_kb-0.3.1/templates/project/settings.local.json +31 -0
  138. groundtruth_kb-0.3.1/templates/rules/bridge-poller-canonical.md +79 -0
  139. groundtruth_kb-0.3.1/templates/rules/loyal-opposition.md +38 -0
  140. groundtruth_kb-0.3.1/templates/rules/prime-bridge-collaboration-protocol.md +98 -0
  141. groundtruth_kb-0.3.1/templates/rules/prime-builder.md +37 -0
  142. groundtruth_kb-0.3.1/templates/rules/report-depth.md +67 -0
  143. groundtruth_kb-0.3.1/tests/conftest.py +53 -0
  144. groundtruth_kb-0.3.1/tests/test_ar_web_shim.py +117 -0
  145. groundtruth_kb-0.3.1/tests/test_assertion_schema.py +255 -0
  146. groundtruth_kb-0.3.1/tests/test_assertions.py +858 -0
  147. groundtruth_kb-0.3.1/tests/test_cli.py +582 -0
  148. groundtruth_kb-0.3.1/tests/test_config.py +104 -0
  149. groundtruth_kb-0.3.1/tests/test_db.py +387 -0
  150. groundtruth_kb-0.3.1/tests/test_deliberations.py +1226 -0
  151. groundtruth_kb-0.3.1/tests/test_gates.py +272 -0
  152. groundtruth_kb-0.3.1/tests/test_gates_transport.py +289 -0
  153. groundtruth_kb-0.3.1/tests/test_lifecycle_metrics.py +486 -0
  154. groundtruth_kb-0.3.1/tests/test_pipeline_events.py +597 -0
  155. groundtruth_kb-0.3.1/tests/test_web.py +402 -0
  156. groundtruth_kb-0.3.1/tests/test_web_pipeline.py +165 -0
@@ -0,0 +1,27 @@
1
+ # EditorConfig — https://editorconfig.org
2
+ # © 2026 Remaker Digital, a DBA of VanDusen & Palmeter, LLC. All rights reserved.
3
+
4
+ root = true
5
+
6
+ [*]
7
+ indent_style = space
8
+ indent_size = 4
9
+ end_of_line = lf
10
+ charset = utf-8
11
+ trim_trailing_whitespace = true
12
+ insert_final_newline = true
13
+
14
+ [*.py]
15
+ indent_size = 4
16
+
17
+ [*.{yml,yaml}]
18
+ indent_size = 2
19
+
20
+ [*.{toml,json}]
21
+ indent_size = 2
22
+
23
+ [*.md]
24
+ trim_trailing_whitespace = false
25
+
26
+ [Makefile]
27
+ indent_style = tab
@@ -0,0 +1,69 @@
1
+ name: Bug Report
2
+ description: Report a bug in the GroundTruth Knowledge DB toolkit
3
+ labels: ["bug"]
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: |
8
+ Thanks for taking the time to report a bug. Please fill out the fields
9
+ below so we can diagnose and fix the issue.
10
+
11
+ - type: dropdown
12
+ id: component
13
+ attributes:
14
+ label: Component
15
+ description: Which part of the toolkit is affected?
16
+ options:
17
+ - Knowledge DB (db.py)
18
+ - Assertions engine (assertions.py)
19
+ - Web UI (app.py / templates)
20
+ - CLI / seed tooling
21
+ - Documentation
22
+ - Other
23
+ validations:
24
+ required: true
25
+
26
+ - type: textarea
27
+ id: expected
28
+ attributes:
29
+ label: Expected behavior
30
+ description: What did you expect to happen?
31
+ validations:
32
+ required: true
33
+
34
+ - type: textarea
35
+ id: actual
36
+ attributes:
37
+ label: Actual behavior
38
+ description: What actually happened? Include error messages if applicable.
39
+ validations:
40
+ required: true
41
+
42
+ - type: textarea
43
+ id: reproduction
44
+ attributes:
45
+ label: Steps to reproduce
46
+ description: Minimal steps to reproduce the issue.
47
+ placeholder: |
48
+ 1. Install groundtruth-kb v0.1.0
49
+ 2. Run `groundtruth init`
50
+ 3. Insert a spec with ...
51
+ 4. See error ...
52
+ validations:
53
+ required: true
54
+
55
+ - type: input
56
+ id: version
57
+ attributes:
58
+ label: Version
59
+ description: "Output of `pip show groundtruth-kb | grep Version`"
60
+ validations:
61
+ required: false
62
+
63
+ - type: textarea
64
+ id: context
65
+ attributes:
66
+ label: Additional context
67
+ description: Any other context (screenshots, logs, environment details).
68
+ validations:
69
+ required: false
@@ -0,0 +1,50 @@
1
+ name: Feature Request
2
+ description: Suggest an improvement or new capability
3
+ labels: ["enhancement"]
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: |
8
+ We value feedback that helps improve the engineering method behind
9
+ GroundTruth. Please describe the problem you're trying to solve and
10
+ the approach you have in mind.
11
+
12
+ - type: textarea
13
+ id: problem
14
+ attributes:
15
+ label: What problem does this solve?
16
+ description: |
17
+ Describe the problem or limitation you encountered. Focus on the
18
+ "why" — what were you trying to accomplish and what got in the way?
19
+ validations:
20
+ required: true
21
+
22
+ - type: textarea
23
+ id: approach
24
+ attributes:
25
+ label: What approach do you suggest?
26
+ description: |
27
+ How would you solve this? Be as specific as you can. If you have
28
+ multiple approaches, list them with tradeoffs.
29
+ validations:
30
+ required: true
31
+
32
+ - type: textarea
33
+ id: alternatives
34
+ attributes:
35
+ label: What alternatives did you consider?
36
+ description: Other approaches you thought about and why you didn't choose them.
37
+ validations:
38
+ required: false
39
+
40
+ - type: dropdown
41
+ id: scope
42
+ attributes:
43
+ label: Scope
44
+ description: How broad is this change?
45
+ options:
46
+ - Small (single file / function)
47
+ - Medium (multiple files, same module)
48
+ - Large (cross-cutting, architecture-level)
49
+ validations:
50
+ required: true
@@ -0,0 +1,73 @@
1
+ # Copilot Instructions — GroundTruth KB
2
+
3
+ This project uses specification-driven governance. Every change must trace
4
+ back to a specification or work item in the knowledge database.
5
+
6
+ ## Before writing code
7
+
8
+ 1. Read `CLAUDE.md` for project rules and workflow.
9
+ 2. Read `groundtruth.toml` for project configuration.
10
+ 3. If the assigned issue references a spec ID (e.g., SPEC-1234), that spec
11
+ defines the requirements. Do not add features beyond what the spec states.
12
+ 4. If no spec is referenced, implement only what the issue title and body
13
+ describe — nothing more.
14
+
15
+ ## Code standards
16
+
17
+ - Python 3.11+. Lint with ruff (see `pyproject.toml` for rules).
18
+ - All new files must include this copyright header as the first line:
19
+ ```python
20
+ # © 2026 Remaker Digital, a DBA of VanDusen & Palmeter, LLC. All rights reserved.
21
+ ```
22
+ For TypeScript/JavaScript files:
23
+ ```typescript
24
+ // © 2026 Remaker Digital, a DBA of VanDusen & Palmeter, LLC. All rights reserved.
25
+ ```
26
+ - Every new function or class requires a test in `tests/`.
27
+ - Do not add dependencies to `pyproject.toml` without explicit approval in
28
+ the issue body.
29
+ - Do not modify `src/groundtruth_kb/db.py` schema without a spec reference.
30
+
31
+ ## What NOT to do
32
+
33
+ - Do not create documentation files (*.md) unless the issue specifically
34
+ requests documentation.
35
+ - Do not refactor code beyond what the issue requires.
36
+ - Do not add type stubs, docstrings, or comments to files you did not change.
37
+ - Do not modify `groundtruth.toml`, `groundtruth.db`, or any file in
38
+ `templates/` unless the issue explicitly targets those files.
39
+ - Do not run `gt seed` or modify governance specs (GOV-*).
40
+
41
+ ## Commit messages
42
+
43
+ Use this format:
44
+ ```
45
+ <type>(<scope>): <description>
46
+
47
+ Refs: <issue-number>
48
+ ```
49
+
50
+ Types: `feat`, `fix`, `test`, `docs`, `chore`
51
+
52
+ ## PR description
53
+
54
+ Include:
55
+ - What changed and why (reference the issue)
56
+ - Which files were modified
57
+ - How to verify the change (test command or manual check)
58
+
59
+ ## Testing
60
+
61
+ Run `python -m pytest tests/ -q` before requesting review. All existing
62
+ tests must pass. New code must have new tests.
63
+
64
+ ## Architecture
65
+
66
+ - `src/groundtruth_kb/` — core package (KB engine, CLI, assertions, gates)
67
+ - `src/groundtruth_kb/project/` — project scaffold, doctor, upgrade
68
+ - `src/groundtruth_kb/bridge/` — inter-agent bridge runtime
69
+ - `templates/` — scaffold templates (bundled in wheel)
70
+ - `tests/` — pytest test suite
71
+ - `docs/` — method documentation
72
+
73
+ Do not create new top-level directories or packages.
@@ -0,0 +1,27 @@
1
+ # Dependabot dependency update configuration
2
+ # © 2026 Remaker Digital, a DBA of VanDusen & Palmeter, LLC. All rights reserved.
3
+
4
+ version: 2
5
+ updates:
6
+ - package-ecosystem: "pip"
7
+ directory: "/"
8
+ schedule:
9
+ interval: "weekly"
10
+ day: "monday"
11
+ open-pull-requests-limit: 5
12
+ labels:
13
+ - "dependencies"
14
+ commit-message:
15
+ prefix: "chore(deps):"
16
+
17
+ - package-ecosystem: "github-actions"
18
+ directory: "/"
19
+ schedule:
20
+ interval: "weekly"
21
+ day: "monday"
22
+ open-pull-requests-limit: 3
23
+ labels:
24
+ - "dependencies"
25
+ - "ci"
26
+ commit-message:
27
+ prefix: "chore(ci):"
@@ -0,0 +1,23 @@
1
+ ## Problem
2
+
3
+ <!-- What problem does this PR solve? Link to the issue if applicable. -->
4
+
5
+ ## Approach
6
+
7
+ <!-- How does this PR solve the problem? Describe the implementation. -->
8
+
9
+ ## Rationale
10
+
11
+ <!-- Why this approach over alternatives? What tradeoffs were considered? -->
12
+
13
+ ## Testing
14
+
15
+ - [ ] Existing tests pass (`pytest`)
16
+ - [ ] New tests added for new functionality
17
+ - [ ] Assertions still pass (`groundtruth assert`)
18
+
19
+ ## Checklist
20
+
21
+ - [ ] Code follows project conventions
22
+ - [ ] No breaking changes to the public API
23
+ - [ ] Documentation updated if needed
@@ -0,0 +1,67 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main, develop]
6
+ pull_request:
7
+ branches: [main, develop]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ python-version: ["3.11", "3.12", "3.13"]
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Set up Python ${{ matrix.python-version }}
20
+ uses: actions/setup-python@v6
21
+ with:
22
+ python-version: ${{ matrix.python-version }}
23
+
24
+ - name: Install dependencies
25
+ run: |
26
+ python -m pip install --upgrade pip
27
+ pip install -e ".[dev,web]"
28
+
29
+ - name: Lint with ruff
30
+ run: |
31
+ ruff check .
32
+ ruff format --check .
33
+
34
+ - name: Run tests
35
+ run: pytest -v --tb=short
36
+
37
+ - name: Wheel build + install smoke test
38
+ run: |
39
+ pip install build
40
+ python -m build --wheel
41
+ pip install --no-deps dist/*.whl --target /tmp/gt-wheel-smoke
42
+ PYTHONPATH=/tmp/gt-wheel-smoke python -c "
43
+ import groundtruth_kb
44
+ print(f'Version: {groundtruth_kb.__version__}')
45
+ tpl = groundtruth_kb.get_templates_dir()
46
+ print(f'Templates: {tpl}')
47
+ assert tpl.exists(), 'Templates must be packaged in wheel'
48
+ "
49
+
50
+ test-search:
51
+ runs-on: ubuntu-latest
52
+ name: "test (search / 3.12)"
53
+ steps:
54
+ - uses: actions/checkout@v4
55
+
56
+ - name: Set up Python 3.12
57
+ uses: actions/setup-python@v6
58
+ with:
59
+ python-version: "3.12"
60
+
61
+ - name: Install dependencies with search extra
62
+ run: |
63
+ python -m pip install --upgrade pip
64
+ pip install -e ".[dev,web,search]"
65
+
66
+ - name: Run tests (including semantic search)
67
+ run: pytest -v --tb=short -k "deliberation"
@@ -0,0 +1,38 @@
1
+ # CodeQL analysis — GitHub's semantic code analysis for security vulnerabilities
2
+ # Free for public repositories. Uploads findings to Security tab.
3
+ #
4
+ # © 2026 Remaker Digital, a DBA of VanDusen & Palmeter, LLC. All rights reserved.
5
+
6
+ name: CodeQL
7
+
8
+ on:
9
+ push:
10
+ branches: [main]
11
+ pull_request:
12
+ branches: [main]
13
+ schedule:
14
+ - cron: '17 4 * * 1' # Weekly Monday 4:17 AM UTC
15
+
16
+ permissions:
17
+ contents: read
18
+ security-events: write
19
+
20
+ jobs:
21
+ analyze:
22
+ name: Analyze Python
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+
27
+ - name: Initialize CodeQL
28
+ uses: github/codeql-action/init@v4
29
+ with:
30
+ languages: python
31
+
32
+ - name: Autobuild
33
+ uses: github/codeql-action/autobuild@v4
34
+
35
+ - name: Perform CodeQL Analysis
36
+ uses: github/codeql-action/analyze@v4
37
+ with:
38
+ category: "/language:python"
@@ -0,0 +1,53 @@
1
+ # Documentation drift prevention — verifies CLI coverage, snippet correctness,
2
+ # nav file references, version consistency, Python prereq, install tags,
3
+ # ChromaDB message shape, and mkdocs build integrity.
4
+ #
5
+ # © 2026 Remaker Digital, a DBA of VanDusen & Palmeter, LLC. All rights reserved.
6
+
7
+ name: Docs Check
8
+
9
+ on:
10
+ push:
11
+ branches: [main]
12
+ paths:
13
+ - 'docs/**'
14
+ - 'templates/**'
15
+ - 'examples/**'
16
+ - 'README.md'
17
+ - 'pyproject.toml'
18
+ - 'src/groundtruth_kb/__init__.py'
19
+ - 'src/groundtruth_kb/cli.py'
20
+ - 'mkdocs.yml'
21
+ - 'scripts/check_docs_cli_coverage.py'
22
+ - '.github/workflows/docs-check.yml'
23
+ pull_request:
24
+ paths:
25
+ - 'docs/**'
26
+ - 'templates/**'
27
+ - 'examples/**'
28
+ - 'README.md'
29
+ - 'pyproject.toml'
30
+ - 'src/groundtruth_kb/__init__.py'
31
+ - 'src/groundtruth_kb/cli.py'
32
+ - 'mkdocs.yml'
33
+ - 'scripts/check_docs_cli_coverage.py'
34
+
35
+ jobs:
36
+ docs-check:
37
+ runs-on: ubuntu-latest
38
+ steps:
39
+ - uses: actions/checkout@v4
40
+
41
+ - name: Set up Python
42
+ uses: actions/setup-python@v6
43
+ with:
44
+ python-version: '3.12'
45
+
46
+ - name: Install dependencies
47
+ run: pip install -e ".[docs]"
48
+
49
+ - name: Check documentation drift
50
+ run: python scripts/check_docs_cli_coverage.py
51
+
52
+ - name: Build docs (strict mode)
53
+ run: mkdocs build --strict
@@ -0,0 +1,53 @@
1
+ # Deploy documentation to GitHub Pages using mkdocs-material.
2
+ # Requires: Settings > Pages > Source: GitHub Actions
3
+ #
4
+ # © 2026 Remaker Digital, a DBA of VanDusen & Palmeter, LLC. All rights reserved.
5
+
6
+ name: Docs
7
+
8
+ on:
9
+ push:
10
+ branches: [main]
11
+ workflow_dispatch:
12
+
13
+ permissions:
14
+ contents: read
15
+ pages: write
16
+ id-token: write
17
+
18
+ concurrency:
19
+ group: pages
20
+ cancel-in-progress: true
21
+
22
+ jobs:
23
+ build:
24
+ runs-on: ubuntu-latest
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+
28
+ - name: Set up Python
29
+ uses: actions/setup-python@v6
30
+ with:
31
+ python-version: '3.12'
32
+
33
+ - name: Install dependencies
34
+ run: pip install -e ".[docs]"
35
+
36
+ - name: Build docs
37
+ run: mkdocs build --strict
38
+
39
+ - name: Upload pages artifact
40
+ uses: actions/upload-pages-artifact@v3
41
+ with:
42
+ path: site/
43
+
44
+ deploy:
45
+ needs: build
46
+ runs-on: ubuntu-latest
47
+ environment:
48
+ name: github-pages
49
+ url: ${{ steps.deployment.outputs.page_url }}
50
+ steps:
51
+ - name: Deploy to GitHub Pages
52
+ id: deployment
53
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,29 @@
1
+ # © 2026 Remaker Digital, a DBA of VanDusen & Palmeter, LLC. All rights reserved.
2
+ name: Docstring Coverage
3
+
4
+ on:
5
+ push:
6
+ branches: [main]
7
+ pull_request:
8
+
9
+ jobs:
10
+ docstring-coverage:
11
+ runs-on: ubuntu-latest
12
+ permissions:
13
+ contents: read
14
+
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.11"
22
+
23
+ - name: Install dependencies
24
+ run: |
25
+ python -m pip install --upgrade pip
26
+ pip install -e ".[dev]"
27
+
28
+ - name: Check docstring coverage
29
+ run: interrogate src/groundtruth_kb/ --fail-under 50 -vv
@@ -0,0 +1,88 @@
1
+ # Build, verify, and publish groundtruth-kb.
2
+ #
3
+ # Install from PyPI:
4
+ # pip install groundtruth-kb
5
+ #
6
+ # Install from GitHub (pinned version):
7
+ # pip install "groundtruth-kb @ git+https://github.com/Remaker-Digital/groundtruth-kb.git@v0.3.0"
8
+ #
9
+ # This workflow runs on Release creation to:
10
+ # 1. Build and verify the wheel
11
+ # 2. Attach artifacts to the GitHub Release
12
+ # 3. Publish to PyPI via Trusted Publishers (OIDC)
13
+ #
14
+ # Copyright (c) 2026 Remaker Digital. Licensed under AGPL-3.0-or-later.
15
+
16
+ name: Release
17
+
18
+ on:
19
+ release:
20
+ types: [published]
21
+
22
+ jobs:
23
+ build-verify:
24
+ runs-on: ubuntu-latest
25
+ permissions:
26
+ contents: write
27
+
28
+ steps:
29
+ - uses: actions/checkout@v4
30
+
31
+ - uses: actions/setup-python@v6
32
+ with:
33
+ python-version: "3.12"
34
+
35
+ - name: Install build tools
36
+ run: pip install build twine
37
+
38
+ - name: Build wheel + sdist
39
+ run: python -m build
40
+
41
+ - name: Verify distribution
42
+ run: twine check dist/*
43
+
44
+ - name: Smoke test — install built wheel
45
+ run: |
46
+ pip install --no-deps dist/*.whl --target /tmp/gt-smoke
47
+ PYTHONPATH=/tmp/gt-smoke python -c "
48
+ import groundtruth_kb
49
+ print(f'Version: {groundtruth_kb.__version__}')
50
+ print(f'Templates: {groundtruth_kb.get_templates_dir()}')
51
+ assert groundtruth_kb.__version__, 'Version must be set'
52
+ assert groundtruth_kb.get_templates_dir().exists(), 'Templates must be packaged'
53
+ "
54
+
55
+ - name: Smoke test — install from GitHub ref
56
+ run: |
57
+ pip install --target /tmp/gt-github-smoke "groundtruth-kb @ git+https://github.com/${{ github.repository }}.git@${{ github.ref_name }}"
58
+ PYTHONPATH=/tmp/gt-github-smoke python -c "import groundtruth_kb; print(f'GitHub install OK: {groundtruth_kb.__version__}')"
59
+
60
+ - name: Attach artifacts to release
61
+ env:
62
+ GH_TOKEN: ${{ github.token }}
63
+ run: |
64
+ for f in dist/*; do
65
+ gh release upload "${{ github.event.release.tag_name }}" "$f" --clobber
66
+ done
67
+
68
+ - name: Upload artifacts for publish job
69
+ uses: actions/upload-artifact@v4
70
+ with:
71
+ name: dist
72
+ path: dist/
73
+
74
+ publish-pypi:
75
+ needs: build-verify
76
+ runs-on: ubuntu-latest
77
+ environment: pypi
78
+ permissions:
79
+ id-token: write
80
+ steps:
81
+ - name: Download built artifacts
82
+ uses: actions/download-artifact@v4
83
+ with:
84
+ name: dist
85
+ path: dist/
86
+
87
+ - name: Publish to PyPI
88
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,76 @@
1
+ # Security scanning — Semgrep SAST + pip-audit dependency check
2
+ # Runs on every PR and push to main. Uploads SARIF to GitHub Code Scanning.
3
+ #
4
+ # © 2026 Remaker Digital, a DBA of VanDusen & Palmeter, LLC. All rights reserved.
5
+
6
+ name: Security
7
+
8
+ on:
9
+ pull_request:
10
+ paths:
11
+ - 'src/**'
12
+ - 'tests/**'
13
+ - 'pyproject.toml'
14
+ - 'requirements*.txt'
15
+ push:
16
+ branches: [main, develop]
17
+ workflow_dispatch:
18
+
19
+ permissions:
20
+ contents: read
21
+ security-events: write
22
+
23
+ jobs:
24
+ semgrep:
25
+ name: Semgrep SAST
26
+ runs-on: ubuntu-latest
27
+ steps:
28
+ - uses: actions/checkout@v4
29
+
30
+ - name: Run Semgrep
31
+ uses: returntocorp/semgrep-action@v1
32
+ with:
33
+ config: >-
34
+ p/python
35
+ p/security-audit
36
+ p/secrets
37
+ generateSarif: "1"
38
+
39
+ - name: Upload SARIF
40
+ if: always()
41
+ uses: github/codeql-action/upload-sarif@v4
42
+ with:
43
+ sarif_file: semgrep.sarif
44
+ category: semgrep
45
+
46
+ pip-audit:
47
+ name: Dependency Audit
48
+ runs-on: ubuntu-latest
49
+ steps:
50
+ - uses: actions/checkout@v4
51
+
52
+ - name: Set up Python
53
+ uses: actions/setup-python@v6
54
+ with:
55
+ python-version: '3.12'
56
+
57
+ - name: Install package
58
+ run: pip install -e ".[dev,web]"
59
+
60
+ - name: Run pip-audit
61
+ run: |
62
+ pip install pip-audit
63
+ mkdir -p .quality
64
+ # PYSEC-2022-42969: py 1.11.0 py.path.svnwc vulnerability — not exploitable
65
+ # in our usage (transitive dep from CI runner, not imported by our code).
66
+ pip-audit --ignore-vuln PYSEC-2022-42969 --format=json --output=.quality/pip-audit.json || true
67
+ pip-audit --ignore-vuln PYSEC-2022-42969 --format=cyclonedx-json --output=.quality/sbom.json || true
68
+ pip-audit --ignore-vuln PYSEC-2022-42969
69
+ continue-on-error: false
70
+
71
+ - name: Upload audit results
72
+ if: always()
73
+ uses: actions/upload-artifact@v7
74
+ with:
75
+ name: pip-audit-results
76
+ path: .quality/