You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- CI: Dependabot config (`.github/dependabot.yml`) for automated dependency updates.
16
+
- CI: CodeQL workflow (`.github/workflows/codeql.yml`) for code scanning on every push and PR.
17
+
- CI: minimal-permissions block on GitHub Actions workflows.
18
+
- Repo ownership: `.github/CODEOWNERS`.
19
+
- Scripts: `marketing/scripts/_paths.mjs` shared-paths module (single source of truth for repo path resolution across scripts).
20
+
- Docs: top-level README Testing section.
21
+
22
+
### Changed
23
+
24
+
- Marketing-data contract: dead URLs and unverified PyPI claims downgraded to aspirational.
25
+
- Validator hardening: `validate.mjs` enforces hash-verified evidence; `gen-lock.mjs` is fully deterministic; AJV runs in strict mode.
26
+
- Error envelopes: scripts wrap failures in friendly try/catch envelopes (full Structured Error Shape with `code`/`hint`/`retryable` is **planned for v1.1**).
27
+
- Docs accuracy: README script names match `package.json`.
28
+
- SCORECARD methodology: now reports honest revised scores (42/50) alongside the original self-score (50/50) — see SCORECARD.md "Why scores were revised down."
29
+
- SHIP_GATE: gate rows annotated with explicit verification dates (`(YYYY-MM-DD)`).
-`verify` umbrella script (composing `validate` + `lock:check` + `test`) — **planned for v1.1**. Today the equivalent is the explicit `npm run validate && npm run lock:check && npm test` chain that CI runs.
@@ -111,13 +112,16 @@ All JSON uses sorted keys, stable array ordering, and trailing newlines. This pr
111
112
npm install
112
113
113
114
# Format check (Prettier)
114
-
npm run format:check
115
+
npm run fmt:check
115
116
116
117
# Schema + invariant validation
117
118
npm run validate
118
119
119
120
# Lockfile drift check (CI mode)
120
121
npm run lock:check
122
+
123
+
# Tests (version + structure invariants)
124
+
npm test
121
125
```
122
126
123
127
**Typical development loop:**
@@ -126,7 +130,8 @@ npm run lock:check
126
130
2. Add evidence entries to `marketing/manifests/evidence.manifest.json` (and artifacts under `marketing/evidence/` if applicable)
127
131
3. Regenerate the lockfile: `node marketing/scripts/gen-lock.mjs`
128
132
4. Validate: `npm run validate`
129
-
5. Format: `npm run format:check` (fix with `npm run format`)
133
+
5. Format: `npm run fmt:check` (fix with `npm run fmt`)
134
+
6. Run tests: `npm test`
130
135
131
136
---
132
137
@@ -162,9 +167,26 @@ The quality bar is simple and non-negotiable:
162
167
163
168
---
164
169
165
-
## Security
170
+
## Testing
166
171
167
-
No secrets, private URLs, API keys, or customer identifiers belong in this repo. Evidence means public artifacts — screenshots, CI links, test results — not internal logs or credentials. If something can't be shown publicly, it's not evidence.
172
+
```bash
173
+
npm test
174
+
```
175
+
176
+
Runs 46 tests across five suites under `test/` via the Node built-in test runner (no external test framework):
CI runs `npm test` on every push and pull request.
168
190
169
191
---
170
192
@@ -174,7 +196,11 @@ MarketIR changes are versioned via `schemaVersion` in the schema and data files.
174
196
175
197
---
176
198
177
-
## Security & Data Scope
199
+
## Security
200
+
201
+
No secrets, private URLs, API keys, or customer identifiers belong in this repo. Evidence means public artifacts — screenshots, CI links, test results — not internal logs or credentials. If something can't be shown publicly, it's not evidence.
0 commit comments