seif-cli 0.4.3__tar.gz → 0.5.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.
- {seif_cli-0.4.3/src/seif_cli.egg-info → seif_cli-0.5.1}/PKG-INFO +24 -15
- {seif_cli-0.4.3 → seif_cli-0.5.1}/README.md +23 -14
- {seif_cli-0.4.3 → seif_cli-0.5.1}/pyproject.toml +5 -1
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/analysis/stance_detector.py +43 -4
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/cli/cli.py +659 -0
- seif_cli-0.5.1/src/seif/cli/setup.py +443 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/cli/wrapper.py +293 -34
- seif_cli-0.5.1/src/seif/context/host_init.py +319 -0
- seif_cli-0.5.1/src/seif/context/model_probe.py +319 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/registry.py +126 -0
- seif_cli-0.5.1/src/seif/plugins/__init__.py +0 -0
- seif_cli-0.5.1/src/seif/plugins/claude-code/hooks/hooks.json +50 -0
- seif_cli-0.5.1/src/seif/plugins/claude-code/scripts/circuit-check.sh +34 -0
- seif_cli-0.5.1/src/seif/plugins/claude-code/scripts/circuit-monitor.py +223 -0
- seif_cli-0.5.1/src/seif/plugins/claude-code/scripts/classification-gate.sh +141 -0
- seif_cli-0.5.1/src/seif/plugins/claude-code/scripts/kernel-seed.py +95 -0
- seif_cli-0.5.1/src/seif/plugins/claude-code/scripts/orchestra-probe.py +40 -0
- seif_cli-0.5.1/src/seif/plugins/claude-code/scripts/quality-gate.sh +35 -0
- seif_cli-0.5.1/src/seif/plugins/claude-code/scripts/session-end.sh +182 -0
- seif_cli-0.5.1/src/seif/plugins/claude-code/scripts/session-start.sh +262 -0
- seif_cli-0.5.1/src/seif/plugins/claude-code/skills/gate/SKILL.md +18 -0
- seif_cli-0.5.1/src/seif/plugins/claude-code/skills/status/SKILL.md +54 -0
- seif_cli-0.5.1/src/seif/plugins/claude-code/skills/sync/SKILL.md +17 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1/src/seif_cli.egg-info}/PKG-INFO +24 -15
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif_cli.egg-info/SOURCES.txt +20 -0
- seif_cli-0.5.1/tests/test_audit_host.py +108 -0
- seif_cli-0.5.1/tests/test_host_init.py +163 -0
- seif_cli-0.5.1/tests/test_model_probe.py +147 -0
- seif_cli-0.5.1/tests/test_rebuild_registry.py +154 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_stance_detector.py +49 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/LICENSE +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/MANIFEST.in +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/setup.cfg +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/__init__.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/__main__.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/analysis/__init__.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/analysis/physical_constants.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/analysis/quality_gate.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/analysis/transcompiler.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/bridge/__init__.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/bridge/native_client.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/bridge/telegram_bot.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/cli/__init__.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/cli/__main__.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/cli/chat.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/cli/identity.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/cli/main.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/cli/resonance_display.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/cli/serve.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/cli/serve_v2.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/constants.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/__init__.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/advisor.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/code_compressor.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/context_bridge.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/context_importer.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/context_manager.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/context_qr.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/cycle.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/file_extractor.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/git_context.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/git_hooks.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/ingest.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/nucleus.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/ref.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/seif_io.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/sessions.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/context/workspace.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/core/__init__.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/core/fingerprint.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/core/resonance_encoding.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/core/resonance_gate.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/core/resonance_signal.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/core/signing.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/core/timestamping.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/core/transfer_function.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/core/triple_gate.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/data/RESONANCE.json +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/data/__init__.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/data/defaults/__init__.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/data/defaults/circuit-recovery-v1.seif +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/data/defaults/definitions-v1.seif +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/data/defaults/ise-dissonance-v1.seif +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/data/defaults/multi-agent-sync-v1.seif +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/data/defaults/onboarding.seif +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/data/defaults/partial-attention-axiom-v1.seif +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/data/defaults/seif-cycle-v1.seif +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/data/defaults/seif-os-architecture-v1.seif +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/data/defaults/triad-convergence-v1.seif +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/data/paths.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/security/__init__.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif/security/mode.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif_cli.egg-info/dependency_links.txt +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif_cli.egg-info/entry_points.txt +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif_cli.egg-info/requires.txt +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/src/seif_cli.egg-info/top_level.txt +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_advisor.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_canonical_inputs.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_code_compressor.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_collaborative_seif.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_context_qr.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_context_repo.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_git_context.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_git_hooks.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_init.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_quality_gate.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_ref.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_registry.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_resonance_gate.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_seif_io.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_transcompiler.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_transfer_function.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_triple_gate.py +0 -0
- {seif_cli-0.4.3 → seif_cli-0.5.1}/tests/test_workspace.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: seif-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.1
|
|
4
4
|
Summary: Measure AI output quality, protect sensitive data, watch your AI environment resonate. Quality Gate, Classification, Sentinel & Auto-Healing, SEIF OS.
|
|
5
5
|
Author: André Cunha Antero de Carvalho
|
|
6
6
|
License: CC-BY-NC-SA-4.0
|
|
@@ -184,29 +184,38 @@ open https://seifprotocol.com/auth
|
|
|
184
184
|
|
|
185
185
|
```bash
|
|
186
186
|
pip install seif-cli
|
|
187
|
+
cd your-project
|
|
188
|
+
seif
|
|
189
|
+
```
|
|
187
190
|
|
|
188
|
-
|
|
189
|
-
seif --quality-gate "Python 3.11 added tomllib" --role ai
|
|
190
|
-
seif --gate "SELECT * FROM users WHERE api_key = 'sk-...'"
|
|
191
|
-
seif --encode "any text"
|
|
191
|
+
That's it. One command. SEIF detects that your project is new, initializes `.seif/` context, installs Claude Code hooks, and launches Claude — all automatically.
|
|
192
192
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
193
|
+
On subsequent runs, `seif` sees everything is configured and launches Claude directly.
|
|
194
|
+
|
|
195
|
+
### What happens
|
|
196
|
+
|
|
197
|
+
| Event | What SEIF does |
|
|
198
|
+
|-------|---------------|
|
|
199
|
+
| Session starts | Loads `.seif/` context — your AI remembers |
|
|
200
|
+
| AI writes code | Classification gate blocks credential leaks |
|
|
201
|
+
| AI finishes writing | Quality gate measures stance (GROUNDED vs DRIFT) |
|
|
202
|
+
| You type `/gate` | Measures any text (Grade A-F) |
|
|
203
|
+
| You type `/sync` | Re-syncs project context |
|
|
204
|
+
| You type `/status` | Shows loaded modules and integration health |
|
|
198
205
|
|
|
199
206
|
---
|
|
200
207
|
|
|
201
|
-
## Claude Code
|
|
208
|
+
## Claude Code Integration
|
|
202
209
|
|
|
203
210
|
```bash
|
|
204
|
-
|
|
211
|
+
seif setup claude-code # one command — installs everything
|
|
212
|
+
seif setup --status # verify integration
|
|
213
|
+
seif setup --uninstall # clean removal
|
|
205
214
|
```
|
|
206
215
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
216
|
+
Installs **hooks** (session lifecycle, classification gate, quality gate) and **skills** (`/gate`, `/sync`, `/status`) into Claude Code. Works globally or per-project (`--project`).
|
|
217
|
+
|
|
218
|
+
> **Full guide**: [docs/QUICKSTART.md](docs/QUICKSTART.md) — everything a developer needs to get started.
|
|
210
219
|
|
|
211
220
|
---
|
|
212
221
|
|
|
@@ -140,29 +140,38 @@ open https://seifprotocol.com/auth
|
|
|
140
140
|
|
|
141
141
|
```bash
|
|
142
142
|
pip install seif-cli
|
|
143
|
+
cd your-project
|
|
144
|
+
seif
|
|
145
|
+
```
|
|
143
146
|
|
|
144
|
-
|
|
145
|
-
seif --quality-gate "Python 3.11 added tomllib" --role ai
|
|
146
|
-
seif --gate "SELECT * FROM users WHERE api_key = 'sk-...'"
|
|
147
|
-
seif --encode "any text"
|
|
147
|
+
That's it. One command. SEIF detects that your project is new, initializes `.seif/` context, installs Claude Code hooks, and launches Claude — all automatically.
|
|
148
148
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
149
|
+
On subsequent runs, `seif` sees everything is configured and launches Claude directly.
|
|
150
|
+
|
|
151
|
+
### What happens
|
|
152
|
+
|
|
153
|
+
| Event | What SEIF does |
|
|
154
|
+
|-------|---------------|
|
|
155
|
+
| Session starts | Loads `.seif/` context — your AI remembers |
|
|
156
|
+
| AI writes code | Classification gate blocks credential leaks |
|
|
157
|
+
| AI finishes writing | Quality gate measures stance (GROUNDED vs DRIFT) |
|
|
158
|
+
| You type `/gate` | Measures any text (Grade A-F) |
|
|
159
|
+
| You type `/sync` | Re-syncs project context |
|
|
160
|
+
| You type `/status` | Shows loaded modules and integration health |
|
|
154
161
|
|
|
155
162
|
---
|
|
156
163
|
|
|
157
|
-
## Claude Code
|
|
164
|
+
## Claude Code Integration
|
|
158
165
|
|
|
159
166
|
```bash
|
|
160
|
-
|
|
167
|
+
seif setup claude-code # one command — installs everything
|
|
168
|
+
seif setup --status # verify integration
|
|
169
|
+
seif setup --uninstall # clean removal
|
|
161
170
|
```
|
|
162
171
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
172
|
+
Installs **hooks** (session lifecycle, classification gate, quality gate) and **skills** (`/gate`, `/sync`, `/status`) into Claude Code. Works globally or per-project (`--project`).
|
|
173
|
+
|
|
174
|
+
> **Full guide**: [docs/QUICKSTART.md](docs/QUICKSTART.md) — everything a developer needs to get started.
|
|
166
175
|
|
|
167
176
|
---
|
|
168
177
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "seif-cli"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.5.1"
|
|
8
8
|
description = "Measure AI output quality, protect sensitive data, watch your AI environment resonate. Quality Gate, Classification, Sentinel & Auto-Healing, SEIF OS."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "CC-BY-NC-SA-4.0"}
|
|
@@ -85,6 +85,10 @@ seif = [
|
|
|
85
85
|
"py.typed",
|
|
86
86
|
"data/RESONANCE.json",
|
|
87
87
|
"data/defaults/*.seif",
|
|
88
|
+
"plugins/claude-code/hooks/*.json",
|
|
89
|
+
"plugins/claude-code/scripts/*.sh",
|
|
90
|
+
"plugins/claude-code/scripts/*.py",
|
|
91
|
+
"plugins/claude-code/skills/*/SKILL.md",
|
|
88
92
|
]
|
|
89
93
|
|
|
90
94
|
[tool.pytest.ini_options]
|
|
@@ -55,8 +55,15 @@ class StanceAnalysis:
|
|
|
55
55
|
return "\n".join(lines)
|
|
56
56
|
|
|
57
57
|
|
|
58
|
-
# Patterns that indicate verifiable content
|
|
58
|
+
# Patterns that indicate verifiable content.
|
|
59
|
+
# Two groups: (1) original physics/EE/math patterns, (2) software-engineering
|
|
60
|
+
# verifiable artifacts added by the s14 calibration debate (semver, SHAs,
|
|
61
|
+
# file:line refs, test counts, ISO timestamps, PR refs, code identifiers, etc.).
|
|
62
|
+
# The split exists because session summaries are dense in (2) and were scoring
|
|
63
|
+
# F as "low data" before. Calibrated against 27 positive + 14 negative samples
|
|
64
|
+
# at 100% recall / 0% false positives.
|
|
59
65
|
VERIFIABLE_PATTERNS = [
|
|
66
|
+
# --- Group 1: physics / EE / math ---
|
|
60
67
|
r'\d+\.?\d*\s*(%|Hz|Ω|ohm|mH|μF|uF|nF|pF|dB|°|deg|rad|ms|kHz|MHz|V|A|W|bpm|rpm)',
|
|
61
68
|
r'[=≈≠<>]\s*\d',
|
|
62
69
|
r'[ζφωπ√]',
|
|
@@ -69,9 +76,41 @@ VERIFIABLE_PATTERNS = [
|
|
|
69
76
|
r'\b(?:theorem|proof|exhaustive|brute.?force)\b',
|
|
70
77
|
r'(?:ISE|IAE|ITAE|RLC|PCB|BOM|DRC)',
|
|
71
78
|
r'formal.?symbolic',
|
|
72
|
-
r'\b\w+[_]\w+\s*=',
|
|
73
|
-
r'\b[A-Z]\([a-z]\)',
|
|
74
|
-
r'property|unique|halving',
|
|
79
|
+
r'\b\w+[_]\w+\s*=', # variable_name = ...
|
|
80
|
+
r'\b[A-Z]\([a-z]\)', # H(s), F(x)
|
|
81
|
+
r'property|unique|halving', # math property language
|
|
82
|
+
|
|
83
|
+
# --- Group 2: software-engineering verifiable artifacts ---
|
|
84
|
+
r'\bv?\d+\.\d+\.\d+(?:[-+][\w.]+)?\b', # semver
|
|
85
|
+
r'\b(?:commit|tag|branch|sha|hash|merge|revert|cherry-?pick|HEAD)\s+[0-9a-f]{7,12}\b', # short SHA in context
|
|
86
|
+
r'\b[0-9a-f]{40}\b', # long SHA
|
|
87
|
+
r'\b(?:sha\d{2,3}|md5|blake[23]b?):[0-9a-f]{16,128}\b', # prefixed digest
|
|
88
|
+
r'\b[\w./-]+\.(?:py|ts|tsx|js|jsx|go|rs|java|cpp|c|h|hpp|md|json|yaml|yml|toml|sh|rb|php|cs|kt|swift|sql|html|css|scss):\d+(?:-\d+)?\b', # file:line
|
|
89
|
+
r'(?:#|\b)L\d+(?:-L?\d+)?\b', # GitHub line anchors
|
|
90
|
+
r'\b\d+\s+(?:tests?|specs?|suites?|cases?|assertions?|examples?)\b\s*(?:passing|failing|skipped|pending|run|across|in)?', # test count fwd
|
|
91
|
+
r'\b(?:tests?|specs?|suites?|cases?|assertions?|examples?)\s+(?:passing|failing|skipped|pending)?\s*(?:is|are|were|equals?|=)\s+\d+\b', # test count inv
|
|
92
|
+
r'\b(?:added|removed|deleted|modified|fixed|merged|reverted|created|closed|reopened|broke|patched|migrated)\s+\d+\b', # eng verb + count
|
|
93
|
+
r'\b\d{4}-\d{2}-\d{2}(?:[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:?\d{2})?)?\b', # ISO 8601
|
|
94
|
+
r'(?<!\w)(?:#\d+|(?:PR|GH|MR|RFC|RFD|ISSUE|JIRA|[A-Z]{2,8})-\d+)\b', # PR / issue refs
|
|
95
|
+
r'\b(?:returns?|status|code|HTTP|got|expected|received|responded\s+with)\s+(?:1\d{2}|2\d{2}|3\d{2}|4\d{2}|5\d{2})\b', # HTTP verb-prefixed
|
|
96
|
+
r'\b(?:1\d{2}|2\d{2}|3\d{2}|4\d{2}|5\d{2})\s+(?:OK|Created|Accepted|No\s+Content|Moved|Found|Bad\s+Request|Unauthorized|Forbidden|Not\s+Found|Conflict|Gone|Too\s+Many|Internal\s+Server|Bad\s+Gateway|Service\s+Unavailable|Gateway\s+Timeout)\b', # HTTP code + reason
|
|
97
|
+
r'(?:^|[\s(\[])(?:localhost|127\.0\.0\.1|0\.0\.0\.0|::1)?:(?:[1-9]\d{0,4})\b', # port number
|
|
98
|
+
r'\b[\w.-]+@\^?\d+\.\d+(?:\.\d+)?(?:[-+][\w.]+)?\b', # package@version
|
|
99
|
+
r'\b[a-z][a-z0-9_]+\([^)]{0,80}\)', # snake_case(...)
|
|
100
|
+
r'\b[A-Z][a-zA-Z0-9]+\([^)]{0,80}\)', # PascalCase(...)
|
|
101
|
+
r'\b\w+\.\w+\([^)]{0,80}\)', # foo.bar(...)
|
|
102
|
+
r'[+\-−]\d+\s*(?:[/,]\s*[+\-−]\d+|lines?|loc)?', # diff stats
|
|
103
|
+
r'\bexit(?:ed|s)?\s+(?:with\s+)?(?:code\s+)?-?\d+\b', # exit code
|
|
104
|
+
r'\breturn\s+code\s+-?\d+\b', # return code
|
|
105
|
+
r'\b\d+(?:\.\d+)?\s*(?:[KMGTP]i?B|bytes?|kbps|Mbps|Gbps)\b', # size with unit
|
|
106
|
+
r'\b\d+(?:\.\d+)?\s*(?:ns|us|μs|ms|min|sec|hr|hrs|hours?|minutes?|seconds?)\b', # duration
|
|
107
|
+
r'\b\d+m\s*\d+s\b', # 4m 32s
|
|
108
|
+
r'\b\d+h\s*\d+m\b', # 1h 18m
|
|
109
|
+
r'\b(?:feature|bugfix|hotfix|release|chore|refactor|fix|feat)/[\w./-]+\b', # branch convention
|
|
110
|
+
# File paths — require leading slash, ./, ../, OR dotted extension
|
|
111
|
+
# (rejects casual prose like "production/staging environments").
|
|
112
|
+
r'(?:^|(?<=[\s(\[]))(?:\.{1,2}/|/)[\w-]+(?:/[\w.-]+)+',
|
|
113
|
+
r'\b[\w-]+(?:/[\w.-]+)+\.[a-z]{1,6}\b',
|
|
75
114
|
]
|
|
76
115
|
|
|
77
116
|
# Patterns that indicate metaphorical/interpretive drift
|