PyCForge 1.3.68 / NumPy conversion package 0.2.0
Existing SDK 0.6.0 and bundled math 0.3.0 remain unchanged
Work date: 2026-10-29 (America/Chicago)
Unpublished development handoff. CC alone publishes releases.

DELIVERED CONVERSION SUPPORT

The optional NumPy *import package now has twelve functions: array, zeros, ones,
full, copy, add, subtract, multiply, min, max, argmin and argmax. Register the new
package with PyCForge 1.3.68 and select Runtime. No NumPy package is registered
automatically at startup. Generated C does not load Python or NumPy.

min/max return independent float64 values. argmin/argmax return independent
int64 indices, selecting the first equal extremum. The input must be a nonempty
supported one-dimensional finite float64 array. Both a and axis can be supplied
positionally or by name. axis defaults to None and accepts None, integer 0 or
-1. Supplied expressions execute once, in their source order. Reduction results
do not mutate the input, retain its allocation or allocate a result array.
The existing shared Runtime work budget bounds traversal.

Empty reductions raise ValueError. Unsupported dynamic input and axis types,
out-of-range axes and excluded value cases produce catchable errors. Literal
unsupported axes, including signed literals, produce PYC4711 with a location
and no generated C. Unknown/duplicate/expanded arguments retain PYC4706.
The compiler does not silently change conversion modes.

NumPy's selected zero sign in min/max can depend on reduction order. This bounded
profile rejects a zero value extremum when both zero signs occur, with a clear
ValueError. Single-sign zero extrema retain their sign. argmin/argmax still
accept mixed zero signs and return the first index. Nonfinite input remains
outside the existing array profile. No sequence coercion, axis tuples, out,
keepdims, initial, where, array reduction methods, sum/mean, views, general
broadcasting, other dtypes or external buffers are added.

Example (Runtime, after registration):
  *import numpy as np
  def main():
      values = np.array([4, -3, 8, -3, 8], dtype="float64")
      print(np.min(values), np.max(values, axis=-1))
      print(np.argmin(a=values), np.argmax(values, axis=0))
      return 0
Output:
  -3.0 8.0
  1 2

SDK SIMPLICITY AND COMPATIBILITY

The installed SDK 0.6.0 code is unchanged. New choices, signatures, explanations
and scalar result types arrive from the selected engine. Authors still edit
exactly operation_id, export, operation and summary. No new memory, dtype,
threading or ownership controls were introduced. The existing scanner, editor,
Python service and console share the same readiness/verification/package gate.
The existing UI theme and controls remain unchanged.

Reductions select crucible.array1d-f64/0.2. Packages using only the older eight
operations retain profile 0.1 and their original fingerprints and Help admission.
The array declaration and package schemas remain 0.1; extension API/catalogue
0.4 stays structurally compatible. These are additive engine-owned operations
using already supported scalar result types, not new SDK execution protocols.
Actual PyCForge 1.3.67 refuses profile 0.2 packages. The new engine still admits
the delivered NumPy 0.1.0 package. Bundled math 0.3.0 bytes remain unchanged.

Autocomplete and selected-import offline Help describe the fixed signatures,
axis choices, scalar results, first-index ties and unsupported boundaries. The
main conversion-import Help includes the exact compiled example above. The
README preserves its approved structure and four image URLs; its version and
NumPy coverage paragraph were updated. Framework 0.7 records these contracts;
revisions 0.5 and 0.6 remain preserved.

VERIFICATION

* Final installed engine: 161 tests pass, zero failures/skips, with every loaded
  product module checked to originate from the installed wheel. This includes
  array/reference/native behavior, rejection diagnostics, completion/Help,
  scalar ownership, old/new package admission and catalogue compatibility.
* Broader affected engine regression: 316 tests and 554 subtests pass, no failures
  or skips. This covers scalar math/arguments, Crucible contracts/native calls,
  Help/completion, import registration/loading, catalogue and distribution rules.
  This is scoped regression coverage, not a new full run of all engine tests.
* A seeded matrix compares 770 scalar results over 88 value arrays and 33
  mixed-zero index arrays, at lengths 1/2/7/8/9/16/17/32/33/64/129. GCC with UBSan
  and external PCFC11 at O0 and O1 all match separately executed NumPy output.
* All 18 native template programs compile and match with PCFC11 O0 and O1
  (36 comparisons). GCC uses the established C11/UBSan warning profile with its
  inherited unused-function/unused-variable/misleading-indentation exclusions.
  No unsuppressed warning-clean claim is made.
