ToshokannHome of Knowledge
TWiN Home

VOLUME 03 / DERIVATIVE WORKSHOP

Give the foundation a collection, a purpose, and a name.

A derivative keeps Toshokann's neutral mechanics and supplies one selected extension. The same contract can become a working Library, a historical Archive, or another carefully governed home of knowledge.

Start building
01

Derivative forms

Library and Archive are stewardship profiles.

They are not separate Toshokann modes. Both use the same extension and catalog contracts; their difference is what the steward promises about selection, revision, retention, and access.

LIB / 001

Library

Prioritizes discovery and current working knowledge.

Category
Subject or program
Kind
Guide, policy, resource
Tags
Topics and audiences
Revision
A maintained record may be replaced intentionally in a new catalog version.

ARC / 001

Archive

Prioritizes retained snapshots and historical description.

Category
Collection
Kind
Record type
Tags
Topic, era, provenance shorthand
Revision
Give each edition a stable ID and path; add a record for each new edition.
02

Extension record

Describe the house of knowledge.

  1. Create an independent repository

    Fork or clone the complete Toshokann source, preserve it as an upstream when useful, and copy the empty reference extension under the derivative's own safe identifier.

  2. Declare application, identity, and catalog

    Give the derivative its own canonical application ID for the inherited application-scoped DBOPFS path. Use defineExtension(config) to name it, point to its catalog, set empty-state language, and declare its bounded facets and navigation.

  3. Keep provider authority explicit

    The neutral librarian is part of the inherited application, but Toshokann supplies no credential or product-trained model alias. Configuring a remote provider is an explicit user or derivative decision that may transmit collection text.

View the extension.js example
SPECIMEN / EXTENSION.JS A minimal Library extension
import { defineExtension } from '../../src/core/extension.js';

export default defineExtension({
  schemaVersion: 1,
  id: 'example-library',
  displayName: 'Example Library',
  description: 'Approved knowledge and resources for Example.',
  catalogUrl: './extensions/example-library/catalog.json',
  emptyState: {
    title: 'No records available',
    message: 'Add approved records to this catalog.'
  },
  facets: [
    { id: 'category', label: 'Category', field: 'category' },
    { id: 'record-type', label: 'Record type', field: 'kind' },
    { id: 'topic', label: 'Topic', field: 'tags' }
  ],
  navigation: [],
  library: {
    seedPrefix: 'example-library--',
    manifestVersionKey: '.example-library-manifest-version.json',
    refreshEvent: 'example-library-documents-refreshed',
    synonymGroups: []
  },
  assistant: {
    enabled: true,
    displayName: 'Example Librarian'
  }
});
03

Collection register

Describe the Markdown holdings the derivative stewards.

Place approved Markdown below the selected extension. The compatible adapter normalizes established record aliases for title, path, summary, taxonomy, access, people, contacts, and source links, so an existing collection does not need a destructive schema rewrite.

View the catalog.json example
SPECIMEN / CATALOG.JSON A canonical new catalog record
{
  "schemaVersion": 1,
  "version": "2026-08-13",
  "documents": [
    {
      "id": "getting-started",
      "title": "Getting Started",
      "summary": "A concise guide to the approved workflow.",
      "path": "documents/getting-started.md",
      "name": "getting-started.md",
      "tags": ["onboarding"],
      "categories": ["operations"],
      "resourceTypes": ["guide"],
      "access": "public"
    }
  ]
}
Managed holdings
Packaged Markdown uses stable filenames below the active extension's DBOPFS seed prefix.
User holdings
Non-managed user Markdown remains visible and survives a managed catalog refresh.
Retrieval
Ranking and filters use normalized metadata; matched Markdown is bounded by per-document and total context character limits.
Release control
The compatible hydrator does not independently verify a catalog digest. Add and test a signed or hash-bound release layer when a derivative requires one.
04

Composition and publication

Select one extension. Publish only its public collection.

Point the composition seam
Change src/active-extension.js to export the new extension. Shared core modules must never import derivative code.
Create a separate runtime package profile
Keep toshokann.package.json documentation-only. In a separate runtime descriptor, positively include all six application views, manifest, source, components, prompts, exactly one derivative extension, the complete vendored Arcane browser runtime, strong-type notices/runtime, license material, and approved holdings.
Own the public identity
Update product metadata, README art and copy, support language, package ID, manifest, Pages labels, and the derivative's own tests.
05

Evidence before release

Test the collection you intend to publish.

  • Validate the selected extension

    Import it, load every packaged Markdown path, and prove that first-run inspection, managed refresh, user-upload preservation, search, preview, and librarian context work for its catalog.

  • Test the derivative surfaces

    Replace Toshokann-specific site and README assertions. Test the derivative identity, internal links, empty and populated states, and product-specific policy.

  • Inspect the exact artifact

    Run npm run check, serve dist locally, and verify that only the selected derivative and intended public records were packaged.

06

Preservation boundary

An Archive profile is a beginning, not a certification.

Toshokann can catalog, import, retrieve, and bound published Markdown snapshots. It does not by itself provide cryptographic release provenance, authenticity, chain of custody, timestamping, WORM storage, records schedules, legal hold, replication, migration, rights management, or preservation certification.

The current catalog hydrates UTF-8 text only. PDF, image, audio, and video support requires a new validated media contract and safe renderer. Browser-local imports are working copies, not accessions or preserved holdings.