# miloc-pi package evidence

Date: 2026-06-01

This file records the package state that was actually verified after migrating
from `/Users/ravius/projects/pi-dev-extensions`.

## Baseline and cleanup

- Baseline commit before destructive cleanup: `9447769 chore: capture pre-migration baseline`.
- Target cleanup removed legacy roadmap/task/session exports from the package surface.
- `.gitignore` excludes local/runtime-only files: `node_modules/`, `dist/`, `coverage/`, `test-results/`, `.runs/`, `.cache/`, `.DS_Store`, `*.log`, `.env*`, `.pi/settings.json`, `.tasks/`, `.miloc/`, `.omp/`, `.idea/`, `pi-session-*.html`, `task-index.json`, and `ROADMAP.md`.
- `catalog/` is intentionally retained because `dynamic-loader` reads the local audited catalog manifests. Remote catalog install remains out of scope.

## Source inventory

Source package: `/Users/ravius/projects/pi-dev-extensions`.

- Source package is not currently a git repository.
- Source `package.json#pi.extensions` originally contained 23 extension entrypoints; the cleaned target now registers 5 active-by-default entrypoints.
- Source checkout currently has zero-byte files in registered extension and agent paths:
  - `agents/reviewer.md`
  - `agents/scout.md`
  - `agents/security-reviewer.md`
  - `agents/worker.md`
  - `extensions/_shared/browser-driver.ts`
  - `extensions/browser/index.ts`
  - `extensions/browser/manifest.json`
  - `extensions/dynamic-loader/index.ts`
  - `extensions/dynamic-loader/manifest.json`
  - `extensions/hello-tool/index.ts`
  - `extensions/model-roles/README.md`
  - `extensions/security-gate/index.ts`
  - `extensions/tools-ast-edit/index.ts`
  - `extensions/tools-debug/index.ts`
- The target package has no zero-byte files under `extensions/` after recovery.
- Missing target content was restored from local Codex session evidence and current package docs; the source repo was not edited.
- Cleanup on 2026-06-01 removed command-only hello demos, the lifecycle trace demo observer, and the session state demo. `helloTool` remains only as an isolated test fixture because it verifies TypeBox tool registration and object JSON arguments without entering the default package surface.

## Package metadata

- `package.json` name: `@kroffske/miloc-pi`.
- Version: `0.1.0`.
- `private`: absent; the package is no longer blocked from npm publication by local-only metadata.
- `publishConfig`: `{ "access": "public", "registry": "https://registry.npmjs.org/" }`.
- Registered extension entrypoints: 5 active by default.
- Publication target: `@kroffske/miloc-pi`. First publish is allowed only after final package acceptance, the checks below, token verification through `npm-kroffske-publish`, and dry-run tarball review.
- `README.md`, `docs/README.md`, `docs/extension-index.md`, `docs/extensions/*.md`, and `docs/source-audit/` are manually maintained docs. Their technical surfaces are checked against current package metadata, manifests, and source files. Disabled candidates remain documented but are not loaded through `package.json#pi.extensions`.
- `docs/extension-gallery/` is generated smoke evidence from `scripts/build-extension-gallery.ts`.

## Checks

Setup:

```bash
npm install --ignore-scripts
```

Result: completed successfully with `0 vulnerabilities`.

Main check:

```bash
npm run check
```

Result:

- `tsc --noEmit`: passed.
- `vitest run`: current focused package checks pass; latest full run covered 13 test files and 62 tests.
- `tsx scripts/audit-sources.ts`: `source audit notes present; 92 OMP source paths verified`.

Package surface:

```bash
npm pack --dry-run --json
```

Result:

- Tarball: `kroffske-miloc-pi-0.1.0.tgz`.
- Entries: 113.
- Packed size: 87.1 kB.
- Unpacked size: 347.0 kB.
- Top-level tarball entries: `README.md`, `agents`, `bin`, `catalog`, `docs`, `extension-manifest.schema.json`, `extensions`, `package.json`.
- Confirmed absent from tarball: `node_modules/`, `.tasks/`, `.miloc/`, `.pi/settings.json`, `test-results/`, `.idea/`, `ROADMAP.md`, `task-index.json`.

Registry state:

```bash
npm view @kroffske/miloc-pi version --json
```

Result: `E404 Not Found` on 2026-06-01, so this package name has no visible published version in the default npm registry before the first publish.

Placeholder audit:

```bash
rg 'registerCommand\("go"|name:\s*"go"|/go\b' package.json extensions docs README.md
```

Result: no extension or package registration for placeholder `/go`; the only match is the README statement that `/go` is absent.

## Pi install and runtime

Pi executable:

```bash
which pi
pi --version
```

Result:

- `/Users/ravius/.nvm/versions/node/v24.15.0/bin/pi`
- `0.78.0`

Install:

```bash
pi install -l /Users/ravius/projects/miloc-pi
pi list
```

Result:

- `Installed /Users/ravius/projects/miloc-pi`.
- `pi list` shows project package `/Users/ravius/projects/miloc-pi`.
- Pi created local `.pi/settings.json`; it is intentionally ignored.

Active surface E2E visual proof:

```bash
npm run e2e:visual -- --out test-results/miloc-pi-active-surface
```

Result:

