docs(scope): expand roadmap to cover all eight OKF surfaces
Operator decision: the initial v1 boundary (portfolio pair only) left five of eight OKF surfaces uncovered. CLAUDE.md/README now define a four-phase roadmap: door A, doors B/C, configurable bundle contract (wiki strict-v1), and a zero-dep Node/ESM half for the second-brain plugin world. Halves share contract and fixtures, never code. Security stays with llm-ingestion-guard in both runtimes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QeqhJpYQyghASjiJo5EhGg
This commit is contained in:
parent
47df0aeb4b
commit
e57afecf72
2 changed files with 58 additions and 28 deletions
50
CLAUDE.md
50
CLAUDE.md
|
|
@ -34,29 +34,40 @@ side of the boundary something belongs on: ask the operator.
|
||||||
pre-mutation collision gate, validated `ingested_at`, typed `IngestError`)
|
pre-mutation collision gate, validated `ingested_at`, typed `IngestError`)
|
||||||
are the library baseline. First consumer: `portfolio-optimiser-claude`.
|
are the library baseline. First consumer: `portfolio-optimiser-claude`.
|
||||||
|
|
||||||
### Open crossroads: the Node second-brain world (decision deferred)
|
### Roadmap (committed phases — all known OKF surfaces get covered)
|
||||||
|
|
||||||
The OKF second-brain plugins (okr, linkedin-studio, ms-ai-architect, and the
|
1. **Phase 1 — Door A (Python).** ingest-spec implementation + the §11
|
||||||
marketplace catalog spec) are deliberately Node/ESM zero-dependency and
|
golden fixtures. Consumers: `portfolio-optimiser-claude` first, then
|
||||||
cannot consume a Python library directly. okr has documented it does not
|
`portfolio-optimiser`.
|
||||||
want a Python bridge. v1 therefore aligns with the catalog's
|
2. **Phase 2 — Doors B/C (Python).** Bundle inbox and external-bundle
|
||||||
`okf-second-brain/spec.md` as a *contract* only and ships no Node code.
|
import, guard-gated.
|
||||||
Revisit when any of these become true:
|
3. **Phase 3 — Configurable bundle contract.** Types, layers, frontmatter
|
||||||
|
sets, and reserved-file policy become config instead of constants;
|
||||||
|
proving consumer is `claude-code-llm-wiki` (`strict-v1` profile).
|
||||||
|
4. **Phase 4 — Node half (`node/`).** Zero-dependency Node/ESM package
|
||||||
|
(importable *and* CLI-invokable, vendorable per plugin — matching the
|
||||||
|
marketplace precedent) for the second-brain world: bundle check, index
|
||||||
|
generation, inbox split/frontmatter/write, and doc conversion
|
||||||
|
(docx/pdf/eml/html → md). Covers okr, linkedin-studio, ms-ai-architect,
|
||||||
|
and the marketplace catalog.
|
||||||
|
|
||||||
1. A second Node consumer needs shared ingestion *code*, not just the
|
The two halves share the OKF contract and fixture suite, **not code**.
|
||||||
catalog conventions (`okf-check.mjs`/`okf-index.mjs`).
|
|
||||||
2. okr's doc-conversion layer (docx/pdf/eml/html → md) gets built and
|
|
||||||
duplicates Door B's extraction logic.
|
|
||||||
3. The catalog's convention-level alignment proves insufficient to keep
|
|
||||||
bundle forms interoperable.
|
|
||||||
|
|
||||||
### Non-goals (v1)
|
Phase 4 preconditions (coordination, not unilateral moves):
|
||||||
|
- Lifts okr's reference implementations (`okf-check.mjs`, `okf-index.mjs`,
|
||||||
|
innboks libs) in agreement with okr and the marketplace catalog; the
|
||||||
|
catalog remains the convention owner and re-pins its shared gate here.
|
||||||
|
- linkedin-studio's `ingest/published/` provenance-record grammar stays
|
||||||
|
plugin-local by design (different lifecycle) — do not normalize it.
|
||||||
|
- The Node-side persist gate remains security territory: guard-as-contract
|
||||||
|
(per okr's adoption doc) until a Node guard exists in the security repo.
|
||||||
|
No security reimplementation here, in either runtime.
|
||||||
|
|
||||||
|
### Non-goals (all phases)
|
||||||
|
|
||||||
- `strict-v1` wiki bundle profile (`claude-code-llm-wiki`) — v2 candidate;
|
|
||||||
requires a configurable bundle contract (types/layers/frontmatter sets/
|
|
||||||
reserved-file policy as config, not constants).
|
|
||||||
- Verdict/feedback machinery (method-spec) — stays in consumer repos.
|
- Verdict/feedback machinery (method-spec) — stays in consumer repos.
|
||||||
- Embedding/RAG/retrieval layers.
|
- Embedding/RAG/retrieval layers.
|
||||||
|
- Security functionality — always the guard's domain.
|
||||||
|
|
||||||
## Stack
|
## Stack
|
||||||
|
|
||||||
|
|
@ -66,6 +77,11 @@ The only permitted future runtime dependency is `llm-ingestion-guard`
|
||||||
(itself zero-dep), added when the first persist gate is implemented.
|
(itself zero-dep), added when the first persist gate is implemented.
|
||||||
Binary extraction parsers live behind the `[extract]` extra only.
|
Binary extraction parsers live behind the `[extract]` extra only.
|
||||||
|
|
||||||
|
Phase 4 adds a `node/` half: Node/ESM with zero npm dependencies
|
||||||
|
(`node:` builtins only), both importable and CLI-invokable, consumed by
|
||||||
|
vendoring per plugin rather than npm publishing. The halves share contract
|
||||||
|
and fixtures, never code.
|
||||||
|
|
||||||
## Conventions
|
## Conventions
|
||||||
|
|
||||||
- Type hints everywhere; `mypy --strict` target.
|
- Type hints everywhere; `mypy --strict` target.
|
||||||
|
|
|
||||||
28
README.md
28
README.md
|
|
@ -40,20 +40,34 @@ Security is owned by the sibling package
|
||||||
|
|
||||||
No security functionality is reimplemented here.
|
No security functionality is reimplemented here.
|
||||||
|
|
||||||
## Non-goals (v1)
|
## Roadmap
|
||||||
|
|
||||||
|
The library is built in four phases so that every known OKF surface in the
|
||||||
|
ecosystem is eventually covered:
|
||||||
|
|
||||||
|
1. Spec-based ingestion (Python) with byte-exact golden fixtures.
|
||||||
|
2. Bundle inbox and external-bundle import (Python), guard-gated.
|
||||||
|
3. Configurable bundle contract (types, layers, frontmatter sets, and
|
||||||
|
reserved-file policy as configuration), enabling stricter bundle
|
||||||
|
profiles such as `strict-v1`.
|
||||||
|
4. A `node/` half: a zero-dependency Node/ESM package (importable and
|
||||||
|
CLI-invokable, vendored per consumer) providing bundle checking, index
|
||||||
|
generation, inbox processing, and document conversion for the OKF
|
||||||
|
second-brain plugin ecosystem. The Python and Node halves share the OKF
|
||||||
|
contract and fixture suite, not code.
|
||||||
|
|
||||||
|
## Non-goals
|
||||||
|
|
||||||
- The `strict-v1` bundle profile used by `claude-code-llm-wiki` (candidate
|
|
||||||
for v2; requires a configurable bundle contract).
|
|
||||||
- A Node/JavaScript port for the OKF second-brain plugin ecosystem, which is
|
|
||||||
deliberately Node/ESM zero-dependency. See CLAUDE.md for the recorded
|
|
||||||
decision criteria.
|
|
||||||
- Verdict/feedback machinery from the method specification (stays in the
|
- Verdict/feedback machinery from the method specification (stays in the
|
||||||
consuming repositories).
|
consuming repositories).
|
||||||
- Embedding- or retrieval-layer functionality.
|
- Embedding- or retrieval-layer functionality.
|
||||||
|
- Security functionality, in either runtime — that is always
|
||||||
|
`llm-ingestion-guard`'s domain.
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
Python 3.10+. The core has zero runtime dependencies.
|
Python 3.10+. The core has zero runtime dependencies. The planned Node half
|
||||||
|
targets Node/ESM with zero npm dependencies.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue