PyCForge 1.3.58 — Crucible Foundation Verification
Prepared: 2026-10-27
Status: first executable modularization increment; unpublished handoff for CC.

IMPLEMENTED SCOPE

The existing typed and runtime conversion routes now use the same engine-owned
operation/type service for floor division and remainder. Regression and native
execution tests exercise these services through actual conversions.
It establishes the P0 component map and a first P1 slice
of Crucible roadmap revision 0.14. Complete P0/P1/P2 qualification remains open.

The experimental pycforge.crucible API (0.1) provides behavioral Operation and
TypeService interfaces, immutable requests/plans, explicit route decisions,
ownership descriptions and a closed registry with deterministic catalogue
identity. Route adapters bind assessed operations to reviewed implementations.
Unknown targets/types and malformed or conflicting plans are rejected. Runtime
emission requires its declared checks; independent typed proof and output
validation remain in force. Assessments are not output-publication permissions.

The default registry is engine-owned. Constructing a custom authoring registry
does not install it. Caller-supplied Python implementations are trusted code,
not sandboxed extensions. Descriptor fingerprints do not attest implementation
bytes and must not be reused as approval certificates. There is no new cache.

No new math or NumPy import coverage, plugin loader, external activation,
*import syntax, general scheduler, SDK distribution or SDK GUI is included.
The integer_divisor request field belongs to this first numeric family; a
general bound-fact protocol must be demonstrated before stabilizing the ABI.

SOURCE CUSTODY AND CHANGE SCOPE

Authoritative baseline: pycforge-1.3.57.tar.gz
Baseline SHA256:
e9b1ff2417d9ad304f1f18c0abee1b71f931a3b606c41d2f6a632df823557b68

All 905 baseline package files were compared against that archive after testing.
The baseline remained unchanged. Of those files, 901 are byte-identical in
1.3.58. Four changed: the package version and three numeric conversion modules.
Eight new package files implement the semantic services and route adapters.
No package file was removed. All IDE and build modules are byte-identical.
The wheel contains 907 package files, each identical to maintained source;
six maintenance-only .tingspec.json source files are intentionally excluded.

The README diff changes only its top version from 1.3.57 to 1.3.58. Its prose,
four exact approved image URLs, ordering and 320/640 banner widths are retained.
The README renderer check passes. Dependencies, entry points and licenses are
unchanged. AGENTS.md and PyCForge-README-Guidelines.txt are retained.

COMPLETED CONVERSION AND CONTRACT CHECKS

1. Exact baseline replay: 84/84 cases identical, with no mismatches. The 82
   non-cancellation cases each ran twice; two cancellation cases ran once.
   Generated C, semantic results, stage artifacts, decision traces, statuses
   and complete diagnostics match the captured 1.3.57 results. Fixtures include
   accepted behavior and rejection boundaries through both routes, including
   unchanged rejection of the selected math and NumPy import examples.

2. Shared-service tests: 26 passed, 38 subtests passed. These exercise actual
   calls through both conversion routes, missing runtime obligations, contract
   failure without generated C, duplicate/changed identities, immutable nested
   records, registration order, detached catalogues and unsupported requests.

3. Native reference tests: four passed against the original engine and four
   against the final implementation. Typed arithmetic checks 876 scalar
   results across signs, int64 boundaries and seeded inputs. Runtime checks
   include int/float/bool, signed zero, required error recovery, INT64_MIN
   remainder by -1, and left-to-right single evaluation with visible effects.
   Generated C runs under GCC C11 and UndefinedBehaviorSanitizer. Runtime
   int64 bounds deliberately differ from Python's unbounded integers.

4. Installed final wheel: 159 passed, 73 subtests passed, two Qt deprecation
   warnings. These include the new contracts/native checks, existing numeric
   validation, and recent character-map, clipboard, editor-progress, saved-
   workspace and release-identity regressions. All 276 loaded pycforge modules
   were checked to originate in the installed wheel directory.

5. Installed public API: imports and assesses an operation with python -S,
   with no site packages, Qt application, NumPy or Numba import. Registry
   identity and installed origin are recorded in installed-headless.json.

BROAD REGRESSION RESULTS — NOT A CLEAN FULL SUITE

Original 1.3.57 full run:
61 failed, 3015 passed, 72 skipped, 2 warnings, 1 error, 4833 subtests passed in 1559.82s (0:25:59)

1.3.58 full run with final product code:
26 failed, 3080 passed, 72 skipped, 2 warnings, 4871 subtests passed in 1506.39s (0:25:06)

The full run found seven active converter-inventory assertions still expecting
144 files. The two new named route adapters make that inventory 146 files.
Those exact expectations were updated, with explicit assertions for both new
paths; historical sealed counts and hashes remain unchanged. All six
affected packaging and validator test files were rerun after the correction:
100 passed, 3 skipped, 78 subtests passed in 18.85s
No product code changed after the full run.

Unresolved candidate-only failure/error identifiers: 0.

The first baseline harness supplied dependencies through PYTHONPATH. Isolated
checker processes intentionally use -I, which ignores that path; another test
replaces PYTHONPATH for its subprocess. Forty-two affected tests were rerun in
a private virtual environment where the same dependencies are available to
isolated children. All 42 passed on both baseline and candidate. The final
candidate full run uses that corrected environment.

Remaining failures below already occur in 1.3.57. They include historical
assertions expecting older package identities, existing module line limits,
and file-workflow assertions. Their historical test expectations and the
corresponding application implementations are retained.
Pytest counts failing unittest subtests separately; the exact output and
identifiers are retained for comparison. The full-suite gate remains open.

Remaining candidate issues (19 failing reports):
FAILED tests/test_checkpoint_e_versioning.py::CheckpointEVersioningTests::test_phase16_advances_while_explicit_phase14d_output_stays_frozen
FAILED tests/test_phase10_opening.py::Phase10OpeningCheckpointTests::test_authoritative_roadmap_and_addendum_are_packaged
FAILED tests/test_phase12_2_metadata.py::ReleaseMetadataAndPhase122CustodyTests::test_active_package_and_converter_are_phase16_while_workspace_stays_phase15c
FAILED tests/test_phase13_contracts.py::Phase13ContractTests::test_active_phase16_identities_are_explicit_and_record_contracts_stay_frozen
FAILED tests/test_phase14_numeric_contracts.py::Phase14NumericContractTests::test_active_phase16_identities_are_explicit_and_additive
FAILED tests/test_phase14b_conditional_contracts.py::Phase14BConditionalContractTests::test_active_phase16_identities_are_exact_and_additive
FAILED tests/test_phase14c_keyword_contracts.py::Phase14CKeywordContractTests::test_active_phase16_identities_are_exact_and_cumulative
FAILED tests/test_phase14d_keyword_only_contracts.py::Phase14DKeywordOnlyContractTests::test_active_identities_are_exact_and_cumulative
SUBFAILED(path='qt_file_dialogs.py') tests/test_phase15a_metadata.py::Phase15AMetadataTests::test_active_ide_modules_and_runtime_authority_are_bounded
SUBFAILED(helper='qt_window_chrome.py') tests/test_phase15a_metadata.py::Phase15AMetadataTests::test_active_ide_modules_and_runtime_authority_are_bounded
FAILED tests/test_phase15a_metadata.py::Phase15AMetadataTests::test_active_package_workspace_protocol_and_converter_identities
SUBFAILED(name='qt_window_chrome.py') tests/test_phase15a_qt_decomposition.py::Phase15AQtDecompositionTests::test_qt_modules_are_bounded_and_parse_independently
SUBFAILED(relative='pycforge/ide/qt_window_chrome.py') tests/test_phase15c_qt_workspace_integration.py::Phase15CQtWorkspaceIntegrationTests::test_integration_modules_are_bounded_and_parseable
FAILED tests/test_set_conversion_1_0_1.py::SetConversion101Tests::test_package_identity_is_1_0_1
FAILED tests/test_validate_checkpoint_e.py::CheckpointEValidatorTests::test_historical_metadata_audit_rejects_the_phase16_successor
FAILED tests/test_validate_phase16.py::Phase16ReleaseValidatorTests::test_active_identities_and_decision_trace_schema_are_exact
FAILED tests/test_validate_pycforge_workspace_0_12_2.py::PyCForgeValidatorPureTests::test_sealed_0122_validator_refuses_the_active_phase16_tree
FAILED tests/test_windows_file_workflows_1_3_52.py::test_outside_project_copy_save_and_checkpoint_preserve_original
FAILED tests/test_windows_file_workflows_1_3_52.py::test_project_module_save_and_restart_in_separate_processes[no]

ENVIRONMENT AND LIMITS

Python: 3.12.14
Platform: Linux-6.18.55-x86_64-with-glibc2.39
Compiler: gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
Qt tests: offscreen
Candidate full-suite hash seed: 197

Native flags include C11, -O1, warnings and -fsanitize=undefined with
-fno-sanitize-recover=all. Existing generated-code warning suppressions remain
explicit in the test. The frozen typed helper's GCC parentheses warning is
exempted only from -Werror; its expression is unchanged. This is not a claim
that all generated C is warning-free. Linux execution is qualified for these
cases; Windows, macOS and PCFC11 execution were not performed.

Capture reports retain timing and peak Python allocations as observations.
Concurrent work can affect timing. No throughput threshold or cross-platform
bitwise numeric guarantee is inferred from these measurements. Test evidence
establishes the recorded domains, not arbitrary Python/library correctness.

NEXT ARCHITECTURAL GATES

The source specification maps existing components to intended interfaces and
marks implementation status. Next gates are shared binding and typed facts,
job/revision/stage-scoped handles, scheduling/invalidation, complete package
identity and validation before atomic activation, a separately installed SDK
API/CLI consumer, and buffer/view/native-resource examples through both routes.
Those examples must establish mutation, borrowing, cleanup and cancellation
before stable math/NumPy coverage packs and the separate PySide6 SDK are claimed.

REPRODUCTION AND EVIDENCE

Use specifications/crucible_foundation_1_3_58.md for the component map, call
paths, API example, trust limits and remaining gates.

Capture and compare:
  python tools/qualify_crucible_foundation.py --source-root /path/to/pycforge-1.3.57 --output baseline.json
  python tools/qualify_crucible_foundation.py --source-root . --output candidate.json --compare baseline.json

Focused checks:
  python -m pytest tests/test_crucible_contracts_1_3_58.py tests/test_crucible_native_1_3_58.py

Full suite, with dependencies installed in the interpreter environment:
  QT_QPA_PLATFORM=offscreen PYTHONHASHSEED=197 python -m pytest -q --tb=short

Packaging checks:
  python -m tools.verify_pypi_readme
  python -m tools.verify_public_distribution /path/to/final-dist
  python -m twine check --strict /path/to/final-dist/*.whl /path/to/final-dist/*.tar.gz

Completed evidence is in evidence/crucible_1_3_58, including baseline/candidate
captures, package-file hashes, exact test logs, full-suite JUnit and per-test
results, the regression comparison, environment and installed-origin checks.

This source-embedded report describes source and execution qualification.
The accompanying external report adds final distribution sizes, SHA256 values
and exact-pair packaging checks after the archives are built, avoiding a
self-referential source-archive hash. CC alone decides and performs publishing.
