Compare commits

..

No commits in common. "65d8a4677cba5ed83b77b8cc02b919b364d13d3e" and "84bbec5ece2a175064d246c20cd2d575a678e570" have entirely different histories.

5 changed files with 15 additions and 55 deletions

View file

@ -1,6 +1,5 @@
--- ---
description: Cross-artifact consistency check across all formspec artifacts description: Cross-artifact consistency check across all formspec artifacts
argument-hint: [scope]
allowed-tools: [Read, Glob, Grep, Bash, Task] allowed-tools: [Read, Glob, Grep, Bash, Task]
--- ---

View file

@ -85,10 +85,7 @@ Every requirement from Phase 1 must appear in this table. If a requirement canno
## Phase 4 — Run TLC model checker ## Phase 4 — Run TLC model checker
If `spec/hooks/run-checks` exists and is executable, delegate TLC verification to it instead of running locally (see `/formspec.init` for the hook interface). Present the returned results to the developer, including any dashboard URLs, and skip to Phase 5. Run:
If the hook does not exist or fails, run TLC locally:
```bash ```bash
tlc spec/formal/System.tla -config spec/formal/System.cfg -workers auto -metadir /tmp/tlc-states -cleanup tlc spec/formal/System.tla -config spec/formal/System.cfg -workers auto -metadir /tmp/tlc-states -cleanup
``` ```
@ -116,7 +113,11 @@ Parse the TLC output to determine:
### All properties pass ### All properties pass
Update all statuses in `spec/formal/traceability.md` from `formalized` to `checked`. Report success with a summary of what was verified: number of properties checked, state space explored, time taken. Suggest proceeding with `/formspec.plan.4` to create an implementation plan. If `spec/hooks/run-checks` exists and is executable, delegate TLC verification to it instead of running TLC locally (see `/formspec.init` for the hook interface). Present the returned results to the developer, including any dashboard URLs.
If the hook does not exist or fails, run TLC locally as described in Phase 4.
In either case, update all statuses in `spec/formal/traceability.md` from `formalized` to `checked`. Report success with a summary of what was verified: number of properties checked, state space explored, time taken. Suggest proceeding with `/formspec.plan.4` to create an implementation plan.
### Meaning drift detected (Phase 2 issue) ### Meaning drift detected (Phase 2 issue)

View file

