RememberStackremember.dev/docs

Mounts and the Consumption Skill

RememberStack has two deliberately separate truth layers. Claims are immutable source testimony (“what was asserted, by whom, when”); facts—relations and observations—are the adjudicated worldview (“what the system holds or held true”): supersession-adjudicated, clocked on two time axes (when a fact held in the world, and when the system learned it), evidence-counted per distinct source—repetition is not corroboration—and contradiction-tracked. The fact_claim_evidence association is the auditable bridge between the layers, recording which claims support or contradict each fact. Query claims to inspect testimony; query facts to answer current or historical truth questions, then follow the bridge to see why the system believes or believed the fact.

(Internally these guarantees are decisions D41 and D54.)

Agents that can navigate files should treat memory like a read-only codebase. Mounts make that cheap. Query surfaces (API / CLI / MCP) cover what files cannot: semantic search, live graph traversal, time-travel, open SQL, and hydration.

TL;DR for agents

SituationDo this
Mounts availablels / read / grep first
Need current truthLeave files; call facts_context or query facts_current
Need source testimonyclaims_and_sources_context or claims views — not claim validity as “true now”
Load-bearing decisionVerify on the spine after any mount/K orientation
No mountsAPI/CLI/MCP carry full parity (including artifact handles)

Two truth layers never change: claims = testimony; facts = adjudicated current belief. Bridge: fact_claim_evidence.

The four read-only views

ViewContainsPrefer for
P3 corpus treeGenerated indexes + stable document/entity pathsFirst navigation
E0 artifactsConverted Markdown, structure, derived mediaReadable source representation
Raw originalsUploaded bytes (off nav path; audited)Read the original, including before a converter is available
Plane K checkoutCompiled + authored knowledge pagesOrientation — then verify facts

Raw sits outside normal navigation so Markdown-first browsing stays cheap.

Library API (not a Compose service)

The smoke Compose profile does not ship a separate “mount daemon.” Paths come from the self-host mount publisher:

  • Returns a typed PublishedMounts value bound to one deployment
  • Marked read-only as a usage contract; provider mounts enforce permissions
  • Consumption-skill renderer refuses paths from another deployment
# conceptual — see package surfaces / profiles
published = mount_publisher.publish(deployment_id=...)
rendered = skill_surface.render(mounts=published)
skill_path = skill_surface.publish(directory=harness_skill_directory, rendered=rendered)

Connect existing bucket mounts

The self-host publisher builds the P3 directory from published snapshots. It does not install a bucket filesystem or mount SeaweedFS/S3 for you. Without configured raw and artifact roots, those returned paths are empty placeholders; they cannot serve uploaded files.

Mount the deployment's raw and artifacts buckets using your storage provider's filesystem integration, with read-only access and raw data-access audit logging. Then pass the existing bucket-root directories to the publisher:

python -m rememberstack.profiles.selfhost project --plane p3
python -m rememberstack.profiles.selfhost mounts \
  --root /srv/remember-views \
  --raw-root /mnt/remember-raw \
  --artifacts-root /mnt/remember-artifacts

Alternatively set REMEMBERSTACK_SELFHOST_RAW_MOUNT_ROOT and REMEMBERSTACK_SELFHOST_ARTIFACTS_MOUNT_ROOT. Command-line paths override those settings. Configured paths must already be directories; a missing mount path fails publication instead of creating an empty substitute. Directory validation cannot verify that a provider is mounted or that auditing and read-only access are enabled; configure those at the mount/provider layer. The publisher does not change filesystem permissions or intercept direct raw reads.

After a P3 rebuild and mount publication, a live document's stub exposes its latest durably stored original through stored_raw_uri, even if conversion is parked with no_route. Append that object key to the returned raw root to open the bytes. A newer stored original and the current processed version are labeled separately; storing new bytes does not replace the processed summary or Markdown. Pending managed admission does not advertise an original that has not been written. Existing snapshots remain unchanged until rebuilt and republished.

Filesystem first; query when files cannot

FilesystemQuery surface
Navigate, read, grepOpen SQL (query_sql) and live graph SQL helpers
Browse K pagesSchema discovery (describe_query_space / GET /query/space)
Open artifact MarkdownSemantic/lexical nomination, graph helpers, time-travel
Fact↔evidence hydration, saved queries, decision transcripts, deltas

Unmounted environments get the same operations over the network; the skill states that it is unmounted instead of advertising fake paths.

Generated consumption skill

ConsumptionSkillSurface reads live deployment metadata (name, language, scopes, K page count, active operation versions) plus published mounts and renders a versioned standard SKILL.md.

Skill contents (high level):

  1. Two-layer headline (claims vs facts)
  2. Three neutral choices — mounted files, open SQL/live-graph helpers, or the four assured operations
  3. Bound SQL examples (wrong claim-window query vs facts_current, predicate vocab, audit trail, divergence)
  4. Honest empty-K behavior
  5. Assured catalog only: resolve_entity, claims_and_sources_context, facts_context, combined_context
  6. Former patterns as examples.* saved queries only

Atomic publish so harnesses never read a partial skill file.

What the skill prevents

MistakeCorrect behavior
Claims as current truthFacts for present tense
examples.claims_as_of as beliefAssertion history only
Ignoring withdrawn supportCaveat + audit
One-sided contradictionsReport co-members
Compiled as liveCheck freshness; verify facts
Mixing media locator with clocksThree different coordinates

Cold-agent skill check

Automated checks give a model only the rendered skill plus a task (no design docs, no repo context). The plan must:

  • Orient on K (or fall back honestly when empty)
  • Route current truth to facts
  • Keep grains separate
  • Treat withdrawn support carefully
  • Report contradiction co-members
  • Prefer mounts for readable work
  • Hydrate to sources for audit

Wrong plans (including claim search as current-truth answers) fail.