@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.
Files changed (43) hide show
  1. package/content/guides/mmr/index.html +17 -1
  2. package/content/guides/mmr/index.md +16 -0
  3. package/content/knowledge/VERSION +1 -1
  4. package/content/knowledge/backend/backend-api-design.md +5 -5
  5. package/content/knowledge/backend/backend-architecture.md +5 -5
  6. package/content/knowledge/backend/backend-async-patterns.md +4 -4
  7. package/content/knowledge/backend/backend-auth-patterns.md +1 -1
  8. package/content/knowledge/backend/backend-conventions.md +3 -3
  9. package/content/knowledge/backend/backend-data-modeling.md +4 -4
  10. package/content/knowledge/backend/backend-deployment.md +5 -5
  11. package/content/knowledge/backend/backend-dev-environment.md +2 -2
  12. package/content/knowledge/backend/backend-fintech-broker-integration.md +3 -3
  13. package/content/knowledge/backend/backend-fintech-compliance.md +1 -1
  14. package/content/knowledge/backend/backend-fintech-data-modeling.md +3 -3
  15. package/content/knowledge/backend/backend-fintech-ledger.md +3 -3
  16. package/content/knowledge/backend/backend-fintech-observability.md +17 -3
  17. package/content/knowledge/backend/backend-fintech-order-lifecycle.md +17 -3
  18. package/content/knowledge/backend/backend-fintech-risk-management.md +17 -3
  19. package/content/knowledge/backend/backend-fintech-testing.md +14 -2
  20. package/content/knowledge/backend/backend-observability.md +16 -2
  21. package/content/knowledge/backend/backend-project-structure.md +14 -3
  22. package/content/knowledge/backend/backend-requirements.md +16 -3
  23. package/content/knowledge/backend/backend-security.md +18 -3
  24. package/content/knowledge/backend/backend-testing.md +15 -2
  25. package/content/knowledge/backend/backend-worker-patterns.md +17 -3
  26. package/content/skills/mmr/SKILL.md +9 -0
  27. package/content/tools/knowledge-audit-entry.md +6 -2
  28. package/dist/knowledge-freshness/audit-apply-pr.d.ts +2 -2
  29. package/dist/knowledge-freshness/audit-apply-pr.d.ts.map +1 -1
  30. package/dist/knowledge-freshness/audit-apply-pr.js +6 -7
  31. package/dist/knowledge-freshness/audit-apply-pr.js.map +1 -1
  32. package/dist/knowledge-freshness/audit-runner.d.ts +18 -0
  33. package/dist/knowledge-freshness/audit-runner.d.ts.map +1 -1
  34. package/dist/knowledge-freshness/audit-runner.js +27 -1
  35. package/dist/knowledge-freshness/audit-runner.js.map +1 -1
  36. package/dist/knowledge-freshness/audit-runner.test.js +63 -1
  37. package/dist/knowledge-freshness/audit-runner.test.js.map +1 -1
  38. package/dist/knowledge-freshness/today.d.ts +8 -0
  39. package/dist/knowledge-freshness/today.d.ts.map +1 -0
  40. package/dist/knowledge-freshness/today.js +13 -0
  41. package/dist/knowledge-freshness/today.js.map +1 -0
  42. package/package.json +1 -1
  43. 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
- <table><thead><tr><th>Command</th><th>Purpose</th></tr></thead><tbody><tr><td><code>mmr reconcile &#x3C;job-id> --channel &#x3C;name> --input &#x3C;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 &#x3C;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 &#x3C;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 &#x3C;list|prune></code></td><td>List jobs, or prune old ones per <code>job_retention_days</code>.</td></tr><tr><td><code>mmr sessions &#x3C;start|list|show|end> &#x3C;id></code></td><td>Manage multi-round review sessions (stored under <code>~/.mmr/sessions/</code>).</td></tr><tr><td><code>mmr config &#x3C;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 &#x3C;add|list|rm|prune></code></td><td>Sticky acknowledgments — silence a finding by its stable key so it stops blocking across rounds.</td></tr></tbody></table>
1573
+
1574
+
1575
+
1576
+
1577
+ <table><thead><tr><th>Command</th><th>Purpose</th></tr></thead><tbody><tr><td><code>mmr reconcile &#x3C;job-id> --channel &#x3C;name> --input &#x3C;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 &#x3C;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 &#x3C;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 &#x3C;list|prune></code></td><td>List jobs, or prune old ones per <code>job_retention_days</code>.</td></tr><tr><td><code>mmr sessions &#x3C;start|list|show|end> &#x3C;id></code></td><td>Manage multi-round review sessions (stored under <code>~/.mmr/sessions/</code>).</td></tr><tr><td><code>mmr config &#x3C;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 &#x3C;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 &#x3C;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>&#x3C;!-- BEGIN mmr-skill --></code> and <code>&#x3C;!-- 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.5
1
+ 0.1.8
@@ -13,21 +13,21 @@ topics:
13
13
  - versioning