* Native allocation counters and ASan/UBSan checks establish no result-array
  allocation across 1,000 repetitions, unchanged input on work-budget failure,
  and zero tracked allocations after destruction. Existing 500-cycle array GC
  and partial-allocation/atomic-mutation checks also pass. LeakSanitizer is not
  claimed; this host uses ASAN_OPTIONS=detect_leaks=0.
* SDK compatibility suite: all 92 nodes are resolved. The initial run passed
  91; one legacy test lacked PYCFORGE_TEST_OLD_ENGINE. That exact node passes
  with the installed 1.3.60 interpreter explicitly selected. Initial and follow-up
  evidence are preserved. The 1.3.61 migration/refusal gates also ran.
* The SDK GUI suite passes all 13 checks, including asynchronous work, close and
  cancellation, file conflicts, stale results, offline reference, four-field
  editing, Help and repeated worker lifetimes. No new stall was observed here;
  this does not erase the earlier SDK 0.6.0 report's unreproduced interruption.
* Final installed-code desktop workflow: NumPy and independent vectors each
  pass all 33 fixtures (18 native and 15 rejected-source cases), reach Ready to
  package, build byte-identical repeated packages and register into isolated
  test stores. Help is deliberately made incomplete, located by the Scanner,
  restored and reverified. Rebuilding after restoration is also byte-identical.
  The unchanged SDK displays the new argmin contract with the same four fields.
  25363 GUI heartbeats were recorded; maximum observed gap was
  0.246 seconds. This is a host measurement, not a latency guarantee.
* Both registered packages pass the actual production BuildService with
  external PCFC11 O0/O1. Typed conversion refuses the Runtime-only package.
* A separately named five-operation measurements project fails an intentionally
  wrong reduction expectation; readiness/build remain blocked and an existing
  package is preserved. Public SDK saves repair the expectation, then verify,
  readiness and packaging pass. Edited Help blocks stale builds in both full
  projects. Upgrading from 1.3.67 invalidates previously passing evidence.
* Current manual qualification passes: 31 Help pages, five categories, 81 Python
  examples (49 Runtime and 32 Typed native comparisons), five API examples,
  four C callers, three module examples and three README examples. The new
  reduction Help example is additionally compiled by the final installed suite.
* Engine environment has no SDK installed. The headless SDK environment has
  no PyCForge, NumPy or Qt; the GUI SDK environment adds only its Qt dependency.
  Compatibility test copies change only the expected array choice count (8 to
  12) and new-template profile (0.1 to 0.2). Product SDK files are unchanged.

ATTEMPTS, SCOPE AND DEVELOPMENT MATERIALS

The initial array run passed 132 tests and failed one new test that incorrectly
called the ownership field owner. The assertion was corrected to ownership;
the exact follow-up and final installed suite pass. The first installed-engine
collection lacked the development tools namespace. The runner now exposes only
that helper namespace, without adding product source to its import path; the
final run uses a neutral working directory and installed-module origin checks.
Signed-literal axis diagnostics were completed before final installed testing.
The broader SDK suite/GUI regression used the preceding 1.3.68 candidate;
final desktop, package gates and the 161-test suite use the exact final code.

Host qualification is Linux x86_64, Python 3.12.14, GCC 13.3.0, PCFC11 0.2.25,
NumPy 2.5.4 and PySide6/Qt 6.12.0 offscreen. There is no native Windows/macOS,
Clang, independent human-author usability or general resource/plugin ABI claim.
The SDK scanner certifies only its saved snapshot, explicit fixtures and recorded
environment. This is unsigned local evidence, not proof of every input/platform.

All prior source file paths and historical directives/reports are preserved.
New source includes tests, generators, compatibility clients, native matrix and
verification evidence. The companion examples archive preserves the two full
verified projects, independent measurements case, package snapshots, reports
and desktop review images. Moving/editing examples requires local verification.
Final distribution audits, source rebuild identity and SHA256 values are added
to the external handoff report after archive assembly.

PCFC11 was used externally for verification only. Its future PyCForge integration
remains deferred until compiler improvements are complete: a dedicated Compile
button beside Transpile, outside the compiler chooser, with Linux and Windows
installer builds. No compiler bundling or installer work was performed.
Only CC publishes; no release publication was performed.

Reference documentation consulted (behavior also checked against local NumPy):
https://numpy.org/doc/stable/reference/generated/numpy.min.html
https://numpy.org/doc/stable/reference/generated/numpy.max.html
https://numpy.org/doc/stable/reference/generated/numpy.argmin.html
https://numpy.org/doc/stable/reference/generated/numpy.argmax.html