@ -66,9 +66,7 @@ After unit tests pass, mark the task complete in `spec/tasks.md` (e.g., append `
**e. Continue to next task**: **e. Continue to next task**:
After completing a task, present a brief summary of what was implemented and the test results. Then ask the developer whether to continue to the next task or pause for review. If the developer chooses to continue (or has previously indicated they want uninterrupted execution), proceed to the next task whose dependencies are all met. After completing a task, if the next task's dependencies are all met, continue implementing it without stopping. Keep going until either:
Stop regardless of the developer's preference when:
- A unit test failure or spec inconsistency requires developer input - A unit test failure or spec inconsistency requires developer input
- A verification milestone is reached (all of its tasks are now complete) - A verification milestone is reached (all of its tasks are now complete)
- No more tasks are ready (unmet dependencies) - No more tasks are ready (unmet dependencies)

View file

@ -1,6 +1,5 @@
--- ---
description: Run the TLC model checker on the formal specification description: Run the TLC model checker on the formal specification
argument-hint: [property-name]
allowed-tools: [Read, Glob, Grep, Bash] allowed-tools: [Read, Glob, Grep, Bash]
--- ---

View file

@ -89,19 +89,15 @@
) )
) )
(use-package diminish (use-package diminish)
:ensure t
)
(use-package better-defaults (use-package better-defaults
:ensure (:repo "https://git.sr.ht/~technomancy/better-defaults")) :ensure (:repo "https://git.sr.ht/~technomancy/better-defaults"))
(use-package treemacs-icons-dired (use-package treemacs-icons-dired
:ensure t
:hook (dired-mode . treemacs-icons-dired-mode)) :hook (dired-mode . treemacs-icons-dired-mode))
(use-package dired-subtree (use-package dired-subtree
:ensure t
:after dired :after dired
:bind (:map dired-mode-map :bind (:map dired-mode-map
("<tab>" . dired-subtree-toggle) ("<tab>" . dired-subtree-toggle)
@ -123,14 +119,11 @@
:diminish undo-tree-mode :diminish undo-tree-mode
) )
(use-package transient (use-package transient)
:ensure t
)
(use-package cond-let (use-package cond-let
:ensure (:repo "https://github.com/tarsius/cond-let")) :ensure (:repo "https://github.com/tarsius/cond-let"))
(use-package magit (use-package magit
:ensure t
:bind (("C-x g" . magit-status) :bind (("C-x g" . magit-status)
("C-x M-g" . magit-list-repositories)) ("C-x M-g" . magit-list-repositories))
:init :init
@ -141,7 +134,6 @@
("~/Projects/" . 1)))) ("~/Projects/" . 1))))
(use-package nyan-mode (use-package nyan-mode
:ensure t
:init :init
(nyan-mode 1) (nyan-mode 1)
:custom :custom
@ -149,11 +141,9 @@
(nyan-wavy-trail t)) (nyan-wavy-trail t))
(use-package mozc (use-package mozc
:ensure t
:bind (("C-c m" . mozc-mode))) :bind (("C-c m" . mozc-mode)))
(use-package material-theme (use-package material-theme
:ensure t
:config :config
(load-theme 'material t)) (load-theme 'material t))
@ -165,7 +155,6 @@
("s-d" . windmove-right))) ("s-d" . windmove-right)))
(use-package counsel (use-package counsel
:ensure t
:bind (("C-s" . swiper-isearch) :bind (("C-s" . swiper-isearch)
("M-x" . counsel-M-x) ("M-x" . counsel-M-x)
("M-y" . counsel-yank-pop) ("M-y" . counsel-yank-pop)
@ -220,11 +209,8 @@
;; keep-sorted end ;; keep-sorted end
) )
(use-package org-contrib (use-package org-contrib)
:ensure t
)
(use-package org-contacts (use-package org-contacts
:ensure t
:after org-contrib) :after org-contrib)
(use-package deflate (use-package deflate
@ -244,7 +230,6 @@
) )
(use-package age (use-package age
:ensure t
:custom :custom
(age-default-identity "~/.age/key") (age-default-identity "~/.age/key")
(age-default-recipient "~/.age/key.pub") (age-default-recipient "~/.age/key.pub")
@ -253,7 +238,6 @@
;; EPUB reader ;; EPUB reader
(use-package nov (use-package nov
:ensure t
:init :init
(setq auto-mode-alist (setq auto-mode-alist
(map-merge 'list (map-merge 'list
@ -262,16 +246,13 @@
) )
(use-package company (use-package company
:ensure t
:config (global-company-mode) :config (global-company-mode)
:diminish company-mode) :diminish company-mode)
(use-package apt-mode (use-package apt-mode
:ensure t
:disabled t) :disabled t)
(use-package docker (use-package docker
:ensure t
:bind ("C-c d" . docker) :bind ("C-c d" . docker)
:custom :custom
(docker-command "podman") (docker-command "podman")
@ -280,15 +261,10 @@
(:name "Name" :width 50 :template "{{ json .Name }}" :sort nil :format nil) (:name "Name" :width 50 :template "{{ json .Name }}" :sort nil :format nil)
(:name "Driver" :width 10 :template "{{ json .Driver }}" :sort nil :format nil)))) (:name "Driver" :width 10 :template "{{ json .Driver }}" :sort nil :format nil))))
(use-package iedit (use-package iedit)
:ensure t (use-package wgrep)
)
(use-package wgrep
:ensure t
)
(use-package apheleia (use-package apheleia
:ensure t
:config :config
(apheleia-global-mode) (apheleia-global-mode)
(setf (alist-get 'ruff-isort apheleia-formatters) (setf (alist-get 'ruff-isort apheleia-formatters)
@ -318,14 +294,10 @@
) )
;; Note: debugging Python in a virtualenv requires debugpy to be installed inside the venv ;; Note: debugging Python in a virtualenv requires debugpy to be installed inside the venv
(use-package dape (use-package dape)
:ensure t
)
;; Requires poetry to be installed ;; Requires poetry to be installed
(use-package poetry (use-package poetry)
:ensure t
)
(defun load-python-env () (defun load-python-env ()
"Set up the Python IDE in the current project." "Set up the Python IDE in the current project."
@ -336,7 +308,6 @@
(eglot-ensure)))) (eglot-ensure))))
(use-package python (use-package python
:ensure t
:bind (:map python-ts-mode-map :bind (:map python-ts-mode-map
("C-c C-p" . nil) ("C-c C-p" . nil)
("C-c C-l" . nil) ("C-c C-l" . nil)
@ -350,7 +321,6 @@
;; Jupyter notebook integration ;; Jupyter notebook integration
(use-package ein (use-package ein
:ensure t
:bind (("C-z j" . ein:run) :bind (("C-z j" . ein:run)
:map ein:notebook-mode-map :map ein:notebook-mode-map
("C-c C-x k" . ein:notebook-switch-kernel)) ("C-c C-x k" . ein:notebook-switch-kernel))
@ -364,12 +334,10 @@
) )
(use-package direnv (use-package direnv
:ensure t
:config :config
(direnv-mode)) (direnv-mode))
(use-package rustic (use-package rustic
:ensure t
:custom :custom
(rustic-lsp-client 'eglot) (rustic-lsp-client 'eglot)
) )
@ -410,7 +378,6 @@
:models (enrich-ollama-models (list-ollama-models) gptel--local-models))) :models (enrich-ollama-models (list-ollama-models) gptel--local-models)))
(use-package gptel (use-package gptel
:ensure t
:hook :hook
;; keep-sorted start ;; keep-sorted start
(gptel-mode . gptel-highlight-mode) (gptel-mode . gptel-highlight-mode)
@ -435,12 +402,9 @@
(generate-ollama-declaration) (generate-ollama-declaration)
) )
(use-package power-mode (use-package power-mode)
:ensure t
)
(use-package emms (use-package emms
:ensure t
:config :config
(require 'emms-setup) (require 'emms-setup)
(emms-all) (emms-all)
@ -461,5 +425,4 @@
(qrencode--encode-to-buffer url))))) (qrencode--encode-to-buffer url)))))
(use-package qrencode (use-package qrencode
:ensure t
:bind (("C-z q" . my-qr-selection))) :bind (("C-z q" . my-qr-selection)))