# Provenance rekaman lab Filesystem MCP

Dokumen ini adalah **sidecar provenance**, bukan rekaman run. Ia tidak memuat
hasil pemeriksaan dan tidak menggantikan `evidence.json` maupun
`evidence-roots.json`. Tugasnya mencatat apa yang dibawa — dan apa yang tidak
dibawa — setiap rekaman yang diterbitkan, supaya pembaca tidak perlu menebak
dari mana sebuah angka berasal.

Direview terakhir: **2026-10-22** (WIB).

Ruang lingkup review ini: provenance dua rekaman lab Filesystem MCP yang
diterbitkan di direktori ini. Di luar ruang lingkup: kebenaran klaim artikel,
yang dibahas di catatan review terpisah, dan pemeriksaan ulang perilaku Roots
pada versi paket lain.

## Paket yang diuji

Kedua rekaman menguji paket yang sama, dan itu terbukti dari hash yang identik
di kedua berkas:

| Fakta | Nilai |
| --- | --- |
| Paket | `@modelcontextprotocol/server-filesystem` |
| Versi | `2.0.0` |
| `lock_sha256` | `7684c15c7ea51283…` (identik di kedua rekaman) |
| `entry_sha256` | `ed5efae0e3597236…` (identik di kedua rekaman) |
| `package_integrity` | `sha512-JT+bt9wrNIMqhGvOr…` (identik di kedua rekaman) |

Karena hash entry dan lock identik, kedua sesi menjalankan build paket yang
sama. Yang berbeda adalah kemampuan yang diiklankan client: sesi 1 tidak
mengiklankan `roots`, sesi 2 mengiklankannya.

## Sumber yang dibaca

| Sumber | Status pemakaian |
| --- | --- |
| README upstream Filesystem MCP Server di branch `main` | Referensi yang dapat berubah. Dipakai untuk memahami batas Roots, **bukan** untuk menentukan perilaku versi `2.0.0`; versi paket lab dikunci terpisah. |
| Daftar usang spesifikasi MCP `2026-07-28` | Dipakai untuk menegaskan bahwa Roots adalah mekanisme era 2025 dan bahwa koneksi pada protokol tersebut tidak dapat memakainya. |
| Paket npm `@modelcontextprotocol/server-filesystem@2.0.0` | Paket yang benar-benar dijalankan. |
| Protokol yang dinegosiasikan lab | `2025-11-25`, tercatat di kedua rekaman. |

Tidak ada model, kunci API, atau kredensial workstation yang dipakai atau
diteruskan ke proses lab.

## Rekaman yang diterbitkan

### `evidence.json` — sesi 1

| Fakta | Nilai |
| --- | --- |
| Diuji pada | `2026-10-20T21:28:51.503Z` |
| Pemeriksaan | 8 |
| `passed` | `true` |
| `harness` | **tidak ada** |

**Keterbatasan provenance.** Rekaman ini dibuat sebelum lab mulai mencatat
provenance harness. Ia memuat hash paket, hash lockfile, dan hash entry server,
tetapi **tidak** memuat hash script penguji dan **tidak** memuat revisi source.
Akibatnya, source penguji yang persis menghasilkan rekaman ini tidak dapat
dipulihkan dari rekaman tersebut sendiri. Keterbatasan ini dinyatakan di sini
dan tidak ditambalkan: tidak ada hash yang dimasukkan ke `evidence.json`
seolah direkam saat run pertama.

### `evidence-roots.json` — sesi 2

| Fakta | Nilai |
| --- | --- |
| Diuji pada | `2026-10-21T13:22:11.891Z` |
| Pemeriksaan | 6 |
| `run_completed` | `true` |
| `harness` | **tidak ada** |

**Keterbatasan provenance.** Sama seperti sesi 1: rekaman ini juga dibuat
sebelum provenance harness dicatat, jadi ia juga tidak mengikat script penguji
ke run-nya. Paket yang diuji tetap dapat dipastikan melalui hash entry dan
lock di atas.

## Bagaimana memverifikasi run baru

Kedua script lab — `filesystem-mcp-lab.mjs` dan
`filesystem-mcp-roots-lab.mjs` — kini mencatat provenance pada setiap run baru,
dengan bentuk:

```json
"harness": {
  "script": "filesystem-mcp-roots-lab.mjs",
  "sha256": "<hash script yang menghasilkan rekaman ini>",
  "source_revision": "<commit repo saat run, atau null bila checkout tidak tersedia>"
}
```

Jadi untuk run baru, pembaca dapat mencocokkan script yang dimilikinya dengan
`sha256` pada rekaman. Bila checkout git tidak tersedia, `source_revision`
bernilai `null` — itu dicatat sebagai tidak diketahui, bukan ditebak.

Untuk menjalankan sesi Roots baru:

```sh
npm install --prefix .publication-preview/filesystem-lab --ignore-scripts --no-audit --no-fund --save-exact @modelcontextprotocol/server-filesystem@2.0.0
node public/resources/filesystem-mcp-roots-lab.mjs
```

Script menulis rekaman ke `.publication-preview/filesystem-lab/runs/<run>/`.
Rekaman yang sudah diterbitkan di direktori ini tidak ditimpa oleh run baru:
keduanya tetap tersedia apa adanya.

## Apa yang tidak dilakukan dokumen ini

- Tidak menambahkan hash harness ke rekaman lama.
- Tidak mengklaim rekaman lama dihasilkan oleh script saat ini.
- Tidak mengubah `evidence.json` maupun `evidence-roots.json`.
- Tidak menandai deploy production, status push, atau adopsi pembaca.