14
14
  - pagination
15
15
  volatility: evolving
16
- last-reviewed: 2025-10-27
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: 2025-10-27
21
+ retrieved: 2026-06-02
22
22
  - url: https://spec.graphql.org/
23
23
  hash: sha256:14221cbb56b50b8179803abd08a5f801ebbca98c2d97eb86b47469284a3b88cf
24
- retrieved: 2025-10-27
24
+ retrieved: 2026-06-02
25
25
  - url: https://www.rfc-editor.org/rfc/rfc9110.html
26
26
  hash: sha256:d431760660ea44e130f6e919dab216df2d0b3a490567a98089267523368fe1e5
27
- retrieved: 2025-10-27
27
+ retrieved: 2026-06-02
28
28
  - url: https://martinfowler.com/articles/richardsonMaturityModel.html
29
29
  hash: sha256:67fe98bd0c4572223f6973109e515fade396e29a3fc6ccb2323409392c91b501
30
- retrieved: 2025-10-27
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: 2025-07-17
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: 2025-07-17
21
+ retrieved: 2026-06-02
22
22
  - url: https://martinfowler.com/bliki/CQRS.html
23
23
  hash: sha256:11cf46ce308805e94e4b110016b09d004fbf8c47669a7041080f661c798b2f29
24
- retrieved: 2025-07-17
24
+ retrieved: 2026-06-02
25
25
  - url: https://martinfowler.com/eaaDev/EventSourcing.html
26
26
  hash: sha256:8c266ad1f81881deac8a59d86f429a594497eac3243aa1bd5b40202ccfada596
27
- retrieved: 2025-07-17
27
+ retrieved: 2026-06-02
28
28
  - url: https://martinfowler.com/bliki/MonolithFirst.html
29
29
  hash: sha256:722d8d78beddd9e0f6ff3e856eec94dfa2b9fa3bebcaaf4c9e80ccdd3c0e1446
30
- retrieved: 2025-07-17
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: 2025-04-08
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: 2025-04-08
19
+ retrieved: 2026-06-02
20
20
  - url: https://martinfowler.com/articles/patterns-of-distributed-systems/
21
21
  hash: sha256:93092f76ea34af4d60c068180a063d9fde27ab6c7b604ba42337aeed023cab86
22
- retrieved: 2025-04-08
22
+ retrieved: 2026-06-02
23
23
  - url: https://sre.google/sre-book/handling-overload/
24
24
  hash: sha256:8ca912a82390e7f61e8bbae7baab3a74489f5068d71dee1ff24aed99375e0373
25
- retrieved: 2025-04-08
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.
@@ -10,7 +10,7 @@ topics:
10
10
  - mtls
11
11
  - security
12
12
  volatility: evolving
13
- last-reviewed: 2025-05-27
13
+ last-reviewed: 2026-06-02
14
14
  version-pin: null
15
15
  sources:
16
16
  - url: https://www.rfc-editor.org/rfc/rfc6749
@@ -11,15 +11,15 @@ topics:
11
11
  - naming
12
12
  - file-organization
13
13
  volatility: stable
14
- last-reviewed: 2025-01-15
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: 2025-01-15
19
+ retrieved: 2026-06-02
20
20
  - url: https://martinfowler.com/tags/clean%20code.html
21
21
  hash: sha256:7b8d78e227d63880ce0b2884da4deda09aa223d43f81614630a5a86d7f766ee3
22
- retrieved: 2025-01-15
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-05-15
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-05-15
21
+ retrieved: 2026-06-02
22
22
  - url: https://martinfowler.com/articles/evodb.html
23
23
  hash: sha256:77d7c85db8a99f4b194e89bec6e0cd14e860cce0f54475326823894ce5b3a289
24
- retrieved: 2026-05-15
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-05-15
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: 2025-01-14
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: 2025-01-14
21
+ retrieved: 2026-06-02
22
22
  - url: https://martinfowler.com/bliki/CanaryRelease.html
23
23
  hash: sha256:916caf0f38ffd564c0c478b51d7e5dac9fdbc4fa8bb9b6729300fc96d27c2715
