N-09 / Technical article / public research article
Typed Context for Real Work
Typed context is a small discipline for stopping sources, claims, proposals, decisions, and receipts from borrowing one another’s authority.
Context is more than what fits in the window
In technical work, context is often reduced to whatever text, tickets, files, or tool output happens to be available at a given moment. That is useful as a storage description, but weak as a working description. A source file, an interpretation of that file, a proposed change, a build receipt, and an approval may all be displayed together. They should not therefore be treated as the same kind of thing. They carry different permissions, different failure modes, and different questions for a reader.
Typed context makes those distinctions explicit. A source is material that can be inspected. A claim is a statement about that material. A proposal is a candidate next move. A decision is a human-held disposition. A receipt records an attempt and its stated result. The names are modest, but they prevent a common systems error: allowing a useful output to inherit the authority of whatever sits next to it.
Types are questions, not decorations
A type label is only useful when it changes how we read an object. If an item is marked source, a reader should be able to ask where it came from, which revision is in view, and what scope was inspected. If it is marked claim, the questions change: what supports it, what does it leave out, and how strong is the language? If it is a proposal, the question is not whether it is true but whether a person wants to carry it into review. The label creates a different responsibility at the boundary.
This does not require a universal ontology or a sprawling schema. A small task can use a five-line packet: purpose, source set, claim class, boundary, return. The point is to select the minimum grammar that exposes the relation that matters. In one setting, freshness is essential; in another, consent or ownership is the decisive field. Typing should make the real condition visible, not impose a generic administrative costume on every piece of work.
A candidate packet in practice
Imagine a researcher asks for a public explanation of a new system pattern. The direct material might be a set of internal design notes, but the public object must not reproduce the notes. A bounded context packet could name the eligible source family, the public audience, the prohibited details, the requested artifact, and the fact that its language remains a candidate. The draft then has somewhere to stand: it is neither a raw source nor a settled statement on behalf of the studio.
The return should be typed as carefully as the input. “Build passes” is a receipt: it says a named compilation completed under stated conditions. “The page is accessible” is a larger claim that needs its own inspection. “Ready to publish” is a decision that belongs with an accountable human release. These distinctions do not diminish a successful technical check. They give the check its proper dignity by refusing to ask it to certify things it never examined.
The technical payoff is better change
When context is typed, a system can be more flexible without becoming more reckless. A renderer can turn source-bound records into a public card while carrying a visible omission note. A prompt can request a comparison without silently authorizing an edit. A review interface can show which statements are observations and which are design directions. A future collaborator can resume from a receipt without mistaking the receipt for acceptance. These are ordinary engineering benefits: fewer category mistakes, clearer handoffs, and more legible rollback paths.
Typed context is not a claim that a system has captured meaning completely. Meaning still has to be interpreted, contested, and revised. The discipline simply gives those human activities a clearer surface. Instead of collapsing everything into “the context,” it lets a team ask a more useful question: what kind of object is this, what may it support, and what must still return to a person?
What typed context solved for me
Typed context began for me as a repair for category drift. I would return to a large body of work and find sources beside summaries, decisions beside proposals, and runtime observations beside architectural intentions. The words were all relevant, but relevance had become a solvent. Because the objects appeared together, they began borrowing one another’s status.
The first benefit of typing was not automation. It was relief. A candidate could remain useful without pretending to be accepted. A receipt could preserve a successful check without certifying the whole system. An unknown could occupy a field without being silently completed. These distinctions reduced the pressure to resolve every object before it could be stored or discussed.
They also improved my ability to move between scales. I can hold a large research direction as a proposal while treating one source identity as settled and one build observation as current. The system no longer needs a single global confidence color. Each claim can carry the strongest posture its own evidence supports.
This fits the Hearthside Meta-Architect because the archetype is always moving between rooms. Typing keeps the transitions from becoming transformations of authority. The map can inform the bench without commanding it. The bench can produce a candidate without publishing it. The public surface can teach a pattern without exposing the private workshop.
From prompt to service surface
A typed task usually begins before code. The prompt names the intended artifact, eligible sources, constraints, and return. That small envelope can then shape a service contract: which request is accepted, which state is returned, and which errors are explicit. The implementation is not generated authority; it is one projection of the task contract into software.
The same relation continues into the interface. A loading state is not a failure. An unavailable state should not masquerade as an empty catalog. A subscription candidate is not an active entitlement. A user identifier is not a license to retain personal information. Types become visible experience when the page tells the truth about what the system currently knows and can do.
Operations add another projection. A manifest can state desired replicas, probes, resource bounds, and network policy. It does not establish that a cluster has admitted the resources or that the service is healthy. The runtime observation is a separate object with a timestamp and scope. Keeping these layers distinct prevents infrastructure-as-code from becoming infrastructure-as-imagination.
I find this continuity powerful because it lets one principle travel without forcing one technology stack. The typed relation is the enduring concern; the prompt, schema, Rust type, TypeScript guard, database constraint, and operational receipt are different instruments. Their agreement can be checked, but none of them becomes the source of human meaning by technical seniority.
When types become theatre
Typing can fail by becoming decorative. A record may have a status field that nobody trusts, a provenance object that points only to another summary, or a review flag that does not correspond to any actual reviewer. The schema creates the appearance of control while the social practice remains undefined. This is governance theatre in technical clothing.
The remedy is to make every field earn a reading consequence. If `source` is present, it should tell a reader what material was actually inspected. If `review_status` exists, it should distinguish pending review from accepted language. If `verified` is false, no other field should smuggle in the same claim under “complete” or “ready.” A useful type narrows an ambiguity that matters.
Types can also become too fine-grained. I am naturally attracted to rich taxonomies because they preserve nuance. The cost appears when nobody can reliably select among the categories or when the choice does not change the action. The weakest-sufficient representation is often better: enough classes to prevent the consequential mistake, with prose carrying the local complexity that does not need computation.
I therefore treat every type system as a candidate interface. It should be tested with real ambiguous examples, not only clean fixtures. If two careful readers repeatedly choose different labels, the system may need a sharper definition, a combined state, or permission to remain unknown. The ambiguity is evidence about the representation, not a user failure to obey it.
A worked packet from my bench
Suppose I want to turn a private systems note into a public technical essay. The task packet begins with an artifact class: public article candidate. The source set names the specific reviewed notes allowed to inform it. The disclosure boundary excludes operational details, personal material, credentials, and any claim not supported by the public source. The return is a local draft for my review, not a publication action.
Inside the draft, claims receive different treatment. A direct description of the current source can be labeled evidence when the source is available and the wording is proportionate. A statement about why the pattern may help is an inference or proposal. A personal reflection is explicitly situated in my experience. A broader benefit remains an open question unless comparative evidence exists.
The check packet is typed too. A successful build means the source compiled. A browser pass means selected routes and interactions met their assertions under the tested viewport. A visual review means I observed the rendered surface and formed an aesthetic judgment. These checks can accumulate without being collapsed into “ready.”
Finally, the disposition returns to me with four honest choices: accept, revise, withhold, or retire. The agent can recommend attention areas and show the consequences of each choice. It cannot infer that my request to prepare the page included a release of the claims. That separation is the practical heart of typed context.
What TCCP remains for me
TCCP is my research direction for giving these relations a more explicit compositional form. Publicly, the useful idea is modest: a task can be described through typed sources, goals, constraints, transitions, checks, effects, and human gates. The internal research is richer, but the public explanation should remain inspectable without requiring readers to inherit a private grammar.
I do not treat the protocol as settled or universal. It is a candidate lens developed through my own work. Its value has to be tested against cheaper forms: can a checklist, table, or short prompt do the job just as well? Does the typed form reduce repair, clarify review, or improve re-entry enough to justify its cost?
The most important boundary is that compilation does not equal authorization. A workflow may be internally coherent and still lack the source, permission, or human disposition needed for its next effect. The protocol should make that absence visible rather than optimizing around it.
If TCCP matures, I want it to feel less like a command language and more like a transparent agreement among people, sources, and tools. It should show what the system is trying to preserve while leaving space for meanings that cannot or should not be reduced to a type.