@zigrivers/scaffold 3.33.2 → 3.33.4
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/content/guides/mmr/index.html +17 -1
- package/content/guides/mmr/index.md +16 -0
- package/content/knowledge/VERSION +1 -1
- package/content/knowledge/backend/backend-api-design.md +5 -5
- package/content/knowledge/backend/backend-architecture.md +5 -5
- package/content/knowledge/backend/backend-async-patterns.md +4 -4
- package/content/knowledge/backend/backend-auth-patterns.md +1 -1
- package/content/knowledge/backend/backend-conventions.md +3 -3
- package/content/knowledge/backend/backend-data-modeling.md +4 -4
- package/content/knowledge/backend/backend-deployment.md +5 -5
- package/content/knowledge/backend/backend-dev-environment.md +2 -2
- package/content/knowledge/backend/backend-fintech-broker-integration.md +3 -3
- package/content/knowledge/backend/backend-fintech-compliance.md +1 -1
- package/content/knowledge/backend/backend-fintech-data-modeling.md +3 -3
- package/content/knowledge/backend/backend-fintech-ledger.md +3 -3
- package/content/knowledge/backend/backend-fintech-observability.md +17 -3
- package/content/knowledge/backend/backend-fintech-order-lifecycle.md +17 -3
- package/content/knowledge/backend/backend-fintech-risk-management.md +17 -3
- package/content/knowledge/backend/backend-fintech-testing.md +14 -2
- package/content/knowledge/backend/backend-observability.md +16 -2
- package/content/knowledge/backend/backend-project-structure.md +14 -3
- package/content/knowledge/backend/backend-requirements.md +16 -3
- package/content/knowledge/backend/backend-security.md +18 -3
- package/content/knowledge/backend/backend-testing.md +15 -2
- package/content/knowledge/backend/backend-worker-patterns.md +17 -3
- package/content/skills/mmr/SKILL.md +9 -0
- package/content/tools/knowledge-audit-entry.md +6 -2
- package/dist/knowledge-freshness/audit-apply-pr.d.ts +2 -2
- package/dist/knowledge-freshness/audit-apply-pr.d.ts.map +1 -1
- package/dist/knowledge-freshness/audit-apply-pr.js +6 -7
- package/dist/knowledge-freshness/audit-apply-pr.js.map +1 -1
- package/dist/knowledge-freshness/audit-runner.d.ts +18 -0
- package/dist/knowledge-freshness/audit-runner.d.ts.map +1 -1
- package/dist/knowledge-freshness/audit-runner.js +27 -1
- package/dist/knowledge-freshness/audit-runner.js.map +1 -1
- package/dist/knowledge-freshness/audit-runner.test.js +63 -1
- package/dist/knowledge-freshness/audit-runner.test.js.map +1 -1
- package/dist/knowledge-freshness/today.d.ts +8 -0
- package/dist/knowledge-freshness/today.d.ts.map +1 -0
- package/dist/knowledge-freshness/today.js +13 -0
- package/dist/knowledge-freshness/today.js.map +1 -0
- package/package.json +1 -1
- package/skills/mmr/SKILL.md +9 -0
|
@@ -1570,10 +1570,26 @@ mmr review --pr 123 --channels grok claude --sync --format json
|
|
|
1570
1570
|
|
|
1571
1571
|
|
|
1572
1572
|
|
|
1573
|
-
|
|
1573
|
+
|
|
1574
|
+
|
|
1575
|
+
|
|
1576
|
+
|
|
1577
|
+
<table><thead><tr><th>Command</th><th>Purpose</th></tr></thead><tbody><tr><td><code>mmr reconcile <job-id> --channel <name> --input <data></code></td><td>Inject an external channel's findings (e.g. the Superpowers agent) into an existing job and re-run the results pipeline. Input is a file, <code>-</code> for stdin, or inline JSON. <span class="fp" data-path="packages/mmr/src/commands/reconcile.ts:17">packages/mmr/src/commands/reconcile.ts:17</span></td></tr><tr><td><code>mmr status <job-id></code></td><td>Per-channel status and elapsed time. Exit 0 = all complete, 1 = running, 2 = a channel failed, 5 = not found.</td></tr><tr><td><code>mmr results <job-id> [--raw]</code></td><td>Re-run parse → reconcile → format on a completed job. Exit code reflects the verdict.</td></tr><tr><td><code>mmr jobs <list|prune></code></td><td>List jobs, or prune old ones per <code>job_retention_days</code>.</td></tr><tr><td><code>mmr sessions <start|list|show|end> <id></code></td><td>Manage multi-round review sessions (stored under <code>~/.mmr/sessions/</code>).</td></tr><tr><td><code>mmr config <init|show|validate…></code></td><td>Scaffold and inspect <code>.mmr.yaml</code> (including OSS-runtime example blocks).</td></tr><tr><td><code>mmr ack <add|list|rm|prune></code></td><td>Sticky acknowledgments — silence a finding by its stable key so it stops blocking across rounds.</td></tr><tr><td><code>mmr skill install --platform <name> | --all</code></td><td>Install a "use MMR for code review" skill into a project per agent CLI: Cursor (<code>.cursor/rules/mmr-review.mdc</code>), Gemini (<code>GEMINI.md</code>), Codex + Antigravity (shared <code>AGENTS.md</code> managed block). Supports <code>--dry-run</code>, <code>--force</code>, and <code>--dir</code>. <span class="fp" data-path="packages/mmr/src/commands/skill.ts:85">packages/mmr/src/commands/skill.ts:85</span></td></tr></tbody></table>
|
|
1574
1578
|
<pre><code class="language-bash"># Capture a job_id from a review, then fold in an agent channel:
|
|
1575
1579
|
mmr reconcile "$JOB_ID" --channel superpowers --input findings.json
|
|
1580
|
+
|
|
1581
|
+
# Install the MMR review skill into the current project for one or all agent CLIs:
|
|
1582
|
+
mmr skill install --platform cursor
|
|
1583
|
+
mmr skill install --all --dry-run
|
|
1576
1584
|
</code></pre>
|
|
1585
|
+
<div class="callout callout-info"><p><strong>Each agent CLI reads its own instruction file</strong>, so <code>mmr skill install</code> writes the
|
|
1586
|
+
skill in the matching convention: a dedicated <code>.cursor/rules/mmr-review.mdc</code> for
|
|
1587
|
+
Cursor, and an idempotent managed block (delimited by <code><!-- BEGIN mmr-skill --></code> and <code><!-- END mmr-skill --></code>) in <code>GEMINI.md</code>
|
|
1588
|
+
(Gemini) or <code>AGENTS.md</code> (Codex and Antigravity share the <code>AGENTS.md</code> standard, so
|
|
1589
|
+
both resolve to the same block). For the block-mode files, re-running rewrites only
|
|
1590
|
+
the managed block and leaves the rest of the file intact; the dedicated Cursor file
|
|
1591
|
+
is created fresh and needs <code>--force</code> to overwrite. The skill bodies are bundled with
|
|
1592
|
+
the package under <code>packages/mmr/templates/skills/</code> <span class="fp" data-path="packages/mmr/templates/skills/agents/mmr-review.md:1">packages/mmr/templates/skills/agents/mmr-review.md:1</span>.</p></div>
|
|
1577
1593
|
<h2 id="channel-architecture">Channel architecture</h2>
|
|
1578
1594
|
<p>A channel is <strong>pure config data</strong> — there is no per-channel code. The dispatcher
|
|
1579
1595
|
runs whatever <code>command</code> the channel defines, hands it the prompt, and parses its
|
|
@@ -129,12 +129,28 @@ mmr review --pr 123 --channels grok claude --sync --format json
|
|
|
129
129
|
| `mmr sessions <start\|list\|show\|end> <id>` | Manage multi-round review sessions (stored under `~/.mmr/sessions/`). |
|
|
130
130
|
| `mmr config <init\|show\|validate…>` | Scaffold and inspect `.mmr.yaml` (including OSS-runtime example blocks). |
|
|
131
131
|
| `mmr ack <add\|list\|rm\|prune>` | Sticky acknowledgments — silence a finding by its stable key so it stops blocking across rounds. |
|
|
132
|
+
| `mmr skill install --platform <name> \| --all` | Install a "use MMR for code review" skill into a project per agent CLI: Cursor (`.cursor/rules/mmr-review.mdc`), Gemini (`GEMINI.md`), Codex + Antigravity (shared `AGENTS.md` managed block). Supports `--dry-run`, `--force`, and `--dir`. :cite[packages/mmr/src/commands/skill.ts:85] |
|
|
132
133
|
|
|
133
134
|
```bash
|
|
134
135
|
# Capture a job_id from a review, then fold in an agent channel:
|
|
135
136
|
mmr reconcile "$JOB_ID" --channel superpowers --input findings.json
|
|
137
|
+
|
|
138
|
+
# Install the MMR review skill into the current project for one or all agent CLIs:
|
|
139
|
+
mmr skill install --platform cursor
|
|
140
|
+
mmr skill install --all --dry-run
|
|
136
141
|
```
|
|
137
142
|
|
|
143
|
+
:::callout{type=info}
|
|
144
|
+
**Each agent CLI reads its own instruction file**, so `mmr skill install` writes the
|
|
145
|
+
skill in the matching convention: a dedicated `.cursor/rules/mmr-review.mdc` for
|
|
146
|
+
Cursor, and an idempotent managed block (delimited by `<!-- BEGIN mmr-skill -->` and `<!-- END mmr-skill -->`) in `GEMINI.md`
|
|
147
|
+
(Gemini) or `AGENTS.md` (Codex and Antigravity share the `AGENTS.md` standard, so
|
|
148
|
+
both resolve to the same block). For the block-mode files, re-running rewrites only
|
|
149
|
+
the managed block and leaves the rest of the file intact; the dedicated Cursor file
|
|
150
|
+
is created fresh and needs `--force` to overwrite. The skill bodies are bundled with
|
|
151
|
+
the package under `packages/mmr/templates/skills/` :cite[packages/mmr/templates/skills/agents/mmr-review.md:1].
|
|
152
|
+
:::
|
|
153
|
+
|
|
138
154
|
## Channel architecture
|
|
139
155
|
|
|
140
156
|
A channel is **pure config data** — there is no per-channel code. The dispatcher
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.8
|
|
@@ -13,21 +13,21 @@ topics:
|
|
|
13
13
|
- versioning
|
|
14
14
|
- pagination
|
|
15
15
|
volatility: evolving
|
|
16
|
-
last-reviewed:
|
|
16
|
+
last-reviewed: 2026-06-02
|
|
17
17
|
version-pin: null
|
|
18
18
|
sources:
|
|
19
19
|
- url: https://spec.openapis.org/oas/latest.html
|
|
20
20
|
hash: sha256:15f12e539a3ac811c5f18950bc9cff296b43a22ad4d50b4db8d533f37ebc1d23
|
|
21
|
-
retrieved:
|
|
21
|
+
retrieved: 2026-06-02
|
|
22
22
|
- url: https://spec.graphql.org/
|
|
23
23
|
hash: sha256:14221cbb56b50b8179803abd08a5f801ebbca98c2d97eb86b47469284a3b88cf
|
|
24
|
-
retrieved:
|
|
24
|
+
retrieved: 2026-06-02
|
|
25
25
|
- url: https://www.rfc-editor.org/rfc/rfc9110.html
|
|
26
26
|
hash: sha256:d431760660ea44e130f6e919dab216df2d0b3a490567a98089267523368fe1e5
|
|
27
|
-
retrieved:
|
|
27
|
+
retrieved: 2026-06-02
|
|
28
28
|
- url: https://martinfowler.com/articles/richardsonMaturityModel.html
|
|
29
29
|
hash: sha256:67fe98bd0c4572223f6973109e515fade396e29a3fc6ccb2323409392c91b501
|
|
30
|
-
retrieved:
|
|
30
|
+
retrieved: 2026-06-02
|
|
31
31
|
---
|
|
32
32
|
|
|
33
33
|
API design is a long-lived contract. Every structural decision — URL shape, error format, pagination scheme, versioning strategy — is expensive to change after consumers depend on it. Design APIs from the consumer's perspective first. The best API is one where new developers can predict the shape of an endpoint they have never seen before, because every other endpoint follows the same patterns.
|
|
@@ -13,21 +13,21 @@ topics:
|
|
|
13
13
|
- hexagonal
|
|
14
14
|
- clean-architecture
|
|
15
15
|
volatility: evolving
|
|
16
|
-
last-reviewed:
|
|
16
|
+
last-reviewed: 2026-06-02
|
|
17
17
|
version-pin: null
|
|
18
18
|
sources:
|
|
19
19
|
- url: https://microservices.io/patterns/
|
|
20
20
|
hash: sha256:fa1ff9ebd46faa3f90ad25e7f536a78019167c61e03186be6cbb08c46367db5d
|
|
21
|
-
retrieved:
|
|
21
|
+
retrieved: 2026-06-02
|
|
22
22
|
- url: https://martinfowler.com/bliki/CQRS.html
|
|
23
23
|
hash: sha256:11cf46ce308805e94e4b110016b09d004fbf8c47669a7041080f661c798b2f29
|
|
24
|
-
retrieved:
|
|
24
|
+
retrieved: 2026-06-02
|
|
25
25
|
- url: https://martinfowler.com/eaaDev/EventSourcing.html
|
|
26
26
|
hash: sha256:8c266ad1f81881deac8a59d86f429a594497eac3243aa1bd5b40202ccfada596
|
|
27
|
-
retrieved:
|
|
27
|
+
retrieved: 2026-06-02
|
|
28
28
|
- url: https://martinfowler.com/bliki/MonolithFirst.html
|
|
29
29
|
hash: sha256:722d8d78beddd9e0f6ff3e856eec94dfa2b9fa3bebcaaf4c9e80ccdd3c0e1446
|
|
30
|
-
retrieved:
|
|
30
|
+
retrieved: 2026-06-02
|
|
31
31
|
---
|
|
32
32
|
|
|
33
33
|
Backend architecture is the set of structural decisions that determine how the system scales, how teams work independently, and how expensive future changes will be. The single most common backend architecture mistake is choosing microservices before the problem demands them. Start with the simplest architecture that solves the current problem, and evolve to complexity only when specific pain points — not hypothetical future ones — force the change.
|
|
@@ -11,18 +11,18 @@ topics:
|
|
|
11
11
|
- idempotency
|
|
12
12
|
- cqrs
|
|
13
13
|
volatility: evolving
|
|
14
|
-
last-reviewed:
|
|
14
|
+
last-reviewed: 2026-06-02
|
|
15
15
|
version-pin: null
|
|
16
16
|
sources:
|
|
17
17
|
- url: https://microservices.io/patterns/data/saga.html
|
|
18
18
|
hash: sha256:c42eac244bf94f8db7767ba131c1715066a2dd10beb1cd6f01e5f92e19d2f0b3
|
|
19
|
-
retrieved:
|
|
19
|
+
retrieved: 2026-06-02
|
|
20
20
|
- url: https://martinfowler.com/articles/patterns-of-distributed-systems/
|
|
21
21
|
hash: sha256:93092f76ea34af4d60c068180a063d9fde27ab6c7b604ba42337aeed023cab86
|
|
22
|
-
retrieved:
|
|
22
|
+
retrieved: 2026-06-02
|
|
23
23
|
- url: https://sre.google/sre-book/handling-overload/
|
|
24
24
|
hash: sha256:8ca912a82390e7f61e8bbae7baab3a74489f5068d71dee1ff24aed99375e0373
|
|
25
|
-
retrieved:
|
|
25
|
+
retrieved: 2026-06-02
|
|
26
26
|
---
|
|
27
27
|
|
|
28
28
|
Asynchronous patterns decouple services in time and space, enabling systems to absorb load spikes, survive partial failures, and scale independently — but they introduce delivery guarantees and consistency tradeoffs that must be designed for explicitly from the start.
|
|
@@ -11,15 +11,15 @@ topics:
|
|
|
11
11
|
- naming
|
|
12
12
|
- file-organization
|
|
13
13
|
volatility: stable
|
|
14
|
-
last-reviewed:
|
|
14
|
+
last-reviewed: 2026-06-02
|
|
15
15
|
version-pin: null
|
|
16
16
|
sources:
|
|
17
17
|
- url: https://google.github.io/styleguide/
|
|
18
18
|
hash: sha256:e40c3a5dfb0a54715f3e120b309a11b7707e03143399f746ea651ad0a74c983f
|
|
19
|
-
retrieved:
|
|
19
|
+
retrieved: 2026-06-02
|
|
20
20
|
- url: https://martinfowler.com/tags/clean%20code.html
|
|
21
21
|
hash: sha256:7b8d78e227d63880ce0b2884da4deda09aa223d43f81614630a5a86d7f766ee3
|
|
22
|
-
retrieved:
|
|
22
|
+
retrieved: 2026-06-02
|
|
23
23
|
---
|
|
24
24
|
|
|
25
25
|
Consistent conventions in a backend codebase reduce cognitive load, make code reviewable at a glance, and prevent entire classes of bugs. Naming, error handling, and logging are the three highest-leverage areas — they touch every layer of the stack and every engineer on the team. Establish these conventions before the first PR, codify them in linting rules where possible, and treat violations as blocking review comments.
|
|
@@ -13,18 +13,18 @@ topics:
|
|
|
13
13
|
- eventual-consistency
|
|
14
14
|
- connection-pooling
|
|
15
15
|
volatility: stable
|
|
16
|
-
last-reviewed: 2026-
|
|
16
|
+
last-reviewed: 2026-06-02
|
|
17
17
|
version-pin: null
|
|
18
18
|
sources:
|
|
19
19
|
- url: https://www.postgresql.org/docs/current/
|
|
20
20
|
hash: sha256:5fc8b49295f6c1c6a80ddab08d20f6aa2395e9804353fc4e8e8f57e77564d3f2
|
|
21
|
-
retrieved: 2026-
|
|
21
|
+
retrieved: 2026-06-02
|
|
22
22
|
- url: https://martinfowler.com/articles/evodb.html
|
|
23
23
|
hash: sha256:77d7c85db8a99f4b194e89bec6e0cd14e860cce0f54475326823894ce5b3a289
|
|
24
|
-
retrieved: 2026-
|
|
24
|
+
retrieved: 2026-06-02
|
|
25
25
|
- url: https://microservices.io/patterns/data/database-per-service.html
|
|
26
26
|
hash: sha256:014afb315804d3d1464b1ac4c021c0abe9ab215ee6c49745a4ed57f542b35de6
|
|
27
|
-
retrieved: 2026-
|
|
27
|
+
retrieved: 2026-06-02
|
|
28
28
|
---
|
|
29
29
|
|
|
30
30
|
Data modeling decisions have the highest reversal cost of any backend choice. A schema design that seemed reasonable at launch can become an operational crisis at scale — queries that worked at 10,000 rows fail at 100 million. The goal is to match the data model to the access patterns of the application, not to normalize for its own sake or to denormalize prematurely. Design the schema with the queries in mind from day one.
|
|
@@ -13,21 +13,21 @@ topics:
|
|
|
13
13
|
- blue-green
|
|
14
14
|
- canary
|
|
15
15
|
volatility: evolving
|
|
16
|
-
last-reviewed:
|
|
16
|
+
last-reviewed: 2026-06-02
|
|
17
17
|
version-pin: null
|
|
18
18
|
sources:
|
|
19
19
|
- url: https://martinfowler.com/bliki/BlueGreenDeployment.html
|
|
20
20
|
hash: sha256:eeb9a79a1caab2e9ffcafdfcfb12d9d6669918a7f2af3e9f44087458d0951717
|
|
21
|
-
retrieved:
|
|
21
|
+
retrieved: 2026-06-02
|
|
22
22
|
- url: https://martinfowler.com/bliki/CanaryRelease.html
|
|
23
23
|
hash: sha256:916caf0f38ffd564c0c478b51d7e5dac9fdbc4fa8bb9b6729300fc96d27c2715
|
|
24
|
-
retrieved:
|
|
24
|
+
retrieved: 2026-06-02
|
|
25
25
|
- url: https://sre.google/sre-book/release-engineering/
|
|
26
26
|
hash: sha256:eb0116a837c4f1b94eff42bde5a47a0a59874c8b432e3bf070374883ec558a54
|
|
27
|
-
retrieved:
|
|
27
|
+
retrieved: 2026-06-02
|
|
28
28
|
- url: https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/welcome.html
|
|
29
29
|
hash: sha256:1e7eac9d22264bbc9dbca009645063474ea47d8940b21d15b1d68f03b0a1f4ee
|
|
30
|
-
retrieved:
|
|
30
|
+
retrieved: 2026-06-02
|
|
31
31
|
---
|
|
32
32
|
|
|
33
33
|
Deployment reliability is a multiplier on every other engineering investment — a well-written service that deploys poorly will cause more incidents than a mediocre service that deploys safely and rolls back cleanly.
|
|
@@ -11,12 +11,12 @@ topics:
|
|
|
11
11
|
- testing
|
|
12
12
|
- environment-variables
|
|
13
13
|
volatility: evolving
|
|
14
|
-
last-reviewed: 2026-
|
|
14
|
+
last-reviewed: 2026-06-02
|
|
15
15
|
version-pin: null
|
|
16
16
|
sources:
|
|
17
17
|
- url: https://www.postgresql.org/docs/current/
|
|
18
18
|
hash: sha256:5fc8b49295f6c1c6a80ddab08d20f6aa2395e9804353fc4e8e8f57e77564d3f2
|
|
19
|
-
retrieved: 2026-
|
|
19
|
+
retrieved: 2026-06-02
|
|
20
20
|
---
|
|
21
21
|
|
|
22
22
|
A backend development environment that requires manual setup steps is a productivity drain and an onboarding failure. The standard should be: clone the repo, run one command, and have a fully functional local environment in under five minutes. Docker Compose is the primary tool for achieving this — it pins the exact versions of every external dependency and makes the environment reproducible across all developer machines.
|
|
@@ -11,15 +11,15 @@ topics:
|
|
|
11
11
|
- credentials
|
|
12
12
|
- retry
|
|
13
13
|
volatility: evolving
|
|
14
|
-
last-reviewed:
|
|
14
|
+
last-reviewed: 2026-06-02
|
|
15
15
|
version-pin: null
|
|
16
16
|
sources:
|
|
17
17
|
- url: https://microservices.io/patterns/reliability/circuit-breaker.html
|
|
18
18
|
hash: sha256:a117f72fc0d279ea99d4234ea8a8cc7bdf23d7ed59d94effc6129d613518a6fa
|
|
19
|
-
retrieved:
|
|
19
|
+
retrieved: 2026-06-02
|
|
20
20
|
- url: https://martinfowler.com/bliki/CircuitBreaker.html
|
|
21
21
|
hash: sha256:73239948ec03887430a4d139e384e94bc640fec894fb1dce53b56abe579c5da4
|
|
22
|
-
retrieved:
|
|
22
|
+
retrieved: 2026-06-02
|
|
23
23
|
---
|
|
24
24
|
|
|
25
25
|
A fintech backend that routes orders or reads positions across more than one broker inherits the union of every broker's quirks, outages, auth schemes, and undocumented behaviors. The broker-integration layer exists to hide that mess behind one normalized internal contract so the rest of the system — risk, order lifecycle, ledger, UI — can stay clean. This doc covers the adapter contract, credential handling, error harmonization, rate-limit strategy, and the specific pitfalls that recur regardless of which brokers you connect.
|
|
@@ -11,15 +11,15 @@ topics:
|
|
|
11
11
|
- positions
|
|
12
12
|
- trades
|
|
13
13
|
volatility: stable
|
|
14
|
-
last-reviewed: 2026-
|
|
14
|
+
last-reviewed: 2026-06-03
|
|
15
15
|
version-pin: null
|
|
16
16
|
sources:
|
|
17
17
|
- url: https://www.postgresql.org/docs/current/datatype-numeric.html
|
|
18
18
|
hash: sha256:1267f14a5a637a44fc5bca1eeae354212578564013e16b9db7ed41ee87bc0e08
|
|
19
|
-
retrieved: 2026-
|
|
19
|
+
retrieved: 2026-06-03
|
|
20
20
|
- url: https://www.iso.org/iso-4217-currency-codes.html
|
|
21
21
|
hash: sha256:d0983be3fa2b0d527e3e495e83857b8bc2434f4515669a6f6bb1a45b0c6559a5
|
|
22
|
-
retrieved: 2026-
|
|
22
|
+
retrieved: 2026-06-03
|
|
23
23
|
---
|
|
24
24
|
|
|
25
25
|
Financial data modeling is where most fintech bugs are born: a float creeps into a money field, a currency is implied instead of stored, a tick table grows unbounded, or a `current_position` column drifts from the journal. This doc covers the non-negotiable shapes of money, quantity, and price data, and the time-series and derived-view patterns that keep a trading or banking system honest at scale.
|
|
@@ -13,15 +13,15 @@ topics:
|
|
|
13
13
|
- idempotency
|
|
14
14
|
- invariants
|
|
15
15
|
volatility: stable
|
|
16
|
-
last-reviewed: 2026-
|
|
16
|
+
last-reviewed: 2026-06-03
|
|
17
17
|
version-pin: null
|
|
18
18
|
sources:
|
|
19
19
|
- url: https://martinfowler.com/eaaCatalog/
|
|
20
20
|
hash: sha256:45b80ec0b5893f07a6d0170851f87d0904617d34f3321a0f1aab0d8807b61be7
|
|
21
|
-
retrieved: 2026-
|
|
21
|
+
retrieved: 2026-06-03
|
|
22
22
|
- url: https://www.postgresql.org/docs/current/ddl-constraints.html
|
|
23
23
|
hash: sha256:086b039b181be11933f9408989fd66297cadb4e02a631cd9cb88235acd8675d8
|
|
24
|
-
retrieved: 2026-
|
|
24
|
+
retrieved: 2026-06-03
|
|
25
25
|
---
|
|
26
26
|
|
|
27
27
|
A fintech ledger is the authoritative record of money movement; if it is wrong, nothing else in the system can be trusted. The discipline is borrowed intact from 700 years of double-entry bookkeeping — not a new invention, and not negotiable. This doc covers the invariants, schema shape, idempotent posting mechanics, and reconciliation patterns that keep a ledger survivable at production scale.
|
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: backend-fintech-observability
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Trade event correlation; market-hours aware scheduling; SLOs for fintech systems; compliance logging; alerting
|
|
5
|
+
strategy.
|
|
6
|
+
topics:
|
|
7
|
+
- backend
|
|
8
|
+
- fintech
|
|
9
|
+
- observability
|
|
10
|
+
- tracing
|
|
11
|
+
- slos
|
|
12
|
+
- alerting
|
|
13
|
+
- correlation-id
|
|
14
|
+
- market-hours
|
|
5
15
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
16
|
+
last-reviewed: 2026-06-04
|
|
7
17
|
version-pin: null
|
|
8
18
|
sources:
|
|
9
19
|
- url: https://opentelemetry.io/docs/
|
|
20
|
+
hash: sha256:706e97cb13d09d70eee19f203147c630bd13148cb8c5d60fd2a9f4452dbf1559
|
|
21
|
+
retrieved: 2026-06-04
|
|
10
22
|
- url: https://sre.google/sre-book/service-level-objectives/
|
|
23
|
+
hash: sha256:449fb54ce65e05102fac46c797a08b86c5ab93ade2c70c63ae25e7648d687d7d
|
|
24
|
+
retrieved: 2026-06-04
|
|
11
25
|
---
|
|
12
26
|
|
|
13
27
|
Observability for a trading system is not generic APM with a finance skin — it is the ability to reconstruct any single order, end to end, across six or more services, on demand, years later, with timezone-correct timestamps and a stable correlation identifier. It is also the early-warning system that catches a sudden drop in fill rate at 09:31 ET before the desk calls. Done well it overlaps with — but does not replace — the immutable audit trail (`backend-fintech-compliance.md`).
|
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: backend-fintech-order-lifecycle
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Order state machine; fills, partial fills, cancellation; event-driven order tracking; idempotency; handling "unknown"
|
|
5
|
+
states.
|
|
6
|
+
topics:
|
|
7
|
+
- backend
|
|
8
|
+
- fintech
|
|
9
|
+
- orders
|
|
10
|
+
- state-machine
|
|
11
|
+
- fills
|
|
12
|
+
- partial-fills
|
|
13
|
+
- event-driven
|
|
14
|
+
- webhooks
|
|
5
15
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
16
|
+
last-reviewed: 2026-06-04
|
|
7
17
|
version-pin: null
|
|
8
18
|
sources:
|
|
9
19
|
- url: https://microservices.io/patterns/data/saga.html
|
|
20
|
+
hash: sha256:c42eac244bf94f8db7767ba131c1715066a2dd10beb1cd6f01e5f92e19d2f0b3
|
|
21
|
+
retrieved: 2026-06-04
|
|
10
22
|
- url: https://martinfowler.com/articles/patterns-of-distributed-systems/
|
|
23
|
+
hash: sha256:93092f76ea34af4d60c068180a063d9fde27ab6c7b604ba42337aeed023cab86
|
|
24
|
+
retrieved: 2026-06-04
|
|
11
25
|
---
|
|
12
26
|
|
|
13
27
|
Orders in a trading system are long-lived, asynchronous, externally mutated objects — the exact shape of problem a disciplined state machine is built for. This doc covers the canonical states and transitions, how fills and partial fills land, why "unknown" is a real state you cannot wish away, and the reconciliation posture that keeps internal bookkeeping aligned with the broker of record.
|
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: backend-fintech-risk-management
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Position limits, drawdown caps, circuit breakers, kill switches; pre-trade and post-trade risk checks; operational
|
|
5
|
+
risk controls.
|
|
6
|
+
topics:
|
|
7
|
+
- backend
|
|
8
|
+
- fintech
|
|
9
|
+
- risk
|
|
10
|
+
- position-limits
|
|
11
|
+
- drawdown
|
|
12
|
+
- circuit-breakers
|
|
13
|
+
- kill-switch
|
|
14
|
+
- pre-trade-checks
|
|
5
15
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
16
|
+
last-reviewed: 2026-06-04
|
|
7
17
|
version-pin: null
|
|
8
18
|
sources:
|
|
9
19
|
- url: https://martinfowler.com/bliki/CircuitBreaker.html
|
|
20
|
+
hash: sha256:73239948ec03887430a4d139e384e94bc640fec894fb1dce53b56abe579c5da4
|
|
21
|
+
retrieved: 2026-06-04
|
|
10
22
|
- url: https://microservices.io/patterns/reliability/circuit-breaker.html
|
|
23
|
+
hash: sha256:a117f72fc0d279ea99d4234ea8a8cc7bdf23d7ed59d94effc6129d613518a6fa
|
|
24
|
+
retrieved: 2026-06-04
|
|
11
25
|
---
|
|
12
26
|
|
|
13
27
|
Risk management in a trading system is the set of controls that stops a bad day from becoming a catastrophic one. It lives in two places: *before* an order goes to the broker (pre-trade checks that block) and *after* fills land (post-trade monitoring that alerts, throttles, or halts). Neither half is optional, and both are exercised continuously, not just during incidents.
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: backend-fintech-testing
|
|
3
3
|
description: Deterministic backtests; financial-accuracy tests; broker sandbox testing; regulatory edge-case coverage.
|
|
4
|
-
topics:
|
|
4
|
+
topics:
|
|
5
|
+
- backend
|
|
6
|
+
- fintech
|
|
7
|
+
- testing
|
|
8
|
+
- determinism
|
|
9
|
+
- backtesting
|
|
10
|
+
- sandbox
|
|
11
|
+
- accuracy
|
|
12
|
+
- property-based
|
|
5
13
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
14
|
+
last-reviewed: 2026-06-04
|
|
7
15
|
version-pin: null
|
|
8
16
|
sources:
|
|
9
17
|
- url: https://docs.pact.io/
|
|
18
|
+
hash: sha256:404a36a35476bc730dc8b0bc66ecde4eb1295c63dd9c357f30d7c60aa24e960e
|
|
19
|
+
retrieved: 2026-06-04
|
|
10
20
|
- url: https://martinfowler.com/articles/practical-test-pyramid.html
|
|
21
|
+
hash: sha256:d5f669995439f1c7bb7109a8f5e52044f1b7f39e92115679518d2b762ca39eff
|
|
22
|
+
retrieved: 2026-06-04
|
|
11
23
|
---
|
|
12
24
|
|
|
13
25
|
Fintech tests have unusual requirements: bit-exact numeric accuracy, full determinism across runs and hosts, rich regulatory edge-case coverage, and realistic multi-session flows that span market-hours boundaries. A flakey fintech test is worse than no test — it hides the exact race conditions that cause real money to move incorrectly. This doc covers the patterns that keep backtests reproducible, numeric tests honest, broker integrations verifiable, and regulatory behavior exercised before it becomes an incident.
|
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: backend-observability
|
|
3
3
|
description: Structured logging, distributed tracing, RED method metrics, SLO-based alerting, and operational dashboards
|
|
4
|
-
topics:
|
|
4
|
+
topics:
|
|
5
|
+
- backend
|
|
6
|
+
- observability
|
|
7
|
+
- logging
|
|
8
|
+
- tracing
|
|
9
|
+
- metrics
|
|
10
|
+
- alerting
|
|
11
|
+
- opentelemetry
|
|
12
|
+
- slo
|
|
5
13
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
14
|
+
last-reviewed: 2026-06-04
|
|
7
15
|
version-pin: null
|
|
8
16
|
sources:
|
|
9
17
|
- url: https://opentelemetry.io/docs/
|
|
18
|
+
hash: sha256:706e97cb13d09d70eee19f203147c630bd13148cb8c5d60fd2a9f4452dbf1559
|
|
19
|
+
retrieved: 2026-06-04
|
|
10
20
|
- url: https://sre.google/sre-book/service-level-objectives/
|
|
21
|
+
hash: sha256:449fb54ce65e05102fac46c797a08b86c5ab93ade2c70c63ae25e7648d687d7d
|
|
22
|
+
retrieved: 2026-06-04
|
|
11
23
|
- url: https://sre.google/sre-book/monitoring-distributed-systems/
|
|
24
|
+
hash: sha256:ea5268bca492024a399730734132c7513b4412b10098a207f2e3090eeae1a6fe
|
|
25
|
+
retrieved: 2026-06-04
|
|
12
26
|
---
|
|
13
27
|
|
|
14
28
|
Observability is the ability to answer arbitrary questions about a system's behavior using its outputs alone — without deploying new code. Investing in structured logging, distributed tracing, and SLO-based alerting before the first incident makes the difference between a 5-minute diagnosis and a 5-hour outage.
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: backend-project-structure
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Canonical directory layout for backend services — routes/controllers, services, models/repositories, middleware,
|
|
5
|
+
utils, config resolution, and dependency injection patterns
|
|
6
|
+
topics:
|
|
7
|
+
- backend
|
|
8
|
+
- project-structure
|
|
9
|
+
- architecture
|
|
10
|
+
- dependency-injection
|
|
11
|
+
- layers
|
|
5
12
|
volatility: stable
|
|
6
|
-
last-reviewed:
|
|
13
|
+
last-reviewed: 2026-06-04
|
|
7
14
|
version-pin: null
|
|
8
15
|
sources:
|
|
9
16
|
- url: https://martinfowler.com/eaaCatalog/
|
|
17
|
+
hash: sha256:45b80ec0b5893f07a6d0170851f87d0904617d34f3321a0f1aab0d8807b61be7
|
|
18
|
+
retrieved: 2026-06-04
|
|
10
19
|
- url: https://martinfowler.com/articles/injection.html
|
|
20
|
+
hash: sha256:a05822499fee06b676a369cc2fb0b2bdda6a589e7589382907b1ab531c26ef19
|
|
21
|
+
retrieved: 2026-06-04
|
|
11
22
|
---
|
|
12
23
|
|
|
13
24
|
A well-organized backend project is readable to a new engineer in minutes. The directory layout should communicate the architecture: which layer owns which responsibility, where to add a new feature, and where to find any piece of behavior. The most common structural failure is mixing concerns — business logic in controllers, database calls in services, HTTP parsing in repositories. Enforce boundaries through structure first, tooling second.
|
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: backend-requirements
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
API-first design principles, SLA requirements (latency p99, uptime, throughput), scalability targets, backwards
|
|
5
|
+
compatibility commitments, and API versioning strategy
|
|
6
|
+
topics:
|
|
7
|
+
- backend
|
|
8
|
+
- requirements
|
|
9
|
+
- sla
|
|
10
|
+
- api
|
|
11
|
+
- versioning
|
|
12
|
+
- scalability
|
|
13
|
+
- performance
|
|
5
14
|
volatility: stable
|
|
6
|
-
last-reviewed:
|
|
15
|
+
last-reviewed: 2026-06-04
|
|
7
16
|
version-pin: null
|
|
8
17
|
sources:
|
|
9
18
|
- url: https://spec.openapis.org/oas/latest.html
|
|
19
|
+
hash: sha256:15f12e539a3ac811c5f18950bc9cff296b43a22ad4d50b4db8d533f37ebc1d23
|
|
20
|
+
retrieved: 2026-06-04
|
|
10
21
|
- url: https://sre.google/sre-book/service-level-objectives/
|
|
22
|
+
hash: sha256:449fb54ce65e05102fac46c797a08b86c5ab93ade2c70c63ae25e7648d687d7d
|
|
23
|
+
retrieved: 2026-06-04
|
|
11
24
|
---
|
|
12
25
|
|
|
13
26
|
Backend requirements are the contract the service makes with its consumers — other teams, external developers, and end users. Setting explicit SLAs, versioning policies, and scalability targets before any code is written eliminates the most expensive class of late-breaking architectural changes. A backend that surprises its callers with latency spikes or breaking changes destroys trust and creates cascading toil.
|
|
@@ -1,14 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: backend-security
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Input validation, SQL injection prevention, rate limiting, OWASP API Security Top 10, secrets management, and
|
|
5
|
+
dependency auditing
|
|
6
|
+
topics:
|
|
7
|
+
- backend
|
|
8
|
+
- security
|
|
9
|
+
- validation
|
|
10
|
+
- sql-injection
|
|
11
|
+
- rate-limiting
|
|
12
|
+
- owasp
|
|
13
|
+
- secrets
|
|
5
14
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
15
|
+
last-reviewed: 2026-06-04
|
|
7
16
|
version-pin: null
|
|
8
17
|
sources:
|
|
9
18
|
- url: https://owasp.org/www-project-api-security/
|
|
19
|
+
hash: sha256:ca850597dfc526453cb177306117d47a71e36b445b7c662d86ff42d777f2a035
|
|
20
|
+
retrieved: 2026-06-04
|
|
10
21
|
- url: https://owasp.org/www-project-top-ten/
|
|
22
|
+
hash: sha256:aa01e44bed66cf7d8c167a39e58c0ffd131110ae4baed6beb0195c4c875af72e
|
|
23
|
+
retrieved: 2026-06-04
|
|
11
24
|
- url: https://owasp.org/www-project-cheat-sheets/
|
|
25
|
+
hash: sha256:14ca69c2260d9f0de17b44c7c097fcdd3f9a23cf2bfe927cf3896ca9cbcd14fe
|
|
26
|
+
retrieved: 2026-06-04
|
|
12
27
|
---
|
|
13
28
|
|
|
14
29
|
Security vulnerabilities in backend services are disproportionately expensive to fix after launch — building in input validation, injection prevention, rate limiting, and secrets hygiene from the start is always cheaper than retrofitting them under pressure after a breach.
|
|
@@ -1,14 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: backend-testing
|
|
3
3
|
description: API integration tests, contract testing, database testing patterns, mocking external services, and load testing
|
|
4
|
-
topics:
|
|
4
|
+
topics:
|
|
5
|
+
- backend
|
|
6
|
+
- testing
|
|
7
|
+
- integration-tests
|
|
8
|
+
- contract-testing
|
|
9
|
+
- database-testing
|
|
10
|
+
- mocking
|
|
11
|
+
- load-testing
|
|
5
12
|
volatility: stable
|
|
6
|
-
last-reviewed:
|
|
13
|
+
last-reviewed: 2026-06-04
|
|
7
14
|
version-pin: null
|
|
8
15
|
sources:
|
|
9
16
|
- url: https://docs.pact.io/
|
|
17
|
+
hash: sha256:404a36a35476bc730dc8b0bc66ecde4eb1295c63dd9c357f30d7c60aa24e960e
|
|
18
|
+
retrieved: 2026-06-04
|
|
10
19
|
- url: https://martinfowler.com/articles/practical-test-pyramid.html
|
|
20
|
+
hash: sha256:d5f669995439f1c7bb7109a8f5e52044f1b7f39e92115679518d2b762ca39eff
|
|
21
|
+
retrieved: 2026-06-04
|
|
11
22
|
- url: https://martinfowler.com/bliki/ContractTest.html
|
|
23
|
+
hash: sha256:0be8475d7f5e37f771ded4b200f1ee0dadbc35480fc4a5b1b2430748922e11c8
|
|
24
|
+
retrieved: 2026-06-04
|
|
12
25
|
---
|
|
13
26
|
|
|
14
27
|
Backend testing strategy determines how much confidence you have before every deploy — a well-layered test suite catches regressions at the fastest possible feedback loop while still exercising the real data layer and honoring API contracts with consumers.
|
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: backend-worker-patterns
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Background job frameworks, cron scheduling, event consumers, dead letter queues, retry strategies, and graceful
|
|
5
|
+
shutdown for workers
|
|
6
|
+
topics:
|
|
7
|
+
- backend
|
|
8
|
+
- workers
|
|
9
|
+
- bullmq
|
|
10
|
+
- celery
|
|
11
|
+
- temporal
|
|
12
|
+
- cron
|
|
13
|
+
- background-jobs
|
|
14
|
+
- dlq
|
|
5
15
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
16
|
+
last-reviewed: 2026-06-04
|
|
7
17
|
version-pin: null
|
|
8
18
|
sources:
|
|
9
19
|
- url: https://microservices.io/patterns/data/transactional-outbox.html
|
|
20
|
+
hash: sha256:0311303336376acb20c3f70729a67ea9e094546798a98276567257e6631122b0
|
|
21
|
+
retrieved: 2026-06-04
|
|
10
22
|
- url: https://sre.google/sre-book/handling-overload/
|
|
23
|
+
hash: sha256:8ca912a82390e7f61e8bbae7baab3a74489f5068d71dee1ff24aed99375e0373
|
|
24
|
+
retrieved: 2026-06-04
|
|
11
25
|
---
|
|
12
26
|
|
|
13
27
|
Background workers offload time-consuming and deferred work from the request path, but they introduce their own failure modes — jobs that silently vanish, duplicate executions, and unclean shutdowns during deploys all require deliberate design to prevent.
|
|
@@ -12,6 +12,15 @@ topics:
|
|
|
12
12
|
|
|
13
13
|
Dispatch code reviews to multiple AI model CLIs, poll for results, and collect reconciled findings with severity gating.
|
|
14
14
|
|
|
15
|
+
> **Scope & related skills.** This skill ships with Scaffold for Claude Code and
|
|
16
|
+
> shared-agent hosts (`.claude/skills/`, `.agents/skills/`). The MMR CLI itself can
|
|
17
|
+
> install an equivalent review skill into other agent CLIs — Cursor, Codex, Gemini,
|
|
18
|
+
> and Antigravity — via `mmr skill install` (see the
|
|
19
|
+
> [`mmr` reference guide](../../guides/mmr/index.md)). Those per-platform skill bodies
|
|
20
|
+
> live in `packages/mmr/templates/skills/` and are the source of truth for those
|
|
21
|
+
> platforms; keep this file's `mmr review` guidance in sync with them when the CLI
|
|
22
|
+
> surface changes.
|
|
23
|
+
|
|
15
24
|
## Quick Reference
|
|
16
25
|
|
|
17
26
|
`mmr review` works for any review target — not just PRs. Pick the input mode
|
|
@@ -41,16 +41,20 @@ You are auditing a single Scaffold knowledge entry against its declared authorit
|
|
|
41
41
|
|
|
42
42
|
## Output (JSON only — no prose)
|
|
43
43
|
|
|
44
|
+
Emit `audit_date` and every source `retrieved_at` as the exact literal string
|
|
45
|
+
`PENDING` — do not guess a date. The harness measures the real run/fetch date
|
|
46
|
+
and overwrites both fields after you respond.
|
|
47
|
+
|
|
44
48
|
```json
|
|
45
49
|
{
|
|
46
50
|
"entry_name": "<from frontmatter>",
|
|
47
|
-
"audit_date": "
|
|
51
|
+
"audit_date": "PENDING",
|
|
48
52
|
"model": "<your model identifier>",
|
|
49
53
|
"verdict": "current | minor-drift | major-drift | superseded",
|
|
50
54
|
"sources_checked": [
|
|
51
55
|
{
|
|
52
56
|
"url": "<exact url from {{prefetched_sources}}>",
|
|
53
|
-
"retrieved_at": "
|
|
57
|
+
"retrieved_at": "PENDING",
|
|
54
58
|
"content_hash": "<exact hash from the matching {{prefetched_sources}} entry — do not recompute or invent>",
|
|
55
59
|
"summary": "<one sentence summary of what the source currently says>"
|
|
56
60
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AuditVerdict } from './audit-runner.js';
|
|
2
|
+
import { todayUtcYmd } from './today.js';
|
|
2
3
|
/**
|
|
3
4
|
* Pure rendering of the PR title/body for a freshness audit. Kept separate
|
|
4
5
|
* from the git/gh side effects in `openFreshnessPr` so the rendering is
|
|
@@ -18,8 +19,7 @@ export interface RenderedPr {
|
|
|
18
19
|
export declare function renderFindingsTable(verdict: AuditVerdict): string;
|
|
19
20
|
export declare function renderPrTitle(verdict: AuditVerdict): string;
|
|
20
21
|
export declare function renderPrBody(verdict: AuditVerdict, opts?: RenderPrOptions): string;
|
|
21
|
-
|
|
22
|
-
export declare function todayUtcYmd(now?: Date): string;
|
|
22
|
+
export { todayUtcYmd };
|
|
23
23
|
/**
|
|
24
24
|
* Sanitize an entry name for use as a git branch component. We never
|
|
25
25
|
* interpolate raw user-controlled strings into a shell command, but the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-apply-pr.d.ts","sourceRoot":"","sources":["../../src/knowledge-freshness/audit-apply-pr.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"audit-apply-pr.d.ts","sourceRoot":"","sources":["../../src/knowledge-freshness/audit-apply-pr.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAA;CAClB;AA6BD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAcjE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAS3D;AAmBD,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,GAAE,eAAoB,GAAG,MAAM,CAsDtF;AAMD,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,GAAE,eAAoB,GAAG,UAAU,CAM/F;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAOlF;AAOD,MAAM,WAAW,aAAa;IAC5B,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAA;IACjB,kFAAkF;IAClF,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4DAA4D;IAC5D,GAAG,CAAC,EAAE,IAAI,CAAA;CACX;AAqBD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA+H7G;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAYvE"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { spawnSync } from 'node:child_process';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import yaml from 'js-yaml';
|
|
4
|
+
import { todayUtcYmd } from './today.js';
|
|
4
5
|
/**
|
|
5
6
|
* One-sentence summary of the verdict's source list. Used in the PR title
|
|
6
7
|
* (which has length limits) so the operator sees at a glance which doc the
|
|
@@ -120,13 +121,11 @@ export function renderPrBody(verdict, opts = {}) {
|
|
|
120
121
|
'',
|
|
121
122
|
].join('\n');
|
|
122
123
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
return `${y}-${m}-${d}`;
|
|
129
|
-
}
|
|
124
|
+
// `todayUtcYmd` now lives in ./today.ts so the audit runner can share it
|
|
125
|
+
// without importing this module (which would create a cycle via the
|
|
126
|
+
// AuditVerdict type import). Imported above for local use; re-exported here
|
|
127
|
+
// for existing importers.
|
|
128
|
+
export { todayUtcYmd };
|
|
130
129
|
/**
|
|
131
130
|
* Sanitize an entry name for use as a git branch component. We never
|
|
132
131
|
* interpolate raw user-controlled strings into a shell command, but the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-apply-pr.js","sourceRoot":"","sources":["../../src/knowledge-freshness/audit-apply-pr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,IAAI,MAAM,SAAS,CAAA;AAqB1B;;;;GAIG;AACH,SAAS,wBAAwB,CAAC,OAAqB;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACtD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,cAAc,CAAA;IAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAA;IACrC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,MAAM,GAAG,CAAC,kBAAkB,CAAA;AAC5D,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,CAAS;IAC3B,oEAAoE;IACpE,qEAAqE;IACrE,8BAA8B;IAC9B,OAAO,CAAC;SACL,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,sBAAsB,EAAE,GAAG,CAAC;SACpC,IAAI,EAAE,CAAA;AACX,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAqB;IACvD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,gBAAgB,CAAA;IACzB,CAAC;IACD,MAAM,MAAM,GAAG,2DAA2D,CAAA;IAC1E,MAAM,GAAG,GAAG,mBAAmB,CAAA;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACtC,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;QACvC,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;QAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAA;QAC1C,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;QAC3C,OAAO,KAAK,QAAQ,MAAM,SAAS,MAAM,KAAK,MAAM,QAAQ,IAAI,CAAA;IAClE,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAqB;IACjD,qEAAqE;IACrE,oEAAoE;IACpE,8DAA8D;IAC9D,sEAAsE;IACtE,4DAA4D;IAC5D,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACjD,MAAM,OAAO,GAAG,gBAAgB,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAA;IACnE,OAAO,6BAA6B,IAAI,YAAY,OAAO,EAAE,CAAA;AAC/D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,gBAAgB,CAAC,CAAS;IACjC,OAAO,CAAC,CAAC,OAAO,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAqB,EAAE,OAAwB,EAAE;IAC5E,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC;QACrD,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEjF,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC;QACrD,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,OAAO,CAAC,eAAe;aACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YACjC,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;YAC1C,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;YAC1C,OAAO,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAA;QACxC,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAA;IAEf,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC;QAC5D,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE/E,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ;QAC3B,CAAC,CAAC,WAAW,IAAI,CAAC,QAAQ,EAAE;QAC5B,CAAC,CAAC,sDAAsD,CAAA;IAE1D,wEAAwE;IACxE,yEAAyE;IACzE,+EAA+E;IAC/E,qEAAqE;IACrE,0EAA0E;IAC1E,wEAAwE;IACxE,0DAA0D;IAC1D,OAAO;QACL,YAAY;QACZ,qBAAqB,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc;QACvE,UAAU;QACV,EAAE;QACF,YAAY;QACZ,cAAc,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACjD,iBAAiB,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QACvD,YAAY,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC7C,EAAE;QACF,aAAa;QACb,mBAAmB,CAAC,OAAO,CAAC;QAC5B,EAAE;QACF,QAAQ;QACR,OAAO;QACP,EAAE;QACF,YAAY;QACZ,UAAU;QACV,EAAE;QACF,sBAAsB;QACtB,eAAe;QACf,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,WAAW,CAAC,MAAY,IAAI,IAAI,EAAE;IAChD,MAAM,CAAC,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC1D,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC7D,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACtD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;AACzB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IACnF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,SAAS,6BAA6B,CAAC,CAAA;IAChG,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,GAAW;IAC/D,OAAO,uBAAuB,iBAAiB,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAqB,EAAE,OAAwB,EAAE;IACjF,OAAO;QACL,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC;QAC7B,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC;QACjC,SAAS,EAAE,OAAO,CAAC,UAAU;KAC9B,CAAA;AACH,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,eAAe,CAAC,UAA8B;IAC5D,QAAQ,UAAU,EAAE,CAAC;QACrB,KAAK,aAAa,CAAC,CAAC,OAAO,wBAAwB,CAAA;QACnD,KAAK,UAAU,CAAC,CAAC,OAAO,qBAAqB,CAAA;QAC7C,KAAK,QAAQ,CAAC,CAAC,OAAO,mBAAmB,CAAA;QACzC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAA;IACzB,CAAC;AACH,CAAC;AAkBD;;;;GAIG;AACH,SAAS,UAAU,CAAC,GAAW,EAAE,IAAc;IAC7C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IACzD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;QAC1C,MAAM,IAAI,KAAK,CACb,mBAAmB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,MAAM,KAAK;YACpE,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACpC,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,IAAI,EAAE,CAAA;AAC5B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,OAAqB,EAAE,IAAmB;IACxE,2EAA2E;IAC3E,yEAAyE;IACzE,2EAA2E;IAC3E,6EAA6E;IAC7E,sDAAsD;IACtD,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACtG,kEAAkE;IAClE,kEAAkE;IAClE,2BAA2B;IAC3B,yCAAyC;IACzC,sDAAsD;IACtD,yDAAyD;IACzD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IAC/D,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACzC,yEAAyE;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,WAAW,CAAA;IACzD,CAAC,CAAC,CAAA;IACF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAA;IAC5G,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAC9F,MAAM,IAAI,KAAK,CACb,6DAA6D,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAC5G,0DAA0D,CAC3D,CAAA;IACH,CAAC;IAED,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACjC,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IAC1D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IAExE,yEAAyE;IACzE,0EAA0E;IAC1E,wEAAwE;IACxE,0EAA0E;IAC1E,iBAAiB;IACjB,UAAU,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;IAC9C,UAAU,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;IAE1D,uEAAuE;IACvE,sEAAsE;IACtE,oDAAoD;IACpD,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;IAEhD,wEAAwE;IACxE,0CAA0C;IAC1C,MAAM,SAAS,GAAG,GAAG,QAAQ,CAAC,KAAK,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;IACzD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IAC9F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,2BAA2B,MAAM,CAAC,MAAM,cAAc,MAAM,CAAC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,CAChG,CAAA;IACH,CAAC;IAED,qEAAqE;IACrE,wEAAwE;IACxE,wEAAwE;IACxE,sCAAsC;IACtC,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA;IAEzE,yEAAyE;IACzE,0EAA0E;IAC1E,+DAA+D;IAC/D,MAAM,cAAc,GAAG,SAAS,CAC9B,IAAI,EACJ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,EAC3E,EAAE,QAAQ,EAAE,MAAM,EAAE,CACrB,CAAA;IACD,IAAI,KAAK,GAAG,EAAE,CAAA;IACd,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAA2C,CAAA;YAClG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;gBAC1B,2DAA2D;gBAC3D,MAAM,UAAU,GAAG,SAAS,CAC1B,IAAI,EACJ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,EAC3F,EAAE,QAAQ,EAAE,MAAM,EAAE,CACrB,CAAA;gBACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CACb,2BAA2B,UAAU,CAAC,MAAM,cAAc,UAAU,CAAC,MAAM,aAAa,UAAU,CAAC,MAAM,EAAE,CAC5G,CAAA;gBACH,CAAC;gBACD,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAA;YACtB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,sCAAuC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;QACjF,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,2EAA2E;QAC3E,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;YAClD,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI;SACnD,CAAA;QACD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;QAC9D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,6BAA6B,QAAQ,CAAC,MAAM,cAAc,QAAQ,CAAC,MAAM,aAAa,QAAQ,CAAC,MAAM,EAAE,CACxG,CAAA;QACH,CAAC;QACD,KAAK,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAA;IAChE,CAAC;IAED,qEAAqE;IACrE,yEAAyE;IACzE,yEAAyE;IACzE,6BAA6B;IAC7B,MAAM,MAAM,GAAG,CAAC,qBAAqB,CAAC,CAAA;IACtC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACjD,IAAI,QAAQ;QAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACnC,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACrF,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IACpE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qCAAqC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAC3F,CAAA;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,oEAAoE;IACpE,oEAAoE;IACpE,qEAAqE;IACrE,mEAAmE;IACnE,2CAA2C;IAC3C,MAAM,GAAG,GAAG,GAAG,CAAA;IACf,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAA;IAC1F,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAA4B,CAAA;IACvF,OAAO,EAAE,EAAE,UAAU,CAAA;AACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"audit-apply-pr.js","sourceRoot":"","sources":["../../src/knowledge-freshness/audit-apply-pr.ts"],"names":[],"mappings":"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"}
|
|
@@ -129,8 +129,26 @@ export interface RunEntryAuditOptions {
|
|
|
129
129
|
* about the prefetched-sources payload. Defaults to running the prefetch.
|
|
130
130
|
*/
|
|
131
131
|
skipPrefetch?: boolean;
|
|
132
|
+
/**
|
|
133
|
+
* Override "now" for date stamping. Tests pin this for determinism; in
|
|
134
|
+
* production it defaults to the real current date. See `stampVerdictRunDates`.
|
|
135
|
+
*/
|
|
136
|
+
now?: Date;
|
|
132
137
|
}
|
|
133
138
|
export declare function runEntryAudit(entryPath: string, dispatch: Dispatcher, opts?: RunEntryAuditOptions): Promise<AuditVerdict>;
|
|
139
|
+
/**
|
|
140
|
+
* Replace the LLM-claimed `audit_date` and every `sources_checked[].retrieved_at`
|
|
141
|
+
* with the harness-measured run date (`ymd`, a UTC YYYY-MM-DD). Other fields —
|
|
142
|
+
* including each finding's `evidence_date`, which describes the external
|
|
143
|
+
* evidence rather than our review — are left untouched.
|
|
144
|
+
*
|
|
145
|
+
* INVARIANT: `runEntryAudit` prefetches every source in a single pass (see the
|
|
146
|
+
* prefetch loop above), so all sources share one fetch date and stamping them
|
|
147
|
+
* with the single run date is accurate. If a future code path ever fetches
|
|
148
|
+
* sources across day boundaries or reuses cached fetches, switch to stamping
|
|
149
|
+
* each source with its own captured fetch timestamp instead of one run date.
|
|
150
|
+
*/
|
|
151
|
+
export declare function stampVerdictRunDates(verdict: AuditVerdict, ymd: string): AuditVerdict;
|
|
134
152
|
/**
|
|
135
153
|
* Make a verdict self-consistent with the spec contract (enforced in
|
|
136
154
|
* audit-apply.ts; spec §A.4): `current` and `minor-drift` carry findings only,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-runner.d.ts","sourceRoot":"","sources":["../../src/knowledge-freshness/audit-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"audit-runner.d.ts","sourceRoot":"","sources":["../../src/knowledge-freshness/audit-runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAU/D,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5D,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBjB,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA;AAExD,MAAM,WAAW,oBAAoB;IACnC,uGAAuG;IACvG,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4GAA4G;IAC5G,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,sGAAsG;IACtG,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;OAGG;IACH,GAAG,CAAC,EAAE,IAAI,CAAA;CACX;AAED,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,UAAU,EACpB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,YAAY,CAAC,CA6FvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CAMrF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,CAoBpE"}
|
|
@@ -5,6 +5,7 @@ import { extractKBFrontmatter } from '../core/assembly/knowledge-loader.js';
|
|
|
5
5
|
import { getPackageRoot } from '../utils/fs.js';
|
|
6
6
|
import { defaultResolver } from './source-url-validator.js';
|
|
7
7
|
import { fetchAndHash } from './source-hash.js';
|
|
8
|
+
import { todayUtcYmd } from './today.js';
|
|
8
9
|
/**
|
|
9
10
|
* Max body bytes injected per source. Caps prompt size and keeps a malicious
|
|
10
11
|
* giant response from blowing the context window. 96 KiB is comfortably
|
|
@@ -105,7 +106,32 @@ export async function runEntryAudit(entryPath, dispatch, opts = {}) {
|
|
|
105
106
|
throw new Error('audit output contained no JSON object matching the verdict schema. ' +
|
|
106
107
|
'Check that the dispatcher returned the meta-prompt\'s expected shape.');
|
|
107
108
|
}
|
|
108
|
-
|
|
109
|
+
// The meta-prompt has the model emit the literal `PENDING` for audit_date /
|
|
110
|
+
// retrieved_at — it cannot know the real date, and earlier (when asked for
|
|
111
|
+
// "today's date") it emitted plausible-but-wrong values anchored near its
|
|
112
|
+
// training cutoff, varying run-to-run. Overwrite both with the actual run
|
|
113
|
+
// date so `last-reviewed` / `retrieved` provenance — and the cadence
|
|
114
|
+
// prefilter that keys off them — are truthful and deterministic.
|
|
115
|
+
return stampVerdictRunDates(normalizeVerdict(verdict), todayUtcYmd(opts?.now));
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Replace the LLM-claimed `audit_date` and every `sources_checked[].retrieved_at`
|
|
119
|
+
* with the harness-measured run date (`ymd`, a UTC YYYY-MM-DD). Other fields —
|
|
120
|
+
* including each finding's `evidence_date`, which describes the external
|
|
121
|
+
* evidence rather than our review — are left untouched.
|
|
122
|
+
*
|
|
123
|
+
* INVARIANT: `runEntryAudit` prefetches every source in a single pass (see the
|
|
124
|
+
* prefetch loop above), so all sources share one fetch date and stamping them
|
|
125
|
+
* with the single run date is accurate. If a future code path ever fetches
|
|
126
|
+
* sources across day boundaries or reuses cached fetches, switch to stamping
|
|
127
|
+
* each source with its own captured fetch timestamp instead of one run date.
|
|
128
|
+
*/
|
|
129
|
+
export function stampVerdictRunDates(verdict, ymd) {
|
|
130
|
+
return {
|
|
131
|
+
...verdict,
|
|
132
|
+
audit_date: ymd,
|
|
133
|
+
sources_checked: verdict.sources_checked.map((s) => ({ ...s, retrieved_at: ymd })),
|
|
134
|
+
};
|
|
109
135
|
}
|
|
110
136
|
/**
|
|
111
137
|
* Make a verdict self-consistent with the spec contract (enforced in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-runner.js","sourceRoot":"","sources":["../../src/knowledge-freshness/audit-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAiB,MAAM,2BAA2B,CAAA;AAC1E,OAAO,EAAE,YAAY,EAAkB,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"audit-runner.js","sourceRoot":"","sources":["../../src/knowledge-freshness/audit-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { describe, it, expect, vi, beforeAll, afterAll } from 'vitest';
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import os from 'node:os';
|
|
5
|
-
import { runEntryAudit, normalizeVerdict } from './audit-runner.js';
|
|
5
|
+
import { runEntryAudit, normalizeVerdict, stampVerdictRunDates } from './audit-runner.js';
|
|
6
6
|
// Use temp fixtures rather than the real on-disk entry + meta-prompt so the
|
|
7
7
|
// runner tests don't break when those files are edited. We inject the meta-
|
|
8
8
|
// prompt path via opts.promptPath so the test never depends on cwd or on
|
|
@@ -204,4 +204,66 @@ describe('normalizeVerdict', () => {
|
|
|
204
204
|
expect(() => normalizeVerdict(v)).not.toThrow();
|
|
205
205
|
});
|
|
206
206
|
});
|
|
207
|
+
describe('stampVerdictRunDates', () => {
|
|
208
|
+
it('overwrites audit_date and every source retrieved_at with the run date, leaving other fields untouched', () => {
|
|
209
|
+
const verdict = {
|
|
210
|
+
entry_name: 'x', audit_date: '2025-01-01', model: 'm',
|
|
211
|
+
verdict: 'current',
|
|
212
|
+
sources_checked: [
|
|
213
|
+
{ url: 'https://a', retrieved_at: '2025-01-01', content_hash: 'h1', summary: 's1' },
|
|
214
|
+
{ url: 'https://b', retrieved_at: '2024-12-31', content_hash: 'h2', summary: 's2' },
|
|
215
|
+
],
|
|
216
|
+
findings: [], proposed_changes: [], preserve_warnings: [],
|
|
217
|
+
};
|
|
218
|
+
const out = stampVerdictRunDates(verdict, '2026-06-04');
|
|
219
|
+
expect(out.audit_date).toBe('2026-06-04');
|
|
220
|
+
expect(out.sources_checked.map((s) => s.retrieved_at)).toEqual(['2026-06-04', '2026-06-04']);
|
|
221
|
+
// Non-date fields are preserved.
|
|
222
|
+
expect(out.sources_checked.map((s) => s.content_hash)).toEqual(['h1', 'h2']);
|
|
223
|
+
expect(out.sources_checked.map((s) => s.url)).toEqual(['https://a', 'https://b']);
|
|
224
|
+
expect(out.verdict).toBe('current');
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
describe('runEntryAudit date stamping', () => {
|
|
228
|
+
it('stamps the real run date over LLM-claimed audit_date / retrieved_at', async () => {
|
|
229
|
+
// The model emits the literal `PENDING` for these (it cannot know the
|
|
230
|
+
// date); the harness must overwrite both audit_date and each source
|
|
231
|
+
// retrieved_at with the actual run date so provenance (and the cadence
|
|
232
|
+
// prefilter) is truthful. Here the dispatcher returns stale dates to prove
|
|
233
|
+
// the overwrite happens regardless of what the model emits.
|
|
234
|
+
const dispatcher = vi.fn().mockResolvedValue(JSON.stringify({
|
|
235
|
+
entry_name: 'stub', audit_date: '2025-03-09', model: 'm',
|
|
236
|
+
verdict: 'superseded',
|
|
237
|
+
sources_checked: [
|
|
238
|
+
{ url: 'https://x', retrieved_at: '2025-03-09', content_hash: 'h', summary: '' },
|
|
239
|
+
],
|
|
240
|
+
findings: [], proposed_changes: [], preserve_warnings: [],
|
|
241
|
+
}));
|
|
242
|
+
const out = await runEntryAudit(entryFile, dispatcher, {
|
|
243
|
+
promptPath: promptFile, skipPrefetch: true, now: new Date('2026-06-04T12:00:00Z'),
|
|
244
|
+
});
|
|
245
|
+
expect(out.audit_date).toBe('2026-06-04');
|
|
246
|
+
expect(out.sources_checked[0].retrieved_at).toBe('2026-06-04');
|
|
247
|
+
});
|
|
248
|
+
it('accepts the literal PENDING placeholder and never lets it reach the output', async () => {
|
|
249
|
+
// The meta-prompt instructs the model to emit `PENDING` (not a date). The
|
|
250
|
+
// verdict schema validates these as plain strings (no ISO enforcement), so
|
|
251
|
+
// PENDING parses cleanly and is overwritten — it must never survive to the
|
|
252
|
+
// returned verdict (and thus never reach frontmatter).
|
|
253
|
+
const dispatcher = vi.fn().mockResolvedValue(JSON.stringify({
|
|
254
|
+
entry_name: 'stub', audit_date: 'PENDING', model: 'm',
|
|
255
|
+
verdict: 'superseded',
|
|
256
|
+
sources_checked: [
|
|
257
|
+
{ url: 'https://x', retrieved_at: 'PENDING', content_hash: 'h', summary: '' },
|
|
258
|
+
],
|
|
259
|
+
findings: [], proposed_changes: [], preserve_warnings: [],
|
|
260
|
+
}));
|
|
261
|
+
const out = await runEntryAudit(entryFile, dispatcher, {
|
|
262
|
+
promptPath: promptFile, skipPrefetch: true, now: new Date('2026-06-04T00:00:00Z'),
|
|
263
|
+
});
|
|
264
|
+
expect(out.audit_date).toBe('2026-06-04');
|
|
265
|
+
expect(out.sources_checked[0].retrieved_at).toBe('2026-06-04');
|
|
266
|
+
expect(JSON.stringify(out)).not.toContain('PENDING');
|
|
267
|
+
});
|
|
268
|
+
});
|
|
207
269
|
//# sourceMappingURL=audit-runner.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-runner.test.js","sourceRoot":"","sources":["../../src/knowledge-freshness/audit-runner.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"audit-runner.test.js","sourceRoot":"","sources":["../../src/knowledge-freshness/audit-runner.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UTC YYYY-MM-DD for the current (or an injected) date. Shared so both the
|
|
3
|
+
* PR builder (branch naming) and the audit runner (stamping run/fetch dates
|
|
4
|
+
* into the verdict) use the same deterministic, test-pinnable source of truth
|
|
5
|
+
* instead of trusting the LLM-claimed `audit_date` / `retrieved_at`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function todayUtcYmd(now?: Date): string;
|
|
8
|
+
//# sourceMappingURL=today.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"today.d.ts","sourceRoot":"","sources":["../../src/knowledge-freshness/today.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,GAAE,IAAiB,GAAG,MAAM,CAK1D"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UTC YYYY-MM-DD for the current (or an injected) date. Shared so both the
|
|
3
|
+
* PR builder (branch naming) and the audit runner (stamping run/fetch dates
|
|
4
|
+
* into the verdict) use the same deterministic, test-pinnable source of truth
|
|
5
|
+
* instead of trusting the LLM-claimed `audit_date` / `retrieved_at`.
|
|
6
|
+
*/
|
|
7
|
+
export function todayUtcYmd(now = new Date()) {
|
|
8
|
+
const y = now.getUTCFullYear().toString().padStart(4, '0');
|
|
9
|
+
const m = (now.getUTCMonth() + 1).toString().padStart(2, '0');
|
|
10
|
+
const d = now.getUTCDate().toString().padStart(2, '0');
|
|
11
|
+
return `${y}-${m}-${d}`;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=today.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"today.js","sourceRoot":"","sources":["../../src/knowledge-freshness/today.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,MAAY,IAAI,IAAI,EAAE;IAChD,MAAM,CAAC,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC1D,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IAC7D,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACtD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;AACzB,CAAC"}
|
package/package.json
CHANGED
package/skills/mmr/SKILL.md
CHANGED
|
@@ -12,6 +12,15 @@ topics:
|
|
|
12
12
|
|
|
13
13
|
Dispatch code reviews to multiple AI model CLIs, poll for results, and collect reconciled findings with severity gating.
|
|
14
14
|
|
|
15
|
+
> **Scope & related skills.** This skill ships with Scaffold for Claude Code and
|
|
16
|
+
> shared-agent hosts (`.claude/skills/`, `.agents/skills/`). The MMR CLI itself can
|
|
17
|
+
> install an equivalent review skill into other agent CLIs — Cursor, Codex, Gemini,
|
|
18
|
+
> and Antigravity — via `mmr skill install` (see the
|
|
19
|
+
> [`mmr` reference guide](../../guides/mmr/index.md)). Those per-platform skill bodies
|
|
20
|
+
> live in `packages/mmr/templates/skills/` and are the source of truth for those
|
|
21
|
+
> platforms; keep this file's `mmr review` guidance in sync with them when the CLI
|
|
22
|
+
> surface changes.
|
|
23
|
+
|
|
15
24
|
## Quick Reference
|
|
16
25
|
|
|
17
26
|
`mmr review` works for any review target — not just PRs. Pick the input mode
|