shramikfont 0.2.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 (36) hide show
  1. shramikfont-0.2.0/LICENSE +23 -0
  2. shramikfont-0.2.0/PKG-INFO +239 -0
  3. shramikfont-0.2.0/README.md +214 -0
  4. shramikfont-0.2.0/pyproject.toml +38 -0
  5. shramikfont-0.2.0/setup.cfg +4 -0
  6. shramikfont-0.2.0/shramikfont/__init__.py +45 -0
  7. shramikfont-0.2.0/shramikfont/banner.py +50 -0
  8. shramikfont-0.2.0/shramikfont/cli.py +139 -0
  9. shramikfont-0.2.0/shramikfont/colors.py +61 -0
  10. shramikfont-0.2.0/shramikfont/demo.py +51 -0
  11. shramikfont-0.2.0/shramikfont/effects.py +172 -0
  12. shramikfont-0.2.0/shramikfont/lovable.py +287 -0
  13. shramikfont-0.2.0/shramikfont/mission/__init__.py +53 -0
  14. shramikfont-0.2.0/shramikfont/mission/achievements.py +88 -0
  15. shramikfont-0.2.0/shramikfont/mission/airgap.py +51 -0
  16. shramikfont-0.2.0/shramikfont/mission/authorization.py +37 -0
  17. shramikfont-0.2.0/shramikfont/mission/dashboard.py +53 -0
  18. shramikfont-0.2.0/shramikfont/mission/evidence.py +37 -0
  19. shramikfont-0.2.0/shramikfont/mission/fingerprint.py +73 -0
  20. shramikfont-0.2.0/shramikfont/mission/gate.py +94 -0
  21. shramikfont-0.2.0/shramikfont/mission/integrity.py +74 -0
  22. shramikfont-0.2.0/shramikfont/mission/patch.py +86 -0
  23. shramikfont-0.2.0/shramikfont/mission/readiness.py +131 -0
  24. shramikfont-0.2.0/shramikfont/mission/timeline.py +57 -0
  25. shramikfont-0.2.0/shramikfont/profiles.py +60 -0
  26. shramikfont-0.2.0/shramikfont/safety.py +105 -0
  27. shramikfont-0.2.0/shramikfont/themes.py +153 -0
  28. shramikfont-0.2.0/shramikfont.egg-info/PKG-INFO +239 -0
  29. shramikfont-0.2.0/shramikfont.egg-info/SOURCES.txt +34 -0
  30. shramikfont-0.2.0/shramikfont.egg-info/dependency_links.txt +1 -0
  31. shramikfont-0.2.0/shramikfont.egg-info/entry_points.txt +2 -0
  32. shramikfont-0.2.0/shramikfont.egg-info/top_level.txt +1 -0
  33. shramikfont-0.2.0/tests/test_fingerprint.py +36 -0
  34. shramikfont-0.2.0/tests/test_readiness_gate.py +92 -0
  35. shramikfont-0.2.0/tests/test_safety.py +63 -0
  36. shramikfont-0.2.0/tests/test_themes_isolated.py +46 -0
