When one package prepares data and another package needs it, the consumer should read a data name. It should not import the producer package, parse its files, or guess the storage address.
A project-preview package prepares a list of preview URLs and statuses. A web-frame package wants to render the active URL. The web-frame should not import project-preview storage code. It should read the view it was given.The producer can change how records are prepared. The consumer should keep reading the same public input shape.Traditional app shape
Bitfield shape
source-by-label, source-by-address, selected-file, current-project, or any other input that the package file exposes. It does not read producer private code.Code translation
Traditional path
Bitfield path
React adapter example
Descriptor-projected records
Some consumers need a different view of the same source. That should be data, not a new import path.Four prepared-read situations
Preview surface
Private preview helper
Read the prepared preview
Selected file content
Private file reader
Read the file-facing public values
Help content
Private help file
Read the prepared help
Worktree records
Private record cache
Read the prepared records
Consumer boundary checklist
Full before and after
Traditional feature request
“Show the preview URL beside the current file and include help text if the user opens the command palette.”Bad implementation
Public read version
What this prevents
React is one adapter for reading a data name. A Swift, Kotlin, terminal, or future shell should follow the same boundary: read the named input, not the package that prepared it.
Review check
If consumer code saysimport ... from '../other-package', ask why. A consumer package should receive a data name or an action name. It should not inspect another package’s source files.Next
- Share product facts safely: Share state between packages
- Request work from another package: Ask another package to do work
- Look up read contracts: Runtime Kit API