Help us shape the future of Go! Take the 2026 Go Developer Survey

codectx

module
v0.0.0-...-ea53456 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 10, 2026 License: Apache-2.0

README

codectx

Codebase intelligence for software-development agents: a Go CLI and MCP server that index a Git repository, keep the exact indexed bytes, and answer bounded structural queries — locally, offline, with no AI service and no API key.

Status: pre-release. Every command listed under Commands is implemented and wired into the command tree. What is still moving is the release surface — published archives, the SBOM and the signed checksum file land with the first tagged release, so the install one-liners below describe that release rather than something you can run against a published tag yet. Build from source until then.

Quick start

codectx owns every analyzer it runs and every runtime those analyzers need — no Node, no npm, no JDK and no language server of your own.

Precise indexing of Go, Rust and Python additionally uses that language's own toolchain (go, cargo, python3/pip3) the way any build does, because the indexer loads the project model through it. Where one is absent that language falls back to the structural and dependence providers, which need nothing on the host; no other language depends on anything you install.

Install the latest release
curl -fsSL https://github.com/Sawmonabo/codectx/releases/latest/download/install.sh | sh

install.sh resolves latest by default, downloads the archive for your platform, verifies its SHA-256 against the release's checksums.txt before it extracts anything, and installs into ~/.local/bin. It fetches nothing that checksums.txt does not name.

It then installs the pinned toolchain -- every analyzer, language server and runtime the product runs -- with the binary it just verified, so the first index of the first repository runs at full precision instead of stopping to download gigabytes. They land in one machine-wide store, $XDG_DATA_HOME/codectx/tools, shared by every repository on the host, so this happens once per machine and not once per checkout.

The whole toolchain is several gigabytes. Two options narrow it:

# only the tools this repository's languages select
curl -fsSL .../install.sh | sh -s -- --tools-for-repo .

# binary only; each tool is then installed on demand by the first run that needs it
curl -fsSL .../install.sh | sh -s -- --no-tools

--dry-run prints what an install would do without fetching or writing anything.

Install a pinned version

Pin the release in CI and anywhere a reproducible install matters:

curl -fsSL https://github.com/Sawmonabo/codectx/releases/download/v1.2.3/install.sh \
  | sh -s -- --version v1.2.3 --prefix /usr/local

--bundle installs the bundle archive instead — the same binary plus the managed tool store already populated for your platform, and no prefetch, since the payloads are already there. It unpacks the store into the shared location the binary reads by default, so nothing needs configuring. To refuse network fetches outright as well, add the [tools] offline line it prints. See docs/toolchain.md.

Download, inspect, then run

If you would rather not pipe a script into a shell, do the same three steps by hand:

