Crucible reference for SDK authors

Select the Python interpreter that contains the PyCForge installation. The
SDK's connect command validates its reference. PyCForge also exposes the
location through SELECTED_PYTHON -m pycforge --format json sdk-api and the
public pycforge.crucible.sdk_api.discover() function. Refreshing the reference
reads metadata and examples without executing the examples.

Choose a reference by the question you need to answer.

  Which imports and operations can I use? Open workbench in the SDK. Its
  imports list identifies the bundled packages, versions, minimum profiles
  and per-package Help. Its forms describe the editable fields. In the XML
  catalogue the operations section gives both Typed and Runtime route decisions
  for each bundled operation. The packs section is the scalar binding format.

  What does this operation accept? Use describe ArrayFunction, ValueFunction, TextFunction
  or ScalarFunction and the package Help. Array, text and structured-value forms
  list the available choices and their signatures. An export in one conversion
  mode can be unavailable in the other. An installed namespace admits only its
  documented members. Exact numerical and ownership limits accompany the
  declarations. A scalar constant encoded as nan is a positive quiet binary64
  NaN. copysign can observe its sign, and unary negation reverses it.
  Independent authors can use the same contracts under new names.

  How do I produce a verified package? Use templates, then new with the chosen
  starter and author. Save the declaration, Help, fixtures and expectations.
  Scan reports issues with field paths. Convert lets you inspect one generated
  program without running it. Verify compiles and runs the submitted fixtures.
  Use the same compiler for readiness and build. Register is a separate explicit
  action. Each consuming module declares its own *import in Runtime mode.

  How do I automate a decision? Put --json before the SDK command. Inspect
  status, diagnostics and the command-specific data. A completed scan is
  permission to start verification. Only ready-to-package from readiness
  approves a current build. A failed verification can include the decisive
  compiler message in data.report.cases[].compiler_stderr. Refer to sdk-help.html
  for the complete workflow, offline behavior, cancellation and evidence scope.

index.json identifies each resource by name, size and SHA256. api.xml and
api.xsd describe the versioned public interface. authoring.json contains the
engine's verification policy and inert templates. workbench.json and its
schema describe forms and package Help. Unknown required features or damaged
inventory block a live connection. The SDK may retain the last valid snapshot
for explicitly offline browsing. Hashes identify content. They do not establish
publisher authenticity.

Public authoring coverage is also inventoried in authoring.json under
authoring_coverage. It distinguishes the scalar, array, JSON and text families
from workflow commands and internal-only Runtime methods. The text-starter
provides independently named trim(text, chars=None), tokens(text, sep=None,
maxsplit=-1) and join(sep, items). Read the connected SDK guide for limits and
a step-by-step human/AI workflow. A starter is a useful baseline, not evidence
for an author's untested changes.

Literal replacement is publicly authorable through text-replace, signature
function(text, old, new, count=-1). Use text-replacement-starter to exercise
Unicode, empty needles, counts, source-order calls and rejection diagnostics.
Replacement selects text profile 0.2; earlier declarations retain profile 0.1.
