From a0db4b4fdc6a0ada1f222df2e33fe754b05d9001 Mon Sep 17 00:00:00 2001 From: Steve Brown Date: Wed, 21 Oct 2026 00:12:35 -0400 Subject: [PATCH 1/4] fix: complete Tambo branding while preserving compatibility contracts --- README.md | 13 +- assets/footer.svg | 2 +- assets/header.svg | 35 +- assets/logo.svg | 93 +- docs/book/book.toml | 6 +- docs/book/custom/css/custom.css | 2 +- docs/book/src/SUMMARY.md | 3 +- docs/book/src/agents.md | 6 +- docs/book/src/architecture.md | 4 +- docs/book/src/compatibility.md | 12 + docs/book/src/configuration.md | 14 +- docs/book/src/conventions.md | 2 +- docs/book/src/corpus.md | 8 +- docs/book/src/crew-contracts.md | 12 +- docs/book/src/docs-map.md | 12 +- docs/book/src/emission.md | 12 +- docs/book/src/getting-started.md | 24 +- docs/book/src/images/stack-loop.svg | 4 +- docs/book/src/installation-reference.md | 44 +- docs/book/src/installing.md | 117 +- docs/book/src/introduction.md | 8 +- docs/book/src/pendant-autoload.md | 18 +- docs/book/src/profiles.md | 22 +- docs/book/src/proofs.md | 4 +- docs/book/src/reference.md | 50 +- docs/book/src/roadmap.md | 20 +- docs/book/src/stack-standard.md | 6 +- docs/book/src/stack.md | 8 +- docs/book/src/using.md | 30 +- docs/compatibility/legacy-name-contracts.json | 1571 +++++++++++++++++ docs/demos/tambo-branding/README.md | 17 + .../tambo-branding/after/footer-dark.png | Bin 0 -> 15522 bytes .../tambo-branding/after/footer-light.png | Bin 0 -> 13856 bytes .../tambo-branding/after/header-dark.png | Bin 0 -> 20847 bytes .../tambo-branding/after/header-light.png | Bin 0 -> 19466 bytes docs/demos/tambo-branding/after/logo-dark.png | Bin 0 -> 6007 bytes .../demos/tambo-branding/after/logo-light.png | Bin 0 -> 5732 bytes .../tambo-branding/after/stack-loop-dark.png | Bin 0 -> 52225 bytes .../tambo-branding/after/stack-loop-light.png | Bin 0 -> 52346 bytes .../tambo-branding/before/footer-dark.png | Bin 0 -> 15522 bytes .../tambo-branding/before/footer-light.png | Bin 0 -> 13856 bytes .../tambo-branding/before/header-dark.png | Bin 0 -> 20071 bytes .../tambo-branding/before/header-light.png | Bin 0 -> 18924 bytes .../demos/tambo-branding/before/logo-dark.png | Bin 0 -> 9918 bytes .../tambo-branding/before/logo-light.png | Bin 0 -> 9664 bytes .../tambo-branding/before/stack-loop-dark.png | Bin 0 -> 52692 bytes .../before/stack-loop-light.png | Bin 0 -> 52811 bytes docs/stack/README-STANDARD.md | 14 +- docs/stack/README-TEMPLATE.md | 6 +- install.sh | 4 +- justfile | 4 +- packs/src/stack-map.ttl | 8 +- packs/src/stack-operations.ttl | 4 +- packs/stack-map/pendant/export.nt | 6 +- packs/stack-map/pendant/manifest.json | 2 +- packs/stack-map/pendant/manifest.ttl | 10 +- packs/stack-operations/pendant/export.nt | 4 +- packs/stack-operations/pendant/manifest.json | 2 +- packs/stack-operations/pendant/manifest.ttl | 10 +- scripts/check-product-name.py | 66 + scripts/install.sh | 4 +- scripts/setup-environment.sh | 2 +- scripts/test-install-bootstrap.py | 4 +- scripts/test-product-name.py | 46 + skills/caboodle/SKILL.md | 157 -- skills/caboodle/agents/openai.yaml | 4 - skills/caboodle/scripts/check-surface.sh | 22 - skills/tambo/SKILL.md | 8 +- src/adapter.rs | 14 +- src/apt_owned.rs | 4 +- src/doctor.rs | 14 +- src/dp_alias.rs | 2 +- src/emission.rs | 2 +- src/engine.rs | 74 +- src/hook_bundles.rs | 12 +- src/main.rs | 2 +- src/model.rs | 8 +- src/observability.rs | 2 +- src/package.rs | 2 +- src/quipu_credential.rs | 8 +- src/quipu_mcp.rs | 6 +- src/release_update.rs | 10 +- src/release_update/quipu.rs | 2 +- src/tool_bundles.rs | 6 +- tests/cli.rs | 19 +- 85 files changed, 2099 insertions(+), 654 deletions(-) create mode 100644 docs/book/src/compatibility.md create mode 100644 docs/compatibility/legacy-name-contracts.json create mode 100644 docs/demos/tambo-branding/README.md create mode 100644 docs/demos/tambo-branding/after/footer-dark.png create mode 100644 docs/demos/tambo-branding/after/footer-light.png create mode 100644 docs/demos/tambo-branding/after/header-dark.png create mode 100644 docs/demos/tambo-branding/after/header-light.png create mode 100644 docs/demos/tambo-branding/after/logo-dark.png create mode 100644 docs/demos/tambo-branding/after/logo-light.png create mode 100644 docs/demos/tambo-branding/after/stack-loop-dark.png create mode 100644 docs/demos/tambo-branding/after/stack-loop-light.png create mode 100644 docs/demos/tambo-branding/before/footer-dark.png create mode 100644 docs/demos/tambo-branding/before/footer-light.png create mode 100644 docs/demos/tambo-branding/before/header-dark.png create mode 100644 docs/demos/tambo-branding/before/header-light.png create mode 100644 docs/demos/tambo-branding/before/logo-dark.png create mode 100644 docs/demos/tambo-branding/before/logo-light.png create mode 100644 docs/demos/tambo-branding/before/stack-loop-dark.png create mode 100644 docs/demos/tambo-branding/before/stack-loop-light.png create mode 100644 scripts/check-product-name.py create mode 100644 scripts/test-product-name.py delete mode 100644 skills/caboodle/SKILL.md delete mode 100644 skills/caboodle/agents/openai.yaml delete mode 100755 skills/caboodle/scripts/check-surface.sh diff --git a/README.md b/README.md index 1062488..69bcee5 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Install the Quipu stack from a plan you can review, then prove the selected tools work. Give an agent durable memory and code context, without assembling every tool by hand. Tambo is a CLI and [agent skill](skills/tambo/SKILL.md). -The compatibility command `caboodle` remains available. +The compatibility command `tambo` remains available. ## Install @@ -14,11 +14,11 @@ curl -fsSL https://raw.githubusercontent.com/scbrown/tambo/main/install.sh | sh ``` Downloads the latest release, verifies its SHA-256 and version, and installs -`tambo` and `caboodle` in `${CARGO_HOME:-$HOME/.cargo}/bin`. Requires `curl`, +`tambo` and `tambo` in `${CARGO_HOME:-$HOME/.cargo}/bin`. Requires `curl`, `tar`, Python 3 and `sha256sum` or `shasum`. Add that directory to `PATH`. Published archives support Linux x86_64 and macOS arm64/x86_64; **Linux arm64 has no published archive**. Source builds, pinned versions, removal and the -Homebrew alternative are in the [installation reference](https://scbrown.github.io/caboodle/installation-reference.html). +Homebrew alternative are in the [installation reference](https://scbrown.github.io/tambo/installation-reference.html). ## First success: local, single-user @@ -31,6 +31,7 @@ tambo quickstart This saves a reviewed retrieval plan, installs Quipu, Camayoc and Bobbin, and checks each tool. Success is exit 0 and `quipu: verified`, `camayoc: verified`, `bobbin: verified`. Keep `caboodle-plan.toml` and `.caboodle/` to resume. +See the [compatibility contracts](docs/book/src/compatibility.md) for retained aliases and state paths. Recheck the same install: ```bash @@ -40,7 +41,7 @@ tambo verify ### Advanced: shared services and agents For issued credentials, remote stores and registering Bobbin with your agent, -use the [agent and installation reference](https://scbrown.github.io/caboodle/installation-reference.html). +use the [agent and installation reference](https://scbrown.github.io/tambo/installation-reference.html). The default quickstart is local and needs no account or remote server. From the code repository you want searchable, initialize and index it before @@ -54,9 +55,9 @@ claude mcp add bobbin -- "$(command -v bobbin)" serve "$PWD" ## Where to go next -- [Choose a profile](https://scbrown.github.io/caboodle/profiles.html) or use `tambo init --guided`. +- [Choose a profile](https://scbrown.github.io/tambo/profiles.html) or use `tambo init --guided`. - [Camayoc](https://github.com/scbrown/camayoc): vocabulary, shapes and governed agent memory. -- [Getting started](https://scbrown.github.io/caboodle/getting-started.html) and [command reference](https://scbrown.github.io/caboodle/reference.html). +- [Getting started](https://scbrown.github.io/tambo/getting-started.html) and [command reference](https://scbrown.github.io/tambo/reference.html). - **Load this repository's graph:** repository-pendant publication is pending. When a release provides the archive, checksum and provenance, follow Quipu's [verified import workflow](https://scbrown.github.io/quipu/sharing/index.html). diff --git a/assets/footer.svg b/assets/footer.svg index 99886e7..222244b 100644 --- a/assets/footer.svg +++ b/assets/footer.svg @@ -1,4 +1,4 @@ - + diff --git a/assets/header.svg b/assets/header.svg index fa42a16..95b5a68 100644 --- a/assets/header.svg +++ b/assets/header.svg @@ -1,4 +1,4 @@ - + @@ -33,29 +33,14 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + diff --git a/assets/logo.svg b/assets/logo.svg index e386ca8..540823b 100644 --- a/assets/logo.svg +++ b/assets/logo.svg @@ -1,82 +1,17 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + diff --git a/docs/book/book.toml b/docs/book/book.toml index 022af79..911654e 100644 --- a/docs/book/book.toml +++ b/docs/book/book.toml @@ -8,9 +8,9 @@ src = "src" [output.html] default-theme = "coal" preferred-dark-theme = "coal" -# Keep working GitHub alias links until the repository rename is verified. -git-repository-url = "https://github.com/scbrown/caboodle" -edit-url-template = "https://github.com/scbrown/caboodle/edit/main/docs/book/{path}" +# Canonical source links for the published Tambo book. +git-repository-url = "https://github.com/scbrown/tambo" +edit-url-template = "https://github.com/scbrown/tambo/edit/main/docs/book/{path}" additional-css = ["custom/css/custom.css"] site-url = "/tambo/" diff --git a/docs/book/custom/css/custom.css b/docs/book/custom/css/custom.css index ddd8777..1605758 100644 --- a/docs/book/custom/css/custom.css +++ b/docs/book/custom/css/custom.css @@ -1,7 +1,7 @@ /* Intel One Mono font for code */ @import url('https://fonts.googleapis.com/css2?family=Intel+One+Mono:wght@400;700&display=swap'); -/* Caboodle Documentation — Dracula Theme Override +/* Tambo Documentation — Dracula Theme Override Applied to the Coal theme (default) */ /* Dracula palette: diff --git a/docs/book/src/SUMMARY.md b/docs/book/src/SUMMARY.md index 4592478..ecd5c68 100644 --- a/docs/book/src/SUMMARY.md +++ b/docs/book/src/SUMMARY.md @@ -5,8 +5,9 @@ - [Getting started](getting-started.md) - [Installing and removing](installing.md) - [Installation and agent reference](installation-reference.md) + - [Compatibility](compatibility.md) - [Using it with agents](agents.md) -- [Using Caboodle](using.md) +- [Using Tambo](using.md) - [Reference](reference.md) - [Configuration](configuration.md) - [How it works](architecture.md) diff --git a/docs/book/src/agents.md b/docs/book/src/agents.md index 99e48e3..8cc458b 100644 --- a/docs/book/src/agents.md +++ b/docs/book/src/agents.md @@ -1,6 +1,6 @@ # Using it with agents -Caboodle is a CLI that an agent can run with the +Tambo is a CLI that an agent can run with the [Tambo skill](https://github.com/scbrown/tambo/blob/main/skills/tambo/SKILL.md). It does not expose its own MCP server. MCP (Model Context Protocol) lets an agent call servers supplied by the installed tools. @@ -28,7 +28,7 @@ in their client-specific server configuration. ## Managed crew -For a configured Shantytown rig, `caboodle project-settings` delegates +For a configured Shantytown rig, `tambo project-settings` delegates registration to Shantytown and its Quipu tooling manifest. It does not launch or restart agents. See [registering MCP servers](installing.md#registering-mcp-servers) for prerequisites, selection flags, remote proxies and the policy-only mode. @@ -160,7 +160,7 @@ existing key file. or a symlink to one, is still present on the agent's machine, older clients may keep authenticating through it. They then never report the missing or rejected identity. Remove such fallbacks once every client uses its own key, and confirm - with `caboodle doctor`, which names the credential source in use. + with `tambo doctor`, which names the credential source in use. ### Worked example: enrolling an agent on a second host diff --git a/docs/book/src/architecture.md b/docs/book/src/architecture.md index 5c14941..42a0e45 100644 --- a/docs/book/src/architecture.md +++ b/docs/book/src/architecture.md @@ -1,10 +1,10 @@ # Architecture -Caboodle's engine is a **plan → apply → verify** loop with a state file +Tambo's engine is a **plan → apply → verify** loop with a state file recording what is installed *and last proven working*. Idempotent and resumable: re-running converges, and a failed step names itself. -The wizard is an interview, not a form over install switches. `caboodle init +The wizard is an interview, not a form over install switches. `tambo init --guided` first elicits intended use, themed crew-member identities/domains/roles, and the questions the installed graph must answer. Those answers become typed plan data and executable reader-path contracts. The engine therefore builds diff --git a/docs/book/src/compatibility.md b/docs/book/src/compatibility.md new file mode 100644 index 0000000..8262416 --- /dev/null +++ b/docs/book/src/compatibility.md @@ -0,0 +1,12 @@ +# Compatibility + +The `caboodle` command remains an alias for `tambo`. Existing +`caboodle-plan.toml`, `caboodle-intent.toml`, `.caboodle` state, `CABOODLE_*` +environment variables, Rust crate imports and published vocabulary IRIs remain +valid. These are compatibility contracts; renaming the product does not move +installed state or rewrite stored graph identities. + +The release installer prefers a `tambo-` archive. Only an HTTP 404 selects a +legacy `caboodle-` archive; checksum and transport failures never select a +fallback. Existing package-manager identifiers remain valid until their own +managed migration. diff --git a/docs/book/src/configuration.md b/docs/book/src/configuration.md index 69b9e46..586f775 100644 --- a/docs/book/src/configuration.md +++ b/docs/book/src/configuration.md @@ -1,6 +1,6 @@ # Configuration reference -Caboodle writes a reviewable TOML plan and a JSON progress file. Use the CLI to +Tambo writes a reviewable TOML plan and a JSON progress file. Use the CLI to create the plan; keep credentials in the environment, never in intent text. The plan's schema rejects unknown keys. @@ -94,8 +94,8 @@ installing a random token does not grant access. ```sh install -d -m 700 "$HOME/.config/quipu" && install -m 400 /secure/issued-token "$HOME/.config/quipu/token" -caboodle provision-quipu-token --from /secure/issued-token --server https://your-quipu-server.example -caboodle doctor +tambo provision-quipu-token --from /secure/issued-token --server https://your-quipu-server.example +tambo doctor ``` `provision-quipu-token` proves the issued file against the authenticated server @@ -118,7 +118,7 @@ accepted authorization, missing token, rejected token, read-only server, or an unknown write path (including no HTTP response). This is authorization evidence, not a successful storage commit. Doctor also requires a nonempty canonical file with mode `0400` and parent mode `0700`, and an authenticated `/shapes` read -returning 2xx. `caboodle verify` runs that live credential proof before recording +returning 2xx. `tambo verify` runs that live credential proof before recording Quipu as verified, then exercises installed tools in isolated scratch stores. Set `QUIPU_SERVER` to the intended server; without it, verify uses the plan's Quipu MCP URL or `http://localhost:3030`. Missing, rejected, or unproven @@ -128,7 +128,7 @@ credentials leave verification incomplete. Public health is not an auth check. A Claude Code MCP entry for Quipu that holds only a URL sends no bearer. Reads work and every MCP write is refused with `missing_or_invalid_bearer_token`. -`caboodle plan --quipu-mcp-url ` adds a reviewable `[quipu_mcp]` step. +`tambo plan --quipu-mcp-url ` adds a reviewable `[quipu_mcp]` step. That step changes your Claude Code configuration, so it is opt-in. `apply` installs `~/.local/bin/quipu-mcp-headers` (mode 0755). Claude Code runs @@ -188,13 +188,13 @@ agents pick up changed hooks on their next launch. ## Externally owned Quipu Set `external_quipu = true` in a reviewed plan when another mechanism owns -Quipu installation. The default is false. Caboodle resolves `quipu` and +Quipu installation. The default is false. Tambo resolves `quipu` and `quipu-server` from PATH, reads both versions, and records their canonical paths with the identity. It never installs, converges, or release-updates these files. Missing executables and incompatible versions fail; external ownership does not waive the isolated write/read round trip or hook registration checks. Other tools retain their managed-install and shadow checks. Build flavors are incompatible -with external ownership because Caboodle does not build that installation. +with external ownership because Tambo does not build that installation. Verify uses the resolved client for both the entity and vocabulary round trips. An external source build has to support those contracts; a version banner alone diff --git a/docs/book/src/conventions.md b/docs/book/src/conventions.md index 5e4046b..d9412be 100644 --- a/docs/book/src/conventions.md +++ b/docs/book/src/conventions.md @@ -6,7 +6,7 @@ caboodle-ready by exposing the pattern the repos already follow: - conventional CLI verbs: ` selftest`, ` health`, ` init` - and/or `just` recipes: `just install`, `just verify` -Caboodle discovers and drives these directly. Metrics contracts live as +Tambo discovers and drives these directly. Metrics contracts live as camayoc catalogue entries, not per-repo config. The readiness contract every corpus repo adopts: diff --git a/docs/book/src/corpus.md b/docs/book/src/corpus.md index 86b5bab..6ebddc5 100644 --- a/docs/book/src/corpus.md +++ b/docs/book/src/corpus.md @@ -19,21 +19,21 @@ Every profile includes Quipu and can stage git-native knowledge shares into an explicit local database: ```console -caboodle plan --profile retrieval \ +tambo plan --profile retrieval \ --share ./team-knowledge \ --share ./project-knowledge \ --quipu-db ./knowledge.db -caboodle apply --skip-install +tambo apply --skip-install ``` A share directory is the canonical output of `quipu share`: `manifest.json`, -`export.nt`, and `shapes.ttl`. Caboodle does not parse, rewrite, unpack, or wrap +`export.nt`, and `shapes.ttl`. Tambo does not parse, rewrite, unpack, or wrap those files. It invokes `quipu import --db `, so Quipu owns payload-hash verification, identity candidates, local SHACL validation, and the staging/quarantine graph. The returned `share_id`, graph, outcome, promotion eligibility, and blockers are retained under `shares` in `.caboodle/state.json`. A quarantined import is -a successful safe consumption outcome that still needs review; Caboodle never +a successful safe consumption outcome that still needs review; Tambo never runs `quipu import promote`. Promotion into ROOT remains a separate explicit operator decision using the share ID. diff --git a/docs/book/src/crew-contracts.md b/docs/book/src/crew-contracts.md index 1fe04ff..0daf5f8 100644 --- a/docs/book/src/crew-contracts.md +++ b/docs/book/src/crew-contracts.md @@ -1,19 +1,19 @@ # Crew capability contracts -CABOODLE installs the selected crew runtime, but it does not take ownership of +Tambo installs the selected crew runtime, but it does not take ownership of the runtime's security or admission policy. Shantytown is a host executable, so its adapter reads back the installed `st` version. Creel's decisive facts exist inside the browser; verification therefore consumes two browser-produced JSON documents: ```console -caboodle verify \ +tambo verify \ --creel-doctor creel-doctor.json \ --creel-admission creel-admission.json ``` Both schemas are version 1 and reject unknown fields. A new producer field -cannot silently become evidence an older CABOODLE claims to understand. +cannot silently become evidence an older Tambo claims to understand. ## Doctor @@ -40,7 +40,7 @@ be `pass`. The Creel doctor workstream owns which checks it emits, including secure context, persistence, popup/bridge permissions, provider credential presence, Quipu WASM, state-repository health, service-worker freshness, and leases. -CABOODLE validates the contract; it does not reproduce those probes. +Tambo validates the contract; it does not reproduce those probes. ## Admission @@ -56,11 +56,11 @@ CABOODLE validates the contract; it does not reproduce those probes. } ``` -The verdict is `admit`, `refuse`, or `unknown`. CABOODLE proceeds only when all +The verdict is `admit`, `refuse`, or `unknown`. Tambo proceeds only when all three signals are measured passes and the verdict is `admit`. It never prints credentials, accepts an unredacted reason, rounds unknown to zero, or converts a policy refusal into an installer warning. Until Creel publishes both producer interfaces, its bundle can be applied but cannot be marked verified. That refusal is the intended boundary, not a -CABOODLE installation failure to bypass. +Tambo installation failure to bypass. diff --git a/docs/book/src/docs-map.md b/docs/book/src/docs-map.md index 3cb9d2d..f1ca16d 100644 --- a/docs/book/src/docs-map.md +++ b/docs/book/src/docs-map.md @@ -2,11 +2,11 @@ ## Start here -- [Introduction](introduction.md): what Caboodle does and when to use it. +- [Introduction](introduction.md): what Tambo does and when to use it. - [Getting started](getting-started.md): the smallest install, interview and recovery. - [Installing and removing](installing.md): platforms, source builds, files and updates. - [Using it with agents](agents.md): standalone MCP clients and managed crews. -- [Using Caboodle](using.md): the guided and non-interactive workflows. +- [Using Tambo](using.md): the guided and non-interactive workflows. - [Reference](reference.md): every command and the glossary. - [Configuration](configuration.md): plan, intent, environment and state. @@ -28,7 +28,7 @@ These links point to the source repository so they work on both GitHub and the published book. Every loose document under `docs/` is listed here. -- [Stack README standard](https://github.com/scbrown/caboodle/blob/main/docs/stack/README-STANDARD.md): section order, theme, shared stack block and review checklist. -- [README template](https://github.com/scbrown/caboodle/blob/main/docs/stack/README-TEMPLATE.md): fill-in template implementing the standard. -- [Design vision](https://github.com/scbrown/caboodle/blob/main/docs/design/vision.md): **Historical** design proposal; use the reference for shipped commands. -- [txtai gap analysis](https://github.com/scbrown/caboodle/blob/main/docs/design/txtai-gap-analysis.md): **Historical** comparison and design opportunities, not a current capability guarantee. +- [Stack README standard](https://github.com/scbrown/tambo/blob/main/docs/stack/README-STANDARD.md): section order, theme, shared stack block and review checklist. +- [README template](https://github.com/scbrown/tambo/blob/main/docs/stack/README-TEMPLATE.md): fill-in template implementing the standard. +- [Design vision](https://github.com/scbrown/tambo/blob/main/docs/design/vision.md): **Historical** design proposal; use the reference for shipped commands. +- [txtai gap analysis](https://github.com/scbrown/tambo/blob/main/docs/design/txtai-gap-analysis.md): **Historical** comparison and design opportunities, not a current capability guarantee. diff --git a/docs/book/src/emission.md b/docs/book/src/emission.md index 965d0dc..73275c1 100644 --- a/docs/book/src/emission.md +++ b/docs/book/src/emission.md @@ -1,6 +1,6 @@ # Emitting to quipu -Caboodle is itself a quipu emitter, twice over: +Tambo is itself a quipu emitter, twice over: **The box emits.** Every applied and functionally verified tool transition is written as a redacted episode under `.caboodle/episodes/`. The filename is the @@ -10,19 +10,19 @@ can safely receive Quipu's `unchanged` outcome and then move the file to `sent/`. **Beads emits.** Bead lifecycle — created, closed, commented — flows to quipu -as episodes through the same discipline. `caboodle queue-br export.jsonl` +as episodes through the same discipline. `tambo queue-br export.jsonl` projects each issue row into created, comment, and (when closed) closure events; re-reading a snapshot is idempotent. Because `br` is upstream, this integration -lives in CABOODLE and requires no fork patch. +lives in Tambo and requires no fork patch. Flush only after reviewing the queue. The endpoint must be HTTPS (or explicit localhost HTTP), and the bearer comes only from `QUIPU_AUTH_TOKEN`; it is never -written into the plan, queue, or command line. CABOODLE first runs a SPARQL +written into the plan, queue, or command line. Tambo first runs a SPARQL control whose marker must return, then posts files byte-for-byte: ```bash -caboodle queue-br br-export.jsonl -QUIPU_AUTH_TOKEN=... caboodle flush-episodes --endpoint https://graph.example +tambo queue-br br-export.jsonl +QUIPU_AUTH_TOKEN=... tambo flush-episodes --endpoint https://graph.example ``` Created, updated, and unchanged are successful delivery outcomes. A transport diff --git a/docs/book/src/getting-started.md b/docs/book/src/getting-started.md index ff92b16..f5eda6f 100644 --- a/docs/book/src/getting-started.md +++ b/docs/book/src/getting-started.md @@ -24,8 +24,8 @@ credential. See [configuration](configuration.md). ## Guided interview -Use `caboodle init --guided` instead of the first two commands to describe -your own use interactively. Run `caboodle doctor` before installing to see +Use `tambo init --guided` instead of the first two commands to describe +your own use interactively. Run `tambo doctor` before installing to see platform or prerequisite blockers. | prompt | what to type | @@ -33,30 +33,30 @@ platform or prerequisite blockers. | `profile` | `retrieval` for a first install. See [profiles](profiles.md). | | `what should this installation help you do?` | One plain sentence. It is recorded in the plan. | | `how many themed crew members` | `0` unless you run a named team of agents. | -| `how many ontology questions` | Press **enter** on a first install: caboodle uses a built-in self-test question that checks the store answers a query, and asks nothing else. Or type a number to write your own; each question is a check the finished graph must pass. | +| `how many ontology questions` | Press **enter** on a first install: Tambo uses a built-in self-test question that checks the store answers a query, and asks nothing else. Or type a number to write your own; each question is a check the finished graph must pass. | | the question's five fields | Only if you typed a number. A question in words, its answer shape, the seed fact that answers it, a SPARQL `SELECT` or `ASK` query, and a word the answer must contain. | ## Recovery -- **`caboodle doctor`** first. It names the blocker and the fix. -- **` install step ... no checksummed CABOODLE release for `**: +- **`tambo doctor`** first. It names the blocker and the fix. +- **` install step ... no checksummed Tambo release for `**: build that tool with the `cargo install` command doctor prints, then rerun - `caboodle install`. Caboodle adopts an installed tool that passes its checks. + `tambo install`. Tambo adopts an installed tool that passes its checks. - **` functional verification`**: the tool installed but its round trip failed. The error includes the tool's own output. Fix it and rerun - `caboodle install`; tools that already passed are not redone. -- **macOS with Bobbin before v0.18.0 (the pin CABOODLE carried before this release was v0.16.2): bobbin panics with `Failed to load ONNX Runtime dylib`**: bobbin + `tambo install`; tools that already passed are not redone. +- **macOS with Bobbin before v0.18.0 (the pin Tambo carried before this release was v0.16.2): bobbin panics with `Failed to load ONNX Runtime dylib`**: bobbin looks for its bundled runtime next to the `~/.cargo/bin/bobbin` symlink rather than next to the real binary. For that release, run `export ORT_DYLIB_PATH="$HOME/.local/share/caboodle/bobbin/v0.16.2/lib/libonnxruntime.dylib"` - (add it to your shell profile) and rerun `caboodle install`. + (add it to your shell profile) and rerun `tambo install`. - **A new build still behaves like the old one**: another copy earlier on PATH wins. Doctor lists every copy in the order your shell finds them, and - `caboodle verify` fails with `SHADOWED` when the copy PATH runs reports a - different version from the one caboodle installed. Remove the stale copy or + `tambo verify` fails with `SHADOWED` when the copy PATH runs reports a + different version from the one Tambo installed. Remove the stale copy or move `~/.cargo/bin` earlier on PATH. - **`no plan at caboodle-plan.toml`**: you are in a different directory from the - one where you ran `caboodle init --guided`. + one where you ran `tambo init --guided`. Do not delete `.caboodle/` to recover. It holds your interview answers and the last proven state. diff --git a/docs/book/src/images/stack-loop.svg b/docs/book/src/images/stack-loop.svg index 34faa63..2aef532 100644 --- a/docs/book/src/images/stack-loop.svg +++ b/docs/book/src/images/stack-loop.svg @@ -1,6 +1,6 @@ The quipu stack: knowledge returns to the next agent turn - Agents send activity to Camayoc. Camayoc sends tagged, quarantined episodes to Quipu. Quipu sends knowledge to Bobbin; Bobbin feeds the next agent turn. Yupana supplies committed structure to Quipu and code context to Bobbin. Caboodle installs, proves and observes the four tools. + Agents send activity to Camayoc. Camayoc sends tagged, quarantined episodes to Quipu. Quipu sends knowledge to Bobbin; Bobbin feeds the next agent turn. Yupana supplies committed structure to Quipu and code context to Bobbin. Tambo installs, proves and observes the four tools. @@ -30,7 +30,7 @@ quipu bobbin yupana - caboodle + tambo Claude Code · Codex diff --git a/docs/book/src/installation-reference.md b/docs/book/src/installation-reference.md index 4b859cb..c3e23bc 100644 --- a/docs/book/src/installation-reference.md +++ b/docs/book/src/installation-reference.md @@ -9,13 +9,13 @@ Checksummed releases: Linux x86_64, macOS arm64 and macOS x86_64. The installer verifies SHA256 before placing the binary in `~/.cargo/bin`. ```bash -curl -fsSL https://raw.githubusercontent.com/scbrown/caboodle/main/scripts/install.sh | bash +curl -fsSL https://raw.githubusercontent.com/scbrown/tambo/main/scripts/install.sh | bash ``` To pin a release, pass the version to the receiving shell: ```bash -curl -fsSL https://raw.githubusercontent.com/scbrown/caboodle/main/scripts/install.sh | CABOODLE_VERSION=vX.Y.Z bash +curl -fsSL https://raw.githubusercontent.com/scbrown/tambo/main/scripts/install.sh | CABOODLE_VERSION=vX.Y.Z bash ``` Add the install directory to this shell's PATH: @@ -37,19 +37,19 @@ not read that file, which is why the agent step below registers servers by absolute path. Or build the latest release from source with Rust (`cargo install --git -https://github.com/scbrown/caboodle --tag vX.Y.Z --locked`). Either way, -`caboodle --version` prints `caboodle X.Y.Z` for the release you installed. +https://github.com/scbrown/tambo --tag vX.Y.Z --locked`). Either way, +`tambo --version` prints `tambo X.Y.Z` for the release you installed. ### macOS with Homebrew ```bash brew install scbrown/tap/caboodle -caboodle --version +tambo --version ``` -Homebrew owns the installed command; Caboodle still composes and verifies the +Homebrew owns the installed command; Tambo still composes and verifies the stack. Update it with `brew upgrade scbrown/tap/caboodle`. To hold the installed -version, use `brew pin caboodle`; resume updates with `brew unpin caboodle`. +version, use `brew pin Tambo`; resume updates with `brew unpin Tambo`. The [tap channel guide](https://github.com/scbrown/homebrew-tap#caboodle-preview-channel) explains the opt-in nightly channel and switching back to stable. @@ -102,19 +102,19 @@ remains remote until you remove that configuration deliberately. To customize the tools and intended-use contract instead, use `tambo init --guided` or `tambo plan --profile retrieval --intent caboodle-intent.toml`, review the resulting plan, then run `tambo install`. See the -[walkthrough](https://scbrown.github.io/caboodle/getting-started.html). +[walkthrough](https://scbrown.github.io/tambo/getting-started.html). ## On your own code | I want to… | Command | |---|---| -| Choose tools and describe my own use | `caboodle init --guided` | -| Find install blockers before changing anything | `caboodle doctor` | -| Install and prove the reviewed selection | `caboodle install` | -| Recheck the selected tools | `caboodle verify` | -| Compare against this build's reviewed versions | `caboodle check-updates` | +| Choose tools and describe my own use | `tambo init --guided` | +| Find install blockers before changing anything | `tambo doctor` | +| Install and prove the reviewed selection | `tambo install` | +| Recheck the selected tools | `tambo verify` | +| Compare against this build's reviewed versions | `tambo check-updates` | -[Full command and configuration reference](https://scbrown.github.io/caboodle/reference.html). +[Full command and configuration reference](https://scbrown.github.io/tambo/reference.html). ## Wire it into your agent @@ -146,12 +146,12 @@ serve` exits with `Bobbin not initialized` and Claude Code reports the server as failed to connect. MCP (Model Context Protocol) lets your agent call the installed server. -[Agent setup](https://scbrown.github.io/caboodle/agents.html) covers indexing, Yupana, other clients -and managed crew registration through `caboodle project-settings`. +[Agent setup](https://scbrown.github.io/tambo/agents.html) covers indexing, Yupana, other clients +and managed crew registration through `tambo project-settings`. ## Before you start -| Platform | Caboodle | Quipu | Yupana | +| Platform | Tambo | Quipu | Yupana | |---|---|---|---| | Linux x86_64 | Release | Release | Release | | macOS arm64 / x86_64 | Release | Release | Release | @@ -160,12 +160,12 @@ and managed crew registration through `caboodle project-settings`. Have `curl`, `tar`, `git`, `bash`, `python3` and `sha256sum` on PATH (`brew install coreutils` supplies `sha256sum` on macOS). The `everything` profile also needs Go. No account or remote server is needed. -[Installation details](https://scbrown.github.io/caboodle/installing.html) cover source builds, -installed files and removal; `caboodle doctor` names missing prerequisites. +[Installation details](https://scbrown.github.io/tambo/installing.html) cover source builds, +installed files and removal; `tambo doctor` names missing prerequisites. ## What's next -- [Read the book](https://scbrown.github.io/caboodle/introduction.html) -- [Find a topic in the docs map](https://scbrown.github.io/caboodle/docs-map.html) -- [Choose your profile](https://scbrown.github.io/caboodle/profiles.html) +- [Read the book](https://scbrown.github.io/tambo/introduction.html) +- [Find a topic in the docs map](https://scbrown.github.io/tambo/docs-map.html) +- [Choose your profile](https://scbrown.github.io/tambo/profiles.html) diff --git a/docs/book/src/installing.md b/docs/book/src/installing.md index 4a271e7..3844e72 100644 --- a/docs/book/src/installing.md +++ b/docs/book/src/installing.md @@ -1,25 +1,13 @@ # Installing and removing Tambo -Tambo is the renamed Caboodle installer. For the transition release, both -`tambo` and `caboodle` are available. Existing `caboodle-plan.toml` and -`.caboodle` state paths remain compatible; no install-state move is required. -The canonical archive is `tambo-vVERSION-TARGET.tar.gz`; a compatibility archive -named `caboodle-vVERSION-TARGET.tar.gz` carries the same two commands for legacy -self-update clients. Both have filename-bound SHA-256 checksum files. - -The planned managed Linux and macOS cutover uses apt and Homebrew to update -both commands as a package after the first official Tambo release. The Homebrew -formula rename will migrate `caboodle` to `tambo`; the Linux transitional -`caboodle` package will depend on `tambo`. The checksummed release -installer remains the standalone fallback. A standalone self-update of a -dual-command installation verifies and updates both commands together, restoring -both prior files and state if either installed read-back fails. - -Caboodle publishes a release only when a `vVERSION` tag exactly matches the +Tambo installs and verifies the stack from checksummed release archives. See +[Compatibility](compatibility.md) for retained command and state contracts. + +Tambo publishes a release only when a `vVERSION` tag exactly matches the version in `Cargo.toml`. Each supported archive has a sibling `.sha256` file; the installer verifies that checksum before replacing the binary. -Caboodle's built-in HTTPS asset downloads make at most three attempts. Server +Tambo's built-in HTTPS asset downloads make at most three attempts. Server errors (HTTP 5xx) and transient resolution, connection, timeout, partial-transfer, send/receive or HTTP/2 stream errors are retried after one and then two seconds. Each attempt has a 10-second connection timeout and a 120-second transfer limit. @@ -27,7 +15,7 @@ Retry logs identify the URL, attempt, curl status, HTTP status and delay; recove logs name the successful attempt. Failed attempts use disposable files. HTTP 4xx (including missing assets), certificate and local file errors fail immediately. Checksum verification happens after downloading and is never -retried or bypassed. This policy covers downloads made by the Caboodle binary, +retried or bypassed. This policy covers downloads made by the Tambo binary, not the bootstrap shell installer above it or external package managers. ## Homebrew member updates @@ -52,35 +40,28 @@ embedded release pins; it does not refresh package metadata. Run the checksummed release installer in one line: ```bash -curl -fsSL https://raw.githubusercontent.com/scbrown/caboodle/main/scripts/install.sh | bash +curl -fsSL https://raw.githubusercontent.com/scbrown/tambo/main/scripts/install.sh | bash ``` Pin a release by setting the version on the receiving shell: ```bash -curl -fsSL https://raw.githubusercontent.com/scbrown/caboodle/main/scripts/install.sh | CABOODLE_VERSION=vX.Y.Z bash +curl -fsSL https://raw.githubusercontent.com/scbrown/tambo/main/scripts/install.sh | CABOODLE_VERSION=vX.Y.Z bash ``` The script still verifies the release archive's SHA256 checksum before replacing -the binary. Read the [installer source](https://github.com/scbrown/caboodle/blob/main/scripts/install.sh) -when inspecting the bootstrap. After installation, `caboodle --version` reads +the binary. Read the [installer source](https://github.com/scbrown/tambo/blob/main/scripts/install.sh) +when inspecting the bootstrap. After installation, `tambo --version` reads back the installed release. -The compatibility repository URL remains the bootstrap default through the -rename. The installer prefers a `tambo-` archive with both commands. Only an -HTTP 404 selects the historical `caboodle-` archive, which may contain just -`caboodle`; pinned releases such as `v0.2.23` therefore remain installable. -Checksum, server and transport failures stop installation without trying an -alternative archive. - Supported release targets are Linux x86_64, macOS x86_64, and macOS arm64. The default destination is `${CARGO_HOME:-$HOME/.cargo}/bin/caboodle`; override it with `CABOODLE_INSTALL_DIR` when that directory is managed elsewhere. -`caboodle --version` prints the release version and the commit it was built -from, for example `caboodle 0.2.3 (1a2b3c4d5e6f)`. Two builds of one release -can then be told apart. The installer warns when a different `caboodle` comes -earlier on PATH than the one it just installed, and `caboodle doctor` warns when +`tambo --version` prints the release version and the commit it was built +from, for example `tambo 0.4.0 (1a2b3c4d5e6f)`. Two builds of one release +can then be told apart. The installer warns when a different `tambo` comes +earlier on PATH than the one it just installed, and `tambo doctor` warns when PATH runs a different build from the one you invoked. Remove the stale copy or reorder PATH. @@ -89,14 +70,14 @@ reorder PATH. A Rust toolchain can install the reviewed revision directly: ```bash -cargo install --git https://github.com/scbrown/caboodle \ +cargo install --git https://github.com/scbrown/tambo \ --rev --locked -caboodle --version +tambo --version ``` ## Preflight -`caboodle doctor` reports what would stop an install on this host and changes +`tambo doctor` reports what would stop an install on this host and changes nothing. With a plan in the current directory it checks that plan; without one it checks every tool in the `everything` profile. It exits nonzero when any line is a `FAIL`: @@ -121,10 +102,10 @@ The interview writes a plan and changes nothing else. Read the complete file before applying it: ```bash -caboodle init --guided +tambo init --guided less caboodle-plan.toml -caboodle install -caboodle verify-questions +tambo install +tambo verify-questions ``` If input or an install is interrupted, rerun the same command. Interview @@ -150,7 +131,7 @@ re-hashes the artifacts on disk). ## Registering MCP servers -Caboodle owns binary installation, version convergence, and functional proof. +Tambo owns binary installation, version convergence, and functional proof. Shantytown owns harness registration: it projects the MCP/skill manifest from Quipu into the workspaces named by the rig's crew cards. Installing binaries alone does not register servers. @@ -158,15 +139,15 @@ alone does not register servers. After a green install, on a configured Shantytown rig: ```bash -caboodle project-settings --root /path/to/.shanty +tambo project-settings --root /path/to/.shanty # Optional: select one crew member or read identities directly from Quipu. -caboodle project-settings --root /path/to/.shanty --agent ada --registry quipu +tambo project-settings --root /path/to/.shanty --agent ada --registry quipu ``` This delegates to `st --root /path/to/.shanty ops provision --json`. It reads the rig's existing crew, even when the installation plan has no crew profile, and requires the configured Quipu tooling manifest (`SHANTY_TOOLING_MANIFEST`). -Server names, transports, and secret references come from that manifest; Caboodle +Server names, transports, and secret references come from that manifest; Tambo does not maintain another server list. A rig whose manifest names yupana, bobbin, forgejo, and homelab registers all four. A missing crew reports "no crew on this rig yet - run st fleet init / st agent new first". Missing @@ -191,7 +172,7 @@ claude mcp list ``` Homelab MCP exposes the `quipu_*` tools; it is a separately operated proxy, not -installed by Caboodle. Use your deployment's authentication procedure without +installed by Tambo. Use your deployment's authentication procedure without putting credentials in the plan. Bobbin's knowledge tools are not a replacement for Homelab's Quipu tools. HTTP endpoints above are placeholders, not public services. For Codex, use the rig adapter to emit its harness-specific settings. @@ -206,14 +187,14 @@ before the repo is available, which is why the file exists to be pasted from rather than executed. It bootstraps quipu (checksummed prebuilt `quipu` and `quipu-server` release -binaries), caboodle itself (prebuilt release binary via `scripts/install.sh`), +binaries), Tambo itself (prebuilt release binary via `scripts/install.sh`), the shared tooling the stack's quality gates need (`just`, `bd`, `pre-commit`, `mdbook`, `mdbook-mermaid`, `cffi`), and stages the stack knowledge packs into `~/.caboodle/packs/`, verified with `quipu pack --verify` — a pack that fails verification is deleted rather than trusted. It deliberately does **not** build the rest of the corpus: -that is caboodle's own job, and a session that needs the full stack runs -`caboodle install` against a reviewed plan so every tool is proved rather +that is Tambo's own job, and a session that needs the full stack runs +`tambo install` against a reviewed plan so every tool is proved rather than assumed. Set `CABOODLE_ALLOW_SOURCE_FALLBACK=1` only when the Quipu release artifact is @@ -227,7 +208,7 @@ conflicting `qp` files in the destination or on PATH cause refusal. Verification checks the link, executable identity and matching version output without creating files. `--skip-install` requires the alias to be present already. -An externally owned Quipu must provide its own command alias; Caboodle verifies +An externally owned Quipu must provide its own command alias; Tambo verifies it but does not create it. A paired release update retains the alias across a CLI replacement or rollback because the link follows the canonical `quipu` path. @@ -316,23 +297,23 @@ Bobbin's `.bbpack` index remains a separate binary release artifact. ## Uninstall -Remove only the Caboodle binary and optional local Caboodle state. Installed +Remove only the Tambo binary and optional local Tambo state. Installed corpus tools are intentionally left in place because they may be shared with other workflows: ```bash rm "${CARGO_HOME:-$HOME/.cargo}/bin/caboodle" -# Optional, from the directory where Caboodle was run: +# Optional, from the directory where Tambo was run: rm -r .caboodle ``` ## Reviewed-pin drift -`caboodle check-updates` proposes an update only when the installed version is +`tambo check-updates` proposes an update only when the installed version is older than the reviewed pin. A newer version is reported as ahead of the pin; an unparseable or same-version identity mismatch is reported as version drift. These reports remain nonzero because the installation differs from the review. -`caboodle update` refuses a reviewed-pin downgrade before replacing the tool. +`tambo update` refuses a reviewed-pin downgrade before replacing the tool. There is no `--allow-downgrade` escape: a deliberate rollback requires a separately reviewed installation, rather than a normal stack update. @@ -361,8 +342,8 @@ os.link(binary, backup, follow_symlinks=False) # fails if backup already exists binary.unlink() print(f"Saved {backup}; rerun apply with your existing plan and state") PYTHON -caboodle apply --plan caboodle-plan.toml --state .caboodle/state.json -caboodle verify --plan caboodle-plan.toml --state .caboodle/state.json +tambo apply --plan caboodle-plan.toml --state .caboodle/state.json +tambo verify --plan caboodle-plan.toml --state .caboodle/state.json ``` Keep `bobbin.before-tambo` until verification succeeds. If either command fails, @@ -395,13 +376,13 @@ procedure instead of the regular-file steps above. ## Opt-in published binary updates After the initial install and plan review, track published stable releases for a -selected binary without waiting for this Caboodle build's reviewed pins to change: +selected binary without waiting for this Tambo build's reviewed pins to change: ```bash -caboodle update-release --tool bobbin --check -caboodle update-release --tool bobbin -caboodle update-release --tool yupana -caboodle update-release --tool desire-path +tambo update-release --tool bobbin --check +tambo update-release --tool bobbin +tambo update-release --tool yupana +tambo update-release --tool desire-path ``` This path currently supports Linux x86_64. The tool must already be installed on @@ -433,8 +414,8 @@ beside the state file to serialize release updates; backups are retained under bound total runtime and retain stdout/stderr. This command does not itself install a timer or claim that another host or a long-running process has updated. -`caboodle update-self` applies the same release, checksum, downgrade, backup and -interruption-recovery controls to Caboodle itself. Its post-install contract +`tambo update-self` applies the same release, checksum, downgrade, backup and +interruption-recovery controls to Tambo itself. Its post-install contract requires the new binary's version and `update-release --help` to answer correctly. Self-update supports Linux x86_64, macOS x86_64, and macOS arm64, selecting the matching published archive and its `.sha256` asset. Other platforms refuse before @@ -443,7 +424,7 @@ restoring archive metadata, so archive extended attributes are not installed. Event consumers can select an exact stable release with `update-self --tag v0.2.14`. To bind the download to evidence obtained before installation, also supply `--archive-sha256` and `--binary-sha256`. Both values must be lowercase SHA256 -digests; both flags require the exact tag and each other. CABOODLE compares the +digests; both flags require the exact tag and each other. Tambo compares the archive before extraction and the executable before running it or replacing the installed copy. A mismatch leaves the previous installer and state intact. @@ -472,7 +453,7 @@ never touches the server at `QUIPU_SERVER`. To set camayoc up against your real server, run the bundle's bootstrap yourself as a separate step: `QUIPU_SERVER= bash ~/.local/share/caboodle/camayoc//scripts/bootstrap.sh`. -To remove caboodle, delete `~/.cargo/bin/caboodle` and the `.caboodle/` +To remove Tambo, delete `~/.cargo/bin/caboodle` and the `.caboodle/` directory. Installed tools stay, because other workflows may use them. The [install guide](installing.md) covers release pins, source installs, and updates. @@ -481,12 +462,12 @@ installs, and updates. **Platforms.** Linux x86_64 needs no Rust toolchain: each tool comes from a checksummed release or source archive, and Go builds desire-path. On other -platforms, availability depends on the tool as shown below; `caboodle doctor` +platforms, availability depends on the tool as shown below; `tambo doctor` prints the exact source-build command where no reviewed release exists. | | Linux x86_64 | macOS arm64 | macOS x86_64 | Linux arm64 | |---|---|---|---|---| -| caboodle | release | release | release | build with `cargo install --git` | +| Tambo | release | release | release | build with `cargo install --git` | | quipu | release | release | release | release | | camayoc | source archive | source archive | source archive | source archive | | bobbin | release | release | release | release | @@ -511,7 +492,7 @@ successful `update-release --tool seeds`. It requires the same selected plan, state file, executable path and exact current/prior SHA256 values: ```bash -caboodle rollback-seeds --plan crew.toml --state state.json \ +tambo rollback-seeds --plan crew.toml --state state.json \ --current-sha256 --prior-sha256 ``` @@ -534,10 +515,10 @@ and deployment contract before using it on an installed tool. Maintainers can verify an embedded Rust release member before publishing a pin: ```bash -caboodle verify-member seeds +tambo verify-member seeds ``` -This stages the archive pinned by that Caboodle checkout, checks its digest, +This stages the archive pinned by that Tambo checkout, checks its digest, identity and version, and runs the manifest's functional steps in temporary roots. It does not install a managed program. The `caboodle-verify` CI job runs this command against the PR checkout; Seeds pin automation requires that exact diff --git a/docs/book/src/introduction.md b/docs/book/src/introduction.md index d947998..496815c 100644 --- a/docs/book/src/introduction.md +++ b/docs/book/src/introduction.md @@ -6,7 +6,7 @@ against your rules, records where each fact came from, and answers what was true when. *Bitemporal* means keeping both when a fact was recorded and, when supplied, when it was true. -**Caboodle installs and configures this stack**, then proves the selected tools +**Tambo installs and configures this stack**, then proves the selected tools work. [Quipu](https://scbrown.github.io/quipu/) holds the knowledge. Camayoc prepares knowledge and vocabulary for it. Bobbin searches code and can include knowledge from Quipu; Yupana shows code impact and can read policies from Quipu. @@ -19,7 +19,7 @@ Quipu's write checks for the rules you want enforced. See [Quipu's configuration reference](https://scbrown.github.io/quipu/getting-started/configuration.html) for the settings and their defaults. -![The quipu stack loop: agents send activity to Camayoc, which sends tagged, quarantined episodes to Quipu. Quipu supplies knowledge to Bobbin, which feeds the next agent turn. Yupana enforces code policies and contributes committed structure to Quipu and code context to Bobbin. Desire Path turns hallucinations into feature requests. Seeds tracks work items in the Quipu knowledge base. Caboodle installs, proves, and observes the tools.](images/stack-loop.svg) +![The quipu stack loop: agents send activity to Camayoc, which sends tagged, quarantined episodes to Quipu. Quipu supplies knowledge to Bobbin, which feeds the next agent turn. Yupana enforces code policies and contributes committed structure to Quipu and code context to Bobbin. Desire Path turns hallucinations into feature requests. Seeds tracks work items in the Quipu knowledge base. Tambo installs, proves, and observes the tools.](images/stack-loop.svg) ## Three ways in @@ -45,10 +45,10 @@ with probes that must be refused. See the ### 3. Install the whole kit -[Install Caboodle](installing.md), then start its guided interview: +[Install Tambo](installing.md), then start its guided interview: ```bash -caboodle init --guided +tambo init --guided ``` Review the generated plan before applying it. The diff --git a/docs/book/src/pendant-autoload.md b/docs/book/src/pendant-autoload.md index e9fbb22..d79adca 100644 --- a/docs/book/src/pendant-autoload.md +++ b/docs/book/src/pendant-autoload.md @@ -34,7 +34,7 @@ Nothing installs or activates repository hooks without an opt-in. ## 1. Discovery and autoload -**Convention, not a manifest.** Caboodle does not parse per-repo manifest +**Convention, not a manifest.** Tambo does not parse per-repo manifest files ([convention over manifest](conventions.md)), and packs need none. A repository ships its packs at one conventional path: @@ -49,7 +49,7 @@ of step with the packs it describes. **Triggers.** A `post-checkout` and `post-merge` hook, installed by `tambo init --pack-hooks` in repositories the user opts in, runs the same -sync command (the `caboodle` compatibility executable supports it too): +sync command (the `tambo` compatibility executable supports it too): ```bash tambo packs sync --repo . --shapes-from /path/to/trusted-authority.pendant.tar.gz @@ -111,13 +111,13 @@ rollback and broader consumer installation remain explicit operator actions. A pack is data landing in the graph that agents query first, so loading is a trust decision. -**Exists today** (aegis-2eckx0): `caboodle packs trust` keeps these decisions in +**Exists today** (aegis-2eckx0): `tambo packs trust` keeps these decisions in `~/.config/caboodle/pack-trust.toml`, separate from the stack config. `owners` lists `host/owner` pairs whose packs autoload. `[[allow]]` admits one foreign archive and must name both `repo` and `pack_sha256`: an entry without the hash, an unknown key or a malformed value refuses the whole file, so every pack is refused until it is fixed. `[[allow_endpoint]]` admits one exact -`http(s)` endpoint with no credentials in its URL. `caboodle packs trust check +`http(s)` endpoint with no credentials in its URL. `tambo packs trust check --pack ` exits 0 to load, or 3 with a refusal naming the pack and the exact `allow` command. `packs sync` asks this question before composing and before accepting a cached replay. @@ -126,10 +126,10 @@ cached replay. pointer endpoint may join federation: exit 0 admits it, exit 3 refuses it. It reads the current trust file on every invocation and never changes it. An archive allow does not admit its endpoint; foreign endpoints need their own -exact repository/URL allow. Both `tambo` and `caboodle` expose this command. +exact repository/URL allow. Both `tambo` and `tambo` expose this command. - **Your own repositories load automatically**, meaning repositories whose - remote owner matches an allow-list in caboodle's configuration. + remote owner matches an allow-list in Tambo's configuration. - **A foreign pack needs an explicit allow**, recorded per repository and pack hash. A repository name appearing in a configuration file is not consent. - **Loading is not promotion.** An autoloaded pack stays in its named dataset, @@ -147,7 +147,7 @@ A monorepo ships **one parent share and one derived share per project**. (`parent_share` set) whose stored CONSTRUCT scope filters by path prefix, such as `packages/api/`. - Each derived pack's own manifest records its path scope, so - `caboodle packs sync` can reload only the projects whose paths changed in + `tambo packs sync` can reload only the projects whose paths changed in the checkout, the same idea as yupana's per-file keys, grouped by project. - **Cross-project edges survive a reload.** Entity IRIs do not depend on the commit, so an edge from one project to another still resolves after either @@ -227,7 +227,7 @@ endpoint = "https://quipu.example.org/sparql" ``` - **`kind = "endpoint"`**: a live, large or fast-moving graph, such as a - homelab operations graph. `caboodle packs sync` adds it to quipu's declared + homelab operations graph. `tambo packs sync` adds it to quipu's declared federation list, so `SERVICE` and federated fan-out reach it with no local copy. The trust rule of section 2 applies to the endpoint: declaring it in a foreign pack does not authorise it. @@ -252,7 +252,7 @@ this way. 1. **quipu:** the per-repository current pointer and snapshot retention, with retraction carry-forward across snapshots of one pack. -2. **caboodle:** the `.quipu/packs/` convention, `caboodle packs sync`, and +2. **caboodle:** the `.quipu/packs/` convention, `tambo packs sync`, and the opt-in git hooks. 3. **caboodle:** the trust allow-list for foreign packs and pointer endpoints. 4. **quipu and caboodle:** monorepo derived shares by path prefix, proven on diff --git a/docs/book/src/profiles.md b/docs/book/src/profiles.md index 76c2650..231fb0b 100644 --- a/docs/book/src/profiles.md +++ b/docs/book/src/profiles.md @@ -18,8 +18,8 @@ installs seeds (`sd`), the crew's work tracker, and shuttle, its workflow engine When a plan selects both seeds and Desire Path, `apply` also sets the Desire Path command alias `bd -> sd`, so an agent that types `bd` from habit reaches seeds. `verify` checks that the alias is there. If the host already has a `bd` -alias that points somewhere else, caboodle leaves it alone: `dp alias` would -silently replace it, so caboodle reads the existing aliases first. `apply` and +alias that points somewhere else, Tambo leaves it alone: `dp alias` would +silently replace it, so Tambo reads the existing aliases first. `apply` and `verify` then report the existing target as a deliberate local choice, not a failure. If `dp` is not on PATH, `apply` prints a note instead of failing. @@ -32,10 +32,10 @@ than a hidden installer input. The crew choice is emitted today: ```console -caboodle plan --profile crew --crew shantytown -caboodle plan --profile crew --crew creel -caboodle plan --profile crew --crew both -caboodle plan --profile crew --crew standalone +tambo plan --profile crew --crew shantytown +tambo plan --profile crew --crew creel +tambo plan --profile crew --crew both +tambo plan --profile crew --crew standalone ``` `both` is not fan-out. Its plan names Shantytown as `durable_owner`, Creel as @@ -46,7 +46,7 @@ The reviewed plan can export policy summaries for review. These summaries do not register MCP servers or override the rig crew and its Quipu tooling manifest: ```console -caboodle project-settings --policy-only +tambo project-settings --policy-only ``` In `both` mode this writes `shantytown.settings.json` and @@ -68,7 +68,7 @@ It refuses when either contract is absent, when a required doctor result is not `pass`, or when the governor does not return a measured `admit`. Camayoc currently distributes its bootstrap ontology, shapes, queries, and gate -proof as a repository bundle; CABOODLE pins and checksums that bundle until the +proof as a repository bundle; Tambo pins and checksums that bundle until the designed `core.pendant` artifact is published. ## Quipu install flavor @@ -82,7 +82,7 @@ deliberately excludes the `lancedb` cargo feature — so flavor can never pull in an unreviewed Quipu: ```console -caboodle plan --profile retrieval --quipu-flavor lancedb +tambo plan --profile retrieval --quipu-flavor lancedb ``` The flavor is proven, never assumed. `quipu --version` cannot say which @@ -118,7 +118,7 @@ url = "https://models.example/reviewed/tokenizer.json" sha256 = "…" ``` -`caboodle plan --embedding-model ` copies a spec of that shape into +`tambo plan --embedding-model ` copies a spec of that shape into the plan. During `apply`, each artifact is downloaded beside its destination and hashed **before** it may take the artifact's name; a checksum mismatch deletes the download and fails the named `embedding-model` step with a @@ -130,7 +130,7 @@ like every other step. **What verify proves today, stated plainly:** verification re-hashes every artifact on disk against the plan's pinned digest and goes red on drift or absence. It does **not** yet prove an embed-and-search round-trip — the -installed Quipu exposes no reviewed embeddings contract for caboodle to +installed Quipu exposes no reviewed embeddings contract for Tambo to drive, and wiring a proof that cannot fail would be exactly the banner the three-proofs rule forbids. When that contract lands, the round-trip (auto-embedded episode against an isolated store, absent-control first, diff --git a/docs/book/src/proofs.md b/docs/book/src/proofs.md index df21bd6..8030def 100644 --- a/docs/book/src/proofs.md +++ b/docs/book/src/proofs.md @@ -1,6 +1,6 @@ # Three proofs, not one -Three claims separate caboodle from an install script, and each is a proof: +Three claims separate Tambo from an install script, and each is a proof: 1. **Installed** — proven by version read-back, never by exit code. 2. **Working** — a per-tool functional round-trip: quipu accepts an episode and @@ -8,7 +8,7 @@ Three claims separate caboodle from an install script, and each is a proof: it. Every check pairs with a **negative control** — the selftest that corrupts a byte and goes red — so a pass is capable of failing. 3. **Observable** — Prometheus actually scrapes each tool's declared exporter; - caboodle generates the scrape config, a starter alert pack, and one + Tambo generates the scrape config, a starter alert pack, and one consolidated dashboard. This encodes the operating culture the stack was built under: verify by diff --git a/docs/book/src/reference.md b/docs/book/src/reference.md index 31bb1d8..54e794f 100644 --- a/docs/book/src/reference.md +++ b/docs/book/src/reference.md @@ -5,41 +5,41 @@ command surface, for reviewed updates, shared graphs, observability, and install records: ```bash -# Build caboodle from source instead of the release installer. -cargo install --git https://github.com/scbrown/caboodle --locked +# Build Tambo from source instead of the release installer. +cargo install --git https://github.com/scbrown/tambo --locked # Report what would block an install here. Changes nothing; exits nonzero on a blocker. -caboodle doctor +tambo doctor # Answer the use-shaped interview. It asks who the themed crew members are and # which questions the finished graph must answer, then only writes a plan. -caboodle init --guided +tambo init --guided # Or supply the same intended-use contract non-interactively. -caboodle plan --profile retrieval --intent caboodle-intent.toml +tambo plan --profile retrieval --intent caboodle-intent.toml # Optionally add canonical Quipu share directories to the reviewed corpus. # The target database is explicit; apply stages imports but never promotes them. -caboodle plan --profile retrieval --share ./team-share --quipu-db ./knowledge.db +tambo plan --profile retrieval --share ./team-share --quipu-db ./knowledge.db # Converge the reviewed plan, then prove each tool with a round trip. -caboodle apply -caboodle verify -caboodle verify-questions +tambo apply +tambo verify +tambo verify-questions # Or run both phases together after review. -caboodle install +tambo install -# Ask whether the running stack matches this Caboodle build's reviewed pins. +# Ask whether the running stack matches this Tambo build's reviewed pins. # The command exits nonzero when anything is missing, unreadable, or drifted. -caboodle check-updates +tambo check-updates # Converge only drifted tools, read every version back, and functionally verify # each changed tool before recording it as current. -caboodle update +tambo update # A full tool + crew plan is explicit and reviewable. -caboodle plan --profile everything --crew both +tambo plan --profile everything --crew both ``` `apply` installs a missing released tool and reads its version back; Bobbin comes @@ -53,7 +53,7 @@ scratch quipu server (see verified result. `check-updates` compares the running identities with the release versions and -source revisions pinned in the selected plan's Caboodle build. It does not use +source revisions pinned in the selected plan's Tambo build. It does not use an unreviewed “latest” endpoint. `update` is the mutation half: it installs only drifted selections through their existing checksummed/source-pinned adapters, requires version read-back to match the reviewed identity, runs the adapter's @@ -61,14 +61,14 @@ functional proof, and only then records an `updated` transition. A second run is current and performs no installation. This keeps release selection in review while making deployed-versus-released drift executable rather than anecdotal. -If the interview loses input or its caller stops, rerun `caboodle init --guided`: +If the interview loses input or its caller stops, rerun `tambo init --guided`: accepted answers resume from `.caboodle/interview.toml`. The session disappears only after the complete plan has been written successfully. The interview works backward from expected use. Each crew member has a free-form theme, domain, and role rather than a closed role enum. Each anticipated ontology question records its expected answer shape, the seed facts needed to exercise it, -an executable `SELECT`/`ASK` query, and a result marker. `caboodle +an executable `SELECT`/`ASK` query, and a result marker. `tambo verify-questions` runs those reader-path checks after installation. Empty, duplicate, credential-bearing, or non-executable entries are refused before a plan is written. @@ -76,13 +76,13 @@ plan is written. Installable profiles today are `kg` (Quipu + Camayoc), `retrieval` (plus Bobbin), `code-intel` (plus Yupana), `everything` (plus Desire Path and, when selected with `--crew`, Shantytown/Creel), and `crew` (Shantytown, Creel, -both, or standalone). CABOODLE installs +both, or standalone). Tambo installs checksum-pinned Shantytown and Creel distributions. Creel verification remains browser-owned: it requires explicit machine-readable doctor and admission documents and refuses missing, unknown, unredacted, or non-admit evidence. See the [crew capability contracts](crew-contracts.md). -Until Camayoc publishes `core.pendant`, CABOODLE installs its +Until Camayoc publishes `core.pendant`, Tambo installs its checksum-pinned bootstrap distribution: ontology, shapes, queries, and the same fail-closed gate proof. Verification then proves a separate first ingest with an absent control, reader-path retrieval, and an idempotent replay. @@ -90,11 +90,11 @@ Use `--skip-install` when package installation belongs to another system; the version and functional checks still run. Yupana installs from its checksum-pinned v0.12.7 release and proves `callers` on -an isolated fixture repository. CABOODLE builds Desire Path from the revision its `v0.3.2` tag names (`1f457ec`), stamps +an isolated fixture repository. Tambo builds Desire Path from the revision its `v0.3.2` tag names (`1f457ec`), stamps that identity into `dp version`, and proves an isolated ingest/list round trip. Neither verification can write into the user's normal Yupana state or Desire Path DB. -`caboodle render-observability` converts the reviewed selection plus explicit +`tambo render-observability` converts the reviewed selection plus explicit generic targets into Prometheus scrape config, starter alerts, a dashboard, and versioned contracts. `validate-observability` fails closed on missing targets or uncovered metrics; rendering is review-only and never claims a live scrape. @@ -105,15 +105,15 @@ endpoint plus an environment-only token, proves a query marker first, and keeps the identical bytes pending on ambiguous delivery. Profiles can also consume one or more directories produced by `quipu share`. -Caboodle passes each directory unchanged to `quipu import`, records the returned +Tambo passes each directory unchanged to `quipu import`, records the returned share ID, staging graph, eligibility, and blockers in `.caboodle/state.json`, and leaves ROOT promotion to the explicit `quipu import promote` review step. Non-conforming or off-vocabulary shares remain quarantined and visible rather -than being reshaped into a Caboodle-specific bundle. +than being reshaped into a Tambo-specific bundle. ## Command and option index -Run `caboodle --help` for that command’s complete option syntax. +Run `tambo --help` for that command’s complete option syntax. The table covers the current source tree; published binaries may lag new commands. | Command | Purpose and options | @@ -159,7 +159,7 @@ environment variables and observability targets. ### Quipu paired release updates -`caboodle update-release --tool quipu --plan caboodle-plan.toml` selects the +`tambo update-release --tool quipu --plan caboodle-plan.toml` selects the exact version and per-target SHA256 in `release-pins/quipu.toml`, rather than implicitly trusting the latest release or its downloaded checksum. The publication must provide the expected archive and checksum exactly once; both diff --git a/docs/book/src/roadmap.md b/docs/book/src/roadmap.md index 0b6a02c..c97f4be 100644 --- a/docs/book/src/roadmap.md +++ b/docs/book/src/roadmap.md @@ -1,11 +1,11 @@ -# Roadmap +# Capabilities and boundaries -- **Phase 0** *(shipped)* — plan/apply/verify engine; Quipu + Bobbin adapters; - checksummed release installs; atomic state; clean-machine CI test. -- **Phase 1** *(shipped)* — LLM-guided interview; `skills/caboodle`; Camayoc - bootstrap and first-ingest proof; Shantytown/Creel crew adapters with - browser-owned capability contracts; public clean-machine retrieval proof. -- **Phase 2** *(shipped)* — metrics contracts, generated Prometheus config, starter alerts, - one dashboard; yupana + desire-path adapters; the quipu/beads emitters. -- **Phase 3** — `caboodle upgrade`; per-repo CI keeping conventional verbs - tested with releases; expanded crew routing after explicit handoff lands. +Tambo interviews the operator, writes a reviewable plan, applies selected +adapters, and verifies installed tools. It preserves resumable state and emits +redacted evidence through explicit graph operations. See [Using Tambo](using.md) +and [Reference](reference.md) for the supported commands. + +Pack imports stage data; they do not authorize promotion into ROOT. The +[pendant autoload proposal](pendant-autoload.md) describes a proposal rather than +an installed default. Runtime changes still require the applicable authority +and successful verification. diff --git a/docs/book/src/stack-standard.md b/docs/book/src/stack-standard.md index d78613f..8967c85 100644 --- a/docs/book/src/stack-standard.md +++ b/docs/book/src/stack-standard.md @@ -1,13 +1,13 @@ # The stack README standard -Every public repo in the stack (caboodle, quipu, camayoc, bobbin, yupana, +Every public repo in the stack (Tambo, quipu, camayoc, bobbin, yupana, desire-path) follows one README shape and one theme, so a reader who knows one can find their way around the others: try it first, then this book for depth. -- [The standard](https://github.com/scbrown/caboodle/blob/main/docs/stack/README-STANDARD.md): +- [The standard](https://github.com/scbrown/tambo/blob/main/docs/stack/README-STANDARD.md): section order, theme, the shared stack block, the rules, the mdBook skeleton, and the review checklist. -- [The README template](https://github.com/scbrown/caboodle/blob/main/docs/stack/README-TEMPLATE.md): +- [The README template](https://github.com/scbrown/tambo/blob/main/docs/stack/README-TEMPLATE.md): a fill-in-the-blanks README that already meets it. Status: draft, under review with the yupana pilot before the other repos adopt it. diff --git a/docs/book/src/stack.md b/docs/book/src/stack.md index a96c181..f1b787f 100644 --- a/docs/book/src/stack.md +++ b/docs/book/src/stack.md @@ -1,7 +1,7 @@ # The stack ```text - caboodle (interview → plan → apply → verify → observe) + Tambo (interview → plan → apply → verify → observe) │ installs, proves, and watches ↓ ▼ quipu · bobbin · camayoc · yupana · desire-path · seeds · shuttle · shantytown / creel @@ -10,7 +10,7 @@ prometheus (every tool's metrics, consolidated) ``` -Caboodle never re-implements a tool's job. It installs the tool and then makes +Tambo never re-implements a tool's job. It installs the tool and then makes the tool demonstrate its own job, through three proofs: 1. **Installed**: proven by reading the version back, never by an exit code. @@ -24,7 +24,7 @@ the tool demonstrate its own job, through three proofs: resolve an undeclared term. Every check first proves its marker is absent, so a pass is capable of failing. -3. **Observable**: caboodle generates Prometheus scrape config, starter alerts, +3. **Observable**: Tambo generates Prometheus scrape config, starter alerts, and one dashboard for the selected tools, for you to review and deploy. Install and verification outcomes are also queued as quipu episodes, so a fresh @@ -44,7 +44,7 @@ design is in the [book](introduction.md). | [creel](https://github.com/scbrown/creel) | parallel agent bursts, entirely in the browser | | [shanty](https://github.com/scbrown/shanty) | a terminal multiplexer wrapper that makes tmux feel like home | | [beads](https://github.com/Dicklesworthstone/beads_rust) | issue tracking as agent memory — `br`, SQLite + JSONL | -| [quechua](https://github.com/scbrown/quechua) | the stack's shared vocabulary; caboodle pins a release by digest and loads it into Quipu ([catalog](https://scbrown.github.io/quechua/ns)) | +| [quechua](https://github.com/scbrown/quechua) | the stack's shared vocabulary; Tambo pins a release by digest and loads it into Quipu ([catalog](https://scbrown.github.io/quechua/ns)) | See [the corpus](corpus.md) for share import and [profiles](profiles.md) for which tools each selection installs. diff --git a/docs/book/src/using.md b/docs/book/src/using.md index 781bd92..ecdc937 100644 --- a/docs/book/src/using.md +++ b/docs/book/src/using.md @@ -1,27 +1,27 @@ -# Using caboodle +# Using Tambo -Caboodle ships a resumable interview and the plan/apply/verify engine with +Tambo ships a resumable interview and the plan/apply/verify engine with adapters for Quipu, Camayoc, Bobbin, Yupana, and Desire Path. ```bash -cargo install --git https://github.com/scbrown/caboodle --locked +cargo install --git https://github.com/scbrown/tambo --locked # Guided: use, crew themes, and anticipated graph questions are checkpointed. -caboodle init --guided +tambo init --guided # Read-only preflight: every blocker on this host, before anything installs. -caboodle doctor +tambo doctor # Non-interactive: read the same schema from caboodle-intent.toml. -caboodle plan --profile retrieval --intent caboodle-intent.toml +tambo plan --profile retrieval --intent caboodle-intent.toml # Converge the reviewed plan, then prove both tools with isolated round trips. -caboodle apply -caboodle verify -caboodle verify-questions +tambo apply +tambo verify +tambo verify-questions # Or run both phases together after review. -caboodle install +tambo install ``` `apply` installs a missing released tool and reads its version back — a @@ -30,8 +30,8 @@ isolated stores: it proves a marker absent, writes it, and requires the reader path to return it. Progress is written atomically to `.caboodle/state.json`, so rerunning converges. -If input ends partway through an interview, Caboodle stops without a plan and -keeps accepted answers in `.caboodle/interview.toml`. Run `caboodle init +If input ends partway through an interview, Tambo stops without a plan and +keeps accepted answers in `.caboodle/interview.toml`. Run `tambo init --guided` again to resume at the next unanswered question. Invalid answers are rejected and never produce a plan. @@ -80,7 +80,7 @@ will actually use. Never put credentials in this file or the generated plan. ## Review observability before deployment -For every selected tool, CABOODLE emits a versioned contract. Quipu and Bobbin +For every selected tool, Tambo emits a versioned contract. Quipu and Bobbin currently declare `/metrics` and required metric families; tools without an exporter remain explicit contracts with an unavailable reason rather than being silently omitted. Supply generic Prometheus targets without URL schemes: @@ -95,8 +95,8 @@ Then render and inspect the artifacts. Rendering never claims the targets were scraped or deploys anything: ```bash -caboodle render-observability --targets caboodle-observability.toml -caboodle validate-observability +tambo render-observability --targets caboodle-observability.toml +tambo validate-observability less caboodle-observability/prometheus.yml less caboodle-observability/alerts.yml less caboodle-observability/dashboard.json diff --git a/docs/compatibility/legacy-name-contracts.json b/docs/compatibility/legacy-name-contracts.json new file mode 100644 index 0000000..424ea7f --- /dev/null +++ b/docs/compatibility/legacy-name-contracts.json @@ -0,0 +1,1571 @@ +{ + "files": { + ".beads/issues.jsonl": { + "lines": { + "043865104f7b90be9dd2d143d6b4e66de856b5d60016b8214dcbd951b383b5e8": 1, + "07a23d6fc33a36f9ca985d69fd8c1c48cf1c4a96b00ce71f6c92a37f518e49fb": 1, + "1ba63ba063199a98df9f8efb38d32afc8ef84560f7811132092a15a8ccdd6e62": 1, + "86bb0d7330218127b3bb5f0ee30160b1b3a24c31c39ac8e88a84e21b1545644a": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + ".github/workflows/ci.yml": { + "lines": { + "084f1c4ec860098a08621fbfa8ec36596799b73fa691f5dff740765f70056150": 1, + "0fd19f0516d977308f379dce9f031a64813f34653e10510c59f4756c0acb86ec": 1, + "10ef5148c8f1506b9744f3d06bd9550af5bc1a7435923d6dcf784553f68f4bb4": 1, + "1a637d6fbbbe5aa3d11724c2468068a7a3199551f427fabdcb592c745d652cf7": 1, + "2581656270d2a750d4838baa08f3f9104a69151852002c069d2ff53220b55e83": 1, + "27deea77862f3026d9d686ea137ae98c76ad789cc8f80456ab71443ca212e984": 1, + "2c1ece3ebb4e333b3f177eda90c396862beeffb5b2c407eb1785dec6a8aaed9e": 1, + "2e90c094d45282ea8ecd814b3a4a1914ef451f5e2c59b7ca5afa75146f99cae1": 1, + "31d79e056fefef83d1b29575ae0d92b1e663fb916120572d69289155136b2df0": 1, + "35f9ed3a660a25195bce0763c8b0b802ea9edfa08822b2fcbe7a29f2883d097e": 5, + "3b76b8fc63fd343a2a0b806b2e6e8d68ad82d1e2abb5a70db8d918c8c2e23588": 1, + "3cb3f95298dfc4ca96121715d8c57d904feac18546658a4a5f5f8d9b685c4317": 1, + "3e37c6ff66e58be9ca1aad65b94399f475d6c8c272d3a569e7e2b3205eb2d067": 1, + "520561a74418f537120dfaaac93fafce776edb9f2426d3614442479707876e8e": 1, + "552f0529d2202859dcc7bac78359eddec2343f73b93d5d6a321f611b1d2f8b9f": 1, + "66dfe8dba8a0700b40a6bfc943311ba6aa362d47425f1e75fbf9615ba334d5e7": 1, + "67b0f8405abf974c1440a89adbf324ac4bbba21724903112c5f5cc260fe12b8c": 7, + "69e0e2f4527c47dcfdf5131713910ff4352d25f5b99b23b1b061922584a283d2": 1, + "7e51b9f8bfabbde68319d401b05f51b95e8e076eb3db1daa67edfe63c366acef": 1, + "815b2734ca9b305f8de72bd4717823a4d83883bcdb679c9a38c7f482811ef643": 1, + "84f18567ac8049bc666b66cd4d47e02e470df7881984fba83cc78cb6088ff902": 1, + "850036b59a6f1397df24bd79d1a6c46d019b689b2c790f8266652ac479e27236": 1, + "89b3cc66c2f306f077932afa8b06bf51c13aed82e392170e5d7e86ded6785872": 1, + "8b3fe9e3be06e88a61206e6d1a68b76f011e85bc1d27e2b668d9fcabf13b78fc": 1, + "9367c8e4b0d82a2e2ae5dbc7faddc8bec6133ff35180c38f30c4ed079f1ace06": 1, + "96621c7f8a73a4a6cd2de4cf0d09311f4bc75642d7692ffc920a7ac3ed311e3f": 1, + "9f8fcee97efc435f46aab35ac846f56c3e6c6b3ad7f82c6149c4c4ec5cbe1813": 1, + "a4a4dfbc5331d24c98cc7eddbc75ece77e6322586e407e2fb0cf7465230721fd": 1, + "a5ff38d664bd91c5a0b106f0481ae10384c78ee2cbe4b29563484702951190dd": 1, + "a6c20b2e26879c39b7a56475d0e83ae49362bc6cf2477291000a46f169d1914d": 1, + "a90ea8b0a70b481620ddd3c8a84d507021a58d80a625013be728ebae99ce8107": 1, + "ab88a720453613c901da904769aa2f9a9aeb145f0d653d930cdc327391e215f5": 1, + "afbd54d0866bc96da4ae31e03be317e0426643d333a4b8258897525d58e9bbc5": 2, + "b01623a8530368e4e1aa8c2a1e336334baebba955698cfe3683ff2538e451e34": 1, + "b3d7f9a8f284a89eda061258908e76a54f21da2123efbaad143e4d23c6a9130c": 1, + "b99e98e1d5afff0e2d11dd1bab619f2b3ee741f8fa2c811ecf001cfecfe51b8c": 1, + "bf19aea307754133ab44219b808f13f27579342f3c9fe56c7c3da2afd961906d": 2, + "d3ae7b8ea7ff8a2fa3ce1afeb90670af3a2c8a76109ed16046e5c11c1302e6f8": 1, + "d72fe5e847939f156cc1480ee8236d58038fdd550d21eb424d81cf770adff29e": 1, + "d828298cffb8fe06ecc1dee72cbe94d2c8d56d66a3554f3845deb1ff4840e862": 5, + "e959717c2b65b0e36e26ffde89ba883f23ab949a2d9cce029c55d7b5f0a7554c": 1, + "ea98f7ef81b10264c525a0b76d011d847ed0b8508310c51a5ee329c5521b6069": 1, + "f0421d8885a786b4fb476dffada19db9dcfd49fad93177a3d71988a849ec2f4c": 1, + "f15fd5d91696afb5de57157088489e5813b1c24b99631f664ccefef5b95986e1": 1, + "f17866cc073a92796814343330eaf7cd40bf0c51ab7f96cf6bd27f218c6f6cfb": 1, + "f874862c479b5c5bc4891ab675450416eaae65809cb868ab21b5fa3aa88f96ce": 1, + "fb0b48c747f460d98bced139d41db478ca26652bc224241d51babb00cdcdea3e": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + ".github/workflows/member-verify.yml": { + "lines": { + "1ad84cd3f4bdb90eff5b0383984841ae60ac9eaf13e0f25a6ae674d952ac3146": 1, + "dbf8216c24d7e33c8cf195dad9c1ef71355a90ce118d838cacb09c5990f6caee": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + ".github/workflows/release.yml": { + "lines": { + "544e611ddaa879b028d3b4f5ae22de15ff9c9908e66be8edde46597235de7363": 1, + "c1294c87068897af27f29ec317091296f094fc8e7d0fbe8583f47d824e2e6b4c": 1, + "c918c45640e6940874105f93a59ba8a8d92c5f19be88af47033c58aabf002644": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "Cargo.toml": { + "lines": { + "3cc7c92e14e1b3db00d7e621d8efcd71d446cc99962408c379e73e203e7dc50f": 2, + "caaf318163961c02bb615c9144f075a2c27d308b0c0300ea42328b5a757b8515": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "README.md": { + "lines": { + "35676aaad176b1ef84ebf6b7e2a4385680595bc28799f3e45f09e2259ddbbe7c": 1 + }, + "reason": "Existing state/cache filename, command alias, environment, package, immutable vocabulary IRI or live compatibility anchor." + }, + "build.rs": { + "lines": { + "0257365214a1b7a417441d923a6ecb480e0fcd9977852acecdd5c6597302149d": 1, + "51421d889ab8c40d77d0ef62a9bfdd57d9038e95f88c649e984a8566fad5c761": 1, + "829a1255c670bfe608808967c0510f4775951bc0eb00cac9fdf0c7b8e90d9615": 1, + "b63336b572d2b3078092f78a8ed6d0ec21fc113b69125df8ad029a4a795f2be5": 1, + "cb0af3aea7d8652d82ad9e25afcf9d87f92093fdc14ef7de91dc4b3eb9e7d2f6": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "docs/book/src/architecture.md": { + "lines": { + "a3733f94477011feb5eae6640a978f222c3fa7b70c93d7aa2937efe00566925d": 1 + }, + "reason": "Existing state/cache filename, command alias, environment, package, immutable vocabulary IRI or live compatibility anchor." + }, + "docs/book/src/compatibility.md": { + "lines": { + "73d29c7744844a54fefa280f782e44decb05e13ce4771d05d6a68ea0bdc91cd5": 1, + "a2f210d54b7f77292d9ba9561d1eaf7d163b8af51f9ed290e1f2bfd6955f8fb5": 1, + "e32e037e704911f8bffa72a05cefd171e0bbbbf0868b1b3a27a15c66f44229b1": 1 + }, + "reason": "Existing state/cache filename, command alias, environment, package, immutable vocabulary IRI or live compatibility anchor." + }, + "docs/book/src/configuration.md": { + "lines": { + "0089f2b547f38bf753e892da5e82f1be7f98c1a6058a62fa38bbf1c4972a0d59": 1, + "10f0a040df6e1008148a22f006f3255c3cc7679c8a4e6fdf2f9927ddf75b1c72": 1, + "44b269a2b5d2d82feaf4b97e240731139ea93cfbe6ba45ed2720f4b73c992b0d": 1, + "457b40eadcdb434825ebdabf915a7ddc9844403a1ba64373d8003b5a9cd2dc02": 1, + "5526850f0115f3ef7b815dd24e0c957d3e8c8f28acf20bf7c693cae92715d04d": 1, + "6be577112dd29543773f55c332fa66acf6c4fdd2cee4434f212d99e1881e30bf": 1, + "9394f9b1417cc5fe1d3faa2970a0054a86689554a715fd7af5932dd85f7037e5": 1, + "ad9a5dc8802c54cd89dac5a884b7976ff14594e7321cde7d3dc12c86a7753ee3": 1, + "b88a704445f902b6f7971a642a0a350c662a35dfc00ed26504af76d04a2a9541": 1, + "d831b80cb62d9ce982d2c0b99c45e2e66555776a26747398098e1193a2796c29": 1, + "dcaf172b5a052f5d4d7234bed2e29553db22f4bbf878341d9bfeb685569b0fe6": 1 + }, + "reason": "Existing state/cache filename, command alias, environment, package, immutable vocabulary IRI or live compatibility anchor." + }, + "docs/book/src/conventions.md": { + "lines": { + "e5b436a0ba4329edc18a9d4891a3428575252ae92cb96b08a9bef2aff09e27b5": 1 + }, + "reason": "Existing state/cache filename, command alias, environment, package, immutable vocabulary IRI or live compatibility anchor." + }, + "docs/book/src/corpus.md": { + "lines": { + "ca2c3a61f1d501084203938625db83ec8894a1b413c40a4c3e466a3d26940784": 1 + }, + "reason": "Existing state/cache filename, command alias, environment, package, immutable vocabulary IRI or live compatibility anchor." + }, + "docs/book/src/emission.md": { + "lines": { + "f1f4db5cf5052c8dd1d3db63826a61b1e70efeee9a40e847867ceba5a53643a8": 1 + }, + "reason": "Existing state/cache filename, command alias, environment, package, immutable vocabulary IRI or live compatibility anchor." + }, + "docs/book/src/getting-started.md": { + "lines": { + "271e4abc04a99774caee06d23c365cd900793333c78cb8f2192095ecdb88eae1": 1, + "3aa443b8f0bfef9e5ca3a6f97287d8cb341162a9eae35b2e2f0b04df3e170149": 1, + "52d8929c6644a6413901113fe7504df40ac3e87c6ffe22cbd3c1f84c1762531e": 1, + "a2b352021e9be2435d1cf614a627b81a7f47c58ba2ed8db40f40ede47ae5d9a7": 1 + }, + "reason": "Existing state/cache filename, command alias, environment, package, immutable vocabulary IRI or live compatibility anchor." + }, + "docs/book/src/installation-reference.md": { + "lines": { + "0d714756291eb50ab1bc0cb785e04e36c3c92537ac33658751cfcef9c0bfcaf7": 1, + "20a38aa80de5d1242f2b7320daa45d849c8a8adf2234f0791e12b7f0491b953b": 1, + "4582e4025781d8afd3016c1b923af37425eababce38faa494deabdd7dbaee2df": 1, + "8558afef7784dffbb7b380d8a7c64913c488a305814c29e26c1075a398dac447": 1, + "8d4e4604847a8f9f11bb0923cb6a03be006585930bbc914c1cf2cf931dfb24dc": 1, + "c6ccd5fa09c072a8f2f4256c21a9f653378413852ccd9264154ac8bd72da92b5": 1, + "cb7847483b79e02ae3849b8460e3422daede2b4091f83563e9de9eac02d43589": 1, + "fae4574c4b96521f6b03f4471693f0864155e34dfcbcc7562f0a277b35870dfe": 1 + }, + "reason": "Existing state/cache filename, command alias, environment, package, immutable vocabulary IRI or live compatibility anchor." + }, + "docs/book/src/installing.md": { + "lines": { + "0716cd4879d929615441d2281f9a0dbf0a6238fb7b1cdf50b9bbc267eb06c32a": 1, + "0abecf0895c20ece45a9729f565f531fac93ebe58a97e1bd281154d84b5890db": 1, + "10482039b780d3237123798404b6e136d270fc59c5c7fbdde7507b1cd6df337a": 1, + "217f0900684ee432aabb1e3dccfe442670191a72fbd1c2da83f22024555a5039": 1, + "27ab2c87b85530871590c7b94bd674a9786f182c1db6ef64238a16cbba69a45c": 1, + "29aefe4929557fa19f9962ca97782cea2ed5993813eb25926e8a125cc0e7652b": 1, + "3e70a0ef9a7e5a828b1aa23dd02977fb9358c80e651ec5a5e7eddc2277331812": 1, + "3ff0d2e8fcdab1f6390cf9f643b475b247d24a5203a23c57ddffbe98953b2e21": 1, + "414987c14e419ec2eb855962fc8dc3821edf18363a605c6369bd00bcf89ee9bc": 1, + "46e187d7db3226b371880de99411d9ee82ba966f7f4c02e27a189cc8c7941ad4": 1, + "47c6a4bdd0bd870378fe108b444a31badb9b00fc819d3efd8060c7bd349a2586": 1, + "4e0139304cfb12cff0b6b18732f2264c7e6fa335f7a4223c2b1b7e712bae8d25": 1, + "5ee493c99b8729381640bb3279b4b4a772377a969db1fd13885c84b8002466a2": 1, + "725b753e5a7c7004faebd885f4f5499748a57f18c969444c07ab64026cc3fe9a": 1, + "7a585731419e2fc3178e3e400fed4d1d7de30447057b2c528ca0ba2255d06a77": 1, + "8d4e4604847a8f9f11bb0923cb6a03be006585930bbc914c1cf2cf931dfb24dc": 1, + "b3eb5e96b91991571b1300620c264fd98eb92012e379fd7fb79b45240ac54bbb": 1, + "bff8408800e264e3044cfa40ef1d28260012980085b7dcb8582a3c266b6278d1": 1, + "ed617108f5d1380d1967d2fc74a88943a50a6d6d011c2d2bb967509ab1d16f21": 1, + "f9789f7a1f3832feefda4e59814134d84a386bf2bfe5839cfd25db44f08622ab": 1, + "fcd3a09b875efeafbf6f5a012c1edc45057537720b3231ef40f47cc9b2da959a": 1 + }, + "reason": "Existing state/cache filename, command alias, environment, package, immutable vocabulary IRI or live compatibility anchor." + }, + "docs/book/src/pendant-autoload.md": { + "lines": { + "117d2e9d2d532abc3ba7d9fcf649cfb44da217bc7d2c8e156dba0467d6067fc5": 1, + "31100ce1a48ad97f94477758d1d37d490c1c12b90e72fded9e59b645ad196ad8": 1, + "36cdfa6c7a164a842736631ca47d48225dc67505758e51575d1e12b43565a60c": 1, + "4061004344c6710b11b6a08e8b62d16937a42152ca62810f1a5d48ae80f44b8d": 1, + "746766d516d984f744082ef48f40f3a571e422a2551c74e1702b792cbc9a63df": 1, + "818834b9054ca9d2bcf8ee9c7319596262975073abe1aa84311931a0e58e33c8": 1, + "b02a5f55f750ea89e8611a681319f55ed06566bb5770de176b96f859092a4d74": 1, + "bfb70c80d7c39b60af459a888b36313aab01f5969d1aff8b17020fb276a7b91f": 1 + }, + "reason": "Existing state/cache filename, command alias, environment, package, immutable vocabulary IRI or live compatibility anchor." + }, + "docs/book/src/profiles.md": { + "lines": { + "c0df0d105abc608b14f69a3591686ead2689177f8e7c4e139e3da74583fdf3fa": 1 + }, + "reason": "Existing state/cache filename, command alias, environment, package, immutable vocabulary IRI or live compatibility anchor." + }, + "docs/book/src/reference.md": { + "lines": { + "30143c176427de58ebf33910bc64e03a20409d8acddc612c22878e5162f25165": 1, + "3b5ba02cdf59aa4cd42c25c7b9bcf48f55126d7f820c4dac21b5e97a06c84673": 1, + "4817a2bfcddcc37956119e98a6cd0b0a39613bf0f9566ff0e4eff622da453087": 1, + "ad2fdee438a2feb36d30b825e2bcc794669869aee616ff0209d55b0119ae8f60": 1, + "b36239bbb627eb399364f2d0c2fb6c5c50b0a6b2b17987d739bc1719a9de482f": 1, + "b6586ea0cdf6ac241991587f9ecfa0665ee3de455411f999300d618cb2ada8d3": 1, + "fe9ac650df72ae45a78f4d9a35bfc14e8e65558da37c288340c10f36445b026c": 1 + }, + "reason": "Existing state/cache filename, command alias, environment, package, immutable vocabulary IRI or live compatibility anchor." + }, + "docs/book/src/using.md": { + "lines": { + "0817cf1b81d816c9aa9fed79a1f8e95bddb3760a5d92fe37203b78a2b542c6ce": 1, + "0cd0bc56b2a1d6bf637c0d5a2b6395e83699932254d95807f2223e3e6a054815": 1, + "23768634934c6f43d3197f42fb3648f341be32ec867c2a9adaa4c9efa158cb78": 1, + "4b7d1aecbd93bfd8101c4bdcefdc3290cc90786202a7aece0c8ba9c0e12bcdff": 1, + "5588f9d69b267ea45cf33741e0881fb40dd77751696874a419cd7f382cf8bec2": 1, + "58f022da2d0e240c2624597212ce28d25fe8694e8230af5a8fbd9a87a8e3a4f6": 1, + "8e2b298f79af54652adb931e858ee851332ee8def33fd4aae9cf82fc512c9a36": 1, + "b6586ea0cdf6ac241991587f9ecfa0665ee3de455411f999300d618cb2ada8d3": 1, + "b724530d5b22b953c0e2bcf8ea40a88d417be3c16a9707709929b8a657b210b8": 1, + "d9a5c52932568ab1ea334748653aab543dfa09774decd77ec248a8444fe50189": 1, + "fb9d6ccebb9069108a8679319f58d9ba514c460bc07c6d99378da2330d47e6c0": 1 + }, + "reason": "Existing state/cache filename, command alias, environment, package, immutable vocabulary IRI or live compatibility anchor." + }, + "docs/demos/bootstrap-compat/README.md": { + "lines": { + "2de1bd69bc9f45776dabb3eec6cb1394b19d5f19c01fd12dbf7a951e1413ba5e": 1, + "602d23c7dbf7c1772457c30dbd6953405475dd863e03cf99296b1f55b82d5980": 1, + "e06a961ae2434636cfc13f13847928d630cdc3e9ec5efe867dabec02ba95cf34": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/bootstrap-compat/output.txt": { + "lines": { + "544d4126fd1fcca01804032678e93fb8ecb09822767dd750e76cb43e4a3c1a98": 1, + "e01589ac9f5dfb2d5dea049926d0bf47fdf8d430fc7e22fefdd72828bdc8d6dc": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/bootstrap-compat/run.py": { + "lines": { + "2974500fb8db815f998d3e2aded600a35a80eb63f941a1185744f040d0155b64": 1, + "2c57a238c203d85e02a813269a606a45c658968446445c0d28e9e3b22c3a9d1c": 1, + "669b94ae9bf33e35f39fda9697607732201a23abc338822dad91e172ea78d356": 1, + "d1e6ef630c0605ee19f2c134182f06bbc98a79ad229b07642fc782819d700514": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/endpoint-trust/README.md": { + "lines": { + "d9c65150f8c549ff6f8b4ec71213f6ce0ccccca1a805e1c931b2dd23773df598": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/endpoint-trust/transcript.txt": { + "lines": { + "991f76dc143a00f250a5a3b779b2755ccdb7a270449434df8d341d52c09ca8dd": 1, + "fc8460f813f868fe54d662384f536d09d20d6d7d88bee73149816d197597eaf9": 2 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/homebrew-stable/demo.py": { + "lines": { + "99b7bc46e3b62cf4e85fbf6a5ba225a45b2316e5a2df2e660603ab573ed6b7dd": 1, + "b3b486383f97d455a884e185d945ae718ab114a0c66242dd9bdadf7d0a328089": 1, + "b468065a8b1e5d6827c5f492a4331d3ef8c8d75d14f619e23e5393e4e39b9623": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/local-doc-links/output.log": { + "lines": { + "5e7de488c5452d69c2aa4bbf00fed2f3c169955653b5ee60d21a7c76dfa81be8": 1, + "a60a864cd2117e6742724aa55d24b82b8e5d7ae7ab363e654b1350ec409f036a": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/local-doc-links/run.sh": { + "lines": { + "64ba48ab83971ebd5233d6d06be75fe873072dae0169000cdb8e5411b0be4df0": 1, + "87a3b714997568a7db780816a1ddfe5034b02e526cb54a687c84a48ba26eb7c0": 1, + "ac2c9428153d17ace35bd3f00279f3d30c09e11845fad1d82b77b3a32ea34170": 1, + "c4c2b196128f17d1ccc9310c4d225cb2461bb96a6ef4e3793fa840cd2323f868": 1, + "d65616e419bffc7b49256bbbe5ea193e47d3bdac3e084ace2772535f7ac71e10": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/member-package-path/demo.py": { + "lines": { + "872f2ad81417ca7afc0b147ecc5b593a9a76e9c8631e5d39a7c76cb47f46da9a": 1, + "d1344922166b187717164d7708bac9916680ea3bb5950e0f2c407abfc6f1ddad": 1, + "ecaf3995ce368094b938e4a35e82a8a01ed208acf006808b8b5dfedd2111f9ab": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/member-release-verification/README.md": { + "lines": { + "6811ed718f833d863645fc752dde14e5528ee9b4739dfd5d6e263b37ee749fb2": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/member-release-verification/demo.cast": { + "lines": { + "b6a524f73b7ee0c6f74442daf0946397d2d638df6af6fa31da719e62b1557983": 1, + "b8082b47a53a322bf1c65b3b96f2b7c3fc480716ddf29b95274e553c5f13cac4": 1, + "d9c75f1ef6c1d13d4f6d8fb935571cb0538ed392a0e9ff0a0948565d687f5bb8": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/monorepo-sync/demo.py": { + "lines": { + "edce7ee845e1a75addd12bf28b69f309cffd20268f1ba04258b989b6552d87c3": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/pendant-sync/demo.py": { + "lines": { + "5e1d5960b021b4e66a06860e06fc40edb8fe4486b40ea4999d3f068b4b212dbb": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/quipu-package-pair/demo.py": { + "lines": { + "99b7bc46e3b62cf4e85fbf6a5ba225a45b2316e5a2df2e660603ab573ed6b7dd": 1, + "b3b486383f97d455a884e185d945ae718ab114a0c66242dd9bdadf7d0a328089": 1, + "b468065a8b1e5d6827c5f492a4331d3ef8c8d75d14f619e23e5393e4e39b9623": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/quipu-pair/README.md": { + "lines": { + "38756f757378ecfedb3189b171d57326aae86303ba2cc9f27106220807c565a1": 1, + "a1da702e4ec632295c1db728711d0d059c26ae6ea6d584f9963b574b16c30afd": 1, + "eac4a5815f83288950cdf3f872b88899bebfbf75cad756ac0aea5ca261ddf452": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/quipu-pair/output.log": { + "lines": { + "5e25eb5301461851b1f79db45818f903e9c0a365f05ed115632bdcde0af7eb9e": 1, + "6a78d9ca9a5236a4d5851b5197a3e4cb975a764cea1cb45daf06aa3c7d3f2460": 2, + "7f49a3fd6b2121ee1bf9d94ce2ed210be4da9de04755aa2607eff5cda1e0cbcc": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/quipu-pair/run.sh": { + "lines": { + "03c18731ee72dda887268a2767122e677567f2d6a2e0f7ffdd8ca04f2c96f3f2": 1, + "5e8a5572cc8fad7920511a4f697b5848faedf912a0bdf164d299f5c3203b3bd2": 1, + "6c7d17d8f7ebb20cce7682960d809775e285d16a855b0cd00afec29061b1f2a9": 1, + "7b30a3268654a72b2fe9f5c5e97139ae66c215695caf44c018bf563bddb34026": 1, + "afef5ae2020b96ab06d7bd1e6aeed253554145fed88a826368c35d71f3f5a84e": 2, + "b00fac35b4c0444563005aac149e6ec11dd54bb8df211bf1b24650b870f74308": 1, + "b5ccfcdfc6fe3cccc560a406890c2a1fd664c488b95f69cac1e0e53434ee4ec3": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/stack-overview-prose/README.md": { + "lines": { + "e940348d55ca5221e86905c8f5be6ae32168a1245ae1f2d5f0929c56185f5850": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/tambo-rename/README.md": { + "lines": { + "1cc238d8b07aea39f9bf759f521946c87f2493630a23c176055d86d47915143c": 1, + "22e4b737e3833c83ac3e7b05c0b49f7a0ade143652834ea33489830e1a4f8d4b": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/tambo-rename/before-targets.json": { + "lines": { + "18c859e25c4bb37946697285728fe4ed8cd669c237a71390a890a7ae9667cb76": 1, + "81eb239fd488ce5d106ae5e8bb8a40ff6c46c776354c6f27031cdf53414b53bf": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/tambo-rename/output.log": { + "lines": { + "18c859e25c4bb37946697285728fe4ed8cd669c237a71390a890a7ae9667cb76": 1, + "28184dd2f109510aad9d99ab2cfef79808487170951de06b5d6c0743066bcdbb": 1, + "39c93719188195e1456cbe850f1a2cda22c0f980a65b62fad1788159eb2b47e6": 1, + "81eb239fd488ce5d106ae5e8bb8a40ff6c46c776354c6f27031cdf53414b53bf": 2 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/demos/tambo-rename/run.sh": { + "lines": { + "a2ef59dc24f056fb28097890d36f674d05fd40dd3d5a792ca031b20124a6f998": 1, + "ccf540ab010757024645a731d9d1aa3866c41f59dd30b4b76cb2a6126a96aeb5": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/design/local-quickstart-demo.md": { + "lines": { + "2c433bca4b3fe0b33d91243d27827da11fa983d62659b70c305f44e28c45c6f9": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/design/txtai-gap-analysis.md": { + "lines": { + "78e056c5da92c50ace032517ed488ea313f778c6ce689d2aeae0387a19824a0e": 1, + "8e34d0d432f39c7bf4c6919b08d5dd7d2cbc6744089ce21e84c42f8a1aacacbb": 1, + "db4ddd478c27478900ae6314252a076372f26b7ed1c5528fcf46c4a7cef7afde": 1, + "dd1abe2439b8f245cba5ddf4b2cbce4a027d043e0a12540f4facaf339a5249d7": 1, + "efbac24bd1090d916184cb6055166748de31bbe8f951073b1f110d54f483bffe": 1, + "f317fe0f20061e04ca0df9c05340d51772d9ab9c088faddb8567b2c062dea58d": 1, + "fbf6fa446b58f916f3a7ae53c3d980f49813cd9208c48f029658ca9120df030f": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "docs/design/vision.md": { + "lines": { + "235f0a6f388ba63bd1012b7a3d3e468e7300bb228a7d1857db81e117db38973c": 1, + "295e08b411caa331cfac0732c25e6d0cfbb2df3f5d38b4178111fc68b54e083c": 1, + "3097a2896fd4e2e55f29b8419054b11b4c90a6a0b3acd73b64cfd209d253fef9": 1, + "315ce858f4cff0fb52a9d6524545ec8530d2102788dbb37c09413e37ebb800e4": 1, + "3c15ce1d32b78c8e0d26011dd09f3e219dc11bc6fc3e8e3c00ebba2d29f660fd": 1, + "421677f1f493454809361033eebb89ae75a7042c365ef77307dd2b83d2c5fe56": 1, + "431a40528068d878b9dd08727bc60a231b33bf88da747f779f1a77a908d7c179": 1, + "5343a2bf99c0a3ac353b8867fb3ddea2580e73db5506ca1a1d250383202a5cc2": 1, + "5a3c4c846e61762492eaa35f443cff2562e96d7ec73214f4b88e749fb18021d8": 1, + "72de4c4d0d538c9861028125173d5966c0f683ea345de9be538f2c7ea847c37f": 1, + "76d9fde6f2acbdd86af77c37e43f6fde1280fa670883c62c78c7931717ea9773": 1, + "7b81a925e738dbdb9080cd5b9fd57951a1f691924b8c2c6016a4f3560df2f33a": 1, + "7c6a91d2ef134a301e8d082d09964bd53cc56e1326726cbb931cbd0568e3260f": 1, + "80ebe063b1d7302c028f3949ee4c98686bcf5ce9f4b25f1f1ef6a455ec9219d7": 1, + "9d3a2f7aba1410274215b2ad36c6ac156ed9d3adbedadf150ab3ebb319ec1b57": 1, + "c5e65255c39b47e73bd8e52e8958b537176946d27fbbfc4e3903d907579c41e2": 1, + "c85c3fc093d7fda742e3f9d8a9db6fe669dacffe828dafe228f49050785f9b95": 1, + "ca07b425512c6323fcc1d762f65b447ee8084edddc24ccd943e26266698334f6": 1, + "e7ea7524f00ef2547c9c12d3e817d43139ab0d94a5a54d36237d7ce13086dc9b": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "evaluations/text2kgbench/config.json": { + "lines": { + "70b0ec44ce0933c374bc467e9019225e67d2e0e306a52c9c7fe2709e13eca4e1": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "evaluations/text2kgbench/full-manifest.json": { + "lines": { + "4ecf5a5704fb9b583828cc218e3d07534cb8316875c66515d3e00726759566cd": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "evaluations/text2kgbench/reconcilers.json": { + "lines": { + "da47eebc16c39d724472cd065c10a8c6284fa72932bca7156ba98767f51a3cc0": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "evaluations/text2kgbench/results/2026-09-03/report.json": { + "lines": { + "db7ed03e94792882364424f2dbd8a033f6377994ec81c8a7af70c45f1945ac2d": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "evaluations/text2kgbench/results/2026-09-05-claude-code-l1-smoke/report.json": { + "lines": { + "4ecf5a5704fb9b583828cc218e3d07534cb8316875c66515d3e00726759566cd": 1, + "82d10a67ae0c2b17ac96ba24eb007958689803d2a6c7bfed2eb988b2d25bdc60": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "evaluations/text2kgbench/results/2026-09-05-claude-code-stratified-1000/REPORT.md": { + "lines": { + "2fc6e85c635a7700f504c4a2b92c840e4ffd468296b1bbd9a875e18dbed020ae": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "evaluations/text2kgbench/results/2026-09-09-parser-replay/REPORT.md": { + "lines": { + "37fcc9e5ad4060e56b5d4110679a7b327eb49542e965444e68552bc8d0fb5384": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "evaluations/text2kgbench/results/2026-09-09-parser-replay/comparison.json": { + "lines": { + "27454b9c164eecbc1b23300fa4bc79f42a6f148a92ac2506774eb73802d0ddba": 1, + "a5a82ab593529cdf8bfc0dfb5bb33f55e915eb1cd6604e14632495616df6bbe9": 1 + }, + "reason": "Retained historical records, demonstrations, design provenance or reproducibility fixtures; never rewritten as newly measured evidence." + }, + "examples/caboodle-intent.toml": { + "lines": { + "03530b66be1d5fcb8a3a2cbef627ce294eb9a17e766a4c7b74b735fc707c5608": 1, + "3009de9c9c308101e41be95fe83c4c695c78becd52ef9fbccb661582559cb61a": 1, + "42fcc7b9e8227bb7bbbd4352a4fa4c4d013aa57537d98557822e1ed5b696d16b": 1, + "4b04e1b65ad0e22f40bfab8416a20bea3eb5bc3f44635cd3c8fa27d50b143533": 1, + "4dd7521edb2c23a17b20aaa7973ddd3e22663910a2e3db5324ff0efaf1bb10ed": 1, + "54ceabb38cbe1e51219f107385ea4c7b6dc41d2d54a7bd3cdc978b8b1a628f07": 1, + "600db61c58aca4b7323a8b1b3572e2e84627dd09236287af51840f4f66f115d1": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "hook-bundles/bobbin.json": { + "lines": { + "8691bcba7add74aa6979e51467cb03aae623b2bd4ca3792ca7825cf27b77a220": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "hook-bundles/desire-path.json": { + "lines": { + "a54719af982dd8187444a828bcd907919013a22237f1340509f3dcd62cc49a0a": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "hook-bundles/quipu.json": { + "lines": { + "8691bcba7add74aa6979e51467cb03aae623b2bd4ca3792ca7825cf27b77a220": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "hook-bundles/yupana.json": { + "lines": { + "8691bcba7add74aa6979e51467cb03aae623b2bd4ca3792ca7825cf27b77a220": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "install.sh": { + "lines": { + "00f024e0d74fea357750ef49522ff4296430e3adb3331874dade76e67abc0fd0": 1, + "08ebef1b53218c06ddd00b9d4f2fa91f4608b55dfd3766dc49844dceaf403cbe": 1, + "0e63c63a198d94ef32c87e435da5f337c92e4cdfc6de8d6a587f75e92fdb3edd": 1, + "1c8b7c8f15ca06a2c7e602f6b5b00c25da95922125dc830941557d622f9f3b47": 1, + "39a55b765e03d4778301acd4a0736f0a6afe968d30dfae532402841b184f92ac": 1, + "49a1fa5d35d7153d9d7d86b60055de6f849693888f6c7cba4252ae9467783ba5": 1, + "4ac5bbde7c7ba9da35d63e69a5c549a5e7bbd32570bd0262600a2f948bab56cd": 1, + "c4a70033b2995a3e32d5689c335c873c6fc0e4e390d6110fa35a4621f3709489": 1, + "d85ef8e737668b4a67e8bc0ef9f5a54022810c1275ee4605babc6413c8cd5d47": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "justfile": { + "lines": { + "3da74dd16513be7c78eecf114032bfdb0229a0d318f9ea2b95624d0634557d9e": 1, + "6c890079e8c1176add647e68de754694877436c03a3b5b0bf26d77b411e97643": 1, + "cc50959b37b6d72e061107ad80517ee304c962c98204a43b1f16c1907969fd5e": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "members/README.md": { + "lines": { + "56afb8c00fa359f3a755dc4a9d2bd22f01e0d3885d0b966ef978f49503482ff0": 1, + "707fce6076ec289e14cc6aa70bcc91ee167d0dd7ebbeac656cd4b9129ebf71c3": 1, + "98a710e8363f38e67420be9b344e2b8afc92436bf97720ad3829f1036d1a058a": 1, + "f366652c66bc9d82e0defbf6576d1faa3fa9963bcace753c0da428ddb207627f": 1, + "f6889b43a0f61f660ece9f2a4542daf74f6aac0f53acf8285bef4ba0a9ef70d0": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "members/chaski.toml": { + "lines": { + "a436dcb5b1ff0daf3f68926cdab9f83b4d1bd46a98a8bb2112736775c2d5a789": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "members/seeds.toml": { + "lines": { + "bb70917b1c2755f4dce66907a09c81704896d19eed67078f9a3726d6a28dba02": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "members/shuttle.toml": { + "lines": { + "081df8f8a7e8ec2c71c095ba52a65fe787932a3ea99d0f2d3d37780fdc6d0cde": 1, + "5731ef8329766007b3ce8bb88e44ebdd963e548d8c869d8c0a2515c5434b28ff": 1, + "c4d7b50107f1f1baef9626e9e19c9a213149f617552fa767d61aaac257ecf824": 1, + "db6b50f9e747c353d9a9eef8e70ec2b0d0a57a6a3b119ebbab6c912f380cce17": 1, + "ff12ff01ec76b14461f819e071cfe53047ec131107bb47f9890159e9d504b683": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "packs/policy/identifier-policy.shapes.ttl": { + "lines": { + "351780684e0a6c1018665a9b9c18c2fc63a40caa594aa8ae8ee596f25f83c4f5": 1 + }, + "reason": "Immutable vocabulary, graph and subject IRIs or verified text-share policy metadata. Product labels and repository links are canonical." + }, + "packs/policy/identifier-policy.ttl": { + "lines": { + "43110334aa404eba1903bea88348c836d571844303f5cc66bd37cfee1cc87a76": 1, + "6062101191ea6420f4b961fa3654333b1475f01d22ff6aa2d26febad91d1061b": 1, + "a16252ad645d0600b611cb7f31781eabeb36cc88002127abadd9b70910c62ac8": 1 + }, + "reason": "Immutable vocabulary, graph and subject IRIs or verified text-share policy metadata. Product labels and repository links are canonical." + }, + "packs/src/stack-map.ttl": { + "lines": { + "13ee3c094941186fec724bca7231baf4781785966c5fe5b2c211ec7828b2b959": 1, + "157f6fd0161372e1ee2f94aed010a54aa316b616f44d6bc3fd6576f9ca8c7f3c": 1, + "18cb850492bf965a89c245fe7405c31bff2277b33a787437bfb7a9d76af6b9bd": 1, + "20ca8c5f8c9dc5b8a53c17a94484f082544c72fa3c7202fa433146d805ae5259": 1, + "337e42294719a615743c13a9e6a010368c324a0fa0e0ca4b18045eb32d92e39e": 1, + "344228d39a64d17a47ebf81c0cf97ef7770e164668e90c08e5905bffd7980db0": 4, + "3b96efcf1f18e998b9dd3eb1265dcc7c77d6864e8015fd05cb751fef682af3fa": 1, + "41d110bb017e5f97ae2308090ea3ee5d3a5063948b35eeb9c1aac43c11b1ebf7": 1, + "4de3e645b937f610f98b1062f625315ca6d88469a9461a66bf86c896a978773e": 1, + "4f1d7e1d092afeb4aa5500f017e0fd972fc13f0b523dbf155cbb3e549a0341c0": 1, + "4f4538ad08ec05ac2c0450d6d8efd724c1419f91b209e5141e226ea6fb366c29": 1, + "563dfc1413372adfec3579975604fba3681afcab15ee21e78d91f08949a6c302": 1, + "570118b40ce452adfa1dbe3c68fb4266ea263518017f9a174511074caf1d38ce": 1, + "5953d113ab8259cfd22473a5ed939588264a4b4ed7dba9361299af843c7d3346": 1, + "6cdd65d688a68c7e505d60092d730405eb0830e30ce49211443081ee11d0ced7": 1, + "8d1b91e0c4cc1d51747c1309bde515501ba441a421fa3b89495fd74a2b463502": 1, + "8f2af82b76bcf90ba4e9afa9b4c4a27cb4ab1fcc7bd3509b40fc48e641f7d5ba": 1, + "9137fb73f8eaa85cdd53f5ace2a75a50a678c8870975618d0de46dc21962bce6": 1, + "96baef1b4b196d54cfaeda220eed3ec762bd2db38a704c0e566ac3c0b2084bf0": 1, + "a2ae8bf9f88c9f68b81185332523112123d47646b2a7f9419866aa43965a98ea": 1, + "ae4fc07f1348d1d1f0a2309a5b5c9bc80e608dd7b5bc96447a7385616e5681eb": 1, + "b18f3ebb6ba799a57b758bf670e68be8364cbbe7cd0ff76c3c100c25e9112c3d": 1, + "b8c74523578722435e804645ddfbb1c9461af76eb7e92df609ede2b1ec9b1e06": 1, + "d0002c201af5c77b18e416237be57968c128f786e792255e642853021c52e456": 1, + "d143570609d351fce25534a5cc874a2b59b13fca39f2a8b338188bf6464e588c": 1, + "d9bc4c3c40c6a4698d13010c3e0908b7084a89bec6957928f31bf28c71a6d8ad": 1, + "dca93c5c63d9a43b765d979a04dded060f03dafe609e282e37c7b4dfc24cc6ba": 1, + "e610e7db598d73fd43ce631978ae390dcf75f19c001a1456c9ebf41ac5821cd6": 1, + "e7cd91634335fb162a904c1c3ab9d0ae0d56ec8c37dbb7a4069454f5194cb45e": 1, + "e91322234023cbcf7b5715426345f9b27c7c44aa4bbb7769988d36e9656432e2": 1, + "eb6aef9d8ef29bfc89654f2b7b6ff3da99547228c000f722e048fa96e60285f8": 1, + "fc242c9ec82aab1869806b15ca40bdf6cf27275c20344ebd71c435e8dd4d2bc7": 2 + }, + "reason": "Immutable vocabulary, graph and subject IRIs or verified text-share policy metadata. Product labels and repository links are canonical." + }, + "packs/src/stack-operations.ttl": { + "lines": { + "025ad56e1a08a4b630b912e9d55b8c907ae5c2ed3e6933d42b836f01851b3b43": 1, + "038fd19337eee3d36f796bf27d5e835c486f1db3be8b91309f5063123e99d550": 1, + "06637a84525be237b96445cfb258a6219132445077cc85e04264effedcc9243d": 1, + "123bb9283b57964eeefac32d74e047f3c688ae17076f3fbb766f5b1e9ef2f485": 1, + "16cee0b7c360efc7e93c8b205c3627ea93cdad27270f784f9a23d182d690866d": 1, + "179c075df3b99b9c97c528367d320874f40687334317f02d3e5c948b559881d7": 1, + "23e08f46a86124ee0083ac1a6064cd05d8415ba9f089cf820ad8367d5534f942": 1, + "365abc52ccf8b023fcd21fa306f8c130391894bb265bf32507c2ca111ea441ce": 1, + "4f1d7e1d092afeb4aa5500f017e0fd972fc13f0b523dbf155cbb3e549a0341c0": 1, + "52d5d9d3e94ce1e264e83f4aff70a3aa46d83706ff6d51dbb3bed686191c9dc8": 2, + "7ffaaed4d69f2ac62e3247cf232cc60d58b37347b6e81f93d55cdffb895a4cb9": 1, + "8f3929c65d8e3238f18bee0874ee05e49f76062293ea360e710fa00364b9c8ea": 1, + "900630abf0290662dfcd60ff8ba5407f35cbdfea59b9ef287a341c2b5de9db49": 1, + "90e99d6151daccc9662257152e5805f6f0c648d39800a51e9e4f0b77e08c2e28": 2, + "96702815b37e3d02b44d7fa767fd353a6d00249b611db1325810c3f4682d353f": 1, + "9d37d341ad539ef776afb8cac7e2b5e800bef3c640497dc8fc1bb651dc7fabd0": 1, + "a010d921fb1298c3c9f16a58ee941563ad325fcacc775076bd4b68bf5b7553cd": 1, + "aab5200123d608eed6baef7c3f7a555ba9bb72db27c2647b7670c8959f295058": 1, + "aadece36429ad16e51d10644dc014c6b8d5c4f9a60c3a066d05d7284c27f1cce": 1, + "abfa3e1b23349871b74525eaf47f61fa9e7c3f0c81eab3ede71be7e7e130f966": 1, + "c02eb05ac976e42eb80289b3d5b2bb5396bb1a6bf629648eed4bed4fe8396db2": 1, + "c9824c45ffef56979af935ac935b68f7aa99fd9d623afe0043b15a3e01e804f5": 5, + "ce4c6ca031c85d6de1e77be7a7b18abbe8d9b62bf824ecd6b9ea3b4cdb393409": 2, + "d009ee777536bbafc609d167563b91b29949d6482cf04e2676f46d21cc44d797": 1, + "d3703b623123903fa74ab8211eb6e54fc0b9e48ef79c3c062330c69db3661a79": 1, + "dca93c5c63d9a43b765d979a04dded060f03dafe609e282e37c7b4dfc24cc6ba": 1, + "df8249d7a6d7a359606f7f8ab5583f8c5b8a6fa2147687bc7841566528fd6251": 1, + "f21e932b271da6a6978829be92f73e8f2ec5a417b1f517bfceac5853856b9ca9": 1, + "f84bba92ef2c787cad6c418fbc1bf5c56140dd65fbdf48ba53047a3bb22b418c": 4 + }, + "reason": "Immutable vocabulary, graph and subject IRIs or verified text-share policy metadata. Product labels and repository links are canonical." + }, + "packs/stack-map/pendant/export.nt": { + "lines": { + "02db0a76e9bc6fe25e53f1b06fc235e644013ae3f2ec4e44ee0a78b6ec5f5e26": 1, + "056b5874d276a2c477a93e148fa93c307181c6ae5510c2dbaebbd51ac23cdf3b": 1, + "07e7c337d7adbd94b902ab8484537f5dd02035b4303e06d806d576d58dec390d": 1, + "082d7d1510095ea144a49691ed6e9704de1e9b64dc62b954e4bf86b315fb5484": 1, + "0f35125ad84ec3eec2d7fecd343ecbb110cd881fff88d282ba4598c8f2c2a213": 1, + "0f8924bc5543d114da28ed7addc44f3e967d48936dfd39017016136f61ac2a05": 1, + "124a3dfefd376ecb833d27da9a1af0ca1dfc0158ea9a78575cf304c3e1ec3fb5": 1, + "127c3c4cfab0c23673d561e1892fee37548c0ec8f60d920560fbb2c7e26db23f": 1, + "1970672b830b8a648a1e9c7449adf49a95af7eaf11fdf7e4d5ab778715319f8e": 1, + "1b95c7db4d91c41137ffaed6614752b8d411e4914d1196fe47e842d3a5e31e06": 1, + "1cf11d81088602ed90c50dfe20c622c54989a45b3c16f4d73c8f2b185e9dec9e": 1, + "1ec8d6fa68494f61a46877041d30cd9aaf2b6fd7c08cf279799009517db051f8": 1, + "20a8719a500753ed4db5dd6532246d94b1e161e38bb1351f2cfba1cc55ea58c7": 1, + "2788d57936857ea590c1821cb93d23f757e3bfad0f6d0db80b447aaa1ef8e985": 1, + "2947996ae543c3904548ebbb40e8b77f25cdbc92ab9458275016641ad65d27b6": 1, + "326a54af7d8c12f259a6b53cfb4ae901622e8f4d7dec35e3eee7dc070c6d58b4": 1, + "361f19d068b9311257c24f741b861031d9c68c87f0893becdcc27f0cf3c42e4e": 1, + "36c84c8a1be8348722a6e103413fb4436e1a45b39f188211c88769688a0fa5b3": 1, + "409b84eecf2620a6ad7476c00543fec69caf19684e3adf60274c9d5fffa5b2eb": 1, + "45e128832609d54656901245395ec30cf0af948803e9531e4fbe953a58216292": 1, + "48fe144ebbc27f08118796ccf08f0bd033ce0a4ddfb89a2f20fcde36ef61e8b6": 1, + "4a5b7ab3631a9f23469d9345e9e8d96af63b482ebeb13831e653528b6c304596": 1, + "5448b1bd490876063e6c3c9d8fafa18bcbb5be56176ef5628ac980cfd19cbfa1": 1, + "5e5b8dd599fd0198cd2850dd1e7ee69b3f4a432422b324fbec94784b50eab1c2": 1, + "62efc77f97fde011cca11ce89b50b250d7212498634fccb4ff458a0782eec85c": 1, + "6700de300da9fdbd0674b7731a5b6cb67c1b7e2882269b5d3d8dee51d4306e42": 1, + "6d8812620952013c178fc565fb1fe0d8bbc12cb94dccb8284dd92495cbdab076": 1, + "74f8ee0320b3179c8c0f7252da0730267afcbf0d5a7861cfb491511bc4c2a33f": 1, + "7c72b2460508800bd1571470a0fce5a4ee97c3cda107714283cc8a690341ae13": 1, + "83f3f3dc8e6b868c2a417c891bc9010950dacbf7425a0152227c8ff210f2af4e": 1, + "8e52851b561772e2bc285860bb8de3029833613c969e4813faa7756156fe3765": 1, + "8fd0d11171f911d9e53acdba7404142b091998bf9bf0cdf5f297eff522f0b238": 1, + "9410c2f94931ba4813b3738c63081007a0ae6a3b046e5582727f8f59c0cca038": 1, + "9459620e9c6cdacededca9e19d585e4b7ec04fa4fae62ab57a8b52cdb55f24f5": 1, + "9965a22c3a32629787291c1fe55905da81a12a91d48fba2a0a34e145e94f8903": 1, + "9d3373a0bf2b7b18d022c67deaef456f09ab2cd500264dbb2f1b0ba9293892df": 1, + "9fa675b985db97b96c191374797955f5d381437e1b86b0fa4c69425127ef4b81": 1, + "a21557f8ff8657963263f459fd3144de7d0bfbef706ea2a952762f481a052a8d": 1, + "a4d10f1f722f73c93f2a8afb639ed480e6eb81bbbcf34bb926751b2e9db849b1": 1, + "a9bbd23f6614661f7d3b2803a727fedb8800b95833b93ca515cced3018d4f9cf": 1, + "b88a654c9bc0c8e4f6f68e1764a41d35326dd685a3fa5677962889219ca07d19": 1, + "bdf7541835b7cc911155fcf210f30de07d8190db50c67274572563def0e59394": 1, + "c2d975ccebb1108fd60d0dc69a12c97768d3b46f6d2ee6bd5ba42713f0ccece1": 1, + "c6915962e48acca55a2dc4436dc20a2478ba8e0b05bbd204ff050bc291629cfe": 1, + "cbc9f32dc69b03c81c8733dc11b12894b332755b51505714fd19e8aaca98b299": 1, + "d01a05066bdb2df00b6f0586153551b6a0a44e0994120eb6d5a4b72913195ae5": 1, + "d0723e7cf81d9d0c4cbad0c9aa65e3f4741cdfce0edfedd32b65112214afca7b": 1, + "d113b0728e236ea7d4c7db7379d7d7dd9d68c093fcf018f18993b60e979574b8": 1, + "d1a120da338f9486e178b6a0b69e0d6b17f7142b7fb0f93cdeb8f1d1c57d7e8b": 1, + "dea0fe6100fcb14577caf2414872a6bc36cd98fc1579188a00ab2796b735eb00": 1, + "dee082edf402e48dc1294f6575c177b40f335c193eb2766a5f5c8c2080026131": 1, + "e1645b82f1ebb6c7423e330ed54d9b6f0c8114b7124d925d61b6b7d6b290a30a": 1, + "e6eb2d0d6055571e5ffa7de309e3d7879b75279ba42b1498f0d66c58b84b4545": 1, + "faca085dc719214583137ed34ac30386503e3a0e98b0856b1292ec5e02dc4a28": 1 + }, + "reason": "Immutable vocabulary, graph and subject IRIs or verified text-share policy metadata. Product labels and repository links are canonical." + }, + "packs/stack-map/pendant/manifest.json": { + "lines": { + "b16ecf756f83f51015aeb7e35e57bde6b7e30ecdab4ee4654373bbb6e997011d": 1 + }, + "reason": "Immutable vocabulary, graph and subject IRIs or verified text-share policy metadata. Product labels and repository links are canonical." + }, + "packs/stack-operations/pendant/export.nt": { + "lines": { + "1074cdbc2e24e8b0a92258416772ebd3d296a5a239700b78241716dfac5144db": 1, + "1fd9c4ce07765d7a1398e17f65fa9dd6a5a1a4f69568142862311bf918ec1c0d": 1, + "20a894038fcba25930ac996c4410313729d91454043954598e8942a7978bea0f": 1, + "28131a15c2ac1e6264997eaf2bde8cbd1dceffe6d8f1bea87ef69444e2339bf2": 1, + "2f323dc8796a3d09d1a684bfcecbd4d43bba7523c412c25571eb3338d7d7fe3a": 1, + "3826a6114def181fd45012379f4cec5224a802115b8e1a922bdf9dd880732ded": 1, + "39ba3c2c7941aa74cbb0e1b4409d84c7350e36a61ee7741f6ad3493f896f2545": 1, + "3c3e4c720e8c8b12c24b4eca4741ec4f4799427601c65de9ece4907093b7a5d1": 1, + "42c7a94784966d74fdb2bccd6f007e07031772b847428dbb92137e9342f66f49": 1, + "43ee0c0e7c0f697202b7487655a111ce107af67bae0ad207a1febb3f83c71e21": 1, + "4f3295041632d92fd11df6d0abe48cdb88f602f8e67c7929ea8cf792746279d5": 1, + "5ab4dd8ab5feda2e4683871b193e0954df9739914257ea86f54f22101d5b7122": 1, + "5d1291f599a67ec27bd60827b749cc82d4457f8ea7dc3032f5681e33199440de": 1, + "665b4c4b1fee08c831a443fcf08ef913a0289ade6f07b698271c652f126a2522": 1, + "6b7dfa5855ac7243cb3fe3b67c284b6254bbbbfa13d7adbf46dd31f2712f1f3d": 1, + "703ccb79f525cc6993c7324a04483a34f396b323b94c9bc601cd3b35a343ce79": 1, + "7c7990d3ebc5d1aea6da954d16d48804a7996564cc11c8a0a817991dab10175a": 1, + "7fa31467fcaacbf0d71be163f27fa75c9a9670857d97dec44f7ca0323a57b8cb": 1, + "80332951d635f6d4ce84dd6b5be7ce7b61284ac49d99cad4d47e274e7b92375a": 1, + "8abb73f3f33dfe3ac7ae5a7719cb956c2b1e7589bfeec8487ad9813cb9cf9eb1": 1, + "97701d60caf212c48f72aee50cfc94c6338cb9ad555c822edc28f0d2a3914edf": 1, + "a213e4780cead393f0d6dfdca308de94b906a0e6e8fd719160ba125441aa4600": 1, + "a4fab78f936c5cb5d50d22a1c7f2db0fa85ff019bf41b8e321fa2a5025553143": 1, + "b526b3d430ec75c205ea9828ae6880923c940bc2ea5e01cf3f7a5979a6faa40e": 1, + "bbe5beaf4315f4f49d741825bdadef7a2058f27a5840fa7082cc92c5e2b8e883": 1, + "c3e4c207f7fd087941676f71ed47682309878bf73393bf23d278be694762de5e": 1, + "c8684028bc9254495ad65b4f439e37c4f320d72470d62eb21d0a3f5662f7c8df": 1, + "c94f10fac318a57c20ae5f8d50789f7db7a6a69df70d7a522f3a9bbb1a129c7e": 1, + "ca682abeb13d21e890bc40b68c2103bc740a916065db347c99c0bdcfe4f45039": 1, + "cc881e0c85666b4cbf3f0ff42ae9602e627494e5e472d4d23c03597748e564e1": 1, + "dd5e4e8199baac82e9957b301d51e515d7e4ba438c26ab4583de957120f788a5": 1, + "ddd8125076ebfbe31eea440879a84af95bae914890c8d22c4c534456fdd5633b": 1, + "e60b39894d91afcee775ed29c8c6508fc45cac4e92b2bfa19421de18ca94c7f9": 1, + "e6decbc9b4dbabe8f14340b3e15547cf594fdd398fe1f333ecafea88680ddc51": 1, + "f7101a6958a05b45effb739f84c78e2c7330ef4a8dc91d6f874d756c02b69f59": 1, + "f9fdc2853014c30a000e6d77d90861f7628e23efcbe677e61673eced7c520d90": 1, + "fd76533bf2b6bbe455008fb97643226f048044b1fc20ec85fae002eeb92808cb": 1 + }, + "reason": "Immutable vocabulary, graph and subject IRIs or verified text-share policy metadata. Product labels and repository links are canonical." + }, + "packs/stack-operations/pendant/manifest.json": { + "lines": { + "55e39fb590e2c35a27cab88cf2a20e4c6a04aee0231442af903d7dfa2f99079d": 1 + }, + "reason": "Immutable vocabulary, graph and subject IRIs or verified text-share policy metadata. Product labels and repository links are canonical." + }, + "scripts/build-stack-packs.sh": { + "lines": { + "228edbead24bc2586b7cf6e304072337a53d2aed956acc59a0619ee6f78d17d1": 1, + "80de118acc1f0311023e07aa1a676343eb92fdf41a6d410a6e8040fafc17557f": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "scripts/check-doc-links.sh": { + "lines": { + "81d697511022975e874278a04fa587660a3eea907fc863eb942c1d412e758731": 1, + "d7e6850eb11bd166507626a50f38efe6054bb8ccf7a13e79747409df08cce125": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "scripts/check-product-name.py": { + "lines": { + "158c3f5ccb63078857e8763a7e1728de2649c5aa1a07e05742bd268900c2123e": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "scripts/check-release-assets.sh": { + "lines": { + "0ecfed6c40a8fa46f0894129e9bcb934e6aaab6ba3e5e5a54cae47c3892674be": 1, + "5855e594c33a028c83b35a197f02932bf36197791ccae70c6f84c0946a201c83": 1, + "65d2461da9458eab9c9869cd43cf7a3a11a82845b18c42d8a2ddf280b45338ed": 1, + "9f563d71cd1044d3f9b0c32bc26e6edfd20832c25ea2b239f856a326e72a31c8": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "scripts/check-stack-table.py": { + "lines": { + "4a5604db68e18f2b3282a40d88cbe90c3e997d2fd57aa3656ed6aacbc8aa5614": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "scripts/generate-text2kgbench-manifest.py": { + "lines": { + "4e27c0e05ac8c2903701a673710bc08161751e506acf9049b2488515c0516242": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "scripts/install.sh": { + "lines": { + "00f024e0d74fea357750ef49522ff4296430e3adb3331874dade76e67abc0fd0": 1, + "08ebef1b53218c06ddd00b9d4f2fa91f4608b55dfd3766dc49844dceaf403cbe": 1, + "0e63c63a198d94ef32c87e435da5f337c92e4cdfc6de8d6a587f75e92fdb3edd": 1, + "1c8b7c8f15ca06a2c7e602f6b5b00c25da95922125dc830941557d622f9f3b47": 1, + "39a55b765e03d4778301acd4a0736f0a6afe968d30dfae532402841b184f92ac": 1, + "49a1fa5d35d7153d9d7d86b60055de6f849693888f6c7cba4252ae9467783ba5": 1, + "4ac5bbde7c7ba9da35d63e69a5c549a5e7bbd32570bd0262600a2f948bab56cd": 1, + "c4a70033b2995a3e32d5689c335c873c6fc0e4e390d6110fa35a4621f3709489": 1, + "d85ef8e737668b4a67e8bc0ef9f5a54022810c1275ee4605babc6413c8cd5d47": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "scripts/setup-environment.sh": { + "lines": { + "055cc48a62f9671c391b120a2b1e9a0a88a4f62bab1031eaf6f59bd71159394a": 1, + "1865ed4789ffd14bcca3f552aef94c5309c9d8a8d0a666e829ca430c78cc4483": 1, + "2a7e62dcb92dea9a3345d9efa57cf7200ea35b7ff8c222f6be7f78a49779fb5e": 1, + "2bdc64bf5826534a737eba60ff6126b15e4dd3f5d775da9fa3c62a40ff795673": 1, + "33e64e31fa4c99faf8d7c11a620603f4f72a5d16a3f3d4c5e126256577a049e6": 1, + "34689fcec2a4c87149b51ea0b2bda8f79be6eea10cca094933d9f6cee918d2c7": 1, + "3b08c85d4ce7fb916ec403a2b9d9945672ff63993c8834a868f9e6cf6ab37f3e": 1, + "45eb370b12ffbdba1bd7161fbf638bb91846d66e55dda8c912d4c05a2e361ebf": 1, + "4658687bc5e2229a867a5f27ed2e5fed6a5a2843f00cba3b4e8e591194c7492c": 1, + "50238a40053da27d49424250235922fd9c97e4f3e112c0f7e46d5884ee884eaf": 1, + "64770069a5a8a4c0f608d6724c17a8b9b0a45cdc1900558ad866c7e83017bc77": 1, + "6631fab0b7b4a58d887b0c52ebdf65d5ac21fe15082bb0ca9cbc8197b3fbfffd": 1, + "6e0136162d096a2c7eed9141d693e3d75b8f00dd6b7be3e05833aaafe479299d": 1, + "74a227cb53874fb4131734ff0fa425a2f5740cc408a9ab79072a7b8aa61919a6": 1, + "78023110e3dab38add18f5d8fbac0187d287ff9d3e45478c625a93e33b5ef788": 1, + "8965400e8593975fc8ad500f4bfa57af483992692749736db762c27001dbb15a": 1, + "90c54ff5bb32253cc2bdea719c21e943a74266d0081346b0720d7dcc7c54b79f": 1, + "a61828fe19072624e36708dc6fc023af8432f7b48e45ea54a1ffbf0f9b9c6ba4": 1, + "a73fcea39bd02943b80961063fbd26dbfa75d883768aadb9c3f7844c0d655f25": 1, + "be7360fb6c15212c8f9ee3791affbd7eea0590a82039c1a67342870554b3e924": 1, + "ca18d046086160105ab0923ecf1c6e0a1bd1878393f0b5a4c3ead56a836775e2": 1, + "e6f48254908d2a717ffae33f31302ab94f1362b83be1ebc48edff4288bcd1c9c": 1, + "eba17c1bd810d9a12aae32d292b8cd0c9290c1c01f2e9d8af0fd74d52c6102ac": 1, + "eff2e730ea5eb6ca34c30d7c7a9b992a96fa2a30cc69809118a72ac66171b712": 1, + "f4ac50140c317c85912411ac10e1976c1002bc7f811234ad8a7b4c24317db2f2": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "scripts/start-credential-fixture.py": { + "lines": { + "1fc8f78909eb1840c2937c85204b165800eded4b25f29523394e4ac1db5ef8ba": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "scripts/test-doc-links.py": { + "lines": { + "07b1de95060bc8b34ab2be90e9f8ae3aa194c35994506752830dc336cdd845ab": 1, + "153d86aa1d1f722a6ec0e5902d438a8fe08391e363a06a441d9aae797c31f37a": 1, + "5bebd54135755d627a629cb484dfa88f8d123293e7cd7a99b6d0920d40229c86": 1, + "7f9bc33eb621b97eb8d23da95c4f0992bd2ebc11f87c182bf0e2beff6e446a11": 1, + "9894174938f1e704c1de4444bd5f8cff87f896b561fafa0c0ad5262abb3ab0be": 1, + "be9c3626da878d455ab0ed4b5717c95b12b9e7a03ad82c47ae2e745d93464628": 1, + "c234e67bf28c3427f04fd42adf52b6464783270861e99ecfd0a0cc20ec4d2bfb": 1, + "d9d7f02135dd7388286f9e54e85d088476460869d0a09a471175b05b757a0e7d": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "scripts/test-install-bootstrap.py": { + "lines": { + "1f09c191d2781a00496ca8b5a4ff2cfd085c7e0b216eb3662b5adc057ee6e959": 1, + "25229e8d06b9f996789a4f1e17d1b29929a029954e3092d76e567e356fb710d9": 2, + "2b6ad3b88ecd8eea48f436b66274a8d0794c0f7b06fdc486036a966a10cd50e8": 2, + "38179de4886b68a780830ba7cf4f0e452c4bd849fbb03494d1c514f1219e7801": 1, + "3fe2a7dd96ec7ab9cf3aa773b999fef6e231842370af301b64e66305cb03e731": 1, + "437a5a1dc4c6f80363996022be72345366d6aed17b876bd2b5e51717bddae0c9": 2, + "46cbc96418479eb2cb5b2411138dcec07fd8ccf5cdbd4a99925c3d42b618ec9c": 1, + "802569373320fa8f80d1fd4d498882d1487b6124bd6ac18a167b10736e5be182": 1, + "813153b23ac9f119f0194be4f39960d3155abaa3cd7081ca913460f92c3f42e2": 1, + "cd52eb76cf459d42dc59cbe37dbd1c9eca83018dd56203f71275e2431775cd42": 1, + "cffd2afc0b6fe8b4807ae1cd7f549f3d86754449c289fe533c667a5a0d82d163": 2, + "d119018f618b7f4f565c2fe7253b1412aa938058bd9b0111eb6771c8cd22f853": 1, + "f9a1de1f3d2c595fe6cf7b5bd641a0cb6644f4000427fef6dcec7e59c4f8da54": 2 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "scripts/test-product-name.py": { + "lines": { + "3015d50d23a334a35fae896b9d561ff6d3a4a61e482eeab7740e26b53a901a75": 1, + "4fe5d291f5b1a172390ab93f5f801e7d30983e9b3c26ac1759c0a955a0a3aaf3": 1, + "9463d825caab84fd5dae5bd5e6652e9acc3505bd770cb3173e0a4aaef472038c": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "scripts/test-readme.sh": { + "lines": { + "12cb1e1454f4759ead69eecc5e96e4a707c86790a769b5d472f2acf0039d17ca": 1, + "39f86e9698afde648f29f495f4a519664b7a5cb8c21ccf5db345523f887602f9": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "scripts/test-release-install.sh": { + "lines": { + "009746cd70e4c714eb6389279764c5305a06341ab5493c8fdde88f0e262d4340": 1, + "0473db34f9747c282a6851ecede2e76f2fbac7d31e02c06b8a2e985a916952b9": 1, + "0687a2a239f77429b18a3927b2ff9a31cdfa33d2a1913fb297d00c0e1431b6ba": 2, + "0916946a26c5361a68f8a3f02c7965a1dd4d17c8aae8e078472f8efd41e2eb41": 1, + "10046bcecee19e111bef45a5c7a8abac24b2f6bcde9c2380b4a3c5bc70baf2cb": 1, + "1cad28f7a98e19b4c891d1ad80ecda33ed2809c99da7c2e737d66e6999948be4": 1, + "2340d1b62d332309115dd83509f0348d4771a00ddc43bb91e64251aaf548d000": 1, + "42fc6d0681af9d20610fd8753833b845548ca2f8b503948101f806758cccd0d4": 1, + "4eae57305aec6536a1c1f9947c24e97dcf963e583184844e9206a7b9c3c21a28": 1, + "6401a7e2b91983f198106449b2ae1460e5465c24a07081bf3acce1eb7bac1e78": 1, + "663eafd91454908ccf0aff032c881df918ab6b10411e15cec155df828c2f4189": 1, + "6dc9abdfe6d90349706e9124341246d37914334d48bba8a398ed8bd90a1bb46f": 1, + "72d34a74ae318055b490ea3324e6975f930c26a4402139b4188623984c086833": 1, + "8f42821f6044c6b983ef7e3091bb963208d21c7c25297a586326630f300f8464": 1, + "9904462c46598fd69bd9a5764b4eb7eb9bee6528e97dece446435d5c45644e4c": 2, + "9a68916f87e2d2c65586ffc106d75ecad36863052d46cd5e5b8adc38e160b8d5": 1, + "9e6b1c50093b9230d9d982c42a5707ba8b93d1f66a03be3bb591842916263fec": 1, + "a605812a2b3d840e0d7cc8bc62fb8482a84684cfedef4ac932f19505c574647e": 1, + "aa1ae10a72e3f73cc1b9f4cf82171c3b8c456c2b8a9e50a878233dff1d2a1c77": 1, + "b13b262cb09ac11cf7d3534f477f1bbcd3d53e55bdce7d1235a3c87eb24b8567": 2, + "bc2e304ed17564ce6c859f7a285b9ca04032157d796e08f76f8d9ae678d1a86f": 1, + "c6e1fb694682efd565ab9fa2706b2a4c8f86d02d837d53bb41269fd1d1590e0b": 1, + "c75173de50959a1d54de38a89b24f1c6f1f8a32ffc38e151fc2a58498a04ebad": 1, + "c98cdf45df539dbb5dabaa075604912a498fe29b871f77025c1211c174c8017b": 1, + "cd9f7f07e3333a6fc3c07f690314686ad901aeb8ce2dd85a9fa310f1ffaad2c9": 1, + "e03d89aeb429def0ad24754baa2d81a4e44712a60bce7c8857898099230b2bee": 1, + "f725d3d50519e5db0171d79a35242be112f32c1227b9256ad26236b5ec2efa4f": 1, + "f945d54eb800be9c5cd5a89af9c696bb8099df64c07ebca3adeb1dd4cd6eb4aa": 1, + "ff87096b70d1f6a3846670f94f99a9d802187783449ebb029989d4a358e29f7d": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "scripts/test-stack-pendants.py": { + "lines": { + "18ca9bfc8ed9101f5862f02ecc58112ccc4e9d07d609e09866719177ca9d39b0": 1, + "8457ab54cc993b7389f39f90ba03dc9cb2da6187b88b8eb6a51c3fe5201473f2": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "scripts/text2kg_general.py": { + "lines": { + "ad442e2a65d3b898eca9cbb2dda4e514a2cd481ffe1861e3fdd6c52e15e66f07": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "skills/tambo/SKILL.md": { + "lines": { + "058bb7e64339d52495545ee541e0fbc2a80c4520378d5e43d186203868a74650": 1, + "252056fffea9ae08ee9c2c8867f4536a3c3c5c1ef5e867eb9fae0dfcec68072c": 1, + "2780d99349f7e31cc0b4366c600146a86807a3b58d60dcd2e22b4f38a578c3b8": 1, + "54c5d968e333a8139112c424540fd397d24627e8dbdea3b1b645d070e8dfacb0": 1, + "58c5c2e42ffe74e17c6fa245792a6d823a52b62d045d7dabc3d5a11fb15cab72": 1, + "5d0b5dd17d4751acc288ad2aab88be3bb75bf7c89ef419cd01bd7aa9c22bfea8": 1, + "7e4cd417b773faeba3ecd50f6db13da07b3ccccf2590f2c7bbafbe2195057f7a": 1, + "8fbd19dac5f3fc2bc45a3eec20062023818a509a37badb936982f5659feda2d2": 1, + "99f48f10735c3fad35c81b9e2fe47d2fa5db226c6d6b4309587c44a74c93c15a": 1, + "e9e4ad49f6af34f1921f64f77efae80ae7b901d918c734cd3f46846b1fda2a67": 1 + }, + "reason": "Existing state/cache filename, command alias, environment, package, immutable vocabulary IRI or live compatibility anchor." + }, + "src/adapter.rs": { + "lines": { + "09c81d2ac7b3233c4df3dfe2b30277f07d8695bd6e4cceeba03c0a160174ea2e": 1, + "0c9e8f4fd4303caa5d4f5dead4c3a24f4806eaf39b51a29a942af1ce1d3593c6": 2, + "0ce4b9a26fa298d28dabf76dcc64bc8edc52c3a6050cbffd491bd45c2b75c0bb": 1, + "17632977d42245c929997481e03bdd0c853a51c38b6285bdf4d98eaa766402af": 1, + "189ac12d91db4cceda1f7af5190a7a121b20d475ce014f228b4faacf048c3c7f": 1, + "27cd5eec141a50a26b1c1c10629335dee09e4b7b78cceb351051445e89d2947f": 1, + "41d40953309dd190af5dceab59a95aeab224436e954c3c2fc8e952f6d0cc5ca3": 1, + "5c8a85c9d4a587ec2114062d0d915dc4db07a2826f515cd59fe548d46865ab0d": 1, + "7c3e3d35dc155a0443723f782c752f419a4e8f88f3d2e02f564c61c76363be6a": 1, + "83bdeae3f88bb0447f904bf86688577e5ea5d918e4b665b62bfdd404ec954188": 1, + "86a4372be8e0229246f76b55434dbd2020a9d44e2fe68aa36679c275cd51b2ee": 1, + "86e1da759c4d7c32c3fdd9027ae6871b75c30706908a6104ad300771bb5c12ac": 1, + "90bcefde2a1193c1c684cd1e14cdc0b8f5504793a9d31d0dec85097d681e7320": 1, + "96d60a08451c27ac4f035d74534d8130401bf04d768b36e586f7814adb632ce3": 1, + "9d93664e95650fa2bd0c52611c911fa95af3cc7dfbb74e17a55b70710e431ca5": 1, + "acc1e1257dda07f6bd2932ba0232f387ee63d041d79993227352ae7a947084f9": 1, + "b7b928c5f8d21fc04ce741ab4796afbeaa23504aa650e651dc61f1e8520ac0b2": 1, + "c33fe9b9c9927554d9355f9305e7bca894ae16a3d2c1ff759557e5013381b6a2": 1, + "c42216ef94a0b0a37945a4dc0ebadd38c5911e76ef58c30e97b9d5fdd2e95469": 1, + "ca8f6a43ec5e4b07c4f8f80a6050bda3d28581990d4d5e1501bf87576cf93974": 1, + "eb306d055548c7f3775d145726c492ed1a6f3268db9ccd9dfe701982a78bcb2f": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/adapter/manifest.rs": { + "lines": { + "06903bc6d72085158f8f1c05050812127f9a3d176fafee114b1cb93659974af4": 1, + "111a9d3f09247fc5b415b9ab871373a0cb55c18f7a0b9b3e8ddbc9a891b5e170": 1, + "19b3f8b743793179c16a5823377cdad14680ce646aacb363a38d16f0c2979450": 1, + "66c7a22be95d496585d65765616d4feeb568303daebca140b04a09bd61862bab": 1, + "863650537ad538d96cf86e9d5031bd0cb6b74c435e6de5c95afcba17cc7b26a4": 1, + "a1ee70bad626222a7d275a9d92c78fef37c74b33af665bd74de10f180de1539a": 1, + "d7b1a87cb14c67dd3e92abb8331febd0ab4c258f8d98c4243ecebe7152a5636e": 1, + "ffd1e855c57c445e6c2e9680594ae6d384ba92607f958b02b5a87d4b1388810b": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/adapter/quipu_alias.rs": { + "lines": { + "2fba1f0bf862f98a1b481137c3aa4e8e0abe4be1bbcecf1984019fe7428ff40e": 1, + "93af6834b90828643eea1023a1adf1a82193c621bacc817f69f9f14dac247918": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/apt_owned.rs": { + "lines": { + "fa03e63ada8c15b736f40a9b36ada7a2608111696dbb52d0c95278ebe049a53a": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/crew.rs": { + "lines": { + "2c7087ff576cf987ae253da154cd14f3b07d9872b7eef9fe810b255afde63a7f": 1, + "6680f5c05e250a5ccb81853ed92c89b6bb62797e23988954bfbca39156ce2647": 1, + "d01ca1fd61a49b5a62f4b768296c52064833d0439ac3f32549feb8393e6d69d6": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/doctor.rs": { + "lines": { + "1b5d0fb8c5e770c657b59ff0bc88d4f668cfc0b7691077f95bf7bc9ee8e3fd3d": 1, + "2330a20785b809215424331126d53467773660ee30d07e6bdcca839df4d745f2": 1, + "76c8ad34879829715559849d1b00300ef133fdbc5736df5842039ad36d675568": 1, + "78e38bfe2703e2592c1e9c37f777ef295d652dcef87cfd305b8a06ae09d7dd11": 1, + "82747e28e6d7fe5e815160127c050aa426b169600321d98f25a76073b35e35e3": 1, + "968fa28a3248e45814be59971f5aa0f8b1627900b07b06d1bcc963fd7c111870": 1, + "9dff7e78ebe973b68f0db7c7950e6f2f161960a3d01c447bf76568473dd8fbde": 1, + "aed3205845d6fc9c8dd0c8d787d8e34e5518e85d5cca7f165b83c6cfd2d50749": 1, + "b2cff5ebdac9e5d20820c2dc06059489d799fb5363fd06a34bc0703b8c2c10a5": 1, + "b7fd3e7b0b359971497ff1caefc305cf3fbac2513ed8217f5a66fe3ffe8fcac9": 1, + "c98069322108af4dcbecfdfed2d078745e8cf630fac3b70d1aa707536add573d": 1, + "ceada0eb7f877f2e62a7a1efeae4b1f9397e387208fa821e3d864e9ee0f9bf2a": 1, + "e27033fbcaf03c4aab0bb0675461e0ac76a19c98a01a4dc26694cd23b5c0cadf": 1, + "e49dd32a0cb1ee68e1df1b7e20f1ea81a9acf97e1e5268fcc597f303793fc227": 1, + "ebf199a22611d3da76c65d588a78671ff2f07338ac619d351aee874e07056712": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/dp_alias.rs": { + "lines": { + "a8da20225db6e8db383c5f2beef91cde55f0642d560872efbe99331e8106ddb2": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/embedding.rs": { + "lines": { + "4dfe79f92a44531f2c1fcf2e40179408158f49bcb2fdf662d696a41ca19384ad": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/emission.rs": { + "lines": { + "111fdd85904a2fae94d54dbeee3e0935651e60a506a903ef0feb831f5eae592c": 1, + "3ba15601ea4860aea451fd2459be66eb9209fff8981321bc5e62f8198f9c3d87": 1, + "4c05e7ed759f281c98d0fd7bf587552f99ac56f4764b98a4a516263a093b4934": 1, + "abeebccf0921fd0aa4c10f43bc93d4e591999321c0c65ab9a7b062a42937b54d": 1, + "b4a9b2b95e45f21b7f22a74c253aaf199812764a768ebf473d032a3cf9a81c24": 1, + "fe86733c762213dd896ec09f89085dc39a9833ccae44f95f1627d32a75635f4c": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/engine.rs": { + "lines": { + "8461e982bd491f35441bf6a004befac475510214d410e57d2520e437a3dcc522": 1, + "9d8ed0419844c25fd99b5c385904f3f90d63031767efdc2219cbc2dbeb50c659": 1, + "a0ddc510bf77ce665f2c973c36767b5a71a62a2c5ee848353a349055bea2dc87": 1, + "e19f609694903dee70d6e9d0777635c8456359ed9b89e7e25d52a47977b93829": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/hook_bundles.rs": { + "lines": { + "4e608728037d745de5a31ac690e49b9520b23026bfbfeff0440f8eb526fa1862": 1, + "8a496a58b999e204fc20e37a7973f4fc23c104cd35b5f35f702ab073f4cb41ff": 1, + "f02ac24d4d2e71f26acbdfdf0aeabbd96153b0a1584522658e794f82ce6a0c53": 1, + "fb9907189903a02f5faf58a039bf8410ec9439d7c473be55245908192cce1632": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/main.rs": { + "lines": { + "050faa5e1ed0295f6b75dedc864fcd02a360769b4f0862db1dbc7d25b2bf6939": 1, + "0b0c04469bfe8662bdb4b941418c3a1539d32535a546488b740a833a3e3a0c1f": 1, + "0f626f582b5ac1f5ae4e3929aefa6979861b650c5c8d77c064abf944f33f0d6c": 1, + "0fe929e2beab3fc79e3af8a50cce69d5799720ebed9c2dda5d38429dbaaf3b14": 1, + "1c12704b94999d809bbaab1141bdad65eeeceba47db9e0483b312c95fa503632": 1, + "2330a20785b809215424331126d53467773660ee30d07e6bdcca839df4d745f2": 1, + "290ae03465cf4cac2db4192f9ce876783635d328b5a5c4178d8701a13eadae68": 1, + "2bac90b1440b4aba1271775b7f010eaee1ea7213e4336b80936c75278c834e25": 1, + "3c695b70c57f06b59e256403d63b5b85743399fcbf0b02b0b75965de435c9afb": 1, + "52fb24f85fb0cdcb7b04a048b4123a4e4a5b3aebab1e4ba3397f93e9ce1855d8": 1, + "582c3d9e78262c992545a06fd392196f1ae7f4793f4d81db308d40ac90c01524": 1, + "63413b1a1d1cc2c27fffb3e95ffbbe8ccfcdd25f2fa4cc69e599d9e43f981513": 1, + "67212a08721766df995f75975aa52b3bfaef95c5df50ed2c0c893ad681280d4c": 1, + "6bfab99ebaf909a12f81afde09da09074651069db44126007db3d02d8a70ce0c": 1, + "7349844672aef38af94d26514284e57a9f8c535ce1e6aca3ef78901a6744ac98": 1, + "7dc222a15899e07f70f7e577cb0ec2acaa229e0c58af6999793e30104c048084": 1, + "841f01a74b963b20866a212044db03f832b337102a3dcf2daae3cf143ca3b25a": 1, + "84c4e19221966b08321435fb0fd2ec0d8f46a4b02d1d8e4a8fdae688c9748b5a": 11, + "8d5f172ae9223ab1318846edbdfcb773cb57061de046decec2a5cd03c8a6fc0e": 1, + "9b45543ca9a25ff3cf9dd073607ec47f755aa3f62f99db00e27bfa7bb5f599dc": 1, + "a0f5f9aded0f6b337ca8802591b4b1264d4c2e6305c231604aa1fd6ae75ee30a": 1, + "b1f1a65a5411d9e66e2df3ec8d3cde814a188e7f69a8eb1a70dc55a0ad0ec7d2": 1, + "b22ed16db4cda9a6b5c743ce5427359984c3ae4cdf12c882519d81c20d072721": 1, + "b5437f382a122c18fa0b62bb5e380e1a9c2ca2a202e85176d1cb09b3032f7646": 1, + "b7f63569dfe487f4743ac5cfd77a383f59bf285cf463166ff487a57feb378410": 1, + "b8322713e066e93addc6f7f50a31fac79e59e43ec0822ba10aef13263ca58915": 2, + "b8e34bab251867ffe7e12d23324167d0e978d87e07561e5c440ede7173617b3e": 1, + "bb90bd0e174d11f9f4a7d41796c17eb1ce6c0aebd94640cd0c6efd8def843886": 1, + "bd5267eb57ca6ed651250f66d7afe2194d8b0732112156edd59c915634e17581": 1, + "c46555797f4d20a35a858c260c7de3fcffa0092486aa0c39e424f5d621d6ad40": 1, + "c6d38a3168cadfa64987e9b41f1284fc58301a0fd91ea60047e2e2529a013b28": 1, + "cd76c363c336bb3090b4014952931d433a906c8def8c3c2a3e2e00f8f5b06377": 1, + "d1745f2296f1c0601036aadfc05bea17dcbc5b81d1aeaf960a2917a991f92109": 8, + "d46311e20db82a24eaf04295664ddb292fbea09b758018d310a837ac4ccdc978": 1, + "e818169f4da5b0b687345fedcbdfa21ce0e868b9e054b4cb5bd21bea06edc881": 2, + "effa922ce28fe64ecf20fe247754000b29f6c70c74dbef69e2cf14f7f328b28b": 1, + "fde11d975d066817870dd8f7faa3e06621da33462d5f85aa02321161fe450b58": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/member_bump.rs": { + "lines": { + "b31dd5335e55b2d38645c6665f64d54efa838795acd08d19a8e3437a5c98ce5b": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/members.rs": { + "lines": { + "473389941685160de06a1ac4791e31f76e7e4d52a9158977625f5d95e176c25d": 1, + "6934dc93e6af8574152e17e2b08bbec3556086f09fd44b2f91db575a0d4698a6": 1, + "b07b2742bd3307932a7da209ac03fcbb6ce9a5aecfcbeff48932cde790c4786e": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/model.rs": { + "lines": { + "219bbd725bf8d936aa33dfd3ad4ec95d8060b2b60b11c82b344e94567f48b547": 1, + "54abd52948cb534e905e0c8384c94d967f0dea112beaa3546dbd5c111384e0d2": 1, + "5da681f3a28715d9e67f2d7c5ae268b447d922587db9cddbd9940600407cb356": 1, + "7d14f0549381c22d9b53825a31c2825206609cdb1a9dd53864e7fc7d58012984": 1, + "8b34ab155c8495870f157972bd2da10a7ee7f7a9fb6e17c1ef25801f2047e6cb": 1, + "91696a1fb0425a64fd9fc8243c829c4c91cc188d88d23ebebcefff54f5e5fc6d": 1, + "b9049a8deaa1e16515f291d75c0642dde013e5ab281e0f28c8618f05facd85f3": 1, + "c1d649bae72bd0d122249593a1a257f74ea86e55dc113cdc990af140710edae1": 1, + "e2514151c246b02ec3b87c421c403735b794ce054c92c09be77abafdfee2eb75": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/observability.rs": { + "lines": { + "03e67545e1e0b0c7b0a93db79d88700719a5f15a27323b9e592946ee4494f800": 1, + "1c9dcf2fc567f20817abf13f64397cabccb4f1e745e45cc2869aad7595a05ecf": 1, + "2b5deaed23356fbb7ed5656b12dd38a7948b7d40a425ab2f3c5cefab24357f93": 1, + "a1b928c9f8d22ce6c13f5cbe90c8dd87e021139f89c98f66db99115ffda6039a": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/pack_trust.rs": { + "lines": { + "28d1aece644779fe2248c848c2f2c5fa60c1acb1301c9e996b4a1d913fc8721b": 1, + "4fcc1399744132b549e2f67209500913a591740979c2f6bff624dcbed9bf27b3": 1, + "5f72769d99c3212cbec5d3d411f95936818d87328a612e35f6aeefdf3b2fd23b": 1, + "cb475916cc43b9b17b747baaca4665740fd37b9df6acbfdba623232a3a4dd391": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/pack_trust_tests.rs": { + "lines": { + "8cc4b95f643fba37f72eaa4bb546d23376df79a5c36beb5d33386317d21a2d8e": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/package.rs": { + "lines": { + "07d1bf1f013c5f41a53f59717fd8a4fcc6c2f062207622cd9eaa88c1e363a468": 1, + "13b9cd665f4fdcab670b40efe4894fdfcda8ab55490a5cdabe4eabfb5fc41a61": 1, + "13bf0fab4ed4e9bb7fbfb9aff1bfc3a9802563721184e812024e106d9865a1af": 1, + "27c41444005ddc7fba3cb3ff6a924778cf77563714790012f8fccd7d4ef66e26": 1, + "30e3be2141b172e163c3685794acfa96613ef1fc8c57e8f685198ffcce8f9f13": 1, + "35292fbf424a5ef2a51c83392c351eb2ebba9c3eed747d5cd6b6c1e00c2bee52": 1, + "43bd51aa24365b6891a3458a8460555708346162578f3901c7bee5cd6e82cd61": 1, + "9055b17cf525296e6df7c56261887aa3ad596ff355ad8d15cdc144adc54bedd6": 1, + "a02b31e78b051b89c3838ab8d178bc5382ff2916594ff961046a42279f72335d": 1, + "b41fd2bbb621cf150a1d693170e6f320bc92206fc3b9abceea500058d0628693": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/pendant_hooks.rs": { + "lines": { + "182ae49492c26cfe84bf93082d4aa810b60acd9dc805db4c541a4821474487b1": 1, + "fcb0a90eb383e3fe068bdb8b0a7ac26de382a791dbc7d1d253c6422a656f5227": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/pendant_sync.rs": { + "lines": { + "57593cdbd9944fade16a5f65621d133aa90a2e4f247e30066b7df6cbe2f4ad31": 1, + "9f4a41aacb97011923015da797e311ad73061f48486c2af7885e90e7bc5075d1": 1, + "b1f67323317a9f9d124f921bd29bbde539112ae07faa2127a8d6fa640a22d38b": 1, + "dca76bae5de124afb895b13e1c8ff89d5dce189384aa8f429e6c43f23694845c": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/projection.rs": { + "lines": { + "a35e98f644788ab8b4b48732cb8903d37902f15edb494fd6874620976d0770f5": 1, + "d9d3e20ec25e06b0d150fcd97757fccac0d0f8c954d1751c90c471cc4771a189": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/quipu_credential.rs": { + "lines": { + "467612b2dfcdde1ab6e4276d405912dc20221fc28bd5b90ec2f315864c44de38": 1, + "85e17746b267344de4c180ba453d07e329d0fbbb71675d0996e9a4b5efcc8b93": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/quipu_mcp.rs": { + "lines": { + "45c896256b18415bf408cd5ae8836b531c91f5e87b568810aba2b4312a33c8b2": 1, + "7952cc1a865b715b6356ca37bca9ef274c5b46400ebcb7b632e9661f78fd7a97": 1, + "c42a1226a5cbe7f81ac2ec2a2a6353f18dbd97e82fe02481899097e344796ff5": 1, + "fcede175caa94a7c6d934fa7d8d0d45f61f6157e168cd0f91b6aa6ad0d0c27af": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/release_update.rs": { + "lines": { + "05d6b8baf339bd6e8a4b6f2401407f39e5f59f3643bb92bbb64e8b59cc0ac8b5": 1, + "1d23664c7995a3475ba623032056c4501e1bc0bd581f025facb4ed1f852a9f2c": 1, + "2a15f3a0fbcde03daa11dabf02e1dc0ec9bf186661b25dd5ca1ce417aafa6867": 1, + "2e3b926696d01b6a1dd4a0948fb14422fd1e4db5ae1f65011789d97c9fb482b5": 1, + "36d41ab848ca154128629545b6319f25da458cec8ab8ba188d600269dfae6fa1": 1, + "3af73e8beddff03793f7e545258886bb90857982983ee3b33e590d7fdb4eec2a": 1, + "91f23116673a01619170fd631110551da37bdaac56954079627d75098e831ccb": 1, + "a3588b25a69c117ebeed2f4fd41e0a2e486b6a45852fcc7934548ebdae04d248": 1, + "bb133ea94efe92ecad898a6297d89328e6c0767338c76d15688b9cf7eb68d8ba": 1, + "c18062150f299d8d8208a28ad166bc048d1d1f803b5741d35d7db41c0fdfffb1": 1, + "c6ff5fe46ea6aaa6c7878ca548f9ab510d0dd37c70b24e2ce54886478504be79": 1, + "cf47c710277560956efb348538400aa67bbf4cbfaffc8d4db5aff2620d6e64c9": 1, + "d6cbc4b104ee8781b26bbd795e771d70370b9465947764005a9c46d8d241a306": 1, + "e67e597067e9a07ade6d4a0a53df3e25cb5322bdfb46ab5eb04e167673550435": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/release_update/quipu.rs": { + "lines": { + "2c0eea76b7827df18d5978d9a70b3c0937c88777dc91333e94ba01deefca7f79": 1, + "52f3877bb1683edfba4c8a41bdea0d1bd299e8082745bd9a1ed55710282110aa": 1, + "716a5be755d47e74f4ff870d0df6c703170501c3915c91a68025b97e2b507b50": 1, + "825673d6e75b63d735f4205e2b70e24f21e8f9948b4c73637ee4c50015de3a42": 1, + "85864d8942f12286313411acacd6ebef23b2fcb7676c4faee83fec410f66d20d": 1, + "920871fb23a9b582ea0b08e5ef2f715f243b6b8f4b616f4d83c3499db2e26800": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/release_update/self_pair.rs": { + "lines": { + "277bb5f67aa6d74c2035bdcb67759f46ff9c6a084f264f12f8c8538074dcb57e": 1, + "2960543bc2b1a9e4ff626c1c6505f4e1102a1579589310133d40d6e97dc33386": 2, + "37cc2375cc0acc126558df6fb6423501db828080bf4e233aeb230e87eb672d4b": 1, + "457e3d295476b12e51c531943f1f58c530742748a561d12fcdaa1f9243a46e7e": 1, + "63e5b7d68ab750b4c38416e3ea7f826136fe6d5478b4732b6efe0b12310148f1": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "src/vocabulary.rs": { + "lines": { + "68bcfacbbbc30a470616f5de2e34f3e9160d873fce4161cd487817a57413c934": 1, + "a6ed744f06e42a0ac90a4dcc0c28b0ec3732b8b8c4dce098b2dff04fe2131753": 1, + "c2caafcbfc2bdc949f43ecc182468008ae3d840cbca5cee51f3b046c846bf3a2": 1, + "c4e6c19c10305b179174a3585f0daff7b468c0ea3029f3e3f7fc11f173d5443b": 1, + "ce7c72711b27af1730aeb1e4d700d7a398d6d1e00c3f09e7d4e9fe5477ff4464": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "tests/chaski_member_live.rs": { + "lines": { + "3877e42d591a66f920ffc7b311581b7884ee96272b93bf53e28a21aa9a7df644": 1, + "eb514e44540e5b7a21aa5a1c0e89080f9937cc8bcdd8aae25571d16df881384a": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "tests/cli.rs": { + "lines": { + "00a475a30704f78f27148ea17587d875993ffe097d6b7bc027a18cc5662dddc3": 1, + "027e7bb9ea72f9adff078c148ea5c7a3cc8f3b30a3e084eed4eafa031ce99d9c": 1, + "034b8c0061079a6fa863c1036808a949ef710bcab2ed8475215f884f30eca925": 1, + "0532fced6632d54a4fd659cc72158f05c82e79fed000e543113b7533d3c2e891": 1, + "0539c038f4acc91034cd5af7d9384ab24efd9c70711625db0d689c98225624c4": 1, + "07545fae5c9c52399c2fde0361a14fc9e8a555f08c86eca3ace4fa11e0e7ad5d": 1, + "0a2f7b0df1c97795d995ed336e0a36678832a37908bf96149d9dae2d44d326d5": 1, + "0bdff4da42707ef8e870b312d3816326349d270ad9d08902dc13fefcc665a580": 1, + "0e7d02c371cbc1be2f8ef982d52cc24acc0191ab87e4418827708af39eaf5d70": 1, + "131ac2612902cb0ddb023006f622960631521348899f4b66e1f7b9cacaaabba5": 1, + "1445350a75650b76a0dd9513348d26c417b8f65170d5ff73e909320097b67322": 1, + "150b96b52649f55049593531b892e03a1252f59ab6f52e1517cc53cf058531a8": 1, + "155b3d8f2a2d4ff4d1c9e2eb4444b7442d413d5aa9871d08b7168f72d8c2445f": 1, + "18ba2bafd52818b76ec74c2bad574176258b3e7ff0ddc2976c8093110069efb1": 2, + "1dffccba53ce1ec4dae4e8023ff41228afc0fe5ac0fe08880cf4c0d9dfb44f7d": 2, + "1ff68942ab13a4d59558b7666e24992cf8ba7aed75bff1af9cdd8a6eec557a36": 1, + "20fd39370de29959ad4277d61346ab04838b0783a123c3617f8fa33869799cc0": 1, + "21d16c940137bc86a2e637e64d009e485baca7df47f1093ddf09ab207dbd5ab8": 1, + "23e6f7e36299ec7a44d07ae680b463073ef6a845acd2feda266113d493389e3a": 4, + "251cc2b347316e2c3fe8458464dedf171edf3784c39feea33c6d4126a8090cc5": 2, + "265cf71fb508a76c36e2fff8be989071d4fec4cf8811b7a3dbb9e5f947e56ec1": 1, + "278e07879fe66dd5619fa59d8fee706c63a26850cc24c67cb0d44f0a7ec39f76": 1, + "28a858de8c8739da25a2988ad1027a036ab9a2d95fa1a01694aff855f8edb087": 1, + "28ae1bd1e1fd730d51f81ba11f6aecbd85ac3bd93026ac7fa8df587b0ffd58cf": 1, + "30e34a14e72ecf23a38150af17eabb07699a93dd937e4165153e007a55a03c72": 2, + "331fea0644bd5aab350833a9a8f928d7c2c5ae2f7394c89ec134bcaf243cf22f": 1, + "335d03ee3cffaea9c9f6f4dd5763ea12a2b5d9ce2fed355af9d0f16c50c2bfd8": 1, + "366929ed28d913a4c9bb81a66a6e27fdd1f0dfe49e48073742a85dc87dc54343": 1, + "3cef08dea8b7261b0c8a9b7bd1c2ca2f3a29c3872f35d9a7bc8622a4f0be7951": 1, + "3d9c84081b61e134b14b2215f43ab7e840d1ef0bfc7262b179fdc939e78c8c8f": 1, + "40bceaf38294dea4f9447c4ee6ea9b76182de72fcd5c2a5ea39e6ac065578de5": 1, + "4373c215128ad7d047880001fa6868148b222d91fd370712475ce4e0141c2dc6": 1, + "43a47b33497bb33b428c5e7b7695eb964b789eee8ee27a363bdabe62c44e300a": 1, + "46f1cef87f82741defb022713efab82aac6c24a9f70f250be70b6b2a03eb3ca3": 1, + "49866e8eeb977a1879452bfc520530f7e8a8f46b729f95c1063e84e5bf52b86b": 1, + "49cbb86075fe5dce44309c112f1f8b5369c392722ff0275fde2b1a8111b2d1c0": 7, + "5460e7fb9520793b8e0b77c6f67a11440cc13b201b7fa8b5b9a2d5b916159822": 1, + "549946f40fcb39d8f69ef555a7b1c284996b1aac5f6044a294cdad686fb13232": 2, + "58a390e8365677da152b202026b4bee238ef5277ad2f6fef0f467debc67959c5": 1, + "58e04cbfe22f6c5a782f50a199fffe8e268fce4f683c37d77e1546687a80b118": 1, + "5efc974aca2750823a56f7a43ee5e01474cfc6cf8c56b43d815993bc6e9331fd": 1, + "62526146251366542a91ff502fe0ccf134780b9ba345b93811ebd8fea3b7a600": 1, + "6257102900bf91366a8898b4ba29ae44fef2a1d363ccce0e96fe863ba0080f7b": 1, + "6499d1b4602d056a3dc8aa9d3cf9a1d4ab5202d21d4030d6627e17b2b678e33e": 1, + "66f101e8ee22cf03b9a01123a934f699fc76fbf9c33cb690c3879502d7799bfa": 1, + "671897a82f87cdadb505f73d98189d8d959904e79108daf20590523d9a57bbac": 1, + "6897a9185b33a0b4a9b49a4824ee1885f1be77dcc58a47b57835f6426eb7a398": 1, + "6aafad05c98fb8f870f0d6348add945c4a217a401f0404c1696bb66b6be0d376": 1, + "715a72fdf203a46e9d375b07032735f2fdaabbe99450b6224b8e5f0e32f157b7": 1, + "7d2cbc61a8d3c4b75764950ee5093756866a7abe4a8f3923e1a1e3a38a35882a": 1, + "7e5d754b6c5f5d32c867b8ceddcbc7d8e74216078e5da20169b15f6d88fe7941": 1, + "7e641ed94354a72c24b35ea2af43589f731b2bbee6e4163af285d3e206298007": 1, + "7f6fff788e6fd5f5afeacf23e6ace485ba7320a5b8c900dd12b92a62da91dc72": 1, + "7fa2d8e07be03fceaf19b0a26deaa99b8441817fb7dbd0243a45fdf6682255ae": 1, + "81641e6422405c83bde8c12d5adeac221227d459132852f668cb3be781c64612": 1, + "83d7d857e52b610e602c899e45e231374cf4055b2966114ce26c911b76d88901": 1, + "864829f79567ae81d45523704a587c06ca471bf66ccbb14dc1da0997fcef6e89": 2, + "86b82e1ec98aec503b4812fca31a5955d87ad531cdac8aa2886c4560eeb2b6ab": 1, + "87a07c8af9e4757ba907a284a7dfd46944b9d9438a46cc5a88943f9e0034340c": 1, + "87b2f29ecc2d9c923c8bbe28182c13dec89910e9310a30ba6bb88bb9077c08c2": 1, + "88b1f58e8039c0cbe2508a4c1963e7f08de35b9bbfdb84ba25cc53f84aca8376": 1, + "88cd219dfffd3fff7bb0c0faa8db89608bad0d0b44d7f1c9daae58942d79e04f": 1, + "8a1339d62b5f9c95a946bae56dac5419d8ab092ba79e3233b7b64aa42bab7780": 1, + "8a99a0b470a3f4185f8e5f55fc88fc7fc580ca8a6289630c450b0864faa949ef": 1, + "8aefa7e1f3078deca831d357d2c31013cf323b840e9f23b60eb4a654081fc9de": 1, + "90eccdc9d4208f06e2da45efc70f86744b8017c8de41fc66c62fb0ed639b9551": 1, + "911deceb696519414e71e96456a9cb49a67f44a2eb1b6c64ea2cf396dc64cb49": 1, + "91470fda4083b6c613b521a58d8ea68c97a73701df0f87b84df66f0d34f41e40": 1, + "920871fb23a9b582ea0b08e5ef2f715f243b6b8f4b616f4d83c3499db2e26800": 1, + "96f2bd88d52cd808e8bffd3d73741c2bde620e397b38ffb526685a39a87a9755": 1, + "9c07825e042944a24b07a9a3bbce5e636af4066bbe61d4f3f411b5df2a80c559": 1, + "a0d42100936b5258c76566562caa65856eeb7d9c1da79b45e72cc0e1f5afc94d": 1, + "a4f45bedf8cd8a2b09d0828499e2825d708a2054ed0c7e5950197ae918cccbfc": 2, + "a51543202f8ba5f803e86302e7e4a6d67063a7be6265cb1127531550f7c5082d": 1, + "a860726a68b73e65192e1aa78b43d7e72816d274b3948dfbe97d989062426278": 1, + "a930597ce8720010eeb2542ffd226785c75498bba84c79734bc117aa83ca8a4b": 1, + "acb9ea142447e7b70df7cf1406c9c8a6669dd6271b6c424047fe9bd1b115fb49": 1, + "aeff4bba2192ee87c57ded46ecfeba64972487a393bd7f73bfc1cfaefd8b7428": 1, + "b3109b179e94ad12583f82dace9941db4790373102bae43803d931a2c96714bb": 1, + "bce9e96ae286a0d44948734561da0c42e0175c99d39d1c6bfa1428f8c71a6119": 1, + "c153625df64ec2e1bf9c77d0438c0810c27a075f706e271e98360500ddc82bf1": 1, + "c16ec09fb917266ba6cdf7acc2361fce0fc800654ea9903b2482880a2d3a6cea": 1, + "c46d543b654908801373fb4d4085914c7780e21f5f6451a5c205053042ffa4c3": 5, + "c81ed67b49ea36617910c542041c986caf55bddea6401477b444773c512a8c6e": 2, + "c8e5db7b39f123688ee372c27c793eb2769f4343874a44fd4c100961d7ed1558": 1, + "c91c7ea0187cc4d4a591b51565a66ce92c7ab03251695a33b2b13ff610098b9b": 1, + "ca4dee333501074de991095b1ed7ecc57c758973972f2ee450ef70afe1720325": 2, + "cf1dd986b81a17b58a78312d2f8a7516f017a8fa88357b80aa447d19535ff88b": 10, + "d1f8f6dfd23e1501f507497037e34a61eb162d8859aabcd2b3d95afd5cdcbdce": 1, + "d232e6eb2b32d1b4251410cdd5b4ff0a6796c4ef6bdbf9a08bf503b6dfd91a7f": 1, + "d4b0259a70021da8ab437e23d127e17f6e2ee79a79764d64573ee447cde7bb02": 1, + "dbfaa30db7d56a5ab2d2c101229d6a2b991a8f559e8d4b07ab001455cc1bb0af": 1, + "dd924eeb423dd349b80b626c9b94069a2830447d57ab9bad39c82c449b644a24": 1, + "de3fb1c8d653f68691c485c1d31864ee4f3650aaca73b6ff24ce69a59189afdf": 1, + "dedf7ca1db7bc703751c70f7a841ace9ccf4ae37e23e55e5e78bc8b61e2e9bb9": 1, + "e02d1ca4b65ab388b7d9c1482e74f56ff2caf97c6ec3d4788ffa76296665d9f3": 1, + "e0b5e3329c2c5c07a89c5aa9f734481b083a64048767a413e1270e40ac0297fa": 1, + "e13a6dea9a0f57053cf18dd5cc75253fbef1466ae68eb7c65b442d294dfbae65": 1, + "e3347665445042c5ec8a95f0f2759c38a1e06b7bf01435476b54fbb6ff54900e": 2, + "e7eba4ca1990e21a4000311e55fdbe21c71862c02ac56665048a76b519b733ad": 1, + "e809f537f0911a1b9c407ef127092b74735cca5858ebc9cd13c755fc40a071b5": 2, + "ec5b1c3584e7fa4070055a94874a2fede18162561f7aba8a0fa6e69036535400": 1, + "f4f5923d03d0081ee123e5610d38db5ac07a0e0996b0e4b9f12f9f68a507834d": 1, + "f56108b64ebd5219b0fb5c59abebd32b95b5b700a2563062b3ace5ca8d95180a": 1, + "f8cef9de7fa66797df4e7d30c47d38631403dea5e13b2d4e771ba76f240f5868": 1, + "fcc55c3de52ef22e09d368d363f0962f1afc3158f14fd8c48f2d7ef9c8b45fee": 1, + "fe0292f7de1eb2347ffd1ecb746ef6d8b04a0ecc3df4b82a6817e4fbc5e1b7d6": 1, + "fecc03fb6ec7ab6cde77654004193ab30d9bb48b7f97ebe0a34bcf1ec07c8333": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "tests/endpoint_trust_cli.rs": { + "lines": { + "2f08cd82e75208c1bf6ac4c08a51819c747690a7e8baf08a509087981715b333": 1, + "739621214fb14089991885612c05aa338833de3238a1b6eec079daa3f8c796fe": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "tests/external_quipu.rs": { + "lines": { + "02095c5319e3956c7605435f29a090ace636cdcc7f9d0a55d49bf068acee5d1e": 1, + "582c3d9e78262c992545a06fd392196f1ae7f4793f4d81db308d40ac90c01524": 1, + "7f39f57ea30f866d41b3365e22cca27f06bb56c2b9bd2bfa254b34661fe07e84": 1, + "90e40c1851ef518ad691c0121dc4bebc69f912c666249946bcb78ac1f99c9361": 1, + "916d783b5357d34447396e3c111214b5a3ffda15b310426b20385026030bad82": 1, + "e254246614142f6ef3d720acefdb893ffbe629534e94653ecac28bba0fe9446e": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "tests/fixtures/members/fixture-demo.toml": { + "lines": { + "01fbe08ae0b98630f861ef2940dbde3dbc17e895505001b7c89dd7c3b6f50998": 1, + "ae0df5b38d5d475d21f584e918de90ef707383882311c6e1bad3db58eae7bdc1": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "tests/fixtures/members/fixture-wheel.toml": { + "lines": { + "4e90c2ca8def218e916335cbfc3259e33d55a3b8c7ba6c518ba44fbc6daf8f60": 1, + "d38df5639f75ff9f23cadc2c42a2b3d9c87296d094ab4ad138dafdb6958f09f9": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "tests/fixtures/wheel-src/fixture_wheel/__init__.py": { + "lines": { + "065d7576ffeee0a5bc0156812820a266dead5b11ceb03e0c587f7212404edc49": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "tests/member_adapter.rs": { + "lines": { + "169b0e20a4be8752cc478c34a5926c3d0ba6486ac58f62f9ba17fe198d7a703a": 1, + "35701123fca9be93628536233a695e1a4d48105b6cbd6718d4a6b6b0298e1487": 1, + "3877e42d591a66f920ffc7b311581b7884ee96272b93bf53e28a21aa9a7df644": 1, + "495f52d63c51280ba129df428f3d8dbbec1716e0821dca177f4c4e06e8889808": 1, + "5ba3f945563f93d45737b9fc34e59ab2e81e0a802e53768a914cd37e8ab034ba": 1, + "a80d23bfe811619817d02fc88909c022c62f034404512e2d074cea52828546d9": 1, + "d19c504f44f1d3624a60357e70696f4ef38a821edfd9a12e87a91e5d9768f11d": 1, + "e016545391f3c090853e5ae64c8ee927facd30b362d11b74086a602153a68534": 1, + "eb514e44540e5b7a21aa5a1c0e89080f9937cc8bcdd8aae25571d16df881384a": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "tests/member_bump.rs": { + "lines": { + "0bdff4da42707ef8e870b312d3816326349d270ad9d08902dc13fefcc665a580": 1, + "37e9cdb5d44849e5c257b072ec9d525901bab1924d13fe8ee4981a5fa09ec439": 1, + "8771980621da357cd96100f45b5e90a46de0a94797138407eea9c78a0ae11f06": 1, + "b3a200819667f34d9741206a6f23fd9aaf36a686f72a00887e16f29d12514a42": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "tests/member_update_release.rs": { + "lines": { + "0bdff4da42707ef8e870b312d3816326349d270ad9d08902dc13fefcc665a580": 1, + "0fb9e3903c42dc2e9fb96541aa8eb8ddc2c7738c21e90b728c67f51782095199": 1, + "1d57e0a50b9fb78e08819d9e939c992a8a428cafb78abbec5dbba59a3d534537": 1, + "5472cab407f4567a62f421f2bbda31e90e9b1bbb1ae9608307a08a22282cc80b": 1, + "f8b33858e29b0c58e98243f0221c9f743d73ced6de83c04406f38537dd2a092b": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "tests/member_wheel.rs": { + "lines": { + "1c0cc93b68bbfaff5333bd29e5c8bbb5e4fe1ef5603c0dbf2b589d8c2141e1ec": 1, + "296e7bf8e09193e06aff467c9aa68bc14adb4df70b80bf2c6e63e674636df326": 1, + "3877e42d591a66f920ffc7b311581b7884ee96272b93bf53e28a21aa9a7df644": 1, + "5e29b6ded9304dabb4b731df23c67c5d4d255b8fd222c856e767cf3cc1eaeee6": 1, + "703b7b347a6b82eeec0b87bf7950970c83642cfac9b0e22eb7d70bdc6c0b9004": 1, + "c4c58c7e3e5b0999128aef4b634c76399d0c1bbb1a16d123c72dbbfcc16a9988": 2, + "eb514e44540e5b7a21aa5a1c0e89080f9937cc8bcdd8aae25571d16df881384a": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "tests/pendant_sync.rs": { + "lines": { + "223cd448c03b8a83e83c947fdd4170388c8831b187be372a825882398e6a1e39": 1, + "a5bf65699c6d9293f90b36c2d43c8a5484e816b110aed8bdbf14db94b06ab040": 1, + "ae0fb5f39b0e9fd8b617d4742f280d040d74f8ab22f58a383195329f61da74e1": 2, + "e7a405d5c3b4eb32862f3fb4c85da969da227bdf5b8a31fb4035875502f887c8": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "tests/seeds_member_live.rs": { + "lines": { + "003b0305c3be64da088ef2f691f6f84fb01d41866b7c07f6bda9c405c2f3d958": 1, + "3877e42d591a66f920ffc7b311581b7884ee96272b93bf53e28a21aa9a7df644": 1, + "eb514e44540e5b7a21aa5a1c0e89080f9937cc8bcdd8aae25571d16df881384a": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "tests/shuttle_member_live.rs": { + "lines": { + "3877e42d591a66f920ffc7b311581b7884ee96272b93bf53e28a21aa9a7df644": 1, + "eb514e44540e5b7a21aa5a1c0e89080f9937cc8bcdd8aae25571d16df881384a": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "tests/test_pendant_setup.py": { + "lines": { + "2298288ed222942a3e2d1b3da873aae5ad4854616a3a756337c2ad36036ace35": 1, + "572e3873220982611210d9223e45377ceb3746f1e384a74257ae5ea868af665c": 1, + "5ff85c528953e14e309b99c6f8931fe891bf40132fc1f7d0503112ae3a1739b8": 1, + "8729304f0f60f4341b1494eaf8f9d624e6a1e747c5d65eb04b831c19665dc594": 1, + "c716d7f632e325b410ab16135805253397c3acaf7967fd69e60e5273aa7757e7": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "tests/vocabulary.rs": { + "lines": { + "102987a91babe63f87bf668161288e856c626d2d02dad39dfa8d3a58c74d143a": 1, + "292f12633baa950e348bc493b7a8a76d7da019ae64d6010bd57b64f7e8120cb0": 1, + "3cc4475f3be9b331cd223de304eea24ea42dec8feb9b169689b134fb4ced21aa": 1, + "3e4e8d429159197765e83cbf8c8e0e8cf097729a16826b2d554feb3500e2201c": 1, + "5b54d27bf5c83d9ed6038e9006c42ea73f862f1277340dbee998cc3755a4e044": 1, + "916d783b5357d34447396e3c111214b5a3ffda15b310426b20385026030bad82": 1, + "b236665b2e82015bfe5cbc0706ddc44b3bf290d346b8533578300ae47d64c538": 1, + "dc1f7733c937ce5b58da009322cda354f98800e014f74b3558e3113df2105bef": 1, + "e254246614142f6ef3d720acefdb893ffbe629534e94653ecac28bba0fe9446e": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + }, + "tests/yupana_release_live.rs": { + "lines": { + "3877e42d591a66f920ffc7b311581b7884ee96272b93bf53e28a21aa9a7df644": 1, + "eb514e44540e5b7a21aa5a1c0e89080f9937cc8bcdd8aae25571d16df881384a": 1 + }, + "reason": "Explicit command/library ABI, state/environment/configuration/provenance identity, workflow/archive identity or compatibility/negative-test control." + } + }, + "version": 1 +} diff --git a/docs/demos/tambo-branding/README.md b/docs/demos/tambo-branding/README.md new file mode 100644 index 0000000..e5550fa --- /dev/null +++ b/docs/demos/tambo-branding/README.md @@ -0,0 +1,17 @@ +# Tambo branding comparison + +The header and logo use a waystation motif; the footer retains the woven cords +and the stack diagram names Tambo. Each image was rendered at its SVG viewBox +size against light and dark backgrounds with animation paused at time zero. +A fresh isolated Chrome profile rendered local SVGs with HTTP(S) blocked. + +| Asset | Before (light / dark) | After (light / dark) | +|---|---|---| +| Header | [light](before/header-light.png) / [dark](before/header-dark.png) | [light](after/header-light.png) / [dark](after/header-dark.png) | +| Logo | [light](before/logo-light.png) / [dark](before/logo-dark.png) | [light](after/logo-light.png) / [dark](after/logo-dark.png) | +| Footer | [light](before/footer-light.png) / [dark](before/footer-dark.png) | [light](after/footer-light.png) / [dark](after/footer-dark.png) | +| Stack loop | [light](before/stack-loop-light.png) / [dark](before/stack-loop-dark.png) | [light](after/stack-loop-light.png) / [dark](after/stack-loop-dark.png) | + +These are visual controls, not installation or deployment evidence. The +footer's visible cord artwork is unchanged; its accessible product name changes. +The stack diagram retains its dark panel in both surrounding themes. diff --git a/docs/demos/tambo-branding/after/footer-dark.png b/docs/demos/tambo-branding/after/footer-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..395c23b51df9d6dafac13c31c66d63b206c7dcf2 GIT binary patch literal 15522 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 G5By(a#~va8 literal 0 HcmV?d00001 diff --git a/docs/demos/tambo-branding/after/footer-light.png b/docs/demos/tambo-branding/after/footer-light.png new file mode 100644 index 0000000000000000000000000000000000000000..b07600c76c7c620d03ecbfa9ae3c781c1f26821c GIT binary patch literal 13856 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