V=v1.2.3
BASE=https://github.com/Sawmonabo/codectx/releases/download/$V
curl -fsSLO $BASE/codectx_${V#v}_linux_amd64.tar.gz
curl -fsSLO $BASE/checksums.txt
sha256sum --ignore-missing --check checksums.txt   # macOS: shasum -a 256 -c checksums.txt
tar -xzf codectx_${V#v}_linux_amd64.tar.gz
./codectx version

sbom.spdx.json and THIRD_PARTY_LICENSES.md are published beside them, and install.sh itself is a release asset you can read before you run it.

Windows

Windows ships a zip, so the same three steps are PowerShell rather than sh. There is no install.sh path on Windows; this is the supported install for both Windows targets.

$V = "v1.2.3"
$base = "https://github.com/Sawmonabo/codectx/releases/download/$V"
Invoke-WebRequest "$base/codectx_$($V.TrimStart('v'))_windows_amd64.zip" -OutFile codectx.zip
Invoke-WebRequest "$base/checksums.txt" -OutFile checksums.txt
# Compare this hash against the matching line of checksums.txt before extracting.
Get-FileHash -Algorithm SHA256 codectx.zip
Expand-Archive codectx.zip -DestinationPath "$env:LOCALAPPDATA\codectx"
$env:Path += ";$env:LOCALAPPDATA\codectx"   # persist with setx to keep it
codectx version

Substitute windows_arm64 for an arm64 host. Under WSL, use the Linux instructions above — WSL is served by the Linux build.

Build from source

Requires the pinned toolchain go1.27.1. Release builds set the version identity without embedding a build timestamp:

go build -trimpath \
  -ldflags "-X github.com/Sawmonabo/codectx/internal/model.version=$VERSION \
            -X github.com/Sawmonabo/codectx/internal/model.commit=$(git rev-parse HEAD)" \
  -o ./bin/codectx ./cmd/codectx

Tree-sitter's official bindings are native code, so a source build needs a C toolchain and cannot claim CGO_ENABLED=0 portability.

First run
codectx init .        # write .codectx.toml
codectx doctor .      # check the installation before trusting an answer
codectx index .
codectx mcp serve --repo .

Commands

Group Commands
Installation and health version, init, doctor
Managed toolchain tools status, tools prefetch, tools verify, tools gc
Indexing index, refresh, status, watch
Discovery search, symbol, repo-map
Graph queries refs, callers, callees, path, impact
Context sessions context plan, status, next, entries, include, read, acknowledge, waive, record, advance, capsule, close, export
Agent integration mcp serve

codectx doctor runs the diagnostic checks — build and toolchain pins, workspace and data-directory permissions, free space, schema, FTS and WAL, the active generation pointer, freshness, sampled content blocks, grammar availability and retention — each with its own state, reason code and remediation. A metric this host cannot measure is reported as unavailable, never as zero; docs/operations.md has the check list and what each recovery code means.

codectx repo-map reports the bounded repository, module, package and directory map of the pinned generation, continued by token rather than truncated — see docs/queries.md.

The managed toolchain

Every external analyzer is pinned by an exact version, a per-platform URL and a SHA-256 in a lock the binary embeds. Indexing installs what your repository needs, verified against that lock before anything executes, into a user-private store outside the repository. codectx itself looks nothing up on PATH; the three host toolchains above are the analyzers' own, and docs/toolchain.md lists them in one place.

codectx tools is the optional lifecycle surface for CI and offline hosts:

codectx tools status            # every pinned tool and what the store holds
codectx tools prefetch --all    # install ahead of time instead of on demand
codectx tools prefetch --for-repo .   # only what this repository's root selects
codectx tools verify            # rehash the store against the lock
codectx tools gc                # drop versions this binary no longer pins

Set [tools] offline = true to make every fetch a typed refusal that opens no socket; a bundle archive needs nothing else.

Discovery

codectx search and codectx symbol answer over exactly one generation of the index, pinned for the whole request:

codectx search "retry backoff" --repo .            # ranked hits across every tier
codectx search Authorize --kind method --limit 20  # filter by node kind
codectx search Authorize --language go             # filter by language
codectx symbol PaymentService.Authorize --repo .   # every candidate for a name

search runs five retrieval tiers — exact path, exact qualified name, qualified-name prefix, exact name, and generation-local BM25 lexical retrieval — and ranks them by tier first, then by an integer score, so the same query over the same generation always returns the same page. Hits carry the matched entity, its path and its source range, never source bodies.

symbol resolves a name, qualified name or canonical node ID to every node that matches. An ambiguous name returns all the candidates rather than silently picking the first.

Both take --repo, --generation, --limit, --cursor, --timeout and --json; search additionally takes repeatable --kind and --language. A page prints a continuation token as next: pass it back with --cursor to read the following page from the generation the first page was read from, which is why --cursor and --generation cannot be combined. A tampered, expired or foreign token is refused with CTX_CURSOR_INVALID (exit 8) rather than answered from a different question.

If only the bundled structural providers are available the commands still work and report their precision; SCIP, LSP or dependence-engine analysis enriches the same graph and query APIs without changing the agent integration. What that precision does and does not prove is set out in docs/providers.md and docs/snapshots.md.

codectx refs, callers, callees, path and impact answer bounded structural questions about the indexed generation; docs/queries.md has their arguments, budgets and the configuration keys they read.

Context sessions

codectx context compiles a snapshot-pinned manifest for one task, then tracks which actor actually read which bytes of it. A session seals only when every required file has a delivery receipt confirmed by the actor that received it, or an auditable waiver in its place — so "fully read" is evidence, not a claim. docs/context-sessions.md walks the whole flow.

codectx context plan --task "Add retry semantics to PaymentService.Authorize" \
  --phase sweep --actor lead-session-1

Output contract

Every --json request emits one envelope on stdout with schema_version, command, ok, data, warnings and error. Logs and human error text go to stderr. Exit codes follow Section 18.2 of docs/implementation-plan.md:

$ codectx version --json
{"schema_version":"1","command":"version","ok":true,"data":{...},"warnings":[],"error":null}

Documentation

Document What it covers
docs/operations.md Diagnosis, recovery codes, retention and the grace window, disk pressure, rebuilding
docs/diagnostics.md The run ledger: what each stage of a run cost and how to read it live; profiling a run with CODECTX_PPROF_DIR
docs/configuration.md Every configuration key, its bounds and the cross-field rules
docs/toolchain.md The pinned analyzer set, offline hosts and bundles, mirrors, the per-platform matrix
docs/context-sessions.md The strict actor workflow: receipts, review, waivers and the sealed capsule
docs/queries.md refs, callers, callees, path, impact and repo-map
docs/snapshots.md Snapshots, the content-addressed store and what provenance guarantees
docs/storage.md Generations, delta imports and carry-over
docs/providers.md The provider contract, and the per-provider pages beside it
docs/threat-model.md What is defended, what is not, and the honest limitations
docs/adr/ Architecture decision records: the decision, the alternatives weighed against it, and why it won
SECURITY.md The operator-facing trust boundary and how to report an issue
CONTRIBUTING.md The pinned toolchain, the verification set and the test policy

The full specification is docs/implementation-plan.md.

Licensing

codectx is Apache-2.0 licensed; see LICENSE, NOTICE and THIRD_PARTY_LICENSES.md, which records the version and license of every redistributed analyzer, runtime and grammar.

Directories

Path Synopsis
cmd
codectx command
Command codectx is the process boundary: it installs signal cancellation, builds the command tree and turns the resulting error into an exit code.
Command codectx is the process boundary: it installs signal cancellation, builds the command tree and turns the resulting error into an exit code.
docs
research/raw command
internal
admission
Package admission is this process's one reservation ledger: every heavy child -- analysis engine runs, external indexers, language servers, parser workers -- is admitted against a single machine-derived allocation of MEMORY and one of DISK, by the SUM of what they reserve in each (ADR-0010 decisions 5 and 6).
Package admission is this process's one reservation ledger: every heavy child -- analysis engine runs, external indexers, language servers, parser workers -- is admitted against a single machine-derived allocation of MEMORY and one of DISK, by the SUM of what they reserve in each (ADR-0010 decisions 5 and 6).
app
Package app is the composition root: it wires configuration, the managed toolchain, storage and providers into the objects the command tree and the index coordinator consume.
Package app is the composition root: it wires configuration, the managed toolchain, storage and providers into the objects the command tree and the index coordinator consume.
bench
Package bench holds the resource benchmarks of Section 30.1 that are too slow or too environment-dependent for the ordinary unit suite.
Package bench holds the resource benchmarks of Section 30.1 that are too slow or too environment-dependent for the ordinary unit suite.
cli
Package cli translates command-line requests and renders results.
Package cli translates command-line requests and renders results.
config
Package config resolves the strict layered configuration of Section 20: built-in defaults, then the user configuration file, then the small permitted subset of the project's .codectx.toml.
Package config resolves the strict layered configuration of Section 20: built-in defaults, then the user configuration file, then the small permitted subset of the project's .codectx.toml.
context
This file holds Section 15.4 budgeting: measured entry sizes, per-slice byte and token bounds, and the CTX_MINIMUM_BUDGET floor.
This file holds Section 15.4 budgeting: measured entry sizes, per-slice byte and token bounds, and the CTX_MINIMUM_BUDGET floor.
coverage
Package coverage serves snapshot-pinned source in bounded chunks and keeps actor-scoped, receipt-confirmed coverage of what was actually delivered (Sections 16.1-16.3).
Package coverage serves snapshot-pinned source in bounded chunks and keeps actor-scoped, receipt-confirmed coverage of what was actually delivered (Sections 16.1-16.3).
diagnostics
Package diagnostics builds the Section 22 doctor report and the Section 23 resource accounting block.
Package diagnostics builds the Section 22 doctor report and the Section 23 resource accounting block.
diskfree
Package diskfree measures the space a process can still write under a directory.
Package diskfree measures the space a process can still write under a directory.
e2e
Package e2e holds the end-to-end product-boundary scenarios of Section 25.1.
Package e2e holds the end-to-end product-boundary scenarios of Section 25.1.
fslock
Package fslock is the product's one operating-system file-lock and directory-durability implementation.
Package fslock is the product's one operating-system file-lock and directory-durability implementation.
graph
Package graph answers bounded traversal, dependency-path and impact queries over the canonical fact store.
Package graph answers bounded traversal, dependency-path and impact queries over the canonical fact store.
graph/graphtest
Package graphtest carries the graph.GraphReader conformance suite and the fixture it runs on, so every implementation of the port -- the in-heap graph.MemoryGraph and the store's packed per-generation reader -- is held to one behaviour (ADR-0005).
Package graphtest carries the graph.GraphReader conformance suite and the fixture it runs on, so every implementation of the port -- the in-heap graph.MemoryGraph and the store's packed per-generation reader -- is held to one behaviour (ADR-0005).
index
Package index is the indexing coordinator of Section 13: the one component that captures a snapshot, decides which units may be reused, runs the rest through the provider runtime, and publishes a generation atomically.
Package index is the indexing coordinator of Section 13: the one component that captures a snapshot, decides which units may be reused, runs the rest through the provider runtime, and publishes a generation atomically.
index/delta
Package delta builds one unit as "the previous unit plus a delta" (Section 11.4): it runs a provider that can tell what changed since its last run, names everything of the predecessor that did not survive, and lets storage carry the rest into the new unit.
Package delta builds one unit as "the previous unit plus a delta" (Section 11.4): it runs a provider that can tell what changed since its last run, names everything of the predecessor that did not survive, and lets storage carry the rest into the new unit.
index/plan
Package plan derives, for one captured snapshot, exactly the units the active providers will run, which sealed units of the previous generation may be reused byte for byte, which refreshing semantic units may be carried stale with their provenance distance, and which predecessor each rebuilt unit imports its delta from (Sections 13.1, 13.3).
Package plan derives, for one captured snapshot, exactly the units the active providers will run, which sealed units of the previous generation may be reused byte for byte, which refreshing semantic units may be carried stale with their provenance distance, and which predecessor each rebuilt unit imports its delta from (Sections 13.1, 13.3).
index/watch
Package watch is the filesystem notification half of Section 13.2: it turns operating-system change notifications over one workspace into bounded, debounced batches of root-relative paths for the index coordinator, and it reports honestly when notification does not cover the tree.
Package watch is the filesystem notification half of Section 13.2: it turns operating-system change notifications over one workspace into bounded, debounced batches of root-relative paths for the index coordinator, and it reports honestly when notification does not cover the tree.
lang
Package lang is the single path-to-language table of the codebase, shared by the filesystem provider and the snapshot manifest.
Package lang is the single path-to-language table of the codebase, shared by the filesystem provider and the snapshot manifest.
ledger
Package ledger records what a run cost: a tree of spans per run, written by one collector goroutine into a database of its own beside the index store, and readable by any other process while the run is still going.
Package ledger records what a run cost: a tree of spans per run, written by one collector goroutine into a database of its own beside the index store, and readable by any other process while the run is still going.
mcpserver
Package mcpserver exposes the Section 19.2 tool surface of codectx over the Model Context Protocol, using the pinned official Go SDK for every wire concern.
Package mcpserver exposes the Section 19.2 tool surface of codectx over the Model Context Protocol, using the pinned official Go SDK for every wire concern.
model
Package model holds the canonical data contracts shared by every codectx service.
Package model holds the canonical data contracts shared by every codectx service.
paced
Package paced holds the process's disk manners: the window that bounds what it hands the disk at once, the pace at which it gives disk space back, and the removals that keep to both.
Package paced holds the process's disk manners: the window that bounds what it hands the disk at once, the pace at which it gives disk space back, and the removals that keep to both.
pagination
Package pagination is the one shared cursor, lease and spool utility of Section 14.4.
Package pagination is the one shared cursor, lease and spool utility of Section 14.4.
process
Package process owns the lifecycle of every child this application starts: Git, parser workers, SCIP indexers, language servers and deep analyzers all run through the one runner here.
Package process owns the lifecycle of every child this application starts: Git, parser workers, SCIP indexers, language servers and deep analyzers all run through the one runner here.
provider
Package provider is the Section 11.1 provider runtime: the contract every fact producer implements, the registry that orders and selects providers, the byte- and record-bounded sink their output flows through, and the one place a unit is sealed or discarded.
Package provider is the Section 11.1 provider runtime: the contract every fact producer implements, the registry that orders and selects providers, the byte- and record-bounded sink their output flows through, and the one place a unit is sealed or discarded.
provider/dependence
Package dependence is the Section 11.6 dependence provider: call facts for the nine supported languages, produced by a managed code-property-graph engine that runs one frontend-native project at a time.
Package dependence is the Section 11.6 dependence provider: call facts for the nine supported languages, produced by a managed code-property-graph engine that runs one frontend-native project at a time.
provider/dependence/graphcsv
Package graphcsv imports one dependence-engine graph export into provider facts.
Package graphcsv imports one dependence-engine graph export into provider facts.
provider/dependence/graphengine
Package graphengine is the dependence provider's engine backend: the one place in the product that knows which code-property-graph engine produces the facts, what its command line looks like, how its heap cap is placed and what its diagnostics mean.
Package graphengine is the dependence provider's engine backend: the one place in the product that knows which code-property-graph engine produces the facts, what its command line looks like, how its heap cap is placed and what its diagnostics mean.
provider/filesystem
Package filesystem is the base provider of Section 11.2: repository, directory, file and recognized document/configuration/build-target nodes, the `contains` and `defines` relations between them, the README-style `documents` relation, and the per-file lexical search chunks stored once in the file's own unit.
Package filesystem is the base provider of Section 11.2: repository, directory, file and recognized document/configuration/build-target nodes, the `contains` and `defines` relations between them, the README-style `documents` relation, and the per-file lexical search chunks stored once in the file's own unit.
provider/lsp
Package lsp is the snapshot-qualified working-tree overlay of Section 11.5: on-demand definition, references, implementations, type definition, document and workspace symbols and call hierarchy answered by an approved local language server running against a private materialization of the pinned snapshot.
Package lsp is the snapshot-qualified working-tree overlay of Section 11.5: on-demand definition, references, implementations, type definition, document and workspace symbols and call hierarchy answered by an approved local language server running against a private materialization of the pinned snapshot.
provider/manifest
Package manifest is the Section 11.2 build-metadata and documentation provider: package, module, dependency and configuration nodes parsed from go.mod, go.work, package.json, Cargo.toml, pyproject.toml and pom.xml, and the headings and source links of Markdown documents.
Package manifest is the Section 11.2 build-metadata and documentation provider: package, module, dependency and configuration nodes parsed from go.mod, go.work, package.json, Cargo.toml, pyproject.toml and pom.xml, and the headings and source links of Markdown documents.
provider/providertest
Package providertest is the shared provider conformance harness (Section 30.2).
Package providertest is the shared provider conformance harness (Section 30.2).
provider/scip
Package scip is the Section 11.4 provider: streaming import of SCIP precise indexes and execution of the six pinned SCIP indexers (scip-go, scip-typescript, scip-python, scip-java, rust-analyzer and scip-clang) against a private materialization of the pinned snapshot.
Package scip is the Section 11.4 provider: streaming import of SCIP precise indexes and execution of the six pinned SCIP indexers (scip-go, scip-typescript, scip-python, scip-java, rust-analyzer and scip-clang) against a private materialization of the pinned snapshot.
provider/treesitter
Package treesitter is the bundled structural provider of Section 11.3: a tree-sitter pass over each supported source file that publishes declarations, containing scopes, signatures, imports and exports, syntax references and call sites, test declarations and attached documentation at precision syntax, and, from the same worker walk, the file-local dependence families control_depends_on, data_flows_to, reads and writes between the file's parameters and locals at precision static_analysis (docs/providers-treesitter.md, Dependence facts).
Package treesitter is the bundled structural provider of Section 11.3: a tree-sitter pass over each supported source file that publishes declarations, containing scopes, signatures, imports and exports, syntax references and call sites, test declarations and attached documentation at precision syntax, and, from the same worker walk, the file-local dependence families control_depends_on, data_flows_to, reads and writes between the file's parameters and locals at precision static_analysis (docs/providers-treesitter.md, Dependence facts).
provider/treesitter/flow
Package flow is the per-function dependence core: a language-neutral control-flow graph, its dominance relations, control dependence and SSA def-use.
Package flow is the per-function dependence core: a language-neutral control-flow graph, its dominance relations, control dependence and SSA def-use.
provider/treesitter/lang
Package lang is the pinned language registry of the tree-sitter provider: the nine mandatory grammars of Section 11.3, the exact module version, grammar ABI and grammar metadata each one was reviewed at, the file extensions each grammar declares, and the embedded structural query pack.
Package lang is the pinned language registry of the tree-sitter provider: the nine mandatory grammars of Section 11.3, the exact module version, grammar ABI and grammar metadata each one was reviewed at, the file extensions each grammar declares, and the embedded structural query pack.
provider/treesitter/wire
Package wire is the framed protocol between the tree-sitter provider and its parser worker subprocess.
Package wire is the framed protocol between the tree-sitter provider and its parser worker subprocess.
provider/treesitter/worker
Package worker is the parser side of the tree-sitter provider: a subprocess that owns every native object (parser, tree, query, query cursor) and never touches storage, identities or the repository.
Package worker is the parser side of the tree-sitter provider: a subprocess that owns every native object (parser, tree, query, query cursor) and never touches storage, identities or the repository.
reconcile
Package reconcile is the deterministic identity resolution of Section 9.4.
Package reconcile is the deterministic identity resolution of Section 9.4.
residency
Package residency reads this process's own resident memory from the kernel.
Package residency reads this process's own resident memory from the kernel.
retention
Package retention is the process-level collector.
Package retention is the process-level collector.
scratch
Package scratch is the pool of working files a store writes for its own later reading: sort runs, staging databases, content-store temporaries, materialized trees, cursor and traversal state.
Package scratch is the pool of working files a store writes for its own later reading: sort runs, staging databases, content-store temporaries, materialized trees, cursor and traversal state.
search
Package search answers the Section 14 discovery endpoints over one pinned generation: exact/prefix symbol and path lookup, and generation-local BM25 lexical retrieval.
Package search answers the Section 14 discovery endpoints over one pinned generation: exact/prefix symbol and path lookup, and generation-local BM25 lexical retrieval.
snapshot
Package snapshot captures exact worktree bytes into an immutable manifest and the local content-addressed store, serves them back with verified integrity, and materializes private copies for external analyzers (Section 10).
Package snapshot captures exact worktree bytes into an immutable manifest and the local content-addressed store, serves them back with verified integrity, and materializes private copies for external analyzers (Section 10).
source
Package source owns byte/range/encoding conversion for the whole application.
Package source owns byte/range/encoding conversion for the whole application.
storage/pacedvfs
Package paced makes every file the embedded engine writes reach the disk as a self-clocked stream with a bounded window in flight.
Package paced makes every file the embedded engine writes reach the disk as a self-clocked stream with a bounded window in flight.
storage/sqlite
Package sqlite is the one store of Section 12: it owns SQL, unit publication, generation pinning, retention metadata and transactions.
Package sqlite is the one store of Section 12: it owns SQL, unit publication, generation pinning, retention metadata and transactions.
testenv
Package testenv holds test helpers whose subject is the HOST a test runs on rather than anything this product builds.
Package testenv holds test helpers whose subject is the HOST a test runs on rather than anything this product builds.
toolchain
Package toolchain owns every external analyzer and runtime the product executes (Section 11.7): the embedded lock that pins them, the private store they are installed into, the single network fetcher that brings a payload in, the confined extractor that unpacks it and the resolver that hands a caller a runnable tool.
Package toolchain owns every external analyzer and runtime the product executes (Section 11.7): the embedded lock that pins them, the private store they are installed into, the single network fetcher that brings a payload in, the confined extractor that unpacks it and the resolver that hands a caller a runnable tool.
tools/toollock command
Command toollock is the release-time generator for the managed analyzer toolchain of Section 11.7.
Command toollock is the release-time generator for the managed analyzer toolchain of Section 11.7.
vcs/git
Package git runs the Git plumbing the snapshot builder needs and interprets its NUL-delimited output.
Package git runs the Git plumbing the snapshot builder needs and interprets its NUL-delimited output.
workflow
Package workflow is the Section 17 service layer: the transition guards, the strict readiness gate, source-backed scope review and deterministic capsule identity.
Package workflow is the Section 17 service layer: the transition guards, the strict readiness gate, source-backed scope review and deterministic capsule identity.
workspace
Package workspace discovers the repository root, confines every file access to it and streams its files deterministically.
Package workspace discovers the repository root, confines every file access to it and streams its files deterministically.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL