Skip to content

Shared Surfaces

bijux-std exports six managed packages through four capabilities. Together they define how consumers synchronize shared behavior, verify its identity, and extend it without losing product ownership.

Capability Map

flowchart TD
    std["bijux-std"] --> common["common"]
    std --> docs["docs"]
    std --> python["python"]
    std --> rust["rust"]

    common --> makes["bijux-makes"]
    common --> checks["bijux-checks"]
    common --> gh["bijux-gh"]
    docs --> docs_pkg["bijux-docs"]
    python --> py["bijux-makes-py"]
    rust --> rs["bijux-makes-rs"]

    makes --> consumer["Consumer repository"]
    checks --> consumer
    gh --> consumer
    docs_pkg --> consumer
    py --> consumer
    rs --> consumer

Common Foundation

The common capability is always installed.

Language-neutral Make contract

bijux-makes provides stable entry points for help, environment guards, artifact containment, documentation execution, and gate composition. A consumer may add product-specific prerequisites, but should not silently change the meaning of a shared target.

Synchronization and checks

bijux-checks resolves the selected capability set, stages remote content, validates directory digests, rejects unknown capabilities and layout drift, and emits standards reports under the consumer's artifacts/ boundary.

GitHub governance sources

bijux-gh contains canonical workflow, template, policy-script, and repository configuration sources. Typed manifests select and render consumer-specific outputs. The package declares expected repository behavior; bijux-iac separately applies live GitHub administration.

Documentation Capability

bijux-docs supplies:

  • shared MkDocs header, footer, and family navigation;
  • styles, responsive layout primitives, icons, and theme behavior;
  • local Mermaid initialization and navigation scripts;
  • synchronization, source-of-truth, contract, and table checks;
  • viewport and navigation regression tooling in the standards source.

Consumers own page content, local navigation, technical examples, and domain meaning. The documentation capability makes movement familiar; it does not standardize every handbook into one structure.

Python Capability

bijux-makes-py composes Python-specific formatting, linting, testing, packaging, environment, and API-contract behavior. It supports repository consistency without deciding the consumer's package architecture, public API, or release eligibility.

Rust Capability

bijux-makes-rs composes Cargo checks, nextest lanes, explicit slow-test selection, and pinned-source full-suite execution. Rust products still own their toolchain policy, crate architecture, benchmarks, operational tests, and release gates.

Consumer Layout

Managed packages are vendored under .bijux/shared/. The exact directory set depends on declared capabilities. The consumer also keeps its capability and check configuration in .bijux/checks.consumer.json and records managed integrity in repository checksum manifests.

A second root-level shared tree is not an alternate source. Layout validation rejects that ambiguity because two candidate authorities would make updates and audits unreliable.

Build-Time And Runtime Boundaries

Shared packages are vendored repository infrastructure. They do not create a runtime control service.

Surface When it acts Network dependency after checkout
Make contracts local or CI command execution none for vendored behavior; individual product commands may use networks
standards checks local or CI validation canonical comparison may resolve the pinned source; local digest checks use vendored bytes
GitHub workflows GitHub Actions event execution Actions and declared external services only
documentation shell build time and browser render time shell, Mermaid, and visual assets are local to the published site
capability update explicit consumer refresh requires access to the accepted bijux-std source revision

The absence of a central runtime dependency is deliberate. A consumer can build and inspect its selected standards snapshot without fetching presentation code or Make logic from bijux.io.

Verification Matrix

Surface Identity check Contract check Product check
shared directory canonical directory digest capability and layout validation consumer gate composition
generated GitHub file managed-file checksum manifest and renderer parity repository policy workflow
documentation shell source/generated comparison MkDocs and shell contract local strict site build
Make library package digest target semantics and contract tests consumer-specific commands

Each column matters. Identity without a contract only proves matching bytes; a contract without product checks cannot establish local correctness.

Compatibility Surface

Compatibility attaches to observable interfaces, not to package names alone. A package can retain its directory name while breaking a consumer through a changed target, workflow event, manifest field, generated path, or browser contract.

Interface Compatibility question Evidence boundary
Make target do invocation, prerequisites, outputs, and failure behavior retain their contract? shared contract tests plus consumer command composition
typed manifest can the selected schema be parsed and rendered without guessing defaults? schema or validator and renderer parity
generated GitHub file do event triggers, permissions, context names, and managed paths remain deliberate? manifest output, policy checks, and consumer workflow validation
documentation shell do navigation hooks, assets, responsive behavior, and build integration remain valid? shell contracts, strict consumer build, and relevant visual checks
capability does selection still resolve one coherent package set and remove excluded packages? capability, layout, and digest validation
report or artifact do path, format, and meaning remain usable by the consumer that reads it? producer contract and downstream parser or policy gate

An additive file is not necessarily an additive interface change: a new required check can block admission, and a new manifest default can alter every rendered consumer. Conversely, a large internal rewrite can remain compatible when all observable contracts and evidence stay stable.

Preserve Failure As A Machine Contract

Automation must distinguish a contract refusal from an implementation failure and from incomplete evidence. Collapsing every condition into either success or a generic nonzero result forces downstream policy to guess whether retry, correction, or containment is safe.

Outcome class Meaning to preserve Unsafe interpretation
accepted declared contract and required evidence passed every consumer product is correct
refused input, capability, layout, or policy is unsupported or invalid transient infrastructure failure worth blind retry
failed the implementation could not complete its owned operation consumer input is necessarily wrong
incomplete required source or evidence was unavailable or indeterminate a weaker check may substitute silently
held by consumer shared contract passed but repository-owned gates did not canonical standard is invalid for all consumers

The concrete encoding may be an exit code, report field, workflow conclusion, or artifact state, but it must be documented and tested at the consuming boundary. Logs may add diagnosis; they must not be the only place where a policy-relevant outcome can be recovered.

Compose Extensions Without Shadow Authority

Consumer extensions should add product meaning at named extension points. They must not silently override a shared target, workflow context, generated path, environment variable, or artifact contract while continuing to claim the canonical behavior.

Collision surface Safe composition evidence Shadow-authority failure
Make target local target has a distinct name or documented prerequisite relationship consumer redefines a shared target with different effects
workflow check product context has stable ownership and does not impersonate a managed policy context two workflows can report the same required name with different semantics
generated path manifest owns the managed path and local output uses an explicitly local path handwritten content competes with renderer output
environment input namespace, default, validation, secrecy, and precedence are declared local variable changes shared behavior through an undocumented ambient value
artifact or report producer, schema, path, retention, and consumer are identifiable local output overwrites a shared report with a different meaning
documentation hook shared interaction remains intact and local behavior is independently labeled and tested page script depends on private shell structure or changes global navigation semantics

Composition checks should exercise both capabilities together and also verify removal. After a local extension is disabled, the canonical behavior should remain; after a managed interface is withdrawn, no local alias should continue to present the obsolete authority under a familiar name.

Keep Execution Environments Inside The Claim

Shared commands run in developer workstations, CI runners, and sometimes restricted or offline contexts. Identical target names do not guarantee identical evidence when tools, network access, filesystem permissions, clocks, or platform architecture differ.

The result should retain the relevant environment and dependency identities, whether the command used vendored or remote inputs, and which outputs were compared. A contract may deliberately support only a bounded environment; that limit is preferable to a portability claim inferred from one runner image.

Removal Boundary

Removing a managed interface requires coordinated source and consumer work. The canonical change owns contract withdrawal, generator and manifest changes, digest updates, and detection of obsolete managed output. Each consumer owns the adoption diff, removal of product references, and local verification.

Obsolete files must not survive as untracked alternatives to the new managed surface. Layout and checksum checks should make residual authority visible. The standards source can prove that the withdrawn interface is absent from its packages; only consumer adoption evidence can prove that a particular repository no longer carries or calls it.

Failure Ownership

Failure Correct owner
canonical package digest is wrong bijux-std package source and manifest
consumer vendored bytes differ from the selected source consumer adoption change
generated GitHub file differs from its manifest output canonical generator or manifest, then consumer refresh
shared target semantics are incorrect everywhere owning shared Make package
shared target is correct but one product needs more gates consumer-owned extension
documentation shell behavior fails across sites bijux-docs canonical source
one site's content or navigation is wrong destination repository
live branch protection differs from declared governance bijux-iac reconciliation path

The owner is selected by the failed invariant, not by the repository where the symptom was first observed.

Extension Boundary

A consumer can compose shared mechanics with local behavior when ownership stays explicit. Atlas can add load and recovery gates; a scientific repository can add evidence and data-validation gates; Masterclass can add curriculum builds. Those extensions remain local unless their unchanged invariant later qualifies for the Standards Adoption Model.