invar-tools 1.5.0__py3-none-any.whl → 1.7.0__py3-none-any.whl

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.
@@ -12,6 +12,24 @@
12
12
  | **Shell** | Returns `Result[T, E]` from `returns` library |
13
13
  | **Flow** | USBV: Understand → Specify → Build → Validate |
14
14
 
15
+ ### Contract Rules (CRITICAL)
16
+
17
+ ```python
18
+ # ❌ WRONG: Lambda must include ALL parameters
19
+ @pre(lambda x: x >= 0)
20
+ def calc(x: int, y: int = 0): ...
21
+
22
+ # ✅ CORRECT: Include defaults too
23
+ @pre(lambda x, y=0: x >= 0)
24
+ def calc(x: int, y: int = 0): ...
25
+
26
+ # ❌ WRONG: @post cannot access parameters
27
+ @post(lambda result: result > x) # 'x' not available!
28
+
29
+ # ✅ CORRECT: @post only sees 'result'
30
+ @post(lambda result: result >= 0)
31
+ ```
32
+
15
33
  <!--/invar:critical-->
16
34
 
17
35
  <!--invar:managed version="{{ version }}"-->
@@ -19,28 +37,13 @@
19
37
 
20
38
  > **Protocol:** Follow [INVAR.md](./INVAR.md) — includes Check-In, USBV workflow, and Task Completion requirements.
21
39
 
22
- ## Check-In (DX-54)
40
+ ## Check-In
23
41
 