24
- retrieved: 2025-01-14
24
+ retrieved: 2026-06-02
25
25
  - url: https://sre.google/sre-book/release-engineering/
26
26
  hash: sha256:eb0116a837c4f1b94eff42bde5a47a0a59874c8b432e3bf070374883ec558a54
27
- retrieved: 2025-01-14
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: 2025-01-14
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-05-15
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-05-15
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: 2025-04-08
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: 2025-04-08
19
+ retrieved: 2026-06-02
20
20
  - url: https://martinfowler.com/bliki/CircuitBreaker.html
21
21
  hash: sha256:73239948ec03887430a4d139e384e94bc640fec894fb1dce53b56abe579c5da4
22
- retrieved: 2025-04-08
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.
@@ -14,7 +14,7 @@ topics:
14
14
  - audit-trail
15
15
  - gdpr
16
16
  volatility: evolving
17
- last-reviewed: 2025-06-01
17
+ last-reviewed: 2026-06-02
18
18
  version-pin: PCI-DSS v4.0.1
19
19
  sources:
20
20
  - url: https://www.pcisecuritystandards.org/document_library/
@@ -11,15 +11,15 @@ topics:
11
11
  - positions
12
12
  - trades
13
13
  volatility: stable
14
- last-reviewed: 2026-05-15
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-05-15
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-05-15
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-05-14
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-05-14
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-05-14
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: Trade event correlation; market-hours aware scheduling; SLOs for fintech systems; compliance logging; alerting strategy.
4
- topics: [backend, fintech, observability, tracing, slos, alerting, correlation-id, market-hours]
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: null
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: Order state machine; fills, partial fills, cancellation; event-driven order tracking; idempotency; handling "unknown" states.
4
- topics: [backend, fintech, orders, state-machine, fills, partial-fills, event-driven, webhooks]
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: null
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: Position limits, drawdown caps, circuit breakers, kill switches; pre-trade and post-trade risk checks; operational risk controls.
4
- topics: [backend, fintech, risk, position-limits, drawdown, circuit-breakers, kill-switch, pre-trade-checks]
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: null
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: [backend, fintech, testing, determinism, backtesting, sandbox, accuracy, property-based]
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: null
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: [backend, observability, logging, tracing, metrics, alerting, opentelemetry, slo]
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: null
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: Canonical directory layout for backend services — routes/controllers, services, models/repositories, middleware, utils, config resolution, and dependency injection patterns
4
- topics: [backend, project-structure, architecture, dependency-injection, layers]
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: null
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: API-first design principles, SLA requirements (latency p99, uptime, throughput), scalability targets, backwards compatibility commitments, and API versioning strategy
4
- topics: [backend, requirements, sla, api, versioning, scalability, performance]
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: null
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: Input validation, SQL injection prevention, rate limiting, OWASP API Security Top 10, secrets management, and dependency auditing
4
- topics: [backend, security, validation, sql-injection, rate-limiting, owasp, secrets]
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: null
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: [backend, testing, integration-tests, contract-testing, database-testing, mocking, load-testing]
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: null
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: Background job frameworks, cron scheduling, event consumers, dead letter queues, retry strategies, and graceful shutdown for workers
4
- topics: [backend, workers, bullmq, celery, temporal, cron, background-jobs, dlq]
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: null
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": "<today's ISO 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": "<today's ISO date>",
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
- /** UTC YYYY-MM-DD for branch naming. Separate so tests can pin the date. */
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;AAErD;;;;;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;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,GAAG,GAAE,IAAiB,GAAG,MAAM,CAK1D;AAED;;;;;;;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
+ {"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
- /** UTC YYYY-MM-DD for branch naming. Separate so tests can pin the date. */
124
- export function todayUtcYmd(now = new Date()) {
125
- const y = now.getUTCFullYear().toString().padStart(4, '0');
126
- const m = (now.getUTCMonth() + 1).toString().padStart(2, '0');
127
- const d = now.getUTCDate().toString().padStart(2, '0');
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":"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"}
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;AAS/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;CACvB;AAED,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,UAAU,EACpB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,YAAY,CAAC,CAuFvB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,CAoBpE"}
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
- return normalizeVerdict(verdict);
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":"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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zigrivers/scaffold",
3
- "version": "3.33.2",
3
+ "version": "3.33.4",
4
4
  "description": "AI-powered software project scaffolding pipeline",
5
5
  "type": "module",
6
6
  "workspaces": [
@@ -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