Repository navigation
Publish an application-owned lawpack authoring boundary #195
Copy link
Copy link
Closed
Labels
domain: backendCompiler/backend implementation workCompiler/backend implementation workenhancementNew feature or requestNew feature or requestrelease:front-endFront-end parser and source-AST validation release workFront-end parser and source-AST validation release workrelease:lawpacksLawpack contract and authority source release workLawpack contract and authority source release workroadmap-aRoadmap A: standalone Hello Echo deliveryRoadmap A: standalone Hello Echo deliverystate: frontierOpen and currently unblocked on the execution frontierOpen and currently unblocked on the execution frontiertype: featureFeature issue for a cohesive capabilityFeature issue for a cohesive capability
Description
Activity
- addedrelease:lawpacksLawpack contract and authority source release workLawpack contract and authority source release worktype: featureFeature issue for a cohesive capabilityFeature issue for a cohesive capabilitystate: frontierOpen and currently unblocked on the execution frontierOpen and currently unblocked on the execution frontierdomain: backendCompiler/backend implementation workCompiler/backend implementation work
on Aug 20, 2026 coderabbitai commented
on Aug 20, 2026 coderabbitaiboton Aug 20, 2026 – with coderabbitaiMore actions🔗 Related PRs
#2 - docs: apply Phase 0 design review + nail five yellow-light joints [merged]
#162 - Publish canonical provider contract pack [merged]
#170 - Build verified external applications through provider components [merged]
#174 - Preserve typed result projections for Echo targets [merged]
#177 - Publish canonical external request application artifacts [merged]
📝 Issue Planner
Check the box below or use the
@coderabbitai plancommand to generate an implementation plan and prompts that you can use with your favorite coding assistant.- Create Plan
🧪 Issue enrichment is currently in open beta.
You can configure auto-planning by selecting labels in the issue_enrichment configuration.
To disable automatic issue enrichment, add the following to your
.coderabbit.yaml:issue_enrichment: auto_enrich: enabled: false
💬 Have feedback or questions? Drop into our discord!
- addedenhancementNew feature or requestNew feature or requestrelease:front-endFront-end parser and source-AST validation release workFront-end parser and source-AST validation release workroadmap-aRoadmap A: standalone Hello Echo deliveryRoadmap A: standalone Hello Echo delivery
on Aug 20, 2026
Metadata
Metadata
Assignees
Labels
domain: backendCompiler/backend implementation workCompiler/backend implementation workenhancementNew feature or requestNew feature or requestrelease:front-endFront-end parser and source-AST validation release workFront-end parser and source-AST validation release workrelease:lawpacksLawpack contract and authority source release workLawpack contract and authority source release workroadmap-aRoadmap A: standalone Hello Echo deliveryRoadmap A: standalone Hello Echo deliverystate: frontierOpen and currently unblocked on the execution frontierOpen and currently unblocked on the execution frontiertype: featureFeature issue for a cohesive capabilityFeature issue for a cohesive capability
Problem
Edict can consume and validate an application-owned lawpack closure, but an application repository cannot yet produce that closure through a public Edict boundary.
The public application build requires one root lawpack followed by its complete dependency closure, then loads canonical manifest, exports, adapter, and target-configuration artifacts before compilation. The public syntax crate exposes typed lawpack models and decode/validation functions. The only checked-in writer, however, is the repository-internal
cargo xtask lawpack-goldens --writepath, whose artifact constructors and fixture coordinates are hard-coded for Edict's own Hello Echo, causal-cell, workspace-snapshot, and workspace-patch fixtures.That leaves a real application such as Jim with two unacceptable choices:
Neither is a legitimate ownership boundary. Jedit must own the
jedit.text@1definitions and generated closure; Edict must own the canonical construction and validation rules.Evidence
At the current #194 head (
8a2d021525e7c92e154a139086851d7a3e3f0a8a):edict application buildreads one source plus a complete lawpack closure and validates it before provider invocation:crates/edict-cli/src/application_build.rs#L153-L225.crates/edict-cli/src/application_build.rs#L992-L1002.decode_lawpack_bundle, but no corresponding lawpack encoder/builder:crates/edict-syntax/src/lib.rs#L142-L155.lawpack-goldens:xtask/src/main.rs#L45-L103.xtask/src/lawpack_goldens.rs#L16-L85,xtask/src/lawpack_goldens.rs#L209-L242.Required capability
Publish a deterministic, application-facing lawpack authoring boundary that takes reviewable typed definitions and emits the canonical artifacts already consumed by
edict application build.The boundary must keep three roles distinct:
The exact review format is a design choice, but callers must not need to construct
CanonicalValue, write CBOR, or reproduce Edict's digest framing.Acceptance criteria
edict.lawpack/v1manifest and export surface, including exported bounded types, constants, Edict-authored pure helper bodies and costs, semantic effects, obstructions, operation profiles, dependencies, verifier metadata, and target-adapter references.manifest.cbor,exports.cbor, adapter/configuration artifacts where declared, and lowercase digest sidecars suitable for an exact source import.xtask/src/lawpack_goldens.rs.First consumer
Jedit #296 will use this boundary to author and vendor Jim's
jedit.text@1closure forReplaceRange.edict, then pass that exact closure to Edict's public application build.The Jedit oracle is test expectation only. It must not be accepted as lawpack source or executable semantics.
Non-goals
ReplaceRange, orTextWindowvocabulary in Edict production code;Dependencies
ReplaceRange.edictand the application vocabulary.