runewall 1.0.0__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 (99) hide show
  1. runewall-1.0.0/.gitattributes +2 -0
  2. runewall-1.0.0/.github/workflows/ci.yml +26 -0
  3. runewall-1.0.0/.github/workflows/community-map-verify-example.yml +18 -0
  4. runewall-1.0.0/.gitignore +17 -0
  5. runewall-1.0.0/AGENTS.md +193 -0
  6. runewall-1.0.0/CHANGELOG.md +58 -0
  7. runewall-1.0.0/CONTRIBUTING.md +33 -0
  8. runewall-1.0.0/LICENSE +21 -0
  9. runewall-1.0.0/PKG-INFO +206 -0
  10. runewall-1.0.0/README-START-HERE.md +42 -0
  11. runewall-1.0.0/README.md +181 -0
  12. runewall-1.0.0/brain/runewall-brain-bundle.md +249 -0
  13. runewall-1.0.0/brain/runewall-technical-spec.md +391 -0
  14. runewall-1.0.0/demos/README.md +39 -0
  15. runewall-1.0.0/demos/runewall_60_second_demo.ps1 +36 -0
  16. runewall-1.0.0/docs/.gitkeep +0 -0
  17. runewall-1.0.0/docs/ANNOUNCEMENT.md +39 -0
  18. runewall-1.0.0/docs/COMMUNITY_MAPS.md +165 -0
  19. runewall-1.0.0/docs/COMMUNITY_MAP_KEYS.md +135 -0
  20. runewall-1.0.0/docs/COMMUNITY_MAP_MANIFEST.md +127 -0
  21. runewall-1.0.0/docs/COMMUNITY_MAP_SIGNING.md +88 -0
  22. runewall-1.0.0/docs/COMMUNITY_PACKAGE_VERIFY_CI.md +87 -0
  23. runewall-1.0.0/docs/HANDOFF.md +104 -0
  24. runewall-1.0.0/docs/INSTALL.md +84 -0
  25. runewall-1.0.0/docs/MCP_CLIENT_EXAMPLES.md +73 -0
  26. runewall-1.0.0/docs/MCP_SERVER_PLAN.md +77 -0
  27. runewall-1.0.0/docs/PACKAGING.md +98 -0
  28. runewall-1.0.0/docs/PYTHON_SDK_EXAMPLES.md +94 -0
  29. runewall-1.0.0/docs/QUICKSTART.md +90 -0
  30. runewall-1.0.0/docs/RELEASE_CHECKLIST.md +61 -0
  31. runewall-1.0.0/docs/RELEASE_NOTES_TEMPLATE.md +37 -0
  32. runewall-1.0.0/docs/ROADMAP.md +22 -0
  33. runewall-1.0.0/docs/agent-json-schema.md +280 -0
  34. runewall-1.0.0/docs/maps-contributing.md +348 -0
  35. runewall-1.0.0/examples/.gitkeep +0 -0
  36. runewall-1.0.0/examples/community-maps/README.md +8 -0
  37. runewall-1.0.0/examples/community-maps/github_create_issue.safe.json +14 -0
  38. runewall-1.0.0/examples/community-maps/keys/example-author-key.json +6 -0
  39. runewall-1.0.0/examples/community-maps/manifest.example.json +31 -0
  40. runewall-1.0.0/examples/file_rollback_demo.py +47 -0
  41. runewall-1.0.0/maps/.gitkeep +0 -0
  42. runewall-1.0.0/pyproject.toml +35 -0
  43. runewall-1.0.0/runewall/__init__.py +13 -0
  44. runewall-1.0.0/runewall/cli/.gitkeep +0 -0
  45. runewall-1.0.0/runewall/cli/__init__.py +1 -0
  46. runewall-1.0.0/runewall/cli/main.py +2903 -0
  47. runewall-1.0.0/runewall/core/.gitkeep +0 -0
  48. runewall-1.0.0/runewall/core/__init__.py +6 -0
  49. runewall-1.0.0/runewall/core/config.py +442 -0
  50. runewall-1.0.0/runewall/core/db.py +73 -0
  51. runewall-1.0.0/runewall/core/interceptor.py +155 -0
  52. runewall-1.0.0/runewall/core/log.py +229 -0
  53. runewall-1.0.0/runewall/core/models.py +72 -0
  54. runewall-1.0.0/runewall/core/rollback.py +47 -0
  55. runewall-1.0.0/runewall/core/rules.py +235 -0
  56. runewall-1.0.0/runewall/core/snapshot.py +144 -0
  57. runewall-1.0.0/runewall/maps/__init__.py +5 -0
  58. runewall-1.0.0/runewall/maps/executor.py +187 -0
  59. runewall-1.0.0/runewall/maps/planner.py +100 -0
  60. runewall-1.0.0/runewall/maps/registry.py +918 -0
  61. runewall-1.0.0/runewall/maps/sites/cloudflare.json +23 -0
  62. runewall-1.0.0/runewall/maps/sites/discord.json +32 -0
  63. runewall-1.0.0/runewall/maps/sites/github.json +36 -0
  64. runewall-1.0.0/runewall/maps/sites/linear.json +36 -0
  65. runewall-1.0.0/runewall/maps/sites/netlify.json +23 -0
  66. runewall-1.0.0/runewall/maps/sites/slack.json +32 -0
  67. runewall-1.0.0/runewall/maps/sites/supabase.json +23 -0
  68. runewall-1.0.0/runewall/maps/sites/vercel.json +23 -0
  69. runewall-1.0.0/runewall/sdk.py +66 -0
  70. runewall-1.0.0/runewall/translate/__init__.py +5 -0
  71. runewall-1.0.0/runewall/translate/reader.py +47 -0
  72. runewall-1.0.0/specs/.gitkeep +0 -0
  73. runewall-1.0.0/tests/__init__.py +1 -0
  74. runewall-1.0.0/tests/cli/.gitkeep +0 -0
  75. runewall-1.0.0/tests/cli/__init__.py +1 -0
  76. runewall-1.0.0/tests/cli/test_cli.py +7509 -0
  77. runewall-1.0.0/tests/core/.gitkeep +0 -0
  78. runewall-1.0.0/tests/core/__init__.py +1 -0
  79. runewall-1.0.0/tests/core/test_config.py +245 -0
  80. runewall-1.0.0/tests/core/test_interceptor.py +177 -0
  81. runewall-1.0.0/tests/core/test_log.py +127 -0
  82. runewall-1.0.0/tests/core/test_rollback.py +50 -0
  83. runewall-1.0.0/tests/core/test_rules.py +200 -0
  84. runewall-1.0.0/tests/core/test_snapshot.py +213 -0
  85. runewall-1.0.0/tests/integration/.gitkeep +0 -0
  86. runewall-1.0.0/tests/integration/__init__.py +1 -0
  87. runewall-1.0.0/tests/integration/test_dry_run_logging.py +80 -0
  88. runewall-1.0.0/tests/integration/test_file_rollback.py +97 -0
  89. runewall-1.0.0/tests/integration/test_github_create_issue_execution.py +113 -0
  90. runewall-1.0.0/tests/integration/test_protect_file_create_delete.py +54 -0
  91. runewall-1.0.0/tests/integration/test_protect_file_write.py +37 -0
  92. runewall-1.0.0/tests/integration/test_read_logging.py +49 -0
  93. runewall-1.0.0/tests/integration/test_review_flow.py +126 -0
  94. runewall-1.0.0/tests/maps/__init__.py +1 -0
  95. runewall-1.0.0/tests/maps/test_executor.py +517 -0
  96. runewall-1.0.0/tests/maps/test_planner.py +56 -0
  97. runewall-1.0.0/tests/maps/test_registry.py +892 -0
  98. runewall-1.0.0/tests/test_sdk.py +128 -0
  99. runewall-1.0.0/tests/translate/test_reader.py +58 -0
