@maind-dev/cli 0.97.3 → 0.99.0
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.
- package/README.md +43 -6
- package/build/index.js +232 -228
- package/build/meta.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -106,23 +106,60 @@ The CLI never posts the comment itself — your workflow posts the file via
|
|
|
106
106
|
|
|
107
107
|
### Detector findings (with `--gate`)
|
|
108
108
|
|
|
109
|
-
With `--gate`, the CLI also runs the
|
|
109
|
+
With `--gate`, the CLI also runs the ten repo-health detectors from
|
|
110
110
|
`@maind/code-index` on this machine — number collisions in counter-style
|
|
111
111
|
namespaces (`ADR-263-*.md` twice), spec drift (a registry vs. the artefact it
|
|
112
112
|
declares), dead theme classes (a Tailwind v4 utility pointing at a token that
|
|
113
113
|
does not exist), table ACL (Supabase default grants never revoked), duplicate
|
|
114
114
|
changelog headings, unparsable workflow YAML, release claims (a changelog
|
|
115
|
-
version npm never published), prose added to agent docs
|
|
115
|
+
version npm never published), prose added to agent docs, a work-object
|
|
116
116
|
branch without documentation (no Markdown file naming the key, no
|
|
117
|
-
`Doc-Decision:` trailer)
|
|
117
|
+
`Doc-Decision:` trailer) and mockup labels (a product mockup showing text the
|
|
118
|
+
product no longer renders) — and sends them to
|
|
118
119
|
`review_verdict` as a third finding class next to convention findings and risk
|
|
119
120
|
flags (ADR-324).
|
|
120
121
|
|
|
121
122
|
Only a **commitment** leaves the machine: `detector_id`, `detector_version`,
|
|
122
123
|
`rule_id`, `level`, `baseline`, an `evidence_hash` (sha256 over the normalised
|
|
123
|
-
evidence) and a count. Paths, tokens, class names, table names and
|
|
124
|
-
stay local — they appear in the report (`.maind/review.md`) but never
|
|
125
|
-
manifest, the PR comment or the wire.
|
|
124
|
+
evidence) and a count. Paths, tokens, class names, table names, labels and
|
|
125
|
+
numbers stay local — they appear in the report (`.maind/review.md`) but never
|
|
126
|
+
in the manifest, the PR comment or the wire.
|
|
127
|
+
|
|
128
|
+
#### Mockup labels
|
|
129
|
+
|
|
130
|
+
A demo, product tour or screenshot rebuilt in code shows the product's labels
|
|
131
|
+
"verbatim" — until the product renames one. Pin each label to the file that
|
|
132
|
+
renders it, and the mockup-label detector checks every pin in both directions:
|
|
133
|
+
the product source still contains the label (`mockup.label_not_in_source`,
|
|
134
|
+
blocks), and some mockup still shows it (`mockup.pin_unused`, warns — a dead
|
|
135
|
+
pin reads as coverage that does not exist). A pinned source that moved is
|
|
136
|
+
`mockup.source_missing`, an unreadable pins file `mockup.pins_unreadable`.
|
|
137
|
+
Comments are ignored on both sides and whitespace is collapsed, so JSX text
|
|
138
|
+
broken across lines still matches.
|
|
139
|
+
|
|
140
|
+
Declare the sets in `.maind/mockup-labels.json` at the repository root:
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
{
|
|
144
|
+
"sets": [
|
|
145
|
+
{
|
|
146
|
+
"id": "site-tour",
|
|
147
|
+
"reason": "The website tour recreates the dashboard navigation verbatim.",
|
|
148
|
+
"pins_file": "apps/website/src/tour/labels.json",
|
|
149
|
+
"source_root": "apps",
|
|
150
|
+
"mockups": ["apps/website/src/tour/", "apps/website/src/DemoFrame.tsx"]
|
|
151
|
+
}
|
|
152
|
+
]
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
`pins_file` holds `{"pins": [{"label": "Agent sessions", "source":
|
|
157
|
+
"dashboard/src/nav.ts"}]}` (or a bare array); small sets may inline them as
|
|
158
|
+
`pins` instead. `source` resolves against `source_root`; `mockups` are path
|
|
159
|
+
prefixes (a directory with a trailing `/`, or a file), and tests never count
|
|
160
|
+
as a mockup. Without the file the detector abstains — it cannot know which of
|
|
161
|
+
your mockups claim to be verbatim. It checks the labels you pinned; a label
|
|
162
|
+
nobody pinned, and how the mockup looks, stay unchecked.
|
|
126
163
|
|
|
127
164
|
Block-eligible is only a finding this branch **introduces** (`level: open`,
|
|
128
165
|
`baseline: introduced`). Objective detectors block by default; table ACL,
|