- Report: `test-results/miloc-pi-active-surface/miloc-pi-e2e-report.html`.
- Conclusion: `READY`.
- Scenarios: `install`, `startup`, `slash`, `local-tool-matrix`, and `package-checks` all passed.
- Real interactive Pi startup showed `[Extensions] ask-user-question, ast-structural-edit, devext-doctor, model-roles, todo-context`.
- Real `/devext doctor` output showed `defaultSurface: 5 active extension(s)` and `activeDefaults: ask-user-question, ast-structural-edit, devext-doctor, model-roles, todo-context`.
- Local tool matrix covered active `ask`, active AST `ast_grep`/`ast_edit`/`resolve`, active `todo_write`, disabled/fail-closed `goalSet`, `planMode`, `lsp`, `runAgent`, `debug`, and compatibility/report-only surfaces.

Isolated fixture smoke:

```bash
npm test -- tests/core.test.ts
```

Result:

- `helloTool` remains testable as an isolated fixture through the local test harness.
- This is not default package readiness evidence because `hello-tool` is no longer listed in `package.json#pi.extensions`.

Compatibility tool smoke, not default package proof:

```bash
npx tsx -e '... run todo_write init/done through tests/test-harness.ts ...'
```

Result:

- `todo_write` returned `isError:false`.
- Result details used OMP-style `phases[].name`, `completed`, `in_progress`, `storage="session"`, and `activeTask`.
- Focused harness tests also cover active `/todo` command behavior: append/done mutate the same session-entry backed state, and edit round-trips OMP-style Markdown checklist markers and blockquote notes.
- `todo-context` is active by default as an OMP-style compatibility wrapper; full sticky panel/reminder/import-export behavior remains enhancement backlog.

AST compatibility smoke and default package proof:

- `ast-structural-edit` is now the canonical active AST plugin and registers `ast_grep`, `ast_edit`, `resolve`, and legacy `ast_apply` together.
- Focused harness tests cover the unified entrypoint through search, preview, implicit `resolve(action="apply")`, and stale-preview rejection.
- Gallery smoke covers active default package registration and the `ast_edit` preview plus `resolve(action="apply")` path on a temp fixture.
- This is an active compatibility-wrapper proof. Full OMP parity is still blocked on forced hidden `resolve` queue behavior; local `resolve` remains explicit and defaults to the latest pending AST preview in the current project root.

The old representative smoke for `goalSet`, `goal`, `planMode`, `/plan`, `loopControl`, `toolRouter`, `runAgent`, `task`, `dynamicLoader`, `browser`, and `debug` is no longer evidence for default readiness because those extensions are disabled by default.
The old `security-gate` blocking smoke is also no longer evidence for readiness because the local blocking hook is disabled until OMP approval policy is ported.
The old `live-terminal` lifecycle-event smoke is also no longer evidence for readiness because the extension is report-only until OMP bash/job/PTY streaming is ported.
The old `tools-lsp` regex/reference smoke is also no longer evidence for readiness because the local helper is fail-closed until the OMP LSP stack is ported.
The old `dynamicLoader` apply/rollback smoke is also no longer evidence for readiness because local apply and rollback are fail-closed until OMP plugin manager and marketplace behavior is ported.
The old `tools-dev-context` smoke is also no longer evidence for readiness because the mixed shell/eval/job/checkpoint bundle is fail-closed until its pieces are split into OMP-backed plugins.
The old `loopControl` continuation smoke is also no longer evidence for readiness because the local auto-follow-up engine is removed until OMP loop mode is ported.
The old `debug` launch smoke is also no longer evidence for readiness because the local Node subprocess wrapper is removed until OMP DAP debug is ported.

## Readiness

- Package registration: verified with `pi install -l`.
- Default runtime registration: verified with `/devext doctor` and `npm run e2e:visual -- --out test-results/miloc-pi-active-surface`. Active `ask` wrapper behavior is covered by focused tests and gallery smoke. Active AST wrapper behavior is covered by focused tests, gallery smoke, and E2E local-tool matrix with `ast_grep`, `ast_edit`, and `resolve`. Active `/models` wrapper behavior is covered by focused tests and gallery smoke with temporary `ctx.setModel` selection. Active `todo_write` and `/todo` wrapper behavior is covered by focused tests and gallery smoke with session-backed todo mutations. Isolated fixture tool registration remains covered by `helloTool` tests. Disabled compatibility tools are verified only through focused tests/smokes until they are intentionally enabled again.
- Source audit: verified by `npm run audit:sources`.
- AST edit flow: `ast-structural-edit` is the canonical active AST plugin. `ast_edit` is preview-only and never writes files; `resolve` is the OMP-compatible preview apply/discard surface, with `ast_apply` retained as a legacy alias.
- Disabled candidates and compatibility wrappers are documented but not default-loaded unless listed in `package.json#pi.extensions`.
- `/devext doctor` reads the shared extension inventory from `extensions/_shared/extension-inventory.ts`; registration tests verify that inventory against manifests, package defaults, deleted legacy ids, and `docs/extension-ownership-matrix.md`.
- Source repo health: blocked upstream by zero-byte files in `/Users/ravius/projects/pi-dev-extensions`; target package is recovered and verified, but source repo should be repaired separately before using it as a fresh migration source again.