@@ -0,0 +1,2 @@
1
+ examples/community-maps/*.json text eol=lf
2
+ examples/community-maps/**/*.json text eol=lf
@@ -0,0 +1,26 @@
1
+ name: Runewall CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ jobs:
8
+ test:
9
+ runs-on: ubuntu-latest
10
+
11
+ steps:
12
+ - name: Check out repository
13
+ uses: actions/checkout@v4
14
+
15
+ - name: Set up Python 3.13
16
+ uses: actions/setup-python@v5
17
+ with:
18
+ python-version: "3.13"
19
+
20
+ - name: Install dependencies
21
+ run: |
22
+ python -m pip install --upgrade pip
23
+ python -m pip install -e ".[dev]"
24
+
25
+ - name: Run tests
26
+ run: python -m pytest tests -v
@@ -0,0 +1,18 @@
1
+ # Example workflow for local community map package verification.
2
+ # This is a documentation-style example and can be adapted per repository.
3
+ name: Community Map Verify Example
4
+
5
+ on:
6
+ pull_request:
7
+ push:
8
+
9
+ jobs:
10
+ verify-community-maps:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ - uses: actions/setup-python@v5
15
+ with:
16
+ python-version: "3.13"
17
+ - run: python -m pip install -e ".[dev]"
18
+ - run: runewall maps community package verify examples/community-maps --json
@@ -0,0 +1,17 @@
1
+ .venv/
2
+ .runewall/
3
+ .pytest_cache/
4
+ __pycache__/
5
+ *.pyc
6
+ .coverage
7
+ dist/
8
+ build/
9
+ *.egg-info/
10
+
11
+ demo.txt
12
+
13
+ # Python cache files
14
+ __pycache__/
15
+ *.py[cod]
16
+ *$py.class
17
+ .pytest_cache/
@@ -0,0 +1,193 @@
1
+ # AGENTS.md
2
+
3
+ Behavioral guidelines for Codex while building Runewall.
4
+
5
+ These instructions reduce common LLM coding mistakes. Follow them together with the project brain and technical spec.
6
+
7
+ Before coding, always read:
8
+
9
+ * `brain/runewall-brain-bundle.md`
10
+ * `brain/runewall-technical-spec.md`
11
+
12
+ Runewall is local-first, open-source, Python-first, CLI-first, and safety-first.
13
+
14
+ Do not build everything at once.
15
+
16
+ ---
17
+
18
+ ## 1. Think Before Coding
19
+
20
+ **Don't assume. Don't hide confusion. Surface tradeoffs.**
21
+
22
+ Before implementing:
23
+
24
+ * State your assumptions explicitly.
25
+ * If uncertain, ask or explain the uncertainty.
26
+ * If multiple interpretations exist, present them instead of silently choosing.
27
+ * If a simpler approach exists, say so.
28
+ * Push back when the request would make the system overcomplicated.
29
+ * If something is unclear, stop and name what is confusing.
30
+
31
+ ---
32
+
33
+ ## 2. Simplicity First
34
+
35
+ **Minimum code that solves the current task. Nothing speculative.**
36
+
37
+ * No features beyond what was asked.
38
+ * No abstractions for single-use code.
39
+ * No dashboard unless explicitly requested.
40
+ * No TypeScript SDK unless explicitly requested.
41
+ * No Playwright/browser translation unless explicitly requested.
42
+ * No website maps unless explicitly requested.
43
+ * No auth/credential layer unless explicitly requested.
44
+ * No agent-native protocol unless explicitly requested.
45
+ * No "future flexibility" unless the current task needs it.
46
+ * If you write 200 lines and it could be 50, rewrite it.
47
+
48
+ Ask yourself:
49
+
50
+ > Would a senior engineer say this is overcomplicated?
51
+
52
+ If yes, simplify.
53
+
54
+ ---
55
+
56
+ ## 3. Surgical Changes
57
+
58
+ **Touch only what you must. Clean up only your own mess.**
59
+
60
+ When editing existing code:
61
+
62
+ * Do not improve adjacent code, comments, or formatting unless needed.
63
+ * Do not refactor things that are not broken.
64
+ * Match the existing style.
65
+ * If you notice unrelated dead code, mention it but do not delete it.
66
+ * Remove imports, variables, or functions only if your changes made them unused.
67
+
68
+ Every changed line should directly trace to the current request.
69
+
70
+ ---
71
+
72
+ ## 4. Goal-Driven Execution
73
+
74
+ **Define success criteria. Loop until verified.**
75
+
76
+ Transform tasks into verifiable goals.
77
+
78
+ Examples:
79
+
80
+ * "Add validation" means: write tests for invalid inputs, then make them pass.
81
+ * "Fix the bug" means: write a test that reproduces it, then make it pass.
82
+ * "Refactor X" means: ensure tests pass before and after.
83
+
84
+ For multi-step tasks, state a brief plan:
85
+
86
+ ```txt
87
+ 1. [Step] → verify: [check]
88
+ 2. [Step] → verify: [check]
89
+ 3. [Step] → verify: [check]
90
+ ```
91
+
92
+ Do not stop after writing code. Run or explain the verification.
93
+
94
+ ---
95
+
96
+ ## 5. Runewall Build Order
97
+
98
+ Build Runewall in this order:
99
+
100
+ ```txt
101
+ 1. Python package skeleton
102
+ 2. Core models
103
+ 3. SQLite schema
104
+ 4. Action log
105
+ 5. CLI init/log
106
+ 6. Rules engine
107
+ 7. File snapshot engine
108
+ 8. File rollback engine
109
+ 9. Interceptor
110
+ 10. Universal read mode
111
+ 11. Maps
112
+ 12. Auth
113
+ 13. Protocol
114
+ 14. Dashboard
115
+ 15. TypeScript SDK
116
+ ```
117
+
118
+ Do not skip ahead.
119
+
120
+ Current priority:
121
+
122
+ ```txt
123
+ Core models → SQLite schema → Action log → CLI init/log
124
+ ```
125
+
126
+ ---
127
+
128
+ ## 6. Runewall Non-Negotiables
129
+
130
+ Runewall must remain:
131
+
132
+ * Local-first
133
+ * Open-source
134
+ * No required hosted backend
135
+ * No required API key
136
+ * No vendor lock-in
137
+ * Python-first
138
+ * CLI-first
139
+ * Framework-agnostic
140
+ * Safety-first
141
+ * Rollback-focused
142
+
143
+ Do not add external services.
144
+
145
+ Do not require internet except for websites agents intentionally visit.
146
+
147
+ Do not log secrets.
148
+
149
+ Do not hardcode credentials.
150
+
151
+ ---
152
+
153
+ ## 7. Testing Rules
154
+
155
+ For every feature:
156
+
157
+ * Add tests.
158
+ * Keep tests small and focused.
159
+ * Prefer temp directories for file-system tests.
160
+ * Do not depend on real websites in core tests.
161
+ * Do not require external API keys.
162
+ * Do not require network access for core tests.
163
+
164
+ Before finishing, run:
165
+
166
+ ```bash
167
+ pytest tests/ -v
168
+ ```
169
+
170
+ If tests fail, fix only the failing area.
171
+
172
+ ---
173
+
174
+ ## 8. Git / Diff Discipline
175
+
176
+ Before final response:
177
+
178
+ * Summarize changed files.
179
+ * Summarize tests run.
180
+ * Mention any tests not run.
181
+ * Mention any known limitations.
182
+ * Do not claim something works unless it was tested.
183
+
184
+ ---
185
+
186
+ ## 9. These Guidelines Are Working If
187
+
188
+ * Diffs are small.
189
+ * No unnecessary files are touched.
190
+ * No speculative systems are added.
191
+ * Tests exist for new behavior.
192
+ * Clarifying questions happen before wrong implementation.
193
+ * Runewall grows one safe layer at a time.
@@ -0,0 +1,58 @@
1
+ # Changelog
2
+
3
+ ## Unreleased
4
+
5
+ - Pending changes for the next release.
6
+
7
+ ## v1.0.0
8
+
9
+ - Stable release after rc1 validation.
10
+ - No new features or behavior changes from rc1.
11
+
12
+ ## v1.0.0-rc1
13
+
14
+ - Release candidate hardening.
15
+ - Public README and announcement polish.
16
+ - Install, quickstart, packaging, and release checklist docs stabilized.
17
+ - No new runtime features.
18
+
19
+ ## v0.9.0
20
+
21
+ - Added PyPI/public packaging readiness.
22
+ - Added local build artifact verification.
23
+
24
+ ## v0.8.6
25
+
26
+ - Pending release checklist polish.
27
+
28
+ ## v0.8.4
29
+
30
+ - Added release checklist command.
31
+ - Added release checklist documentation.
32
+ - Added packaging/release workflow guidance.
33
+
34
+ ## v0.8.3
35
+
36
+ - Added local packaging documentation.
37
+ - Documented local wheel and sdist build flow.
38
+
39
+ ## v0.8.2
40
+
41
+ - Added package build readiness check.
42
+
43
+ ## v0.8.1
44
+
45
+ - Added package readiness status.
46
+
47
+ ## v0.8.0
48
+
49
+ - Added public README, install, quickstart, and demo polish.
50
+ - Added 60-second local demo.
51
+
52
+ ## v0.7.3
53
+
54
+ - Polished community package verify docs.
55
+
56
+ ## v0.7.0
57
+
58
+ - Added community package verify command.
@@ -0,0 +1,33 @@
1
+ # Contributing
2
+
3
+ Runewall is a local-first, open-source, CLI-first project. Please keep contributions small, focused, and easy to review.
4
+
5
+ ## Local workflow
6
+
7
+ Run tests before commit:
8
+
9
+ ```bash
10
+ python -m pytest tests -v
11
+ ```
12
+
13
+ Run release checks:
14
+
15
+ ```bash
16
+ runewall config profile safe
17
+ runewall release check
18
+ runewall release json-check
19
+ ```
20
+
21
+ Maps must pass strict lint:
22
+
23
+ ```bash
24
+ runewall maps lint --strict
25
+ ```
26
+
27
+ ## Project guardrails
28
+
29
+ - do not print, store, or log tokens
30
+ - do not add browser automation, Playwright, a dashboard, TypeScript, or a hosted backend unless that work is explicitly scheduled
31
+ - keep diffs small and directly related to the task
32
+ - add tests for CLI behavior when changing CLI behavior
33
+ - prefer local-first behavior and safe defaults
runewall-1.0.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Runewall Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,206 @@
1
+ Metadata-Version: 2.4
2
+ Name: runewall
3
+ Version: 1.0.0
4
+ Summary: Local-first runtime for logging and protecting agent actions.
5
+ Author: Runewall Contributors
6
+ License-Expression: MIT
7
+ License-File: LICENSE
8
+ Keywords: agents,ai,cli,rollback,sqlite
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: Environment :: Console
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Software Development :: Libraries
19
+ Requires-Python: >=3.10
20
+ Requires-Dist: beautifulsoup4>=4.12
21
+ Requires-Dist: httpx>=0.27
22
+ Provides-Extra: dev
23
+ Requires-Dist: pytest>=8.0; extra == 'dev'
24
+ Description-Content-Type: text/markdown
25
+
26
+ # Runewall
27
+
28
+ [![Python 3.13](https://img.shields.io/badge/python-3.13-blue.svg)](https://www.python.org/)
29
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
30
+ ![Local-first](https://img.shields.io/badge/local--first-yes-lightgrey.svg)
31
+ ![CLI-first](https://img.shields.io/badge/cli--first-yes-lightgrey.svg)
32
+ ![MCP-ready](https://img.shields.io/badge/MCP-ready-orange.svg)
33
+ ![Tests](https://img.shields.io/badge/tests-local-blueviolet.svg)
34
+
35
+ Runewall is a local-first safety/runtime layer for AI agents before they take real-world actions.
36
+
37
+ ## Why Runewall?
38
+
39
+ Agents are moving from answering to acting. Once agents touch files, APIs, tools, or external systems, developers need a boundary layer that can preview actions, explain policy decisions, block risky behavior, log what happened, and rollback where possible.
40
+
41
+ ## What is it?
42
+
43
+ Runewall is a local-first CLI and developer tool that sits between an agent and a real action. It helps you inspect what an agent is about to do before you let it touch the outside world.
44
+
45
+ ## Why does it matter?
46
+
47
+ When agents move beyond chat and start acting on files, services, and tools, mistakes get more expensive. A local safety/runtime layer gives you a clearer review point before that action happens.
48
+
49
+ ## Architecture flow
50
+
51
+ `Agent -> Runewall -> policy check -> dry-run -> review/execute/block -> log/audit`
52
+
53
+ ## How do I try it?
54
+
55
+ Start with the five-minute quickstart below, or run the 60-second local demo in [demos/README.md](demos/README.md).
56
+
57
+ ## What Runewall can do now
58
+
59
+ - CLI-first safety runtime
60
+ - dry-run before mutation
61
+ - local SQLite action log
62
+ - `policy explain`, `policy test`, and `policy audit`
63
+ - snapshots and rollback
64
+ - guarded real execution for selected services
65
+ - local MCP stdio surface
66
+ - Python SDK preview
67
+ - community map package verification
68
+
69
+ ## 5-minute quickstart
70
+
71
+ ```powershell
72
+ python -m pip install -e ".[dev]"
73
+ runewall version
74
+ runewall config profile safe
75
+ runewall policy audit
76
+ runewall act github create_issue --dry-run --json --input repo=user/repo --input title="Bug"
77
+ runewall maps community package verify examples/community-maps --json
78
+ runewall mcp status --json
79
+ runewall sdk status --json
80
+ ```
81
+
82
+ What this gives you:
83
+
84
+ - confirms the CLI is installed
85
+ - applies safe local defaults
86
+ - audits current policy settings
87
+ - previews a mapped action without mutating anything
88
+ - verifies a local community package without importing it
89
+ - shows local MCP status
90
+ - shows local SDK status
91
+
92
+ ## Status
93
+
94
+ Runewall is currently a local-first CLI/devtool with:
95
+
96
+ - core safety runtime
97
+ - MCP stdio surface
98
+ - Python SDK preview
99
+ - community package verification
100
+
101
+ ## Safe by default
102
+
103
+ - real execution is disabled by default
104
+ - dry-run does not call external APIs
105
+ - tokens only come from environment variables
106
+ - tokens are never printed, stored, or logged
107
+ - community maps are non-executable
108
+ - package verify does not import or execute maps
109
+ - no hosted backend is required
110
+
111
+ ## What is not included yet?
112
+
113
+ - hosted service
114
+ - dashboard
115
+ - remote registry
116
+ - real signature verification
117
+ - community map execution
118
+
119
+ ## Install
120
+
121
+ See [docs/INSTALL.md](docs/INSTALL.md) for Windows PowerShell-first setup.
122
+
123
+ ## Install status
124
+
125
+ - local editable install is supported
126
+ - PyPI publishing is future work
127
+ - use [docs/INSTALL.md](docs/INSTALL.md) for setup
128
+ - see [docs/PACKAGING.md](docs/PACKAGING.md) for local packaging notes
129
+ - `runewall package pypi-check` is a local readiness check only
130
+ - `runewall package dist-check` is a local artifact presence check only
131
+
132
+ ## Quickstart
133
+
134
+ See [docs/QUICKSTART.md](docs/QUICKSTART.md) for a safe first walkthrough.
135
+
136
+ ## Demo
137
+
138
+ See [demos/README.md](demos/README.md) for a 60-second local-only, token-free demo.
139
+
140
+ ## 60-second demo
141
+
142
+ Run the local demo with:
143
+
144
+ ```powershell
145
+ .\demos\runewall_60_second_demo.ps1
146
+ ```
147
+
148
+ It shows:
149
+
150
+ - version
151
+ - safe profile
152
+ - policy audit
153
+ - dry-run
154
+ - community package verify
155
+ - MCP status
156
+ - SDK status
157
+
158
+ ## MCP
159
+
160
+ Runewall includes a local MCP stdio surface for agent safety checks.
161
+
162
+ ```powershell
163
+ runewall mcp status
164
+ runewall mcp serve --once
165
+ runewall mcp serve
166
+ ```
167
+
168
+ See [docs/MCP_CLIENT_EXAMPLES.md](docs/MCP_CLIENT_EXAMPLES.md) for more MCP examples.
169
+
170
+ ## Python SDK preview
171
+
172
+ ```python
173
+ from runewall.sdk import policy_test, dry_run
174
+
175
+ print(policy_test("map.execute"))
176
+ print(dry_run("github", "create_issue", {"repo": "user/repo", "title": "Bug"}))
177
+ ```
178
+
179
+ - `runewall sdk status`
180
+ - `runewall sdk status --json`
181
+ - SDK is local-only
182
+ - `execute` is not exposed yet
183
+ - `dry_run` does not call external APIs
184
+
185
+ ## Community package verify
186
+
187
+ Use community package verify as the recommended local gate before community map import or review.
188
+
189
+ ```powershell
190
+ runewall maps community package verify examples/community-maps
191
+ runewall maps community package verify examples/community-maps --json
192
+ ```
193
+
194
+ Verify checks manifest validation, SHA-256 checksums, signing status, trusted key status, and execution safety posture.
195
+
196
+ Verify does not import maps, execute maps, download remote files, or call external APIs.
197
+
198
+ ## More docs
199
+
200
+ - [docs/INSTALL.md](docs/INSTALL.md)
201
+ - [docs/PACKAGING.md](docs/PACKAGING.md)
202
+ - [docs/QUICKSTART.md](docs/QUICKSTART.md)
203
+ - [docs/ROADMAP.md](docs/ROADMAP.md)
204
+ - [demos/README.md](demos/README.md)
205
+ - [docs/COMMUNITY_MAPS.md](docs/COMMUNITY_MAPS.md)
206
+ - [docs/PYTHON_SDK_EXAMPLES.md](docs/PYTHON_SDK_EXAMPLES.md)
@@ -0,0 +1,42 @@
1
+ # Runewall Starter Folder
2
+
3
+ Open this folder in VS Code and ask Codex to build one slice at a time.
4
+
5
+ Start with this prompt:
6
+
7
+ ```text
8
+ You are building Runewall.
9
+
10
+ Read:
11
+ - brain/runewall-brain-bundle.md
12
+ - brain/runewall-technical-spec.md
13
+
14
+ Build ONLY the initial Python package skeleton from the technical spec.
15
+
16
+ Do not build dashboard.
17
+ Do not build Playwright/browser translation.
18
+ Do not build maps yet.
19
+ Do not build TypeScript yet.
20
+ Do not add extra features.
21
+
22
+ Create:
23
+ - pyproject.toml
24
+ - LICENSE with MIT
25
+ - README.md placeholder
26
+ - runewall/__init__.py
27
+ - runewall/core/__init__.py
28
+ - runewall/core/models.py
29
+ - runewall/core/db.py
30
+ - runewall/core/log.py
31
+ - runewall/cli/__init__.py
32
+ - runewall/cli/main.py
33
+ - tests/conftest.py
34
+ - tests/core/test_log.py
35
+
36
+ Goal:
37
+ - `runewall init` creates `.runewall/runewall.db`
38
+ - SQLite schema includes actions, snapshots, rules, checkpoints
39
+ - A test can create an Action, save it, and list it back
40
+
41
+ Keep the implementation small, clean, typed, and tested.
42
+ ```