@@ -0,0 +1,23 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 SHRAMIK
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.
22
+
23
+ shramik.io · shramik.ai · shramik.tech
@@ -0,0 +1,239 @@
1
+ Metadata-Version: 2.4
2
+ Name: shramikfont
3
+ Version: 0.2.0
4
+ Summary: Mission-assurance personality layer for command-line tools. The worker. The mission. The font.
5
+ Author: SHRAMIK
6
+ License: MIT
7
+ Project-URL: Homepage, https://shramik.io
8
+ Project-URL: Documentation, https://shramik.io/docs
9
+ Project-URL: Repository, https://github.com/SHRAMIK-IO/shramikfont
10
+ Keywords: cli,terminal,ui,mission-assurance,load-testing,federal,ansi,shramik
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.8
18
+ Classifier: Topic :: Software Development :: Testing
19
+ Classifier: Topic :: System :: Monitoring
20
+ Classifier: Topic :: Terminals
21
+ Requires-Python: >=3.8
22
+ Description-Content-Type: text/markdown
23
+ License-File: LICENSE
24
+ Dynamic: license-file
25
+
26
+ # SHRAMIK · The worker. The mission. The font.
27
+
28
+ [![test](https://github.com/SHRAMIK-IO/shramikfont/actions/workflows/test.yml/badge.svg)](https://github.com/SHRAMIK-IO/shramikfont/actions/workflows/test.yml)
29
+ [![PyPI](https://img.shields.io/pypi/v/shramikfont.svg)](https://pypi.org/project/shramikfont/)
30
+ [![Python](https://img.shields.io/pypi/pyversions/shramikfont.svg)](https://pypi.org/project/shramikfont/)
31
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
32
+
33
+ > Drop-in mission-assurance personality for your command-line tools.
34
+ > Pure Python. **Zero dependencies.** CI/CD safe. Federal-friendly.
35
+
36
+ ```
37
+ ◉ SHRAMIK MISSION ASSURANCE PLATFORM
38
+ Validation → Performance → Readiness → Evidence → Authorization
39
+ One Platform. One Workflow. One Mission.
40
+ ```
41
+
42
+ ---
43
+
44
+ ## Why
45
+
46
+ Most CLI tools look like CLI tools. **SHRAMIK** tools look like *mission consoles* — without losing a single deterministic guarantee. The engine stays boring. Reports stay clean. The exit code is still the contract. The CLI just gets a soul.
47
+
48
+ Fonts wrap text in personality. **ShramikFont** wraps your CLI in personality. Drop it in, pick a theme, ship it.
49
+
50
+ ---
51
+
52
+ ## The five-line drop-in
53
+
54
+ ```python
55
+ import shramikfont as sf
56
+ from shramikfont.cli import add_shramik_args
57
+
58
+ parser = add_shramik_args(your_existing_argparser)
59
+ args = parser.parse_args()
60
+ theme, _ = sf.resolve_theme(args.ui_theme) # auto-falls-back to 'none' in CI
61
+ sf.print_banner(theme, edition="Lite") # silent in CI, hype in futuristic mode
62
+ # ... your engine runs untouched ...
63
+ sf.mission.print_dashboard(theme, metrics) # executive-friendly post-run summary
64
+ ```
65
+
66
+ That's the deal. **Engine logic stays where it is.** ShramikFont only writes to stdout, only after the engine asks it to, and only when the environment allows.
67
+
68
+ ---
69
+
70
+ ## What it looks like
71
+
72
+ | Theme | Use for | Vibe |
73
+ |---|---|---|
74
+ | `classic` | Lite & Pro defaults | Familiar. Minimal. Doesn't show off. |
75
+ | `vintage` | Titan default. Federal proof runs. | Mature federal engineering aesthetic. No animation. |
76
+ | `futuristic` | Sales demos. Walkthroughs. `--demo-ui`. | Full Palantir / Anduril hype. Cyber-glitch banner, pulses, loading bars. |
77
+ | `none` | CI/CD, `--raw`, `--json`, pipes | Pure machine-readable. Auto-forced. |
78
+
79
+ ---
80
+
81
+ ## Mission profiles
82
+
83
+ ```bash
84
+ --profile smoke # Quick dev validation. Minimal output.
85
+ --profile stress # Heavy load. Vintage theme. Minimal UI.
86
+ --profile ci-gate # CI/CD. Forces theme=none, suppresses banner, deterministic.
87
+ --profile federal-proof # Fingerprint + integrity manifest + authorization badge + mission patch.
88
+ --profile airgap # Highlights no-internet, no-telemetry posture.
89
+ ```
90
+
91
+ ---
92
+
93
+ ## The 12 lovable features
94
+
95
+ 1. **Mission Readiness Score** (0–100) blending SLA / errors / latency / throughput
96
+ 2. **Deployment Gate** — `PASS` or `BLOCKED` with enumerated reasons. Drives exit code.
97
+ 3. **Run Fingerprint** — `SK-LITE-YYYYMMDD-HHMMSS-XXXX`. Short, sortable, shareable.
98
+ 4. **Mission Control Dashboard** — executive-friendly ASCII summary
99
+ 5. **Evidence Vault** — tidy summary of report artifacts with status badges
100
+ 6. **Mission Timeline** — Anduril-style timestamped event log
101
+ 7. **SHA256 Integrity Manifest** — federal-audit-grade artifact verification
102
+ 8. **Authorization Badge** — `READY FOR REVIEW` / `REQUIRES REMEDIATION` (RMF / ATO language)
103
+ 9. **Air-Gap Readiness Panel** — declares the run's air-gap posture, screenshot-worthy
104
+ 10. **Mission Patch** — ASCII patch in-terminal + SVG export for Slack / stickers
105
+ 11. **Achievement Unlocks** — `ZERO_ERROR_MISSION`, `SUSTAINED_TPS_500`, etc.
106
+ 12. **Mission Log** — `~/.shramik/log.jsonl` remembers your last N runs
107
+
108
+ Plus a handful of pure-delight extras:
109
+
110
+ - `shramikfont vibe` — today's mission vibe (morning / afternoon / Friday / weekend)
111
+ - `shramikfont fortune` — Unix-style mission aphorisms
112
+ - `shramikfont demo` — the full boot-sequence hype reel
113
+ - `shramikfont screensaver` — looping MISSION READY pulse until Ctrl+C
114
+ - `shramikfont readme` — pretty-prints this README in-terminal
115
+ - `shramikfont missions` — your last 10 missions, color-coded
116
+ - `shramikfont forge --plan pro` — mints a demo license key (cosmetic)
117
+ - `shramikfont patch --export run.svg` — exports an SVG mission patch
118
+ - `--sfx` — opt-in sound effects on PASS / BLOCK (macOS / Linux / Windows)
119
+
120
+ ---
121
+
122
+ ## Safety guarantees
123
+
124
+ ShramikFont **never** influences the engine. Hard rules enforced by `shramikfont.safety`:
125
+
126
+ - `CI=true`, `GITHUB_ACTIONS`, `GITLAB_CI`, `JENKINS_HOME`, `TF_BUILD`, `BUILDKITE`, `CIRCLECI`, `TRAVIS`, `BAMBOO_BUILD_NUMBER`, `TEAMCITY_VERSION`, `CODEBUILD_BUILD_ID`, `DRONE` → **theme forced to `none`**
127
+ - `--raw` / `--json` / `--output-json` → **theme forced to `none`** (cannot be overridden, ever)
128
+ - Stdout not a TTY (piped or redirected) → **theme forced to `none`**
129
+ - `--force-ui` overrides CI auto-detect but **not** `--raw` / `--json`
130
+ - Themes carry an explicit `sleep_multiplier`. Non-futuristic themes set it to `0.0` — no animation, no delays, no surprises in long-running sessions.
131
+
132
+ The headline guarantee: **switching themes never changes engine metrics.** Covered by `tests/test_themes_isolated.py::test_readiness_score_identical_regardless_of_theme`.
133
+
134
+ ---
135
+
136
+ ## Try it now
137
+
138
+ ```bash
139
+ # 1. Run the full hype-reel demo
140
+ python3 -m shramikfont.cli demo
141
+
142
+ # 2. Run the example load tester in futuristic mode
143
+ python3 examples/shramik_lite.py --url https://httpbin.org/get \
144
+ --users 10 --duration 10 --ui-theme futuristic
145
+
146
+ # 3. Run the same thing as a federal proof
147
+ python3 examples/shramik_lite.py --url https://httpbin.org/get \
148
+ --users 10 --duration 10 \
149
+ --profile federal-proof --mission-patch \
150
+ --export-patch ~/Desktop/run.svg
151
+
152
+ # 4. Run it as a CI/CD gate (auto-disables all UI, deterministic 2-line output)
153
+ python3 examples/shramik_lite.py --url https://httpbin.org/get \
154
+ --users 10 --duration 10 --raw
155
+
156
+ # 5. Have fun
157
+ python3 -m shramikfont.cli vibe
158
+ python3 -m shramikfont.cli fortune
159
+ python3 -m shramikfont.cli patch --edition LITE --status READY
160
+ ```
161
+
162
+ ---
163
+
164
+ ## Install
165
+
166
+ ```bash
167
+ pip install -e . # for now (PyPI later)
168
+ ```
169
+
170
+ Or just drop the `shramikfont/` folder next to your script. **Pure stdlib means zero install friction.**
171
+
172
+ ---
173
+
174
+ ## Editions
175
+
176
+ ShramikFont ships with one PoC: `examples/shramik_lite.py`. It's a real load-tester (the engine from the v1.7.0 production Lite binary) with ShramikFont wrapped around it.
177
+
178
+ Future PoCs will follow the same pattern: take an existing engine, leave the engine alone, wrap the CLI surface in ShramikFont.
179
+
180
+ | Edition | Default theme | Status |
181
+ |---|---|---|
182
+ | `shramik_lite.py` | classic | ✅ v0.1.0 (`examples/`) — single-file load tester |
183
+ | `shramik_pro.py` | classic | ✅ v0.2.0 (`examples/`) — full Pro engine: SLA, --rampup, --pacing, bearer/basic auth, HTML/CSV/JSON exports, CPU/mem telemetry |
184
+ | `shramik_check.py` | classic | ✅ v0.2.0 (`examples/`) — functional API validation (subcommand CLI: `doctor` / `run`) |
185
+ | `shramik_flow.py` | classic | ✅ v0.2.0 (`examples/`) — CI/CD operational validation (subcommand CLI: `version` / `doctor` / `check` / `report`) |
186
+ | `shramik_titan.py` | vintage | planned (when the Titan async engine lands) |
187
+
188
+ ---
189
+
190
+ ## Architecture
191
+
192
+ ```
193
+ your_cli.py
194
+
195
+ parse args → add_shramik_args()
196
+
197
+ resolve theme → sf.resolve_theme() (auto-safe in CI / --raw / --json)
198
+
199
+ print banner → sf.print_banner() (silent if theme.name == 'none')
200
+
201
+ ─────── your engine runs untouched ───────
202
+
203
+ collect metrics → dict
204
+
205
+ sf.mission.print_dashboard(theme, metrics)
206
+ sf.mission.print_readiness(theme, inputs)
207
+ sf.mission.print_gate(theme, gate_result)
208
+ sf.mission.print_fingerprint(theme, run_id)
209
+ sf.mission.print_timeline(theme, events)
210
+ sf.mission.print_mission_patch(theme, run_id)
211
+
212
+ sys.exit(gate_result.exit_code)
213
+ ```
214
+
215
+ The presentation layer **never** lives inside the request loop, latency collection, metrics engine, report serializer, or SLA evaluator. That's the contract.
216
+
217
+ ---
218
+
219
+ ## Tests
220
+
221
+ ```bash
222
+ python3 -m pytest tests/ -v
223
+ ```
224
+
225
+ 27 tests covering safety guardrails, readiness scoring, deployment gate logic, fingerprint format, and the theme-isolation guarantee.
226
+
227
+ ---
228
+
229
+ ## Domains
230
+
231
+ - **shramik.io** — primary
232
+ - **shramik.ai** — reserved
233
+ - **shramik.tech** — reserved
234
+
235
+ ---
236
+
237
+ ## License
238
+
239
+ MIT · © 2026 SHRAMIK · [shramik.io](https://shramik.io)
@@ -0,0 +1,214 @@
1
+ # SHRAMIK · The worker. The mission. The font.
2
+
3
+ [![test](https://github.com/SHRAMIK-IO/shramikfont/actions/workflows/test.yml/badge.svg)](https://github.com/SHRAMIK-IO/shramikfont/actions/workflows/test.yml)
4
+ [![PyPI](https://img.shields.io/pypi/v/shramikfont.svg)](https://pypi.org/project/shramikfont/)
5
+ [![Python](https://img.shields.io/pypi/pyversions/shramikfont.svg)](https://pypi.org/project/shramikfont/)
6
+ [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
7
+
8
+ > Drop-in mission-assurance personality for your command-line tools.
9
+ > Pure Python. **Zero dependencies.** CI/CD safe. Federal-friendly.
10
+
11
+ ```
12
+ ◉ SHRAMIK MISSION ASSURANCE PLATFORM
13
+ Validation → Performance → Readiness → Evidence → Authorization
14
+ One Platform. One Workflow. One Mission.
15
+ ```
16
+
17
+ ---
18
+
19
+ ## Why
20
+
21
+ Most CLI tools look like CLI tools. **SHRAMIK** tools look like *mission consoles* — without losing a single deterministic guarantee. The engine stays boring. Reports stay clean. The exit code is still the contract. The CLI just gets a soul.
22
+
23
+ Fonts wrap text in personality. **ShramikFont** wraps your CLI in personality. Drop it in, pick a theme, ship it.
24
+
25
+ ---
26
+
27
+ ## The five-line drop-in
28
+
29
+ ```python
30
+ import shramikfont as sf
31
+ from shramikfont.cli import add_shramik_args
32
+
33
+ parser = add_shramik_args(your_existing_argparser)
34
+ args = parser.parse_args()
35
+ theme, _ = sf.resolve_theme(args.ui_theme) # auto-falls-back to 'none' in CI
36
+ sf.print_banner(theme, edition="Lite") # silent in CI, hype in futuristic mode
37
+ # ... your engine runs untouched ...
38
+ sf.mission.print_dashboard(theme, metrics) # executive-friendly post-run summary
39
+ ```
40
+
41
+ That's the deal. **Engine logic stays where it is.** ShramikFont only writes to stdout, only after the engine asks it to, and only when the environment allows.
42
+
43
+ ---
44
+
45
+ ## What it looks like
46
+
47
+ | Theme | Use for | Vibe |
48
+ |---|---|---|
49
+ | `classic` | Lite & Pro defaults | Familiar. Minimal. Doesn't show off. |
50
+ | `vintage` | Titan default. Federal proof runs. | Mature federal engineering aesthetic. No animation. |
51
+ | `futuristic` | Sales demos. Walkthroughs. `--demo-ui`. | Full Palantir / Anduril hype. Cyber-glitch banner, pulses, loading bars. |
52
+ | `none` | CI/CD, `--raw`, `--json`, pipes | Pure machine-readable. Auto-forced. |
53
+
54
+ ---
55
+
56
+ ## Mission profiles
57
+
58
+ ```bash
59
+ --profile smoke # Quick dev validation. Minimal output.
60
+ --profile stress # Heavy load. Vintage theme. Minimal UI.
61
+ --profile ci-gate # CI/CD. Forces theme=none, suppresses banner, deterministic.
62
+ --profile federal-proof # Fingerprint + integrity manifest + authorization badge + mission patch.
63
+ --profile airgap # Highlights no-internet, no-telemetry posture.
64
+ ```
65
+
66
+ ---
67
+
68
+ ## The 12 lovable features
69
+
70
+ 1. **Mission Readiness Score** (0–100) blending SLA / errors / latency / throughput
71
+ 2. **Deployment Gate** — `PASS` or `BLOCKED` with enumerated reasons. Drives exit code.
72
+ 3. **Run Fingerprint** — `SK-LITE-YYYYMMDD-HHMMSS-XXXX`. Short, sortable, shareable.
73
+ 4. **Mission Control Dashboard** — executive-friendly ASCII summary
74
+ 5. **Evidence Vault** — tidy summary of report artifacts with status badges
75
+ 6. **Mission Timeline** — Anduril-style timestamped event log
76
+ 7. **SHA256 Integrity Manifest** — federal-audit-grade artifact verification
77
+ 8. **Authorization Badge** — `READY FOR REVIEW` / `REQUIRES REMEDIATION` (RMF / ATO language)
78
+ 9. **Air-Gap Readiness Panel** — declares the run's air-gap posture, screenshot-worthy
79
+ 10. **Mission Patch** — ASCII patch in-terminal + SVG export for Slack / stickers
80
+ 11. **Achievement Unlocks** — `ZERO_ERROR_MISSION`, `SUSTAINED_TPS_500`, etc.
81
+ 12. **Mission Log** — `~/.shramik/log.jsonl` remembers your last N runs
82
+
83
+ Plus a handful of pure-delight extras:
84
+
85
+ - `shramikfont vibe` — today's mission vibe (morning / afternoon / Friday / weekend)
86
+ - `shramikfont fortune` — Unix-style mission aphorisms
87
+ - `shramikfont demo` — the full boot-sequence hype reel
88
+ - `shramikfont screensaver` — looping MISSION READY pulse until Ctrl+C
89
+ - `shramikfont readme` — pretty-prints this README in-terminal
90
+ - `shramikfont missions` — your last 10 missions, color-coded
91
+ - `shramikfont forge --plan pro` — mints a demo license key (cosmetic)
92
+ - `shramikfont patch --export run.svg` — exports an SVG mission patch
93
+ - `--sfx` — opt-in sound effects on PASS / BLOCK (macOS / Linux / Windows)
94
+
95
+ ---
96
+
97
+ ## Safety guarantees
98
+
99
+ ShramikFont **never** influences the engine. Hard rules enforced by `shramikfont.safety`:
100
+
101
+ - `CI=true`, `GITHUB_ACTIONS`, `GITLAB_CI`, `JENKINS_HOME`, `TF_BUILD`, `BUILDKITE`, `CIRCLECI`, `TRAVIS`, `BAMBOO_BUILD_NUMBER`, `TEAMCITY_VERSION`, `CODEBUILD_BUILD_ID`, `DRONE` → **theme forced to `none`**
102
+ - `--raw` / `--json` / `--output-json` → **theme forced to `none`** (cannot be overridden, ever)
103
+ - Stdout not a TTY (piped or redirected) → **theme forced to `none`**
104
+ - `--force-ui` overrides CI auto-detect but **not** `--raw` / `--json`
105
+ - Themes carry an explicit `sleep_multiplier`. Non-futuristic themes set it to `0.0` — no animation, no delays, no surprises in long-running sessions.
106
+
107
+ The headline guarantee: **switching themes never changes engine metrics.** Covered by `tests/test_themes_isolated.py::test_readiness_score_identical_regardless_of_theme`.
108
+
109
+ ---
110
+
111
+ ## Try it now
112
+
113
+ ```bash
114
+ # 1. Run the full hype-reel demo
115
+ python3 -m shramikfont.cli demo
116
+
117
+ # 2. Run the example load tester in futuristic mode
118
+ python3 examples/shramik_lite.py --url https://httpbin.org/get \
119
+ --users 10 --duration 10 --ui-theme futuristic
120
+
121
+ # 3. Run the same thing as a federal proof
122
+ python3 examples/shramik_lite.py --url https://httpbin.org/get \
123
+ --users 10 --duration 10 \
124
+ --profile federal-proof --mission-patch \
125
+ --export-patch ~/Desktop/run.svg
126
+
127
+ # 4. Run it as a CI/CD gate (auto-disables all UI, deterministic 2-line output)
128
+ python3 examples/shramik_lite.py --url https://httpbin.org/get \
129
+ --users 10 --duration 10 --raw
130
+
131
+ # 5. Have fun
132
+ python3 -m shramikfont.cli vibe
133
+ python3 -m shramikfont.cli fortune
134
+ python3 -m shramikfont.cli patch --edition LITE --status READY
135
+ ```
136
+
137
+ ---
138
+
139
+ ## Install
140
+
141
+ ```bash
142
+ pip install -e . # for now (PyPI later)
143
+ ```
144
+
145
+ Or just drop the `shramikfont/` folder next to your script. **Pure stdlib means zero install friction.**
146
+
147
+ ---
148
+
149
+ ## Editions
150
+
151
+ ShramikFont ships with one PoC: `examples/shramik_lite.py`. It's a real load-tester (the engine from the v1.7.0 production Lite binary) with ShramikFont wrapped around it.
152
+
153
+ Future PoCs will follow the same pattern: take an existing engine, leave the engine alone, wrap the CLI surface in ShramikFont.
154
+
155
+ | Edition | Default theme | Status |
156
+ |---|---|---|
157
+ | `shramik_lite.py` | classic | ✅ v0.1.0 (`examples/`) — single-file load tester |
158
+ | `shramik_pro.py` | classic | ✅ v0.2.0 (`examples/`) — full Pro engine: SLA, --rampup, --pacing, bearer/basic auth, HTML/CSV/JSON exports, CPU/mem telemetry |
159
+ | `shramik_check.py` | classic | ✅ v0.2.0 (`examples/`) — functional API validation (subcommand CLI: `doctor` / `run`) |
160
+ | `shramik_flow.py` | classic | ✅ v0.2.0 (`examples/`) — CI/CD operational validation (subcommand CLI: `version` / `doctor` / `check` / `report`) |
161
+ | `shramik_titan.py` | vintage | planned (when the Titan async engine lands) |
162
+
163
+ ---
164
+
165
+ ## Architecture
166
+
167
+ ```
168
+ your_cli.py
169
+
170
+ parse args → add_shramik_args()
171
+
172
+ resolve theme → sf.resolve_theme() (auto-safe in CI / --raw / --json)
173
+
174
+ print banner → sf.print_banner() (silent if theme.name == 'none')
175
+
176
+ ─────── your engine runs untouched ───────
177
+
178
+ collect metrics → dict
179
+
180
+ sf.mission.print_dashboard(theme, metrics)
181
+ sf.mission.print_readiness(theme, inputs)
182
+ sf.mission.print_gate(theme, gate_result)
183
+ sf.mission.print_fingerprint(theme, run_id)
184
+ sf.mission.print_timeline(theme, events)
185
+ sf.mission.print_mission_patch(theme, run_id)
186
+
187
+ sys.exit(gate_result.exit_code)
188
+ ```
189
+
190
+ The presentation layer **never** lives inside the request loop, latency collection, metrics engine, report serializer, or SLA evaluator. That's the contract.
191
+
192
+ ---
193
+
194
+ ## Tests
195
+
196
+ ```bash
197
+ python3 -m pytest tests/ -v
198
+ ```
199
+
200
+ 27 tests covering safety guardrails, readiness scoring, deployment gate logic, fingerprint format, and the theme-isolation guarantee.
201
+
202
+ ---
203
+
204
+ ## Domains
205
+
206
+ - **shramik.io** — primary
207
+ - **shramik.ai** — reserved
208
+ - **shramik.tech** — reserved
209
+
210
+ ---
211
+
212
+ ## License
213
+
214
+ MIT · © 2026 SHRAMIK · [shramik.io](https://shramik.io)
@@ -0,0 +1,38 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "shramikfont"
7
+ version = "0.2.0"
8
+ description = "Mission-assurance personality layer for command-line tools. The worker. The mission. The font."
9
+ readme = "README.md"
10
+ requires-python = ">=3.8"
11
+ license = {text = "MIT"}
12
+ authors = [{name = "SHRAMIK"}]
13
+ keywords = ["cli", "terminal", "ui", "mission-assurance", "load-testing", "federal", "ansi", "shramik"]
14
+ classifiers = [
15
+ "Development Status :: 4 - Beta",
16
+ "Environment :: Console",
17
+ "Intended Audience :: Developers",
18
+ "License :: OSI Approved :: MIT License",
19
+ "Operating System :: OS Independent",
20
+ "Programming Language :: Python :: 3",
21
+ "Programming Language :: Python :: 3.8",
22
+ "Topic :: Software Development :: Testing",
23
+ "Topic :: System :: Monitoring",
24
+ "Topic :: Terminals",
25
+ ]
26
+ dependencies = []
27
+
28
+ [project.urls]
29
+ Homepage = "https://shramik.io"
30
+ Documentation = "https://shramik.io/docs"
31
+ Repository = "https://github.com/SHRAMIK-IO/shramikfont"
32
+
33
+ [project.scripts]
34
+ shramikfont = "shramikfont.cli:main"
35
+
36
+ [tool.setuptools.packages.find]
37
+ where = ["."]
38
+ include = ["shramikfont*"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,45 @@
1
+ """
2
+ ShramikFont — Mission-assurance personality for command-line tools.
3
+
4
+ The worker. The mission. The font.
5
+
6
+ Drop ShramikFont into any CLI script and the script gets:
7
+ - 4 themes (classic / vintage / futuristic / none) with safe defaults
8
+ - Auto-disable in CI/CD and --raw / --json modes
9
+ - Mission readiness score + deployment gate + run fingerprint
10
+ - Evidence vault, integrity manifest, authorization badge
11
+ - All the lovable extras (vibe, fortune, mission patches, achievements)
12
+
13
+ Pure stdlib. Zero dependencies. Python 3.8+.
14
+
15
+ shramik.io · © 2026 SHRAMIK
16
+ """
17
+
18
+ __version__ = "0.2.0"
19
+ __author__ = "SHRAMIK"
20
+ __license__ = "MIT"
21
+ __url__ = "https://shramik.io"
22
+
23
+ from .themes import Theme, get_theme, resolve_theme
24
+ from .safety import is_safe_mode, force_none_if_unsafe, ci_detected
25
+ from .banner import print_banner, mission_subtitle
26
+ from .effects import cyber_glitch, pulse, loading_bar, panel, divider, fast_type
27
+ from . import colors
28
+
29
+ __all__ = [
30
+ "Theme",
31
+ "get_theme",
32
+ "resolve_theme",
33
+ "is_safe_mode",
34
+ "force_none_if_unsafe",
35
+ "ci_detected",
36
+ "print_banner",
37
+ "mission_subtitle",
38
+ "cyber_glitch",
39
+ "pulse",
40
+ "loading_bar",
41
+ "panel",
42
+ "divider",
43
+ "fast_type",
44
+ "colors",
45
+ ]
@@ -0,0 +1,50 @@
1
+ """
2
+ The SHRAMIK banner — the first impression every command makes.
3
+ """
4
+
5
+ from .effects import cyber_glitch, fast_type, divider
6
+ from .themes import _THEMES as _NAMED_THEMES, CLASSIC
7
+
8
+
9
+ SHRAMIK_TITLE = "SHRAMIK MISSION ASSURANCE PLATFORM"
10
+
11
+ SHRAMIK_PILLARS = "Validation → Performance → Readiness → Evidence → Authorization"
12
+
13
+ SHRAMIK_TAGLINE = "One Platform. One Workflow. One Mission."
14
+
15
+
16
+ def print_banner(theme=None, *, edition=None, title=None):
17
+ """
18
+ Print the standard SHRAMIK banner. Behaviour scales with the theme:
19
+ futuristic — cyber-glitch animation + pillars + tagline
20
+ vintage — clean bold title + pillars
21
+ classic — minimal one-line banner
22
+ none — silent (auto-disabled in CI / --raw / --json)
23
+ """
24
+ t = theme or CLASSIC
25
+ if t.name == "none":
26
+ return
27
+
28
+ display_title = title or SHRAMIK_TITLE
29
+ if edition:
30
+ display_title = f"{display_title} · {edition.upper()}"
31
+
32
+ if t.name == "futuristic":
33
+ cyber_glitch(display_title, theme=t)
34
+ fast_type(SHRAMIK_PILLARS, theme=t, color=t.accent, speed=0.003)
35
+ fast_type(SHRAMIK_TAGLINE, theme=t, color=t.success, speed=0.004)
36
+ elif t.name == "vintage":
37
+ divider(theme=t)
38
+ print(t.color(f" ◉ {display_title}", t.accent, bold=True))
39
+ print(t.color(f" {SHRAMIK_PILLARS}", t.info))
40
+ divider(theme=t)
41
+ else: # classic
42
+ print(t.color(f"── {display_title} ──", t.accent, bold=True))
43
+
44
+
45
+ def mission_subtitle(text, theme=None):
46
+ """Smaller secondary line below the main banner."""
47
+ t = theme or CLASSIC
48
+ if t.name == "none":
49
+ return
50
+ print(t.color(f" // {text}", t.info))