24
- Your first message MUST display:
42
+ > See [INVAR.md#check-in](./INVAR.md#check-in-required) for full protocol.
25
43
 
26
- ```
27
- ✓ Check-In: [project] | [branch] | [clean/dirty]
28
- ```
44
+ **Your first message MUST display:** `✓ Check-In: [project] | [branch] | [clean/dirty]`
29
45
 
30
- Actions:
31
- 1. Read `.invar/context.md` (Key Rules + Current State + Lessons Learned)
32
- 2. Show one-line status
33
-
34
- Example:
35
- ```
36
- ✓ Check-In: MyProject | main | clean
37
- ```
38
-
39
- **Do NOT execute guard or map at Check-In.**
40
- Guard is for VALIDATE phase and Final only.
41
-
42
- This is your sign-in. The user sees it immediately.
43
- No visible check-in = Session not started.
46
+ **Actions:** Read `.invar/context.md`, then show status. Do NOT run guard at Check-In.
44
47
 
45
48
  ---
46
49
 
@@ -79,6 +82,14 @@ src/{project}/
79
82
  | Core | `@pre`/`@post` + doctests, pure (no I/O) |
80
83
  | Shell | Returns `Result[T, E]` from `returns` library |
81
84
 
85
+ ### Core vs Shell (Edge Cases)
86
+
87
+ - File/network/env vars → **Shell**
88
+ - `datetime.now()`, `random` → **Inject param** OR Shell
89
+ - Pure logic → **Core**
90
+
91
+ > Full decision tree: [INVAR.md#core-shell](./INVAR.md#decision-tree-core-vs-shell)
92
+
82
93
  ## Documentation Structure
83
94
 
84
95
  | File | Owner | Edit? | Purpose |
@@ -89,6 +100,8 @@ src/{project}/
89
100
  | .invar/project-additions.md | User | Yes | Project rules → injected into CLAUDE.md |
90
101
  | .invar/examples/ | Invar | No | **Must read:** Core/Shell patterns, workflow |
91
102
 
103
+ > **Before writing code:** Check Task Router in `.invar/context.md`
104
+
92
105
  ## Visible Workflow (DX-30)
93
106
 
94
107
  For complex tasks (3+ functions), show 3 checkpoints in TodoList:
@@ -159,18 +172,26 @@ Guard triggers `review_suggested` for: security-sensitive files, escape hatches
159
172
 
160
173
  ## Workflow Routing (MANDATORY)
161
174
 
162
- When user message contains these triggers, you MUST invoke the corresponding skill:
175
+ When user message contains these triggers, you MUST use the **Skill tool** to invoke the skill:
176
+
177
+ | Trigger Words | Skill Tool Call | Notes |
178
+ |---------------|-----------------|-------|
179
+ | "review", "review and fix" | `Skill(skill="review")` | Adversarial review with fix loop |
180
+ | "implement", "add", "fix", "update" | `Skill(skill="develop")` | Unless in review context |
181
+ | "why", "explain", "investigate" | `Skill(skill="investigate")` | Research mode, no code changes |
182
+ | "compare", "should we", "design" | `Skill(skill="propose")` | Decision facilitation |
183
+
184
+ **⚠️ CRITICAL: You must call the Skill tool, not just follow the workflow mentally.**
163
185
 
164
- | Trigger Words | Skill | Notes |
165
- |---------------|-------|-------|
166
- | "review", "review and fix" | `/review` | Adversarial review with fix loop |
167
- | "implement", "add", "fix", "update" | `/develop` | Unless in review context |
168
- | "why", "explain", "investigate" | `/investigate` | Research mode, no code changes |
169
- | "compare", "should we", "design" | `/propose` | Decision facilitation |
186
+ The Skill tool reads `.claude/skills/<skill>/SKILL.md` which contains:
187
+ - Detailed phase instructions (USBV breakdown)
188
+ - Error handling rules
189
+ - Timeout policies
190
+ - Incremental development patterns (DX-63)
170
191
 
171
192
  **Violation check (before writing ANY code):**
172
- - "Am I in a workflow?"
173
- - "Did I invoke the correct skill?"
193
+ - "Did I call `Skill(skill="...")`?"
194
+ - "Am I following the SKILL.md instructions?"
174
195
 
175
196
  ---
176
197
 
@@ -205,7 +226,7 @@ enters /review. Say "skip" to bypass.
205
226
  <!--invar:project-->
206
227
  <!-- ========================================================================
207
228
  PROJECT REGION - INVAR PROJECT ONLY
208
- This section is populated by .invar/project-additions.md via sync-self.
229
+ This section is populated by .invar/project-additions.md via `invar dev sync`.
209
230
  For other projects, this region remains empty.
210
231
  ======================================================================== -->
211
232
  <!--/invar:project-->
@@ -214,7 +235,7 @@ enters /review. Say "skip" to bypass.
214
235
  <!-- ========================================================================
215
236
  USER REGION - EDITABLE
216
237
  Add your team conventions and project-specific rules below.
217
- This section is preserved across invar update and sync-self.
238
+ This section is preserved across `invar update` and `invar dev sync`.
218
239
  ======================================================================== -->
219
240
  <!--/invar:user-->
220
241
 
@@ -27,6 +27,20 @@
27
27
  {% endif -%}
28
28
  - Final must show: `✓ Final: guard PASS | ...`
29
29
 
30
+ ## Task Router (DX-62)
31
+
32
+ <!-- Before writing code, check this table -->
33
+
34
+ | If you are about to... | STOP and read first |
35
+ |------------------------|---------------------|
36
+ | Write code in `core/` | `.invar/examples/contracts.py` |
37
+ | Write code in `shell/` | `.invar/examples/core_shell.py` |
38
+ | Add `@pre`/`@post` contracts | `.invar/examples/contracts.py` |
39
+ | Use functional patterns | `.invar/examples/functional.py` |
40
+ | Implement a feature | `.invar/examples/workflow.md` |
41
+
42
+ **Rule:** Match found above? Read the file BEFORE writing code.
43
+
30
44
  ## Self-Reminder
31
45
 
32
46
  <!-- DX-54: AI should re-read this file periodically -->
@@ -1,3 +1,4 @@
1
+ # invar:begin
1
2
  # Invar Pre-commit Hooks
2
3
  # Install: pre-commit install
3
4
  #
@@ -42,3 +43,4 @@ repos:
42
43
  pass_filenames: false
43
44
  stages: [pre-commit]
44
45
  types: [python]
46
+ # invar:end
@@ -267,6 +267,7 @@ invar guard # Full: static + doctests + CrossHair + Hypothesis
267
267
  invar guard --static # Static only (quick debug, ~0.5s)
268
268
  invar guard --changed # Modified files only
269
269
  invar guard --coverage # Collect branch coverage
270
+ invar guard -c # Contract coverage only (DX-63)
270
271
  invar sig <file> # Show contracts + signatures
271
272
  invar map --top 10 # Most-referenced symbols
272
273
  invar rules # List all rules with detection/hints (JSON)
@@ -17,7 +17,8 @@ _invar:
17
17
 
18
18
  Before any workflow action:
19
19
  1. Read `.invar/context.md` (especially Key Rules section)
20
- 2. Display routing announcement
20
+ 2. **Check Task Router** — read examples before coding in `core/` or `shell/`
21
+ 3. Display routing announcement
21
22
 
22
23
  ### Routing Announcement
23
24
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: invar-tools
3
- Version: 1.5.0
3
+ Version: 1.7.0
4
4
  Summary: AI-native software engineering tools with design-by-contract verification
5
5
  Project-URL: Homepage, https://github.com/tefx/invar
6
6
  Project-URL: Documentation, https://github.com/tefx/invar#readme
@@ -1,16 +1,16 @@
1
- invar/__init__.py,sha256=Bzp8MpdH-uUNe6qY9ITv6LLOn0HUomtIToQ0zUS1mkg,1342
1
+ invar/__init__.py,sha256=HV5W2nywevBhAMgF7TIHdBoiFY4ETWVLBYAt_gZCPHU,1520
2
2
  invar/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  invar/core/__init__.py,sha256=01TgQ2bqTFV4VFdksfqXYPa2WUqo-DpUWUkEcIUXFb4,218
4
4
  invar/core/contracts.py,sha256=SOyF1KeJ6hrEwfQ09UzMt881OJKDXRbPTslKA6HzdKg,19085
5
- invar/core/entry_points.py,sha256=gB6h2O9gp9larxDWVA2IUclLadMF_H8eJErnscYm0GU,12012
5
+ invar/core/entry_points.py,sha256=1p6GRGTp9kA9spNkGKidFLlzLPheh6JO2XFb68Cr0sE,12209
6
6
  invar/core/extraction.py,sha256=mScqEMEEQdsd-Z0jx9g3scK6Z1vI9l-ESjggXPIWHZ4,6112
7
7
  invar/core/format_specs.py,sha256=P299aRHFMXyow8STwsvaT6Bg2ALPs2wSy7SByiRZZ-A,5610
8
8
  invar/core/format_strategies.py,sha256=LifL97JbsF8WEkVNmQpq2htyFUC3pW21myAjtRGpSxU,5774
9
- invar/core/formatter.py,sha256=YS7Ni5duz04S1DamsaAksqTBBqXzxUTvf6O6LsxjROE,10772
9
+ invar/core/formatter.py,sha256=rCGZhMpl4dPLrztgKDkNtAvnv2vKfomyIHl_6fThuno,11293
10
10
  invar/core/hypothesis_strategies.py,sha256=_MfjG7KxkmJvuPsczr_1JayR_YmiDzU2jJ8fQPoKGgs,16517
11
11
  invar/core/inspect.py,sha256=l1knohwpLRHSNySPUjyeBHJusnU0vYiQGj4dMVgQZIo,4381
12
12
  invar/core/lambda_helpers.py,sha256=Ap1y7N0wpgCgPHwrs2pd7zD9Qq4Ptfd2iTliprXIkME,6457
13
- invar/core/models.py,sha256=5R1w15O8klEMMC0g1zgds6nGFpE6uJFSRkIbXFLNOpo,10795
13
+ invar/core/models.py,sha256=1bbhLijXHSe-o5SXQhbJgq8_EqPOOgsGKIrnWRwwtYM,13200
14
14
  invar/core/must_use.py,sha256=7HnnbT53lb4dOT-1mL64pz0JbQYytuw4eejNVe7iWKY,5496
15
15
  invar/core/parser.py,sha256=ucVpGziVzUvbkXT1n_SgOrYdStDEcNBqLuRGqK3_M5g,9205
16
16
  invar/core/postcondition_scope.py,sha256=ykjVNqZZ1zItBmI7ebgmLW5vFGE-vpaLRTvSgWaJMgM,5245
@@ -46,49 +46,48 @@ invar/mcp/__main__.py,sha256=ZcIT2U6xUyGOWucl4jq422BDE3lRLjqyxb9pFylRBdk,219
46
46
  invar/mcp/server.py,sha256=ay-w2YfSa1kTmBFx3x3jEgmNRC3NFEW0EYuZRt7M39w,12244
47
47
  invar/shell/__init__.py,sha256=FFw1mNbh_97PeKPcHIqQpQ7mw-JoIvyLM1yOdxLw5uk,204
48
48
  invar/shell/claude_hooks.py,sha256=kxkdF2gwTWcGpglccDi6-8IN1zRwelDG6Lg1VPYQgyA,12912
49
- invar/shell/config.py,sha256=cixlq47h8HYa9Ku-JOo66KCUyrf59R0NX_Yb7A1fAv4,16134
49
+ invar/shell/config.py,sha256=6-kbo6--SxfROXoyU-v7InSLR8f_U1Mar_xEOdCXFkY,17633
50
50
  invar/shell/contract_coverage.py,sha256=2RiXC9RBV__cKLHu0KKOWRxEgYVQNNAPAdwBjYenNHQ,11780
51
51
  invar/shell/coverage.py,sha256=m01o898IFIdBztEBQLwwL1Vt5PWrpUntO4lv4nWEkls,11344
52
52
  invar/shell/fs.py,sha256=wVD7DPWsCIJXuTyY_pi-5_LS82mXRdn_grJCOLn9zpU,3699
53
53
  invar/shell/git.py,sha256=s6RQxEDQuLrmK3mru88EoYP8__4hiFW8AozlcxmY47E,2784
54
54
  invar/shell/guard_helpers.py,sha256=QeYgbW0lgUa9Z_RCjAMG7UJdiMzz5cW48Lb2u-qgQi8,15114
55
- invar/shell/guard_output.py,sha256=WrbIjy9wZ3TVAP79PMYTPwthT-_9DwmnfS3lpfeaq2M,12101
55
+ invar/shell/guard_output.py,sha256=v3gG5P-_47nIFo8eAMKwdA_hLf2KZ0cQ-45Z6JjKp4w,12520
56
56
  invar/shell/mcp_config.py,sha256=-hC7Y5BGuVs285b6gBARk7ZyzVxHwPgXSyt_GoN0jfs,4580
57
57
  invar/shell/mutation.py,sha256=Lfyk2b8j8-hxAq-iwAgQeOhr7Ci6c5tRF1TXe3CxQCs,8914
58
58
  invar/shell/pattern_integration.py,sha256=pRcjfq3NvMW_tvQCnaXZnD1k5AVEWK8CYOE2jN6VTro,7842
59
59
  invar/shell/property_tests.py,sha256=N9JreyH5PqR89oF5yLcX7ZAV-Koyg5BKo-J05-GUPsA,9109
60
60
  invar/shell/subprocess_env.py,sha256=9oXl3eMEbzLsFEgMHqobEw6oW_wV0qMEP7pklwm58Pw,11453
61
61
  invar/shell/template_engine.py,sha256=IzOiGsKVFo0lDUdtg27wMzIJJKToclv151RDZuDnHHo,11027
62
- invar/shell/templates.py,sha256=l2En95E8jRVlojdQIqdZgRLVB43f_b1d_AJapKkozwA,15908
62
+ invar/shell/templates.py,sha256=wVG78wBoVB-SOugfqaKj6xklwSDpEyjeEOGE6EKcS0s,13387
63
63
  invar/shell/testing.py,sha256=rTNBH0Okh2qtG9ohSXOz487baQ2gXrWT3s_WECW3HJs,11143
64
64
  invar/shell/commands/__init__.py,sha256=MEkKwVyjI9DmkvBpJcuumXo2Pg_FFkfEr-Rr3nrAt7A,284
65
- invar/shell/commands/guard.py,sha256=eKDfOcksRM4Zg0eybi5u93cXJ42OBR3ts0um5tCB5lA,20590
65
+ invar/shell/commands/guard.py,sha256=vDBGOFb9mQ1D8eXrMvQB505GpjO1XLeCLrv2ig9-6dU,21718
66
66
  invar/shell/commands/hooks.py,sha256=W-SOnT4VQyUvXwipozkJwgEYfiOJGz7wksrbcdWegUg,2356
67
- invar/shell/commands/init.py,sha256=UzHLfAP9ddIY32HrLd32nUveFcHnB0HlbMcIgtfob9Y,18297
67
+ invar/shell/commands/init.py,sha256=7PhXVjnhsY-1o2kBWRfoUPvSjopB0jRjazLe4P_FyZQ,16339
68
68
  invar/shell/commands/merge.py,sha256=nuvKo8m32-OL-SCQlS4SLKmOZxQ3qj-1nGCx1Pgzifw,8183
69
69
  invar/shell/commands/mutate.py,sha256=GwemiO6LlbGCBEQsBFnzZuKhF-wIMEl79GAMnKUWc8U,5765
70
70
  invar/shell/commands/perception.py,sha256=TyH_HpqyKkmE3-zcU4YyBG8ghwJaSFeRC-OQMVBDTbQ,3837
71
71
  invar/shell/commands/sync_self.py,sha256=nmqBry7V2_enKwy2zzHg8UoedZNicLe3yKDhjmBeZ68,3880
72
72
  invar/shell/commands/template_sync.py,sha256=wVZ-UvJ1wpN2UBcWMfbei0n46XHYx-zRbMA2oX6FSi4,13723
73
73
  invar/shell/commands/test.py,sha256=goMf-ovvzEyWQMheq4YlJ-mwK5-w3lDj0cq0IA_1-_c,4205
74
+ invar/shell/commands/uninstall.py,sha256=f8kGBwkdYycQ5eIdfveIefTw9ZSU6D4OyUuHt8ScUTY,12166
74
75
  invar/shell/commands/update.py,sha256=0V5F8vxQ6PHPHPVYDmxdRD7xXeQEFypiJMYpY5ryiek,1349
75
76
  invar/shell/prove/__init__.py,sha256=ZqlbmyMFJf6yAle8634jFuPRv8wNvHps8loMlOJyf8A,240
76
77
  invar/shell/prove/accept.py,sha256=cnY_6jzU1EBnpLF8-zWUWcXiSXtCwxPsXEYXsSVPG38,3717
77
78
  invar/shell/prove/cache.py,sha256=jbNdrvfLjvK7S0iqugErqeabb4YIbQuwIlcSRyCKbcg,4105
78
79
  invar/shell/prove/crosshair.py,sha256=4Z_iIYBlkp-I6FqSYZa89wWB09V4Ouw2PduYhTn6rfw,16525
79
80
  invar/shell/prove/hypothesis.py,sha256=QUclOOUg_VB6wbmHw8O2EPiL5qBOeBRqQeM04AVuLw0,9880
80
- invar/templates/CLAUDE.md.template,sha256=p2xFzbZ8NluumH9c03GkAQaqSOvgrG5SqyKU9qXz2HY,4498
81
+ invar/templates/CLAUDE.md.template,sha256=eaGU3SyRO_NEifw5b26k3srgQH4jyeujjCJ-HbM36_w,4913
81
82
  invar/templates/__init__.py,sha256=cb3ht8KPK5oBn5oG6HsTznujmo9WriJ_P--fVxJwycc,45
82
- invar/templates/aider.conf.yml.template,sha256=4xzSs3BXzFJvwdhnWbmzSY0yCbfx5oxqnV8ZjehqHBg,853
83
83
  invar/templates/context.md.template,sha256=FKyI1ghpqcf4wftyv9-auIFHor8Nm8lETN45Ja-L8Og,2386
84
- invar/templates/cursorrules.template,sha256=N6AiEJRJHGkHm2tswh3PnZ_07ozeyQQI8iEOGK5Aqoc,1023
85
84
  invar/templates/manifest.toml,sha256=cEe7yEOOeaLmOF-PrwZXxiPGjHhsSJYkWBKRHDmSbac,4268
86
- invar/templates/pre-commit-config.yaml.template,sha256=2qWY3E8iDUqi85jE_X7y0atE88YOlL5IZ93wkjCgQGo,1737
85
+ invar/templates/pre-commit-config.yaml.template,sha256=ZMqiStLCf9cC4uL2JoF59aYv_G4AV-roGdkj1tWHCBc,1763
87
86
  invar/templates/proposal.md.template,sha256=UP7SpQ7gk8jVlHGLQCSQ5c-kCj1DBQEz8M-vEStK77I,1573
88
- invar/templates/commands/audit.md,sha256=eXBySlQrVyk054vYQWAZYzj-HgT2QXhpzziw6GlIeGM,4112
89
- invar/templates/commands/guard.md,sha256=PyeAKfrmlXsgbrTDypQqXmTDKK1JHKhHEQrHqftA7X0,1177
90
- invar/templates/config/CLAUDE.md.jinja,sha256=788jlWOcSOS7xOEpTFr9H7OKYvEMmyJnDQ-oE4AG8r0,6855
91
- invar/templates/config/context.md.jinja,sha256=eyjNwvtSyDCImOw6up4eqfE_ylYWv2HCHMQ1M1qJtGQ,2563
87
+ invar/templates/commands/audit.md,sha256=OrotO8420zTKnlNyAyL1Eos0VIaihzEU4AHdfDv68Oc,4162
88
+ invar/templates/commands/guard.md,sha256=N_C_AXd9kI85W1B0aTEycjiDp_jdaP8eeq8O0FQ_WQ8,1227
89
+ invar/templates/config/CLAUDE.md.jinja,sha256=VbtDWxn3H8qiE9-DV1hlG3DJ-GcBQU4ZiUHbFh6Bxxk,7814
90
+ invar/templates/config/context.md.jinja,sha256=_kJ8erEQNJMLDCKrv4BXWkO6OaGzE-zW9biCf7144aY,3103
92
91
  invar/templates/config/pre-commit.yaml.jinja,sha256=Qflmii8hngHciSgfa8mIlg3-E3D4b0xflm0-Q-cWcCc,1752
93
92
  invar/templates/examples/README.md,sha256=xMcJZ1KEcfLJi5Ope_4FIbqDWKK3mRleAgllvgeNT6I,572
94
93
  invar/templates/examples/conftest.py,sha256=uKA4NR7nyZWeSzY0URdZtw5zCcJpU32jNcaSKrI1Mxc,152
@@ -100,15 +99,15 @@ invar/templates/hooks/PreToolUse.sh.jinja,sha256=D39PaT1eFSjz_Av16xK1atoBZbhLI8t
100
99
  invar/templates/hooks/Stop.sh.jinja,sha256=3S6lLeAGIu5aPQVRz4jjFS9AfjCD9DdS_jagmkw-x8Q,960
101
100
  invar/templates/hooks/UserPromptSubmit.sh.jinja,sha256=eAQqQ-XdOCyhLpF5_1r1z7C-Ej9GQ5Isqbu_2LAtsno,2302
102
101
  invar/templates/hooks/__init__.py,sha256=RnnMoQA-8eqbr8Y_1Vu9B8h5vAz4C-vmo8wgdcGYrz0,43
103
- invar/templates/protocol/INVAR.md,sha256=Yjwvs0PK9sDUtNExXtS2g7nRV2LcUV22Xa0fY_K-_-0,9940
104
- invar/templates/skills/develop/SKILL.md.jinja,sha256=09zKj8eTDi47boDzooEE5cBwnV3TiXy8k7Zfs9enrx4,10482
102
+ invar/templates/protocol/INVAR.md,sha256=ppQhb_-R5YaXAqW1WDMOcXptx-CrAQI_xYxld7YljK8,9998
103
+ invar/templates/skills/develop/SKILL.md.jinja,sha256=3coPSZGh1-YKN9Xc_xcEkfEP3S0XiFMMGF0hJZEaAx8,10562
105
104
  invar/templates/skills/investigate/SKILL.md.jinja,sha256=bOLdLMH5WUVBYOo4NpsfyvI6xx7I1lCNr_X-8bMe_kg,2744
106
105
  invar/templates/skills/propose/SKILL.md.jinja,sha256=_iDLYN6-cfzA8n0_8sv-Dnpm1xq9IIpcDyM10mU2WUA,2420
107
106
  invar/templates/skills/review/SKILL.md.jinja,sha256=e7HULz1jjLOlk2LYejQMk2F-cu7dDIwvh6lWNjx3j-Q,14123
108
- invar_tools-1.5.0.dist-info/METADATA,sha256=0hzwMUBWAjfGOQc9SbF-9YxZwoaNf4R6TLUbjlIU7po,16964
109
- invar_tools-1.5.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
110
- invar_tools-1.5.0.dist-info/entry_points.txt,sha256=RwH_EhqgtFPsnO6RcrwrAb70Zyfb8Mh6uUtztWnUxGk,102
111
- invar_tools-1.5.0.dist-info/licenses/LICENSE,sha256=qeFksp4H4kfTgQxPCIu3OdagXyiZcgBlVfsQ6M5oFyk,10767
112
- invar_tools-1.5.0.dist-info/licenses/LICENSE-GPL,sha256=IvZfC6ZbP7CLjytoHVzvpDZpD-Z3R_qa1GdMdWlWQ6Q,35157
113
- invar_tools-1.5.0.dist-info/licenses/NOTICE,sha256=joEyMyFhFY8Vd8tTJ-a3SirI0m2Sd0WjzqYt3sdcglc,2561
114
- invar_tools-1.5.0.dist-info/RECORD,,
107
+ invar_tools-1.7.0.dist-info/METADATA,sha256=JKBCWf7HkEIrD3m3VC7fHLA7REki-dlk1l0HxsgPFW4,16964
108
+ invar_tools-1.7.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
109
+ invar_tools-1.7.0.dist-info/entry_points.txt,sha256=RwH_EhqgtFPsnO6RcrwrAb70Zyfb8Mh6uUtztWnUxGk,102
110
+ invar_tools-1.7.0.dist-info/licenses/LICENSE,sha256=qeFksp4H4kfTgQxPCIu3OdagXyiZcgBlVfsQ6M5oFyk,10767
111
+ invar_tools-1.7.0.dist-info/licenses/LICENSE-GPL,sha256=IvZfC6ZbP7CLjytoHVzvpDZpD-Z3R_qa1GdMdWlWQ6Q,35157
112
+ invar_tools-1.7.0.dist-info/licenses/NOTICE,sha256=joEyMyFhFY8Vd8tTJ-a3SirI0m2Sd0WjzqYt3sdcglc,2561
113
+ invar_tools-1.7.0.dist-info/RECORD,,
@@ -1,31 +0,0 @@
1
- # Invar Protocol Configuration for Aider
2
- # Follow the Invar Protocol in INVAR.md
3
-
4
- # Auto-read protocol files at session start
5
- read:
6
- - INVAR.md
7
- - .invar/examples/contracts.py
8
- - .invar/examples/core_shell.py
9
- - .invar/context.md
10
-
11
- # System prompt addition
12
- system-prompt: |
13
- Follow the Invar Protocol in INVAR.md.
14
-
15
- ## Check-In
16
- Your first message MUST display:
17
- ✓ Check-In: [project] | [branch] | [clean/dirty]
18
-
19
- Read .invar/context.md first. Do NOT run guard/map at Check-In.
20
- This is your sign-in. No visible check-in = Session not started.
21
-
22
- ## Final
23
- Your last message MUST display:
24
- ✓ Final: guard PASS | 0 errors, 2 warnings
25
-
26
- Execute: invar guard
27
- This is your sign-out. Completes the Check-In/Final pair.
28
-
29
- ## Workflow (USBV)
30
- Understand → Specify → Build → Validate
31
- Inspect before Contract. Depth varies naturally.
@@ -1,40 +0,0 @@
1
- # Invar Protocol
2
-
3
- Follow the Invar Protocol in INVAR.md — includes Check-In, USBV workflow, and Task Completion requirements.
4
-
5
- ## Check-In
6
-
7
- Your first message MUST display:
8
-
9
- ```
10
- ✓ Check-In: [project] | [branch] | [clean/dirty]
11
- ```
12
-
13
- Actions:
14
- 1. Read `.invar/context.md` (Key Rules + Current State + Lessons Learned)
15
- 2. Show one-line status
16
-
17
- **Do NOT execute guard or map at Check-In.**
18
- Guard is for VALIDATE phase and Final only.
19
-
20
- This is your sign-in. The user sees it immediately.
21
- No visible check-in = Session not started.
22
-
23
- ## Final
24
-
25
- Your last message for an implementation task MUST display:
26
-
27
- ```
28
- ✓ Final: guard PASS | 0 errors, 2 warnings
29
- ```
30
-
31
- Execute `invar guard` and show this one-line summary.
32
-
33
- This is your sign-out. Completes the Check-In/Final pair.
34
-
35
- ## Quick Reference
36
-
37
- - Core (`**/core/**`): @pre/@post contracts, doctests, pure (no I/O)
38
- - Shell (`**/shell/**`): Result[T, E] return type
39
- - Workflow: Understand → Specify → Build → Validate (USBV)
40
- - Inspect before Contract. Depth varies naturally.