9*-Dgn9z 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�F&ZpV2w!{mhs8AN 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 Y9($^=0H>OP1KM&Atf;9_DrXh+KQ)i^)Bpeg literal 0 HcmV?d00001 diff --git a/docs/demos/tambo-branding/after/header-light.png b/docs/demos/tambo-branding/after/header-light.png new file mode 100644 index 0000000000000000000000000000000000000000..5da1a5bad4545f3fddf285fe82445265a7290ac2 GIT binary patch literal 19466 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 literal 0 HcmV?d00001 diff --git a/docs/demos/tambo-branding/after/logo-dark.png b/docs/demos/tambo-branding/after/logo-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..1fa3525bebcc22745aa76d2844c54f3217d60a03 GIT binary patch literal 6007 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 UYUpRKe!~E?HT2Z0RqbB>2PEli)c^nh literal 0 HcmV?d00001 diff --git a/docs/demos/tambo-branding/after/logo-light.png b/docs/demos/tambo-branding/after/logo-light.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f6fafb146639d7cc4f5bd40a59f11dfff37f7d GIT binary patch literal 5732 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 z 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 G5By(a#~va8 literal 0 HcmV?d00001 diff --git a/docs/demos/tambo-branding/before/footer-light.png b/docs/demos/tambo-branding/before/footer-light.png new file mode 100644 index 0000000000000000000000000000000000000000..b07600c76c7c620d03ecbfa9ae3c781c1f26821c GIT binary patch literal 13856 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

9*-Dgn9z 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 TQ<`!>iBQ3{3^Z}j`=S2^9l0gf literal 0 HcmV?d00001 diff --git a/docs/demos/tambo-branding/before/header-light.png b/docs/demos/tambo-branding/before/header-light.png new file mode 100644 index 0000000000000000000000000000000000000000..261fd8ca6acd32f08d7de819fbaa792eead43819 GIT binary patch literal 18924 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 literal 0 HcmV?d00001 diff --git a/docs/demos/tambo-branding/before/logo-dark.png b/docs/demos/tambo-branding/before/logo-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..e90cf75d198673e96153ce704832e4c70ea354c8 GIT binary patch literal 9918 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 R&nE^#R!T{-THHAFe*oq#uQ>n! literal 0 HcmV?d00001 diff --git a/docs/demos/tambo-branding/before/logo-light.png b/docs/demos/tambo-branding/before/logo-light.png new file mode 100644 index 0000000000000000000000000000000000000000..0fa50c9f6dcb308df4e0b41e913acf1f5f632b6f GIT binary patch literal 9664 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 E04t_`SpWb4 literal 0 HcmV?d00001 diff --git a/docs/demos/tambo-branding/before/stack-loop-light.png b/docs/demos/tambo-branding/before/stack-loop-light.png new file mode 100644 index 0000000000000000000000000000000000000000..36c310fcf7fa9101d66e06617e1d397bcbc1c136 GIT binary patch literal 52811 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 P0dlgZtDnm{r-UW|A$a5j literal 0 HcmV?d00001 diff --git a/docs/stack/README-STANDARD.md b/docs/stack/README-STANDARD.md index 7235bfc..440d65d 100644 --- a/docs/stack/README-STANDARD.md +++ b/docs/stack/README-STANDARD.md @@ -1,7 +1,7 @@ -# The caboodle stack README standard +# The Tambo stack README standard One README shape and one theme for the six public repos of the stack: -**caboodle, quipu, camayoc, bobbin, yupana, desire-path.** +**Tambo, quipu, camayoc, bobbin, yupana, desire-path.** A stranger who lands on any of them should, within one screen, know what the tool is and whether it is for them. Within five minutes they should have @@ -41,10 +41,10 @@ lacks is omitted. It is never renamed and never moved. **Length budget: the first install command appears within the first 60 lines, and the README stays under 250 lines.** Anything that does not fit is a book page with a one-line link left behind. Today the first install appears at -line 49 in caboodle, 96 in bobbin, 108 in desire-path, 188 in yupana, 197 in +line 49 in Tambo, 96 in bobbin, 108 in desire-path, 188 in yupana, 197 in quipu, and 245 in camayoc (measured on `main`, 2026-09-24). -Caboodle is the one repo where installing *is* the first success. Its §3 and +Tambo is the one repo where installing *is* the first success. Its §3 and §4 may be a single `## Install and prove it` section. That is the only permitted merge. @@ -72,7 +72,7 @@ three lines. Leave one sentence and a link. "Know what a change will break before you make it", not "Live per-tenant code structure and a change-time policy engine". - **One emoji per repo, used in the tagline and nowhere else in the body.** It - is the repo's mark. Current marks, kept: caboodle 🧰, quipu 🪢, yupana 🧵; + is the repo's mark. Current marks, kept: Tambo 🧰, quipu 🪢, yupana 🧵; bobbin, camayoc and desire-path choose theirs in their rollout PRs. - **Emoji in headings: only the two shared closing sections**, `🧺 The stack` and `📜 License`, which are identical in every repo and so read as the @@ -80,7 +80,7 @@ three lines. Leave one sentence and a link. `🚀 Quick Start`. - **Badges: at most 3, in this order**: License, then CI status (or the latest release), then `stack-quipu`. The stack badge is the shared mark: - `https://img.shields.io/badge/stack-quipu-8B5E3C.svg`, linking to caboodle. + `https://img.shields.io/badge/stack-quipu-8B5E3C.svg`, linking to Tambo. No language, toolchain or vanity badges. The platform table carries that. quipu may add its DOI as a fourth badge, because citation is a real use. - **Footer**: `assets/footer.svg` under the license line if the repo has one. @@ -94,7 +94,7 @@ each book, and diverging from it is a review finding. ## 3. The shared stack block (identical everywhere) The canonical table is [docs/stack-table.md](../stack-table.md). Copy its complete -marked block verbatim into the nine stack READMEs: Caboodle, Quipu, Camayoc, +marked block verbatim into the nine stack READMEs: Tambo, Quipu, Camayoc, Bobbin, Yupana, Desire Path, Seeds, Shantytown and Rikuy. Keep the Shuttle row. Do not add a repository-specific self marker; every copy must remain byte-identical. diff --git a/docs/stack/README-TEMPLATE.md b/docs/stack/README-TEMPLATE.md index 84d5ae6..d1f5114 100644 --- a/docs/stack/README-TEMPLATE.md +++ b/docs/stack/README-TEMPLATE.md @@ -1,5 +1,5 @@ diff --git a/install.sh b/install.sh index 9b46f7c..2296a65 100755 --- a/install.sh +++ b/install.sh @@ -1,8 +1,8 @@ #!/bin/sh set -eu -# This compatibility URL also redirects after the repository rename. -repo=${TAMBO_REPOSITORY:-${CABOODLE_REPOSITORY:-scbrown/caboodle}} +# Use the canonical repository; retain the legacy environment override. +repo=${TAMBO_REPOSITORY:-${CABOODLE_REPOSITORY:-scbrown/tambo}} version=${TAMBO_VERSION:-${CABOODLE_VERSION:-}} install_dir=${TAMBO_INSTALL_DIR:-${CABOODLE_INSTALL_DIR:-${CARGO_HOME:-$HOME/.cargo}/bin}} diff --git a/justfile b/justfile index 1381026..db19873 100644 --- a/justfile +++ b/justfile @@ -1,4 +1,4 @@ -# caboodle — the whole kit +# Tambo — the stack installer default: @just --list @@ -16,6 +16,8 @@ verify plan="caboodle-plan.toml": cargo run -- verify --plan "{{plan}}" check: + python3 scripts/check-product-name.py + python3 scripts/test-product-name.py sh -n scripts/install.sh scripts/check-release-assets.sh scripts/test-release-install.sh scripts/check-crate-version.sh scripts/setup-environment.sh scripts/build-stack-packs.sh cargo fmt --check cargo clippy --all-targets --all-features -- -D warnings diff --git a/packs/src/stack-map.ttl b/packs/src/stack-map.ttl index 4b020b4..6724909 100644 --- a/packs/src/stack-map.ttl +++ b/packs/src/stack-map.ttl @@ -6,12 +6,12 @@ # ── The stack map ─────────────────────────────────────────────────────────── # What each tool IS and how the pieces relate. Facts true at write time: # roles and repository locations, not versions or health — those decay, and -# caboodle's verify proofs exist to measure them live instead. +# Tambo's verify proofs exist to measure them live instead. stack:caboodle a caboodle:StackComponent ; - rdfs:label "caboodle" ; + rdfs:label "tambo" ; rdfs:comment "The whole kit — an AI-installable install wizard that installs the stack, proves it works with paired negative controls, and watches it run." ; - caboodle:repository ; + caboodle:repository ; caboodle:language "Rust" ; caboodle:installs stack:quipu, stack:camayoc, stack:bobbin, stack:yupana, stack:shantytown ; caboodle:observes stack:prometheus . @@ -63,5 +63,5 @@ stack:creel a caboodle:StackComponent ; stack:prometheus a caboodle:StackComponent ; rdfs:label "prometheus" ; - rdfs:comment "Every tool's metrics, consolidated. Caboodle's third proof: observable means Prometheus actually scrapes each tool's declared exporter." ; + rdfs:comment "Every tool's metrics, consolidated. Tambo's third proof: observable means Prometheus actually scrapes each tool's declared exporter." ; caboodle:roleInStack "observability" . diff --git a/packs/src/stack-operations.ttl b/packs/src/stack-operations.ttl index f54588c..f19c62b 100644 --- a/packs/src/stack-operations.ttl +++ b/packs/src/stack-operations.ttl @@ -53,9 +53,9 @@ stack:creel stack:caboodle caboodle:buildCommand "just check" ; - caboodle:installMethod "curl -fsSL https://raw.githubusercontent.com/scbrown/caboodle/main/scripts/install.sh | sh (prebuilt release binary, sha256-verified)" ; + caboodle:installMethod "curl -fsSL https://raw.githubusercontent.com/scbrown/tambo/main/scripts/install.sh | sh (prebuilt release binary, sha256-verified)" ; caboodle:verifyProof "three proofs, not one: installed (version read-back), working (functional round-trip with a paired negative control), observable (Prometheus actually scrapes)" ; - caboodle:operationalNote "caboodle install --plan caboodle-plan.toml applies a reviewed plan; caboodle verify re-proves an installed stack" . + caboodle:operationalNote "tambo install --plan caboodle-plan.toml applies a reviewed plan; tambo verify re-proves an installed stack" . # Cross-cutting: how knowledge itself moves through the stack. stack:quipu caboodle:knowledgeFlow diff --git a/packs/stack-map/pendant/export.nt b/packs/stack-map/pendant/export.nt index 99d3e30..b3749d8 100644 --- a/packs/stack-map/pendant/export.nt +++ b/packs/stack-map/pendant/export.nt @@ -7,7 +7,7 @@ "retrieval index" . . "The whole kit — an AI-installable install wizard that installs the stack, proves it works with paired negative controls, and watches it run." . - "caboodle" . + "tambo" . . . . @@ -15,7 +15,7 @@ . "Rust" . . - . + . . "The knot-keeper: bootstrap ontology, knowledge ingress discipline, and knowledge-pack production. Owns what facts MEAN and how they earn their way into the graph; runs the governed RML executor for structured sources." . "camayoc" . @@ -30,7 +30,7 @@ . "browser harness" . . - "Every tool's metrics, consolidated. Caboodle's third proof: observable means Prometheus actually scrapes each tool's declared exporter." . + "Every tool's metrics, consolidated. Tambo's third proof: observable means Prometheus actually scrapes each tool's declared exporter." . "prometheus" . "observability" . . diff --git a/packs/stack-map/pendant/manifest.json b/packs/stack-map/pendant/manifest.json index 653341d..c9b55c0 100644 --- a/packs/stack-map/pendant/manifest.json +++ b/packs/stack-map/pendant/manifest.json @@ -1 +1 @@ -{"canonicalization":"RDFC-1.0","created_at":"2026-10-14T06:11:32Z","files":{"graph":"export.nt","shapes":"shapes.ttl","turtle_view":null},"graph_hash":"sha256:1313fb139aa9e473e7eccce0a89384fbd353f151e5442d11c26f5dabe416f736","pack_dir":"pendant","parent_share":null,"producer":{"name":"quipu","version":"0.13.0"},"schema":"https://github.com/scbrown/quipu/share-manifest/v1","scope":{"kind":"graph","value":"https://caboodle.dev/graph/stack-map"},"shapes_hash":"sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","share_id":"sha256:d642306e0071aa8dd82e22d0bff55a0021edc233ad2fe90cc62582bcf6eeb5eb","store_id":"urn:uuid:9ce55c5d-24e1-453e-9487-11fabf1482ab","tx_anchor":2} +{"canonicalization":"RDFC-1.0","created_at":"2026-10-21T04:01:47Z","files":{"graph":"export.nt","shapes":"shapes.ttl","turtle_view":null},"graph_hash":"sha256:256478dfe594732616c8ba48c9ee19fd94ac81f2647607d8bcddea7304a66624","pack_dir":"pendant","parent_share":null,"producer":{"name":"quipu","version":"0.15.0"},"schema":"https://github.com/scbrown/quipu/share-manifest/v1","scope":{"kind":"graph","value":"https://caboodle.dev/graph/stack-map"},"shapes_hash":"sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","share_id":"sha256:ccf5269d239a5b48c4fd3544354cf1517b18d03311089677547fecfb153e42c7","store_id":"urn:uuid:a90bdbce-c103-4d8d-9650-cf73ae02400f","tx_anchor":2} diff --git a/packs/stack-map/pendant/manifest.ttl b/packs/stack-map/pendant/manifest.ttl index 5ce09fe..a462c64 100644 --- a/packs/stack-map/pendant/manifest.ttl +++ b/packs/stack-map/pendant/manifest.ttl @@ -5,16 +5,16 @@ @prefix xsd: . @prefix quipu: . - a dcat:Dataset, prov:Entity ; - dct:identifier "sha256:d642306e0071aa8dd82e22d0bff55a0021edc233ad2fe90cc62582bcf6eeb5eb" ; - prov:generatedAtTime "2026-10-14T06:11:32Z"^^xsd:dateTime ; + a dcat:Dataset, prov:Entity ; + dct:identifier "sha256:ccf5269d239a5b48c4fd3544354cf1517b18d03311089677547fecfb153e42c7" ; + prov:generatedAtTime "2026-10-21T04:01:47Z"^^xsd:dateTime ; prov:wasAttributedTo [ a prov:SoftwareAgent ; - dct:title "quipu" ; quipu:version "0.13.0" ] ; + dct:title "quipu" ; quipu:version "0.15.0" ] ; dcat:distribution [ a dcat:Distribution ; dcat:mediaType "application/n-triples" ; dcat:downloadURL ; spdx:checksum [ a spdx:Checksum ; spdx:algorithm spdx:checksumAlgorithm_sha256 ; - spdx:checksumValue "1313fb139aa9e473e7eccce0a89384fbd353f151e5442d11c26f5dabe416f736" ] ], + spdx:checksumValue "256478dfe594732616c8ba48c9ee19fd94ac81f2647607d8bcddea7304a66624" ] ], [ a dcat:Distribution ; dcat:mediaType "text/turtle" ; dcat:downloadURL ; spdx:checksum [ a spdx:Checksum ; spdx:algorithm spdx:checksumAlgorithm_sha256 ; diff --git a/packs/stack-operations/pendant/export.nt b/packs/stack-operations/pendant/export.nt index 4781a8d..6d19907 100644 --- a/packs/stack-operations/pendant/export.nt +++ b/packs/stack-operations/pendant/export.nt @@ -4,8 +4,8 @@ "just test" . "bobbin indexes a fixture and search returns it" . "just check" . - "curl -fsSL https://raw.githubusercontent.com/scbrown/caboodle/main/scripts/install.sh | sh (prebuilt release binary, sha256-verified)" . - "caboodle install --plan caboodle-plan.toml applies a reviewed plan; caboodle verify re-proves an installed stack" . + "curl -fsSL https://raw.githubusercontent.com/scbrown/tambo/main/scripts/install.sh | sh (prebuilt release binary, sha256-verified)" . + "tambo install --plan caboodle-plan.toml applies a reviewed plan; tambo verify re-proves an installed stack" . "three proofs, not one: installed (version read-back), working (functional round-trip with a paired negative control), observable (Prometheus actually scrapes)" . "just check" . "trunk-based, straight to main; quality gates are the only gate; never force-push main" . diff --git a/packs/stack-operations/pendant/manifest.json b/packs/stack-operations/pendant/manifest.json index 4edf858..d95980d 100644 --- a/packs/stack-operations/pendant/manifest.json +++ b/packs/stack-operations/pendant/manifest.json @@ -1 +1 @@ -{"canonicalization":"RDFC-1.0","created_at":"2026-10-14T06:11:33Z","files":{"graph":"export.nt","shapes":"shapes.ttl","turtle_view":null},"graph_hash":"sha256:33e81d931820da7227d04182072e04d51da1e770f9199b66a058d68cc147d44c","pack_dir":"pendant","parent_share":null,"producer":{"name":"quipu","version":"0.13.0"},"schema":"https://github.com/scbrown/quipu/share-manifest/v1","scope":{"kind":"graph","value":"https://caboodle.dev/graph/stack-operations"},"shapes_hash":"sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","share_id":"sha256:22299cef86ce042f8e57864ec9021875355d89ce17a1d94a6721e9e454995221","store_id":"urn:uuid:9ce55c5d-24e1-453e-9487-11fabf1482ab","tx_anchor":4} +{"canonicalization":"RDFC-1.0","created_at":"2026-10-21T04:01:47Z","files":{"graph":"export.nt","shapes":"shapes.ttl","turtle_view":null},"graph_hash":"sha256:f275619fd299e9f469e88c143d120d6b253d24fafec3544bbac400845b5c4bc0","pack_dir":"pendant","parent_share":null,"producer":{"name":"quipu","version":"0.15.0"},"schema":"https://github.com/scbrown/quipu/share-manifest/v1","scope":{"kind":"graph","value":"https://caboodle.dev/graph/stack-operations"},"shapes_hash":"sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","share_id":"sha256:b2c7962bd0198f0e683e4385c93894211dc861bec81ff2d4d35a2b652d8e73f4","store_id":"urn:uuid:a90bdbce-c103-4d8d-9650-cf73ae02400f","tx_anchor":4} diff --git a/packs/stack-operations/pendant/manifest.ttl b/packs/stack-operations/pendant/manifest.ttl index f4c7d01..0bd61ca 100644 --- a/packs/stack-operations/pendant/manifest.ttl +++ b/packs/stack-operations/pendant/manifest.ttl @@ -5,16 +5,16 @@ @prefix xsd: . @prefix quipu: . - a dcat:Dataset, prov:Entity ; - dct:identifier "sha256:22299cef86ce042f8e57864ec9021875355d89ce17a1d94a6721e9e454995221" ; - prov:generatedAtTime "2026-10-14T06:11:33Z"^^xsd:dateTime ; + a dcat:Dataset, prov:Entity ; + dct:identifier "sha256:b2c7962bd0198f0e683e4385c93894211dc861bec81ff2d4d35a2b652d8e73f4" ; + prov:generatedAtTime "2026-10-21T04:01:47Z"^^xsd:dateTime ; prov:wasAttributedTo [ a prov:SoftwareAgent ; - dct:title "quipu" ; quipu:version "0.13.0" ] ; + dct:title "quipu" ; quipu:version "0.15.0" ] ; dcat:distribution [ a dcat:Distribution ; dcat:mediaType "application/n-triples" ; dcat:downloadURL ; spdx:checksum [ a spdx:Checksum ; spdx:algorithm spdx:checksumAlgorithm_sha256 ; - spdx:checksumValue "33e81d931820da7227d04182072e04d51da1e770f9199b66a058d68cc147d44c" ] ], + spdx:checksumValue "f275619fd299e9f469e88c143d120d6b253d24fafec3544bbac400845b5c4bc0" ] ], [ a dcat:Distribution ; dcat:mediaType "text/turtle" ; dcat:downloadURL ; spdx:checksum [ a spdx:Checksum ; spdx:algorithm spdx:checksumAlgorithm_sha256 ; diff --git a/scripts/check-product-name.py b/scripts/check-product-name.py new file mode 100644 index 0000000..1a9b5fd --- /dev/null +++ b/scripts/check-product-name.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 +"""Keep reviewed legacy contracts exact while rejecting new old-brand references.""" +# arming: ci just check +import argparse +from collections import Counter +import hashlib +import json +from pathlib import Path +import re +import subprocess + +PATTERN = re.compile('caboodle', re.IGNORECASE) +LEDGER = 'docs/compatibility/legacy-name-contracts.json' + + +def inventory(root): + result = {} + names = subprocess.check_output( + ['git', 'ls-files', '-z', '--cached', '--others', '--exclude-standard'], cwd=root + ).decode().split('\0') + for name in sorted(set(filter(None, names)) - {LEDGER}): + path = root / name + if not path.is_file() or path.is_symlink(): + continue + try: + text = path.read_text(encoding='utf-8') + except UnicodeDecodeError: + continue + matches = Counter( + hashlib.sha256(line.encode()).hexdigest() + for line in text.splitlines() if PATTERN.search(line) + ) + if matches: + result[name] = dict(sorted(matches.items())) + return result + + +def check(root, ledger): + document = json.loads(ledger.read_text()) + if document.get('version') != 1: + raise ValueError('unsupported compatibility inventory version') + contracts = document['files'] + if any(not entry.get('reason', '').strip() for entry in contracts.values()): + raise ValueError('every retained file needs a compatibility reason') + actual = inventory(root) + expected = {path: entry['lines'] for path, entry in contracts.items()} + changed = sorted(path for path in actual.keys() | expected.keys() + if actual.get(path) != expected.get(path)) + return changed, sum(sum(lines.values()) for lines in actual.values()) + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--root', type=Path, default=Path(__file__).resolve().parents[1]) + args = parser.parse_args() + changed, count = check(args.root, args.root / LEDGER) + if changed: + print('Unreviewed legacy-name inventory changes:') + print('\n'.join(changed)) + return 1 + print(f'Reviewed compatibility inventory: {count} references; no unclassified changes') + return 0 + + +if __name__ == '__main__': + raise SystemExit(main()) diff --git a/scripts/install.sh b/scripts/install.sh index 9b46f7c..2296a65 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -1,8 +1,8 @@ #!/bin/sh set -eu -# This compatibility URL also redirects after the repository rename. -repo=${TAMBO_REPOSITORY:-${CABOODLE_REPOSITORY:-scbrown/caboodle}} +# Use the canonical repository; retain the legacy environment override. +repo=${TAMBO_REPOSITORY:-${CABOODLE_REPOSITORY:-scbrown/tambo}} version=${TAMBO_VERSION:-${CABOODLE_VERSION:-}} install_dir=${TAMBO_INSTALL_DIR:-${CABOODLE_INSTALL_DIR:-${CARGO_HOME:-$HOME/.cargo}/bin}} diff --git a/scripts/setup-environment.sh b/scripts/setup-environment.sh index dfc29c2..9937744 100755 --- a/scripts/setup-environment.sh +++ b/scripts/setup-environment.sh @@ -83,7 +83,7 @@ QUIPU_PID=$! ( # Prebuilt, sha256-verified release binary — seconds, not a cargo build. have caboodle || curl -fsSL \ - https://raw.githubusercontent.com/scbrown/caboodle/main/scripts/install.sh \ + https://raw.githubusercontent.com/scbrown/tambo/main/scripts/install.sh \ | sh >/dev/null 2>&1 || true ) & diff --git a/scripts/test-install-bootstrap.py b/scripts/test-install-bootstrap.py index 467dfc8..e28e25a 100644 --- a/scripts/test-install-bootstrap.py +++ b/scripts/test-install-bootstrap.py @@ -92,12 +92,12 @@ def assert_installed(self, names): self.assertTrue(os.access(self.root / 'installed' / name, os.X_OK)) def test_default_uses_compatibility_repository_and_legacy_release(self): - self.routes['https://api.github.com/repos/scbrown/caboodle/releases/latest'] = { + self.routes['https://api.github.com/repos/scbrown/tambo/releases/latest'] = { 'status': 200, 'body': '{"tag_name":"v0.2.23"}\n'} self.archive('caboodle', 'v0.2.23', ['caboodle']) self.run_installer() self.assert_installed(['caboodle']) - self.assertIn('https://api.github.com/repos/scbrown/caboodle/releases/latest', + self.assertIn('https://api.github.com/repos/scbrown/tambo/releases/latest', self.requests.read_text().splitlines()) def test_pinned_legacy_release(self): diff --git a/scripts/test-product-name.py b/scripts/test-product-name.py new file mode 100644 index 0000000..1150cb4 --- /dev/null +++ b/scripts/test-product-name.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +"""Exercise the real inventory against new branding leaks and retained contracts.""" +import importlib.util +import json +from pathlib import Path +import subprocess +import tempfile +import unittest + +spec = importlib.util.spec_from_file_location('product_name', Path(__file__).with_name('check-product-name.py')) +checker = importlib.util.module_from_spec(spec) +spec.loader.exec_module(checker) + + +class ProductName(unittest.TestCase): + def test_exact_contract_and_new_current_or_untracked_reference(self): + with tempfile.TemporaryDirectory() as temporary: + root = Path(temporary) + subprocess.run(['git', 'init', '-q', root], check=True) + (root / 'state.md').write_text('Keep .caboodle/state.json\n') + ledger = root / checker.LEDGER + ledger.parent.mkdir(parents=True) + ledger.write_text(json.dumps({'version': 1, 'files': { + name: {'reason': 'Existing state path', 'lines': lines} + for name, lines in checker.inventory(root).items() + }})) + self.assertEqual(checker.check(root, ledger)[0], []) + (root / 'README.md').write_text('# Caboodle\n') + self.assertEqual(checker.check(root, ledger)[0], ['README.md']) + (root / 'README.md').write_text('# Tambo\n') + self.assertEqual(checker.check(root, ledger)[0], []) + (root / 'state.md').write_text('Keep .caboodle/other.json\n') + self.assertEqual(checker.check(root, ledger)[0], ['state.md']) + + def test_reason_is_required(self): + with tempfile.TemporaryDirectory() as temporary: + root = Path(temporary) + subprocess.run(['git', 'init', '-q', root], check=True) + ledger = root / 'ledger.json' + ledger.write_text(json.dumps({'version': 1, 'files': {'fixture': {'lines': {}}}})) + with self.assertRaises(ValueError): + checker.check(root, ledger) + + +if __name__ == '__main__': + unittest.main() diff --git a/skills/caboodle/SKILL.md b/skills/caboodle/SKILL.md deleted file mode 100644 index 7e82c6f..0000000 --- a/skills/caboodle/SKILL.md +++ /dev/null @@ -1,157 +0,0 @@ ---- -name: caboodle -description: Install, verify, diagnose, resume, or update the Quipu-stack tool corpus with CABOODLE. Use when an agent or human wants a review-first guided installation of Quipu, Camayoc, Bobbin, Yupana, and Desire Path, needs to resume an interrupted CABOODLE interview or apply, or needs functional proof that the installed stack works. ---- - -# CABOODLE - -Use the local quickstart for a default install. Customized installs follow -interview → plan review → apply → verify. Use the same CLI in every harness. - -## Bootstrap and preflight - -For CABOODLE itself, prefer the reviewed checksummed release path documented in -`docs/book/src/installing.md`. A source install must pin a reviewed commit. - -1. If `caboodle` is absent and the request authorizes installation, install the public source with: - `cargo install --git https://github.com/scbrown/caboodle --locked`. - Otherwise stop and request authorization; bootstrapping CABOODLE is itself an - installation. -2. Prove the binary answers: `caboodle --version`. -3. Run `skills/caboodle/scripts/check-surface.sh "$(command -v caboodle)"` - when this skill directory is available. A failed surface check is a bootstrap - failure; do not continue with guessed commands. -4. For an existing or customized plan, run `caboodle doctor` before apply or - install. Without a plan doctor checks all tools, so it is not a prerequisite - for the default quickstart. It is read-only. Report every `FAIL` line with its fix and - stop until each is resolved; report `warn` lines to the operator. - -Do not print credentials or introduce private endpoints. Do not delete -`.caboodle/` to recover from an error: it contains the resumable interview and -last-proven state. - -## Default local install - -When installation is already authorized, use a persistent empty work directory -and run `caboodle quickstart`. It saves a retrieval plan, installs Quipu, Camayoc -and Bobbin, and verifies each with isolated functional controls. There is no -interview, issued token or running-server prerequisite. Recheck with -`caboodle verify`; keep `caboodle-plan.toml` and `.caboodle/` to resume. -Quickstart reuses an existing plan and never overwrites it. - -Remote access is advanced and opt-in: `QUIPU_SERVER` or a plan's `quipu_mcp` -selects authenticated remote verification. That path still requires an issued -credential, canonical permissions, and an accepted server probe. Never invent -or auto-mint an issued credential. Local signing-key enrollment is not an -installation prerequisite. - -The interview below is for customized profiles and intended-use contracts; -it is not required for the default single-user install. - -## Interview and plan review - -For a guided install, run: - -```sh -caboodle init --guided -``` - -Run from the same working directory throughout: default session, plan, and -state paths are relative. Before resuming, inspect `.caboodle/interview.toml` to -confirm the accepted answers. An older `caboodle-plan.toml` or state file is not -evidence that this interview completed. If custom paths or the original working -directory are unknown, stop and ask; do not search broadly or start a new -session that could fork the plan. - -If input ends, rerun the exact command. Accepted answers resume from -`.caboodle/interview.toml`; no install has happened. For automation with choices -already supplied, use `caboodle plan --profile kg|retrieval|code-intel|everything`. Crew plans may be -generated with `--profile crew --crew shantytown|creel|both|standalone`. - -The interview must elicit intended use, each desired crew member's theme/domain/ -role, and at least one question the finished ontology must answer. For an -unattended run, write the same reviewed schema to `caboodle-intent.toml` and run -`caboodle plan --intent caboodle-intent.toml`; do not substitute install flags -for the use interview. - -Read `caboodle-plan.toml` back to the operator. Confirm the selected profile, -tools, crew themes, and anticipated-question contracts. Never apply a -conversational answer directly: the plan file is the -review boundary. If the request did not already authorize installation, stop -after presenting the plan. Do not run `apply`, `install`, `verify`, or -`project-settings` at that boundary: verify performs functional writes and -updates state, while settings projection writes configuration artifacts. - -## Apply and verify - -After plan approval: - -```sh -caboodle apply -caboodle verify -caboodle verify-questions -``` - -`apply` proves each installed binary by version read-back. `verify` then runs an -isolated negative control, functional write/index, and reader-path proof for -each selected adapter. Both commands update `.caboodle/state.json` atomically, -so rerunning converges. - -Use `caboodle install` only as shorthand for apply + verify after the plan has -already been reviewed. Use `--skip-install` only when an external package -manager owns installation; it still requires version and functional proof. - -For a Creel or `both` plan, `apply` installs the checksum-pinned static browser -bundle, but verification additionally requires browser-owned capability -evidence: - -```sh -caboodle verify \ - --creel-doctor creel-doctor.json \ - --creel-admission creel-admission.json -``` - -Those files must come from Creel's doctor and governor interfaces. Never invent -them or translate a human-readable banner into them. Missing evidence, an -unknown required doctor check, stale/unknown policy signals, or a refusal -verdict must stop the install. - -`verify-questions` executes every planned `SELECT`/`ASK` through Quipu and -requires its expected marker. A query that runs but answers the wrong shape is -not a pass. - -Report the selected profile, each applied version, each verified adapter, and -the retained plan/state paths. Exit status or an “installed” banner alone is -not proof. - -When observability is requested, collect explicit `host:port` targets only for -selected tools whose versioned contract declares a metrics endpoint. Run -`caboodle render-observability`, then `caboodle validate-observability`, and -present all four generated artifacts for review. Rendering is not deployment -and is not evidence that Prometheus scraped a target. - -Applied and verified transitions queue automatically under -`.caboodle/episodes`. For bead snapshots, run `caboodle queue-br `. -Never put a token in a plan or queue: `flush-episodes` reads only -`QUIPU_AUTH_TOKEN`, requires HTTPS or explicit localhost, and must leave an -identical file pending on any ambiguous response. Report queued and delivered -counts separately. - -## Diagnose and resume - -- Interview paused at EOF: rerun `caboodle init --guided` with the same - `--session` and `--output` paths if custom paths were used. -- Apply failed before version read-back: keep the state file, fix the named - installer or PATH problem, and rerun `caboodle apply`. -- Apply succeeds with `--skip-install` but normal apply fails: the external - package manager boundary is the likely cause; state that as inferred until - its own logs prove it. -- Verify names an adapter: run `caboodle verify` again only after addressing - that adapter. Do not mark the stack healthy because another adapter passed. -- Plan parsing fails: repair or regenerate the plan; never bypass validation by - editing state. - -CABOODLE 0.1 has no `upgrade` subcommand. Do not invent one. Update the -`caboodle` binary through its documented install path, prove `--version`, then -rerun apply and verify against the existing reviewed plan. A changed tool -version clears its prior verified state until functional verification passes. diff --git a/skills/caboodle/agents/openai.yaml b/skills/caboodle/agents/openai.yaml deleted file mode 100644 index 8340418..0000000 --- a/skills/caboodle/agents/openai.yaml +++ /dev/null @@ -1,4 +0,0 @@ -interface: - display_name: "CABOODLE" - short_description: "Install and prove the AI tool corpus" - default_prompt: "Use $caboodle to create, review, install, and verify a CABOODLE stack plan." diff --git a/skills/caboodle/scripts/check-surface.sh b/skills/caboodle/scripts/check-surface.sh deleted file mode 100755 index 077f0c8..0000000 --- a/skills/caboodle/scripts/check-surface.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -set -eu - -caboodle_bin=${1:-caboodle} - -"$caboodle_bin" --version >/dev/null -for command in quickstart init plan apply verify install project-settings verify-questions render-observability validate-observability queue-br flush-episodes; do - "$caboodle_bin" "$command" --help >/dev/null -done - -"$caboodle_bin" init --help | grep -q -- '--guided' -"$caboodle_bin" plan --help | grep -q -- '--profile' -"$caboodle_bin" plan --help | grep -q -- '--intent' -"$caboodle_bin" apply --help | grep -q -- '--skip-install' -"$caboodle_bin" verify --help | grep -q -- '--state' -"$caboodle_bin" verify --help | grep -q -- '--creel-doctor' -"$caboodle_bin" verify --help | grep -q -- '--creel-admission' -"$caboodle_bin" install --help | grep -q -- '--creel-doctor' -"$caboodle_bin" install --help | grep -q -- '--creel-admission' -"$caboodle_bin" verify-questions --help | grep -q -- '--plan' - -printf '%s\n' 'caboodle skill surface: verified' diff --git a/skills/tambo/SKILL.md b/skills/tambo/SKILL.md index 1a3b724..73bc50f 100644 --- a/skills/tambo/SKILL.md +++ b/skills/tambo/SKILL.md @@ -5,9 +5,8 @@ description: Install, verify, diagnose, resume, or update the Quipu-stack tool c # Tambo -Tambo is the renamed Caboodle installer. The `caboodle` command and skill remain -compatibility entry points for the transition release. Keep the existing plan -and state paths below; renaming the command does not migrate user state. +Install, inspect, resume and verify the stack through the `tambo` CLI. +Preserve the plan and state paths below. Use the local quickstart for a default install. Customized installs follow interview → plan review → apply → verify. Use the same CLI in every harness. @@ -18,8 +17,7 @@ For Tambo itself, prefer the reviewed checksummed release path documented in `docs/book/src/installing.md`. A source install must pin a reviewed commit. 1. If `tambo` is absent and the request authorizes installation, install the public source with: - `cargo install --git https://github.com/scbrown/caboodle --bin tambo --locked`. - The compatibility repository URL remains valid through the repository rename. + `cargo install --git https://github.com/scbrown/tambo --rev --bin tambo --locked`. Otherwise stop and request authorization; bootstrapping Tambo is itself an installation. 2. Prove the binary answers: `tambo --version`. diff --git a/src/adapter.rs b/src/adapter.rs index 9e22e4b..8d6ff14 100644 --- a/src/adapter.rs +++ b/src/adapter.rs @@ -20,7 +20,7 @@ pub(crate) use manifest::{ pub trait Adapter { fn name(&self) -> ToolName; - /// Release identity reviewed and pinned by this Caboodle build. + /// Release identity reviewed and pinned by this Tambo build. fn desired_version(&self) -> String; fn install(&self) -> Result<()>; fn version(&self) -> Result; @@ -333,7 +333,7 @@ fn require_minimum_version(output: &str, minimum: (u64, u64, u64), program: &str }; if found < minimum { bail!( - "{program} {}.{}.{} is too old; CABOODLE requires at least {}.{}.{}", + "{program} {}.{}.{} is too old; Tambo requires at least {}.{}.{}", found.0, found.1, found.2, @@ -402,7 +402,7 @@ impl Adapter for Quipu { fn install(&self) -> Result<()> { if self.external.is_some() { - bail!("external Quipu is not owned by Caboodle; installation refused"); + bail!("external Quipu is not owned by Tambo; installation refused"); } preflight_owned_quipu_alias()?; match self.flavor { @@ -569,7 +569,7 @@ fn quipu_release_target_for(arch: &str, os: &str) -> Result<&'static str> { ("aarch64", "linux") => Ok("aarch64-unknown-linux-gnu"), ("x86_64", "macos") => Ok("x86_64-apple-darwin"), ("aarch64", "macos") => Ok("aarch64-apple-darwin"), - (arch, os) => bail!("Quipu has no checksummed CABOODLE release for {arch}-{os}"), + (arch, os) => bail!("Quipu has no checksummed Tambo release for {arch}-{os}"), } } @@ -909,7 +909,7 @@ impl Adapter for Bobbin { fs::write( root.path().join("fixture.rs"), format!( - "/// A unique CABOODLE verification routine.\npub fn {marker}() -> &'static str {{\n \"indexed\"\n}}\n" + "/// A unique Tambo verification routine.\npub fn {marker}() -> &'static str {{\n \"indexed\"\n}}\n" ), ) .context("write bobbin verification fixture")?; @@ -1022,7 +1022,7 @@ fn yupana_release_for(arch: &str, os: &str) -> Result<(&'static str, &'static st "x86_64-apple-darwin", "94b872a6cd3ea9de4bf4271b1d16fa569f1979b4d216e0fd307d88e1b66364a2", )), - _ => bail!("Yupana v{YUPANA_VERSION} has no checksummed CABOODLE release for {arch}-{os}"), + _ => bail!("Yupana v{YUPANA_VERSION} has no checksummed Tambo release for {arch}-{os}"), } } @@ -1239,7 +1239,7 @@ fn bobbin_release_target() -> Result<&'static str> { ("aarch64", "linux") => Ok("aarch64-unknown-linux-gnu"), ("x86_64", "macos") => Ok("x86_64-apple-darwin"), ("aarch64", "macos") => Ok("aarch64-apple-darwin"), - (arch, os) => bail!("bobbin has no CABOODLE release target for {arch}-{os}"), + (arch, os) => bail!("bobbin has no Tambo release target for {arch}-{os}"), } } diff --git a/src/apt_owned.rs b/src/apt_owned.rs index c060f4d..83190e8 100644 --- a/src/apt_owned.rs +++ b/src/apt_owned.rs @@ -1,10 +1,10 @@ -//! Tools installed by a system package manager are not CABOODLE's to replace. +//! Tools installed by a system package manager are not Tambo's to replace. //! //! A host can install a stack tool from the signed apt repository and keep its //! user path (for example `~/.local/bin/sd`) as a symlink to the packaged //! `/usr/bin/sd`. Replacing that path would turn the symlink into a regular //! file and silently shadow the package: apt would keep upgrading a binary -//! nobody runs. So before replacing or re-aliasing a binary, CABOODLE resolves +//! nobody runs. So before replacing or re-aliasing a binary, Tambo resolves //! the path and asks dpkg who owns the result. An owned binary is refused with //! the package name, and the package manager stays the only updater. //! diff --git a/src/doctor.rs b/src/doctor.rs index e7a76e2..f87fc6d 100644 --- a/src/doctor.rs +++ b/src/doctor.rs @@ -1,4 +1,4 @@ -//! Read-only preflight: what will stop `caboodle install` on this host, before +//! Read-only preflight: what will stop `tambo install` on this host, before //! anything is downloaded, built, or started. //! //! Every check here inspects the platform, PATH, the MCP registrations the agent @@ -133,11 +133,11 @@ fn prerequisite_hint(command: &str) -> &'static str { "cargo" => "install Rust from https://rustup.rs", "python3" => "install Python 3.9+ from your package manager", "git" | "curl" | "tar" | "bash" => "install it from your package manager", - _ => "install it and rerun `caboodle doctor`", + _ => "install it and rerun `tambo doctor`", } } -/// This build, as `caboodle --version` prints it. +/// This build, as `tambo --version` prints it. pub const SELF_VERSION: &str = concat!( "caboodle ", env!("CARGO_PKG_VERSION"), @@ -306,7 +306,7 @@ pub(crate) fn mcp_findings( None if work_dir => Finding::new( Level::Ok, format!("mcp {want}"), - format!("not registered here, as expected: registration is per repository, and this is the caboodle work directory. In each repository you want searchable, run: `{}`", mcp_add_command(want)), + format!("not registered here, as expected: registration is per repository, and this is the Tambo work directory. In each repository you want searchable, run: `{}`", mcp_add_command(want)), ), None => Finding::new( Level::Warn, @@ -563,7 +563,7 @@ fn check_tool(tool: ToolName, flavor: QuipuFlavor, path: Option<&std::ffi::OsStr Level::Warn, tool.as_str(), format!( - "installed ({}) differs from the reviewed {desired}; `caboodle check-updates` explains the drift", + "installed ({}) differs from the reviewed {desired}; `tambo check-updates` explains the drift", one_line(&installed) ), )), @@ -662,7 +662,7 @@ pub fn report(findings: &[Finding], installed: bool, output: &mut W) - if failures == 0 && installed { writeln!( output, - "doctor: installed and verified ({warnings} warning{plural}); recheck with `caboodle verify`" + "doctor: installed and verified ({warnings} warning{plural}); recheck with `tambo verify`" )?; } else if failures == 0 { writeln!( @@ -679,7 +679,7 @@ pub fn report(findings: &[Finding], installed: bool, output: &mut W) - }; writeln!( output, - "doctor: {earlier}{failures} blocker{} — fix the FAIL lines, then rerun `caboodle doctor`", + "doctor: {earlier}{failures} blocker{} — fix the FAIL lines, then rerun `tambo doctor`", if failures == 1 { "" } else { "s" } )?; } diff --git a/src/dp_alias.rs b/src/dp_alias.rs index e62aa23..f4013ae 100644 --- a/src/dp_alias.rs +++ b/src/dp_alias.rs @@ -155,7 +155,7 @@ pub fn verify(dp: Option<&Path>, db: Option<&Path>) -> Result { Existing::Ours => Ok(Outcome::AlreadySet), Existing::Other(target) => Ok(Outcome::KeptLocal(target)), Existing::Absent => bail!( - "Desire Path has no {FROM} command alias; `caboodle apply` sets {FROM} -> {TO} for plans with seeds and desire-path" + "Desire Path has no {FROM} command alias; `tambo apply` sets {FROM} -> {TO} for plans with seeds and desire-path" ), } } diff --git a/src/emission.rs b/src/emission.rs index 41cc073..4e59600 100644 --- a/src/emission.rs +++ b/src/emission.rs @@ -34,7 +34,7 @@ pub fn queue_transition( &queue, transition, tool, - &format!("CABOODLE {transition}: {tool} at {version}"), + &format!("Tambo {transition}: {tool} at {version}"), ) } diff --git a/src/engine.rs b/src/engine.rs index 965cc6e..06638e2 100644 --- a/src/engine.rs +++ b/src/engine.rs @@ -26,7 +26,7 @@ struct ImportResult { } /// What `apply` should do about an installed tool whose version is not the one -/// this Caboodle build reviewed (aegis-5ctwu3). +/// this Tambo build reviewed (aegis-5ctwu3). /// /// Split out as a pure function ON PURPOSE: the act it decides is a network /// download, so a test that drove `apply` end to end would be measuring GitHub @@ -83,7 +83,7 @@ pub fn apply(plan: &Plan, state_path: &Path, skip_install: bool) -> Result Result { match decide_convergence(&installed, &desired, false, skip_install) { - Convergence::Current => installed, - Convergence::RefuseSkipInstall => bail!( - "{} is installed at {installed} but this Caboodle build reviewed {desired}; \ + Convergence::Current => installed, + Convergence::RefuseSkipInstall => bail!( + "{} is installed at {installed} but this Tambo build reviewed {desired}; \ --skip-install refuses to converge it. Install {desired}, or drop \ --skip-install to let apply converge it.", name.as_str() ), - Convergence::Decline => { - println!( - "{}: NOT converged — installed {installed}, reviewed {desired}. \ + Convergence::Decline => { + println!( + "{}: NOT converged — installed {installed}, reviewed {desired}. \ Apply does not downgrade or replace an unrecognised version; \ - use `caboodle update-release` deliberately if that is what you want.", - name.as_str() - ); - installed - } - Convergence::Converge => { - eprintln!( - "{}: stale ({installed}); converging to reviewed {desired}", - name.as_str() - ); - adapter.install().with_context(|| { - format!("{} convergence to reviewed {desired}", name.as_str()) - })?; - let after = adapter.version().with_context(|| { - format!("{} version read-back after convergence", name.as_str()) - })?; - // The read-back is the proof, not the install's exit code. - if !adapter.is_current(&after) { - bail!( - "{} did not reach reviewed release {desired} (got {after}); \ - refusing to record it as applied", + use `tambo update-release` deliberately if that is what you want.", name.as_str() ); + installed + } + Convergence::Converge => { + eprintln!( + "{}: stale ({installed}); converging to reviewed {desired}", + name.as_str() + ); + adapter.install().with_context(|| { + format!("{} convergence to reviewed {desired}", name.as_str()) + })?; + let after = adapter.version().with_context(|| { + format!("{} version read-back after convergence", name.as_str()) + })?; + // The read-back is the proof, not the install's exit code. + if !adapter.is_current(&after) { + bail!( + "{} did not reach reviewed release {desired} (got {after}); \ + refusing to record it as applied", + name.as_str() + ); + } + println!("{}: converged {installed} -> {after}", name.as_str()); + after } - println!("{}: converged {installed} -> {after}", name.as_str()); - after } } - } Err(error) if !skip_install @@ -149,7 +149,7 @@ pub fn apply(plan: &Plan, state_path: &Path, skip_install: bool) -> Result Result Result } else { format!( "{} functional verification — VERSION SKEW: {version} is installed, \ - this Caboodle build reviewed and verifies against {desired}. The error \ + this Tambo build reviewed and verifies against {desired}. The error \ below is most likely that skew, not a broken tool. Converge with \ - `caboodle apply` (or `caboodle update`), then re-verify.", + `tambo apply` (or `tambo update`), then re-verify.", name.as_str() ) } @@ -539,7 +539,7 @@ pub fn verify(plan: &Plan, state_path: &Path, evidence: &CrewEvidence) -> Result Ok(state) } -/// Compare the running toolchain to the releases reviewed by this Caboodle +/// Compare the running toolchain to the releases reviewed by this Tambo /// build. Returns true only when every selected tool is current. pub(crate) fn reviewed_drift_status(installed: &str, desired: &str) -> &'static str { match crate::release_update::behind_reviewed(installed, desired) { diff --git a/src/hook_bundles.rs b/src/hook_bundles.rs index 1471b9c..d4578df 100644 --- a/src/hook_bundles.rs +++ b/src/hook_bundles.rs @@ -1,7 +1,7 @@ //! The Quipu stack's hook bundles, and the verification that st renders them. //! //! Each tool's hooks are declared as a bundle (schema `st.hook-bundle/1`) under -//! `hook-bundles/`. CABOODLE ships them; st owns rendering them into every +//! `hook-bundles/`. Tambo ships them; st owns rendering them into every //! emitted role file and checking them (aegis-u1ybxo, aegis-68j0ys). Here //! verification asks st's own check whether each bundle is configured. @@ -10,7 +10,7 @@ use std::process::Command; use anyhow::{bail, Context, Result}; use serde_json::Value; -/// The bundles CABOODLE ships, as `(name, bundle JSON)`. +/// The bundles Tambo ships, as `(name, bundle JSON)`. pub const BUNDLES: &[(&str, &str)] = &[ ("bobbin", include_str!("../hook-bundles/bobbin.json")), ( @@ -87,7 +87,7 @@ pub fn missing_executables(bundle: &str, home: Option<&std::path::Path>) -> Vec< /// registered copy and answers `unchanged` without re-rendering anything. /// /// When `st` is not installed this is a NOTE, not a failure: st is optional on -/// a host, and `caboodle verify` reports the bundles as unregistered there. A +/// a host, and `tambo verify` reports the bundles as unregistered there. A /// bundle st REFUSES, or an answer outside st's contract, fails: that is a /// defect in the shipped bundle or a changed contract, never something to /// skip. Returns one report line per bundle. @@ -123,7 +123,7 @@ pub fn register(bundles: &[(&str, &str)], st: &str) -> Result> { Err(error) if error.kind() == std::io::ErrorKind::NotFound => { return Ok(vec![format!( "NOT registered: `{st}` (shantytown) is not installed on this host. \ - Install it and rerun `caboodle apply`; verify reports the bundles until then" + Install it and rerun `tambo apply`; verify reports the bundles until then" )]); } Err(error) => { @@ -591,7 +591,7 @@ mod tests { } /// Against the host's real st (`cargo test -- --ignored live_register`): - /// registers every shipped bundle, exactly the step `caboodle apply` runs. + /// registers every shipped bundle, exactly the step `tambo apply` runs. /// It WRITES the host's st registry; a second run must print `unchanged` /// for every bundle (idempotence on the real st). #[test] @@ -603,7 +603,7 @@ mod tests { } /// Against the host's real st (`cargo test -- --ignored live_`): prints the - /// verdict so an operator can see what `caboodle verify` would say. + /// verdict so an operator can see what `tambo verify` would say. #[test] fn evidence_is_well_formed_and_fails_closed_without_its_source() { let mut seen = 0; diff --git a/src/main.rs b/src/main.rs index f210d21..cf8d878 100644 --- a/src/main.rs +++ b/src/main.rs @@ -160,7 +160,7 @@ enum Commands { #[arg(long)] host_profile: Option, }, - /// Report drift from the releases reviewed by this Caboodle build + /// Report drift from the releases reviewed by this Tambo build CheckUpdates { #[arg(short, long, default_value = "caboodle-plan.toml")] plan: PathBuf, diff --git a/src/model.rs b/src/model.rs index 4f953b0..4768c6f 100644 --- a/src/model.rs +++ b/src/model.rs @@ -292,7 +292,7 @@ pub struct Plan { pub quipu_db: Option, #[serde(default, skip_serializing_if = "QuipuFlavor::is_release")] pub quipu_flavor: QuipuFlavor, - /// Quipu is owned outside Caboodle; prove the executables selected by PATH. + /// Quipu is owned outside Tambo; prove the executables selected by PATH. #[serde(default, skip_serializing_if = "std::ops::Not::not")] pub external_quipu: bool, #[serde(default, skip_serializing_if = "Option::is_none")] @@ -482,7 +482,7 @@ impl InstallIntent { pub fn read(path: &Path) -> Result { if !path.exists() { bail!( - "no intent file at {}; run `caboodle init --guided` to answer the interview instead, or write one (see the \"Using caboodle\" chapter of docs/book)", + "no intent file at {}; run `tambo init --guided` to answer the interview instead, or write one (see the \"Using caboodle\" chapter of docs/book)", path.display() ); } @@ -594,7 +594,7 @@ impl Plan { pub fn read(path: &Path) -> Result { if !path.exists() { bail!( - "no plan at {}; run `caboodle init --guided` (or `caboodle plan`) first", + "no plan at {}; run `tambo init --guided` (or `tambo plan`) first", path.display() ); } @@ -621,7 +621,7 @@ impl Plan { ); } if self.external_quipu && self.quipu_flavor != QuipuFlavor::Release { - bail!("external_quipu cannot request a Caboodle build flavor"); + bail!("external_quipu cannot request a Tambo build flavor"); } if self.tools.is_empty() { bail!("plan selects no tools"); diff --git a/src/observability.rs b/src/observability.rs index 3679e4c..9b7127a 100644 --- a/src/observability.rs +++ b/src/observability.rs @@ -147,7 +147,7 @@ pub fn render(plan: &Plan, targets_path: &Path, output: &Path) -> Result<()> { output.join("dashboard.json"), serde_json::to_vec_pretty(&json!({ "schemaVersion": 39, - "title": "CABOODLE selected corpus", + "title": "Tambo selected corpus", "panels": panels }))?, )?; diff --git a/src/package.rs b/src/package.rs index 96b1c3c..49bcf51 100644 --- a/src/package.rs +++ b/src/package.rs @@ -2,7 +2,7 @@ //! //! On a host whose stack is delivered by a package manager, that manager is //! the only writer. On apt hosts that is the root unattended-upgrades lane; -//! automated caboodle runs never call apt or sudo. Caboodle still has to judge +//! automated caboodle runs never call apt or sudo. Tambo still has to judge //! such a tool, so it reads the package receipt (the package that owns the //! binary PATH runs, and its version) and compares the upstream version with //! the reviewed pin: current, ahead (never downgraded) or behind (the package diff --git a/src/quipu_credential.rs b/src/quipu_credential.rs index 9119c04..0807b68 100644 --- a/src/quipu_credential.rs +++ b/src/quipu_credential.rs @@ -3,7 +3,7 @@ use std::{env, fs, path::Path, process::Command}; use anyhow::{bail, Context, Result}; -const FIX: &str = "install the issued token with `install -d -m 700 \"$HOME/.config/quipu\" && install -m 400 /secure/issued-token \"$HOME/.config/quipu/token\"`; run `caboodle doctor`"; +const FIX: &str = "install the issued token with `install -d -m 700 \"$HOME/.config/quipu\" && install -m 400 /secure/issued-token \"$HOME/.config/quipu/token\"`; run `tambo doctor`"; fn check_file(home: &Path) -> Result<()> { let path = home.join(".config/quipu/token"); @@ -35,7 +35,7 @@ fn classify(code: u16) -> Result<()> { match code { 200..=299 => Ok(()), 401 => bail!("Quipu credential rejected by authenticated /shapes read; checked QUIPU_AUTH_TOKEN > QUIPU_AUTH_TOKEN_FILE > ~/.config/quipu/token; verify issuer and server; {FIX}"), - other => bail!("Quipu credential acceptance unproven: /shapes HTTP {other}; check server/connectivity; run `caboodle doctor`"), + other => bail!("Quipu credential acceptance unproven: /shapes HTTP {other}; check server/connectivity; run `tambo doctor`"), } } @@ -56,7 +56,7 @@ fn verify_current(server: &str) -> Result<()> { ))?; let control = read_status(server, None, "auth-negative-probe")?; if control != 401 { - bail!("Quipu credential acceptance unproven: unauthenticated /shapes control returned HTTP {control}, expected 401; run `caboodle doctor`"); + bail!("Quipu credential acceptance unproven: unauthenticated /shapes control returned HTTP {control}, expected 401; run `tambo doctor`"); } classify(read_status(server, Some(auth.path()), "caboodle-verify")?) } @@ -144,7 +144,7 @@ fn read_status(server: &str, auth: Option<&Path>, client: &str) -> Result { .output() .context("cannot run authenticated Quipu credential read")?; if !output.status.success() { - bail!("Quipu credential acceptance unproven: authenticated read transport failed; check server/connectivity; run `caboodle doctor`"); + bail!("Quipu credential acceptance unproven: authenticated read transport failed; check server/connectivity; run `tambo doctor`"); } Ok(String::from_utf8_lossy(&output.stdout) .trim() diff --git a/src/quipu_mcp.rs b/src/quipu_mcp.rs index e295ede..f330b09 100644 --- a/src/quipu_mcp.rs +++ b/src/quipu_mcp.rs @@ -439,12 +439,12 @@ pub fn verify(url: &str) -> Result> { let config = read_claude_config()?; let entries = quipu_entries(&config); match entries.iter().find(|(scope, _)| scope == "user scope") { - None => bail!("FAIL: no user-scope quipu MCP entry is registered; run `caboodle apply`"), + None => bail!("FAIL: no user-scope quipu MCP entry is registered; run `tambo apply`"), Some((_, entry)) if entry.get("headersHelper").is_none() => bail!( - "FAIL: the user-scope quipu MCP entry has no headersHelper, so MCP writes carry no bearer; run `caboodle apply`" + "FAIL: the user-scope quipu MCP entry has no headersHelper, so MCP writes carry no bearer; run `tambo apply`" ), Some((_, entry)) if entry != &desired => bail!( - "FAIL: the user-scope quipu MCP entry differs from the plan (expected {desired}, found {}); run `caboodle apply`", + "FAIL: the user-scope quipu MCP entry differs from the plan (expected {desired}, found {}); run `tambo apply`", redact(entry) ), Some(_) => {} diff --git a/src/release_update.rs b/src/release_update.rs index 8835f07..14301fe 100644 --- a/src/release_update.rs +++ b/src/release_update.rs @@ -99,7 +99,7 @@ fn names_for_platform( ("linux", "x86_64") => "x86_64-unknown-linux-gnu", ("macos", "x86_64") => "x86_64-apple-darwin", ("macos", "aarch64") => "aarch64-apple-darwin", - _ => bail!("Caboodle self-update has no published target for {os}/{arch}"), + _ => bail!("Tambo self-update has no published target for {os}/{arch}"), }; let archive = format!("caboodle-{tag}-{target}.tar.gz"); return Ok(( @@ -268,7 +268,7 @@ pub fn guard_reviewed_update(tool: ToolName, desired: &str) -> Result<()> { pub fn update(plan: &Plan, tool: ToolName, state_path: &Path, check_only: bool) -> Result<()> { plan.validate()?; if tool == ToolName::Quipu && plan.external_quipu { - bail!("external Quipu is not owned by Caboodle; release update refused"); + bail!("external Quipu is not owned by Tambo; release update refused"); } if !plan.tools.contains(&tool) { bail!("tool is not selected by the reviewed plan"); @@ -448,7 +448,7 @@ fn update_member( Ok(()) } -/// Update Caboodle itself from a published checksummed release. +/// Update Tambo itself from a published checksummed release. pub fn update_self(state_path: &Path, check_only: bool) -> Result<()> { update_binary(None, None, state_path, check_only, None, None) } @@ -737,7 +737,7 @@ fn update_binary( } let help = text(destination.to_str().unwrap(), &["update-release", "--help"])?; if !help.contains("--tool") { - bail!("updated Caboodle omitted release-update command contract"); + bail!("updated Tambo omitted release-update command contract"); } } Ok(()) @@ -885,7 +885,7 @@ mod tests { ] { assert!(names_for_platform(None, "v0.2.13", os, arch).is_err()); } - // Do not infer the other tools' asset layouts from Caboodle's layout. + // Do not infer the other tools' asset layouts from Tambo's layout. assert!(names_for_platform(Some(ToolName::Bobbin), "v0.2.13", "macos", "aarch64").is_err()); } #[test] diff --git a/src/release_update/quipu.rs b/src/release_update/quipu.rs index fd0b931..73f786a 100644 --- a/src/release_update/quipu.rs +++ b/src/release_update/quipu.rs @@ -36,7 +36,7 @@ fn owned_pair() -> Result<[PathBuf; 2]> { let home = env::var_os("CARGO_HOME") .map(PathBuf::from) .or_else(|| env::var_os("HOME").map(|p| PathBuf::from(p).join(".cargo"))) - .context("Quipu requires its Caboodle-owned cargo bin directory")?; + .context("Quipu requires its Tambo-owned cargo bin directory")?; let directory = home.join("bin").canonicalize()?; let mut paths = Vec::new(); for binary in ["quipu", "quipu-server"] { diff --git a/src/tool_bundles.rs b/src/tool_bundles.rs index 788887c..ec97745 100644 --- a/src/tool_bundles.rs +++ b/src/tool_bundles.rs @@ -2,10 +2,10 @@ //! //! The stack tools now ship their hook definitions themselves: //! ` hooks bundle` prints the tool's `st.hook-bundle/1`, versioned with -//! the tool. CABOODLE registers that bundle, so the hooks a host runs are the +//! the tool. Tambo registers that bundle, so the hooks a host runs are the //! ones its installed tool version declares. An older tool without the command //! (or one that prints something that is not its own bundle) falls back to the -//! copy CABOODLE ships in `hook-bundles/`. The source is reported either way. +//! copy Tambo ships in `hook-bundles/`. The source is reported either way. use serde_json::Value; @@ -14,7 +14,7 @@ use serde_json::Value; pub enum Source { /// ` hooks bundle` on this host. Tool, - /// The copy shipped in CABOODLE's `hook-bundles/`. + /// The copy shipped in Tambo's `hook-bundles/`. Shipped, } diff --git a/tests/cli.rs b/tests/cli.rs index febadb7..79e9c3e 100644 --- a/tests/cli.rs +++ b/tests/cli.rs @@ -802,7 +802,7 @@ fn brew_owned_desire_path_ahead_of_the_pin_is_read_not_refused() { // aegis-fv4 2026-10-16: the Mac's brew desire-path 0.7.1 (090ec88) is ahead // of the dp pin. `version()` refused any non-pinned identity, so the // package-owned "ahead" verdict could not read it back and the member failed - // with "dp version is not the CABOODLE-pinned revision". + // with "dp version is not the Tambo-pinned revision". let brew_body = r#"echo "$*" >> "$HOME/brew.log" case "$*" in "update --quiet") exit 0;; @@ -841,7 +841,7 @@ exit 1"#; "{stdout}\n{stderr}" ); assert!( - !format!("{stdout}{stderr}").contains("CABOODLE-pinned"), + !format!("{stdout}{stderr}").contains("Tambo-pinned"), "{stdout}\n{stderr}" ); let log = fs::read_to_string(root.path().join("brew.log")).unwrap_or_default(); @@ -2714,7 +2714,7 @@ fn missing_plan_points_at_the_interview() { .arg("install") .assert() .failure() - .stderr(predicate::str::contains("caboodle init --guided")); + .stderr(predicate::str::contains("tambo init --guided")); } /// aegis-70qlhs: a stale copy earlier on PATH must turn verify RED even when @@ -4372,7 +4372,20 @@ exit 2 .unwrap(); assert!(!bin.join("quipu").exists()); assert!(!bin.join("quipu-server").exists()); + // This fixture deliberately removes Quipu. Do not discover an installed + // host copy through the inherited PATH instead of exercising the missing pair. + for utility in [ + "cp", "chmod", "ln", "touch", "cat", "rm", "mkdir", "dirname", "basename", "sed", "grep", + "head", "sleep", + ] { + let source = std::env::split_paths(&std::env::var_os("PATH").unwrap()) + .map(|directory| directory.join(utility)) + .find(|candidate| candidate.is_file()) + .unwrap_or_else(|| panic!("fixture utility is missing: {utility}")); + fs::copy(source, bin.join(utility)).unwrap(); + } command(root.path(), &bin) + .env("PATH", &bin) .env("CABOODLE_BREW", bin.join("brew")) .arg("update") .assert() From 50c67c3eceda391fa297b7b612cf9485a4373799 Mon Sep 17 00:00:00 2001 From: Steve Brown Date: Fri, 23 Oct 2026 06:13:24 -0400 Subject: [PATCH 2/4] Point Tambo pack links at the canonical owner Rebuild native text shares; retain vocabulary, subjects, graph scopes and manifest schema identifiers. --- docs/compatibility/legacy-name-contracts.json | 12 ++++++------ packs/src/stack-map.ttl | 2 +- packs/src/stack-operations.ttl | 2 +- packs/stack-map/pendant/export.nt | 2 +- packs/stack-map/pendant/manifest.json | 2 +- packs/stack-map/pendant/manifest.ttl | 10 +++++----- packs/stack-operations/pendant/export.nt | 2 +- packs/stack-operations/pendant/manifest.json | 2 +- packs/stack-operations/pendant/manifest.ttl | 10 +++++----- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/compatibility/legacy-name-contracts.json b/docs/compatibility/legacy-name-contracts.json index ce03a47..3e28624 100644 --- a/docs/compatibility/legacy-name-contracts.json +++ b/docs/compatibility/legacy-name-contracts.json @@ -640,7 +640,6 @@ }, "packs/src/stack-map.ttl": { "lines": { - "13ee3c094941186fec724bca7231baf4781785966c5fe5b2c211ec7828b2b959": 1, "157f6fd0161372e1ee2f94aed010a54aa316b616f44d6bc3fd6576f9ca8c7f3c": 1, "18cb850492bf965a89c245fe7405c31bff2277b33a787437bfb7a9d76af6b9bd": 1, "20ca8c5f8c9dc5b8a53c17a94484f082544c72fa3c7202fa433146d805ae5259": 1, @@ -655,6 +654,7 @@ "570118b40ce452adfa1dbe3c68fb4266ea263518017f9a174511074caf1d38ce": 1, "5953d113ab8259cfd22473a5ed939588264a4b4ed7dba9361299af843c7d3346": 1, "6cdd65d688a68c7e505d60092d730405eb0830e30ce49211443081ee11d0ced7": 1, + "8cd6ffadab7eaeb0c05a56d6955ecae0ee819e2138f824de4ef05601a83a4d67": 1, "8d1b91e0c4cc1d51747c1309bde515501ba441a421fa3b89495fd74a2b463502": 1, "8f2af82b76bcf90ba4e9afa9b4c4a27cb4ab1fcc7bd3509b40fc48e641f7d5ba": 1, "9137fb73f8eaa85cdd53f5ace2a75a50a678c8870975618d0de46dc21962bce6": 1, @@ -683,7 +683,6 @@ "123bb9283b57964eeefac32d74e047f3c688ae17076f3fbb766f5b1e9ef2f485": 1, "16cee0b7c360efc7e93c8b205c3627ea93cdad27270f784f9a23d182d690866d": 1, "179c075df3b99b9c97c528367d320874f40687334317f02d3e5c948b559881d7": 1, - "23e08f46a86124ee0083ac1a6064cd05d8415ba9f089cf820ad8367d5534f942": 1, "365abc52ccf8b023fcd21fa306f8c130391894bb265bf32507c2ca111ea441ce": 1, "4f1d7e1d092afeb4aa5500f017e0fd972fc13f0b523dbf155cbb3e549a0341c0": 1, "52d5d9d3e94ce1e264e83f4aff70a3aa46d83706ff6d51dbb3bed686191c9dc8": 2, @@ -705,6 +704,7 @@ "dca93c5c63d9a43b765d979a04dded060f03dafe609e282e37c7b4dfc24cc6ba": 1, "df8249d7a6d7a359606f7f8ab5583f8c5b8a6fa2147687bc7841566528fd6251": 1, "f21e932b271da6a6978829be92f73e8f2ec5a417b1f517bfceac5853856b9ca9": 1, + "f4e1ad5e557a1591aae39b006b0637cb3bc580b58f02f2d835b014fd4e1e6704": 1, "f84bba92ef2c787cad6c418fbc1bf5c56140dd65fbdf48ba53047a3bb22b418c": 4 }, "reason": "Immutable vocabulary, graph and subject IRIs or verified text-share policy metadata. Product labels and repository links are canonical." @@ -717,7 +717,6 @@ "082d7d1510095ea144a49691ed6e9704de1e9b64dc62b954e4bf86b315fb5484": 1, "0f35125ad84ec3eec2d7fecd343ecbb110cd881fff88d282ba4598c8f2c2a213": 1, "0f8924bc5543d114da28ed7addc44f3e967d48936dfd39017016136f61ac2a05": 1, - "124a3dfefd376ecb833d27da9a1af0ca1dfc0158ea9a78575cf304c3e1ec3fb5": 1, "127c3c4cfab0c23673d561e1892fee37548c0ec8f60d920560fbb2c7e26db23f": 1, "1970672b830b8a648a1e9c7449adf49a95af7eaf11fdf7e4d5ab778715319f8e": 1, "1b95c7db4d91c41137ffaed6614752b8d411e4914d1196fe47e842d3a5e31e06": 1, @@ -751,6 +750,7 @@ "a21557f8ff8657963263f459fd3144de7d0bfbef706ea2a952762f481a052a8d": 1, "a4d10f1f722f73c93f2a8afb639ed480e6eb81bbbcf34bb926751b2e9db849b1": 1, "a9bbd23f6614661f7d3b2803a727fedb8800b95833b93ca515cced3018d4f9cf": 1, + "af8abc7c772969d1a2a208e97f391a02474794708ab65f66d70449f2bfbce8db": 1, "b88a654c9bc0c8e4f6f68e1764a41d35326dd685a3fa5677962889219ca07d19": 1, "bdf7541835b7cc911155fcf210f30de07d8190db50c67274572563def0e59394": 1, "c2d975ccebb1108fd60d0dc69a12c97768d3b46f6d2ee6bd5ba42713f0ccece1": 1, @@ -770,7 +770,7 @@ }, "packs/stack-map/pendant/manifest.json": { "lines": { - "b16ecf756f83f51015aeb7e35e57bde6b7e30ecdab4ee4654373bbb6e997011d": 1 + "70a949172e1f37fa6fd0e6f8bde908d0c8e275e3eabca4ac3767a5b336631b58": 1 }, "reason": "Immutable vocabulary, graph and subject IRIs or verified text-share policy metadata. Product labels and repository links are canonical." }, @@ -806,9 +806,9 @@ "c94f10fac318a57c20ae5f8d50789f7db7a6a69df70d7a522f3a9bbb1a129c7e": 1, "ca682abeb13d21e890bc40b68c2103bc740a916065db347c99c0bdcfe4f45039": 1, "cc881e0c85666b4cbf3f0ff42ae9602e627494e5e472d4d23c03597748e564e1": 1, + "d2da822fbfcb743b92daeb4e9b163a347c18b5dbe1467577f01343e429433cf4": 1, "dd5e4e8199baac82e9957b301d51e515d7e4ba438c26ab4583de957120f788a5": 1, "ddd8125076ebfbe31eea440879a84af95bae914890c8d22c4c534456fdd5633b": 1, - "e60b39894d91afcee775ed29c8c6508fc45cac4e92b2bfa19421de18ca94c7f9": 1, "e6decbc9b4dbabe8f14340b3e15547cf594fdd398fe1f333ecafea88680ddc51": 1, "f7101a6958a05b45effb739f84c78e2c7330ef4a8dc91d6f874d756c02b69f59": 1, "f9fdc2853014c30a000e6d77d90861f7628e23efcbe677e61673eced7c520d90": 1, @@ -818,7 +818,7 @@ }, "packs/stack-operations/pendant/manifest.json": { "lines": { - "55e39fb590e2c35a27cab88cf2a20e4c6a04aee0231442af903d7dfa2f99079d": 1 + "e92f41999f55f95b8ed9a13ad4d5982771786cebe81b654fef354684ad9cc75f": 1 }, "reason": "Immutable vocabulary, graph and subject IRIs or verified text-share policy metadata. Product labels and repository links are canonical." }, diff --git a/packs/src/stack-map.ttl b/packs/src/stack-map.ttl index 6724909..2321e0e 100644 --- a/packs/src/stack-map.ttl +++ b/packs/src/stack-map.ttl @@ -11,7 +11,7 @@ stack:caboodle a caboodle:StackComponent ; rdfs:label "tambo" ; rdfs:comment "The whole kit — an AI-installable install wizard that installs the stack, proves it works with paired negative controls, and watches it run." ; - caboodle:repository ; + caboodle:repository ; caboodle:language "Rust" ; caboodle:installs stack:quipu, stack:camayoc, stack:bobbin, stack:yupana, stack:shantytown ; caboodle:observes stack:prometheus . diff --git a/packs/src/stack-operations.ttl b/packs/src/stack-operations.ttl index f19c62b..7d7c938 100644 --- a/packs/src/stack-operations.ttl +++ b/packs/src/stack-operations.ttl @@ -53,7 +53,7 @@ stack:creel stack:caboodle caboodle:buildCommand "just check" ; - caboodle:installMethod "curl -fsSL https://raw.githubusercontent.com/scbrown/tambo/main/scripts/install.sh | sh (prebuilt release binary, sha256-verified)" ; + caboodle:installMethod "curl -fsSL https://raw.githubusercontent.com/intigraph/tambo/main/scripts/install.sh | sh (prebuilt release binary, sha256-verified)" ; caboodle:verifyProof "three proofs, not one: installed (version read-back), working (functional round-trip with a paired negative control), observable (Prometheus actually scrapes)" ; caboodle:operationalNote "tambo install --plan caboodle-plan.toml applies a reviewed plan; tambo verify re-proves an installed stack" . diff --git a/packs/stack-map/pendant/export.nt b/packs/stack-map/pendant/export.nt index b3749d8..7b2923f 100644 --- a/packs/stack-map/pendant/export.nt +++ b/packs/stack-map/pendant/export.nt @@ -15,7 +15,7 @@ . "Rust" . . - . + . . "The knot-keeper: bootstrap ontology, knowledge ingress discipline, and knowledge-pack production. Owns what facts MEAN and how they earn their way into the graph; runs the governed RML executor for structured sources." . "camayoc" . diff --git a/packs/stack-map/pendant/manifest.json b/packs/stack-map/pendant/manifest.json index c9b55c0..4432cce 100644 --- a/packs/stack-map/pendant/manifest.json +++ b/packs/stack-map/pendant/manifest.json @@ -1 +1 @@ -{"canonicalization":"RDFC-1.0","created_at":"2026-10-21T04:01:47Z","files":{"graph":"export.nt","shapes":"shapes.ttl","turtle_view":null},"graph_hash":"sha256:256478dfe594732616c8ba48c9ee19fd94ac81f2647607d8bcddea7304a66624","pack_dir":"pendant","parent_share":null,"producer":{"name":"quipu","version":"0.15.0"},"schema":"https://github.com/scbrown/quipu/share-manifest/v1","scope":{"kind":"graph","value":"https://caboodle.dev/graph/stack-map"},"shapes_hash":"sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","share_id":"sha256:ccf5269d239a5b48c4fd3544354cf1517b18d03311089677547fecfb153e42c7","store_id":"urn:uuid:a90bdbce-c103-4d8d-9650-cf73ae02400f","tx_anchor":2} +{"canonicalization":"RDFC-1.0","created_at":"2026-10-23T10:11:22Z","files":{"graph":"export.nt","shapes":"shapes.ttl","turtle_view":null},"graph_hash":"sha256:6735bbcce7b0816e6b82883d47b6b6f09be418163be1767925228dd63a05b23e","pack_dir":"pendant","parent_share":null,"producer":{"name":"quipu","version":"0.16.0"},"schema":"https://github.com/scbrown/quipu/share-manifest/v1","scope":{"kind":"graph","value":"https://caboodle.dev/graph/stack-map"},"shapes_hash":"sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","share_id":"sha256:1e8a818b408bf6cec382cd116400fa0348f493f4bdfcff1cfd25a0f6beb65285","store_id":"urn:uuid:92beca03-a167-493f-bb13-ea11568badec","tx_anchor":2} diff --git a/packs/stack-map/pendant/manifest.ttl b/packs/stack-map/pendant/manifest.ttl index a462c64..3bad629 100644 --- a/packs/stack-map/pendant/manifest.ttl +++ b/packs/stack-map/pendant/manifest.ttl @@ -5,16 +5,16 @@ @prefix xsd: . @prefix quipu: . - a dcat:Dataset, prov:Entity ; - dct:identifier "sha256:ccf5269d239a5b48c4fd3544354cf1517b18d03311089677547fecfb153e42c7" ; - prov:generatedAtTime "2026-10-21T04:01:47Z"^^xsd:dateTime ; + a dcat:Dataset, prov:Entity ; + dct:identifier "sha256:1e8a818b408bf6cec382cd116400fa0348f493f4bdfcff1cfd25a0f6beb65285" ; + prov:generatedAtTime "2026-10-23T10:11:22Z"^^xsd:dateTime ; prov:wasAttributedTo [ a prov:SoftwareAgent ; - dct:title "quipu" ; quipu:version "0.15.0" ] ; + dct:title "quipu" ; quipu:version "0.16.0" ] ; dcat:distribution [ a dcat:Distribution ; dcat:mediaType "application/n-triples" ; dcat:downloadURL ; spdx:checksum [ a spdx:Checksum ; spdx:algorithm spdx:checksumAlgorithm_sha256 ; - spdx:checksumValue "256478dfe594732616c8ba48c9ee19fd94ac81f2647607d8bcddea7304a66624" ] ], + spdx:checksumValue "6735bbcce7b0816e6b82883d47b6b6f09be418163be1767925228dd63a05b23e" ] ], [ a dcat:Distribution ; dcat:mediaType "text/turtle" ; dcat:downloadURL ; spdx:checksum [ a spdx:Checksum ; spdx:algorithm spdx:checksumAlgorithm_sha256 ; diff --git a/packs/stack-operations/pendant/export.nt b/packs/stack-operations/pendant/export.nt index 6d19907..5b17347 100644 --- a/packs/stack-operations/pendant/export.nt +++ b/packs/stack-operations/pendant/export.nt @@ -4,7 +4,7 @@ "just test" . "bobbin indexes a fixture and search returns it" . "just check" . - "curl -fsSL https://raw.githubusercontent.com/scbrown/tambo/main/scripts/install.sh | sh (prebuilt release binary, sha256-verified)" . + "curl -fsSL https://raw.githubusercontent.com/intigraph/tambo/main/scripts/install.sh | sh (prebuilt release binary, sha256-verified)" . "tambo install --plan caboodle-plan.toml applies a reviewed plan; tambo verify re-proves an installed stack" . "three proofs, not one: installed (version read-back), working (functional round-trip with a paired negative control), observable (Prometheus actually scrapes)" . "just check" . diff --git a/packs/stack-operations/pendant/manifest.json b/packs/stack-operations/pendant/manifest.json index d95980d..10637d0 100644 --- a/packs/stack-operations/pendant/manifest.json +++ b/packs/stack-operations/pendant/manifest.json @@ -1 +1 @@ -{"canonicalization":"RDFC-1.0","created_at":"2026-10-21T04:01:47Z","files":{"graph":"export.nt","shapes":"shapes.ttl","turtle_view":null},"graph_hash":"sha256:f275619fd299e9f469e88c143d120d6b253d24fafec3544bbac400845b5c4bc0","pack_dir":"pendant","parent_share":null,"producer":{"name":"quipu","version":"0.15.0"},"schema":"https://github.com/scbrown/quipu/share-manifest/v1","scope":{"kind":"graph","value":"https://caboodle.dev/graph/stack-operations"},"shapes_hash":"sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","share_id":"sha256:b2c7962bd0198f0e683e4385c93894211dc861bec81ff2d4d35a2b652d8e73f4","store_id":"urn:uuid:a90bdbce-c103-4d8d-9650-cf73ae02400f","tx_anchor":4} +{"canonicalization":"RDFC-1.0","created_at":"2026-10-23T10:11:23Z","files":{"graph":"export.nt","shapes":"shapes.ttl","turtle_view":null},"graph_hash":"sha256:eb3e4a01d0233e1a2b4781c88d893b7b7a5831df2237943ec848edec24cfa5a2","pack_dir":"pendant","parent_share":null,"producer":{"name":"quipu","version":"0.16.0"},"schema":"https://github.com/scbrown/quipu/share-manifest/v1","scope":{"kind":"graph","value":"https://caboodle.dev/graph/stack-operations"},"shapes_hash":"sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","share_id":"sha256:796da339b003af37389d902514408a29da1390ddba7b93e2508e9b64e252e60f","store_id":"urn:uuid:92beca03-a167-493f-bb13-ea11568badec","tx_anchor":4} diff --git a/packs/stack-operations/pendant/manifest.ttl b/packs/stack-operations/pendant/manifest.ttl index 0bd61ca..6fe203c 100644 --- a/packs/stack-operations/pendant/manifest.ttl +++ b/packs/stack-operations/pendant/manifest.ttl @@ -5,16 +5,16 @@ @prefix xsd: . @prefix quipu: . - a dcat:Dataset, prov:Entity ; - dct:identifier "sha256:b2c7962bd0198f0e683e4385c93894211dc861bec81ff2d4d35a2b652d8e73f4" ; - prov:generatedAtTime "2026-10-21T04:01:47Z"^^xsd:dateTime ; + a dcat:Dataset, prov:Entity ; + dct:identifier "sha256:796da339b003af37389d902514408a29da1390ddba7b93e2508e9b64e252e60f" ; + prov:generatedAtTime "2026-10-23T10:11:23Z"^^xsd:dateTime ; prov:wasAttributedTo [ a prov:SoftwareAgent ; - dct:title "quipu" ; quipu:version "0.15.0" ] ; + dct:title "quipu" ; quipu:version "0.16.0" ] ; dcat:distribution [ a dcat:Distribution ; dcat:mediaType "application/n-triples" ; dcat:downloadURL ; spdx:checksum [ a spdx:Checksum ; spdx:algorithm spdx:checksumAlgorithm_sha256 ; - spdx:checksumValue "f275619fd299e9f469e88c143d120d6b253d24fafec3544bbac400845b5c4bc0" ] ], + spdx:checksumValue "eb3e4a01d0233e1a2b4781c88d893b7b7a5831df2237943ec848edec24cfa5a2" ] ], [ a dcat:Distribution ; dcat:mediaType "text/turtle" ; dcat:downloadURL ; spdx:checksum [ a spdx:Checksum ; spdx:algorithm spdx:checksumAlgorithm_sha256 ; From 80c61cf058ab369f3965d9c1a1f110c939f45e3a Mon Sep 17 00:00:00 2001 From: Steve Brown Date: Fri, 23 Oct 2026 06:35:45 -0400 Subject: [PATCH 3/4] docs: preserve Homebrew caboodle command contract --- README.md | 4 ++-- docs/book/src/installation-reference.md | 8 ++++++-- docs/knowledge/repository-knowledge.json | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 902e798..0f5a4d8 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Install the Quipu stack from a plan you can review, then prove the selected tools work. Give an agent durable memory and code context, without assembling every tool by hand. Tambo is a CLI and [agent skill](skills/tambo/SKILL.md). -The compatibility command `tambo` remains available. +The compatibility command `caboodle` remains available. ## Install @@ -14,7 +14,7 @@ curl -fsSL https://raw.githubusercontent.com/intigraph/tambo/main/install.sh | s ``` Downloads the latest release, verifies its SHA-256 and version, and installs -`tambo` and `tambo` in `${CARGO_HOME:-$HOME/.cargo}/bin`. Requires `curl`, +`tambo` and `caboodle` in `${CARGO_HOME:-$HOME/.cargo}/bin`. Requires `curl`, `tar`, Python 3 and `sha256sum` or `shasum`. Add that directory to `PATH`. Published archives support Linux x86_64 and macOS arm64/x86_64; **Linux arm64 has no published archive**. Source builds, pinned versions, removal and the diff --git a/docs/book/src/installation-reference.md b/docs/book/src/installation-reference.md index f74eec6..5af0435 100644 --- a/docs/book/src/installation-reference.md +++ b/docs/book/src/installation-reference.md @@ -44,12 +44,16 @@ https://github.com/intigraph/tambo --tag vX.Y.Z --locked`). Either way, ```bash brew install scbrown/tap/caboodle -tambo --version +caboodle --version ``` +This formula currently installs only the `caboodle` compatibility command. +For a Homebrew install, use `caboodle` wherever the examples below use `tambo` +(for example, `caboodle quickstart` and `caboodle verify`). + Homebrew owns the installed command; Tambo still composes and verifies the stack. Update it with `brew upgrade scbrown/tap/caboodle`. To hold the installed -version, use `brew pin Tambo`; resume updates with `brew unpin Tambo`. +version, use `brew pin caboodle`; resume updates with `brew unpin caboodle`. The [tap channel guide](https://github.com/scbrown/homebrew-tap#caboodle-preview-channel) explains the opt-in nightly channel and switching back to stable. diff --git a/docs/knowledge/repository-knowledge.json b/docs/knowledge/repository-knowledge.json index 2e6ede6..ef6b529 100644 --- a/docs/knowledge/repository-knowledge.json +++ b/docs/knowledge/repository-knowledge.json @@ -8,7 +8,7 @@ "source": "README.md", "subject": "http://aegis.gastown.local/ontology/doc/tambo/README.md", "summary": "Tambo installs and verifies the knowledge-tool stack from a reviewable plan. The transition retains the caboodle command and existing plan/state paths; publication and installed verification remain separate.", - "source_sha256": "392c1176bd02e118bbc7e9f3e9849400e33a838363b4577a204293d3f3af9ad2", + "source_sha256": "8e7fe053df1662e5ac87ae4285d421db2d1abe3885734cc70a6c731834bef50f", "type": "Concept" }, { @@ -72,7 +72,7 @@ "source": "README.md", "subject": "http://aegis.gastown.local/ontology/doc/tambo/README.md", "summary": "Start with the local single-user quickstart and its verified-tool success checks before selecting remote service mode.", - "source_sha256": "392c1176bd02e118bbc7e9f3e9849400e33a838363b4577a204293d3f3af9ad2", + "source_sha256": "8e7fe053df1662e5ac87ae4285d421db2d1abe3885734cc70a6c731834bef50f", "properties": { "startHereOrder": 1, "glossaryTerm": "https://scbrown.github.io/quechua/ns#Tool" From db6b3f52508e609615acce00c078b861e8c6df76 Mon Sep 17 00:00:00 2001 From: Steve Brown Date: Fri, 23 Oct 2026 07:06:34 -0400 Subject: [PATCH 4/4] fix: retain reviewed alias and Homebrew references in inventory --- docs/compatibility/legacy-name-contracts.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/compatibility/legacy-name-contracts.json b/docs/compatibility/legacy-name-contracts.json index 3e28624..0a61fc4 100644 --- a/docs/compatibility/legacy-name-contracts.json +++ b/docs/compatibility/legacy-name-contracts.json @@ -85,9 +85,11 @@ }, "README.md": { "lines": { + "0a72892c82983c6bfa4534553f19ebdf33cc5cedd78b3312ee6ef4aa9a17e75e": 1, "35676aaad176b1ef84ebf6b7e2a4385680595bc28799f3e45f09e2259ddbbe7c": 1, "a1baf0b159f81bcfabf31f51dd50be756dad895f07581a4b08ef63383a872745": 1, "b2f9b0c55ee1ed7b69c84e2cc918fbba49d7202d821b111926fb58f138c5f8fc": 1, + "c88874bacd2c2691e49e7ff69ce26220321dd0d6268dd0a215ed66ca38e4cca5": 1, "cc8b0161d55a2b70fc766b60b09aa5775a559e0add51e9346fc1fc7612b2ce7b": 1 }, "reason": "Existing state/cache filename, command alias, environment, package, immutable vocabulary IRI or live compatibility anchor." @@ -162,12 +164,17 @@ "docs/book/src/installation-reference.md": { "lines": { "0d714756291eb50ab1bc0cb785e04e36c3c92537ac33658751cfcef9c0bfcaf7": 1, + "1db9d94f6ad572c31b0064f036037f4619c22235a5cd686aa21f509012511103": 1, "20a38aa80de5d1242f2b7320daa45d849c8a8adf2234f0791e12b7f0491b953b": 1, "4582e4025781d8afd3016c1b923af37425eababce38faa494deabdd7dbaee2df": 1, + "7ef33cb5760d671a1e71b55939e90ccf768afbcdf6bf0c2465fde6a57be45982": 1, "8558afef7784dffbb7b380d8a7c64913c488a305814c29e26c1075a398dac447": 1, + "a91a78bb7479979990e4e7abe116dab724315872279487cac4324b19eebd37a0": 1, "c6ccd5fa09c072a8f2f4256c21a9f653378413852ccd9264154ac8bd72da92b5": 1, "cb7847483b79e02ae3849b8460e3422daede2b4091f83563e9de9eac02d43589": 1, + "ebba26e4674089a2d484a0f39a679c40e4692be746efb23ed5e3fe427649f435": 1, "ede13c63ae06f69a6b705f9ac9d3c0a423a2ccbf27ca1f68dbe505f0a374ce5a": 1, + "f577490d2d8e5fb075b2266ae6546027565d9dedbe2d22f59106c0f6ed495ebd": 1, "fae4574c4b96521f6b03f4471693f0864155e34dfcbcc7562f0a277b35870dfe": 1 }, "reason": "Existing state/cache filename, command alias, environment, package, immutable vocabulary IRI or live compatibility anchor."