JWST Operations Pipeline Build 12.3 Release Notes

A list of all relevant changes to build 12.3 of the JWST Operations Pipeline is provided in this article.

On this page

Build 12.3 was released as a build candidate in April 2026, and will be installed as an operations build in May 2026. The information provided here focuses mainly on updates to the JWST Science Calibration Pipeline and associated reference files, but includes information relevant to changes in other subsystems that might affect what users see in their data.



Major updates

Words in bold are GUI menus/
panels or data software packages; 
bold italics are buttons in GUI
tools or package parameters.

Major pipeline updates in build 12.3

  • Support for three new observing modes:
    • NIRCam Dispersed Hartmann Sensor (DHS) (short wavelength grism time series),
    • NIRISS SOSS multistripe (brighter targets via sequential subarray readouts), and
    • MIRI wide field slitless spectroscopy.
  • NIRISS SOSS spectral extraction runtime is decreased by a factor of 30 or more (depending on the number of integrations).
  • Automatic 1/f correction (clean_flicker_noise step) is now applied for NIRISS Imaging and WFSS, along with a new correction for SOSS time series.  The corresponding rms noise in SOSS light curves has improved by a factor of 5–20 (depending on source magnitude).
  • Implemented an optional correction (adaptive_trace_model step) for resampling noise in MIRI MRS and NIRSpec IFU data cubes. See Resampling Artifacts for further information.
  • Implemented an optional spectral contamination correction (wfss_contam step) for NIRCam, NIRISS, and MIRI wide field slitless spectroscopy.  This correction is currently off by default but may be enabled in a future build.
  • Implemented optional correction for NIRSpec thermal picture frame artifacts (picture_frame step).
  • Improved the robustness of the MIRI MRS residual fringe correction.
  • Deprecated the MIRI firstframe step and updated the rscd step to reject more groups at the start of integrations, if doing so does not result in a null slope estimate. This helps mitigate the impact of systematic reset effects at the start of each ramp; see MIRI Known Issues for further information.
  • Migrated to a new package (scikit-image) for characterizing large cosmic ray snowball and shower artifacts.
  • Updated major jwst version number to 2.0.0 due to multiple major changes to pipeline architecture, dependencies, and default behavior for uninitialized variables. See detailed Release Notes for information on potentially breaking changes for advanced users.

Major reference file updates in build 12.3

Build 12.3 is tied to the CRDS reference file context 1535. A full list of CRDS context updates can be found at https://jwst-crds.stsci.edu/display_all_contexts/. Significant reference file deliveries included in this context include:

  • Updated to the NIRISS SOSS (jwst_1490.pmap), NIRISS WFSS (jwst_1498.pmap), and NIRCam WFSS and TS grism (jwst_1469.pmap, jwst_1480.pmap) spectral trace models.
  • Updated the NIRISS photometric calibration for all observing modes (jwst_1467.pmapjwst_1476.pmap, and jwst_1483.pmap). These new files are incompatible with prior pipeline versions.
  • Updated the NIRSpec IFU distortion solution, pixel area, and photometric calibration (jwst_1496.pmap and jwst_1534.pmap). This major update refines the spatial scale and spectral tilt of the IFU model, correcting up to 0.05" relative offsets seen between IFU slices and removing up to 0.15 pixel quadrupolar patterns in the wavelength solutions. Point source fluxes will remain relatively unchanged, but the surface brightnesses of extended sources are expected to change slightly and decrease by approximately 3%.
  • Updated NIRCam imaging aperture corrections (jwst_1491.pmap).
  • Enabled single-group ramp fitting by default for multiple observing modes.
  • Updates darks and bad pixel reference files for multiple observing modes.

Known issues in build 12.3

There was one significant known issue with previous build 12.1: (1) Some WFSS observations in extremely crowded fields may contain a mix of background-subtracted and non background-subtracted data. 

Known issues in build 12.3 (in addition to those long-standing issues documented at Known Issues) include:

  • Some WFSS observations in extremely crowded fields may contain a mix of background-subtracted and non background-subtracted observations, depending on the availability of uncontaminated pixels between dither positions.
  • The NIRSpec PRISM photometric calibration is systematically incorrect by up to ~2% due to inconsistencies with old photometric calibration and the updated IFU distortion solution and pixel area.
  • The new NIRSpec picture_frame step does not work properly on multi-integration data.

Data affected by this build

Provided below is a list of science data products in MAST generated by the JWST Science Calibration Pipeline that may be most significantly affected by the updates in build 12.3. The changes listed in the release notes below may affect other modes as well, but many of these will be transparent to the MAST user.

The data and pipeline stages most affected include:

  • Stage 1 processing: Significant updates for all modes.
  • Stage 2 processing: Significant updates for all modes.
  • Stage 3 processing: Significant updates for all modes.


Release notes

Build 12.3 of the JWST Operations Pipeline was released as a candidate build on April 13, 2026 and will be installed as an operations build (12.3) for the Barbara A. Mikulski Archive for Space Telescopes (MAST) on May 26, 2026. The build includes changes to the JWST Science Calibration Pipeline released in version 2.0.0 of the jwst calibration pipeline package via the PyPI repository. This release also includes changes to the JWST Science Data Processing subsystem (SDP) version 2026.1.0 which is the DMS subsystem that creates raw (uncal) products used as input to the calibration pipeline.

General changes

Breaking Changes

  • Fixed a bug where accessing array-like attributes that did not exist would set them to default values. For example, creating ImageModel((10,10)) and then accessing model.err no longer sets model.err to its default (in this case, a 10×10 array of zeros). model.get_default() must now be used instead. Setting the value must be done explicitly, e.g. model.err = model.get_default("err").
  • Fixed a bug where accessing metadata attributes that did not exist would set them to their schema-defined default, if one was defined. For example, creating an empty SlitModel() and then accessing model.source_id no longer sets model.source_id to its default of 0. Instead, it remains empty until specifically set. Use model.source_id = model.get_default("source_id") to set it to the default value if desired.
  • Deprecate YAML as a valid format for reading and writing association files.
    • This may have unexpected impact for users who edit existing associations or generate custom associations; JSON formatting does not accept trailing commas, such that some associations were being silently loaded as YAML rather than JSON. This may raise what seem like spurious DeprecationWarnings. If this is seen, please examine your association files using a JSON format validator to look for invalid formatting, which may cause the pipeline to resort to the alternative YAML loader. A common such error cause is trailing commas after entries.
  • wfss_contam now requires the direct image to contain a valid WCS object instead of the segmentation map.
  • Support has been dropped for datamodels without an "int_times" table.
  • The deprecated AmiAverageStep has been removed.
  • Previously, the SATURATION data quality flag was propagated to the "rate" and "rateint" files only for pixels that fully saturated for which the pipeline was unable to determine a slope. As of build 12.3, the SATURATION flag is propagated for all pixels for which saturation was reached during a given integration, even if there was a sufficient number of groups prior to saturation to determine a slope.

stpipe

  • Remove kwargs from the JwstStep.run signature to match the parent method (Step.run).
  • Add an option to Step.prepare_output to open the input with a specific datamodel class.
  • Add the add_asn_id_to_output_name method to JwstStep to allow an association ID to be automatically appended to output filenames.

Associations

  • Add TA verification images to spec2 associations for MIRI LRS fixed slit and slitless data.
  • Associations that produced asn_type of "wfs-image2" now produce "image2" instead.
  • Deprecate YAML as a valid format for reading and writing association files.
  • Bypass unnecessary compare_asns calls to improve generator runtime. Factor-of-3 runtime improvement is realized for one large NRC_WFSS pool.

set_telescope_pointing

  • Remove deprecated lib.compute_va_effects and lib.compute_va_effects_vector functions; use the functions from stcal.velocity_aberration module instead.

Pipeline modules

  • Add support of MIRI WFSS mode to calwebb_spec2 and calwebb_spec3.
  • Use Step.prepare_output in pipeline steps to open input models and make copies only when necessary.
  • Use polygon unions to make S_REGION keywords more accurately represent true combined footprint for WFSS spec3 products.
  • Replace the spec2 pipeline call to nsclean with a call to clean_flicker_noise.
  • Add new step targ_centroid to the calwebb_spec2 pipeline for MIRI LRS fixed slit and slitless data. Off by default, the step uses target acquisition images to determine source location.
  • Fix datamodel cal_logs not grouping log messages from steps into the pipeline category for some products.
  • Add support for NIRISS SOSS superstripe mode to calwebb_detector1, calwebb_spec2, and calwebb_tso3 pipelines.
  • Add support for NIRCam DHS substripe mode to Spec2Pipeline steps

Step change list

Changes to specific steps in the pipelines are listed below. 

adaptive_trace_model (spec2, spec3)

  • Add a new adaptive_trace_model step to the calwebb_spec2 and calwebb_spec3 pipelines to create a model of the spectral trace. Optionally, the trace model can be used to oversample the flux data, prior to resampling or cube building, to address undersampling effects. Only IFU data is supported in the initial implementation.

assign_mtwcs (image3, spec3)

  • Fix an indexing bug for associations that have background exposures before science exposures.

assign_wcs (image2, spec2)

  • Remove legacy support for the old-style NIRSpec WCS. All processed data should now have a full slit-based WCS implementation.
  • Replace grating equation transforms from stdatamodels with their gwcs counterparts.
  • Replace functions in assign_wcs.util (compute_scale, wcs_bbox_from_shape) with equivalent functions in stcal.alignment.util.
  • Add a non-empty frame for the "coordinates" transform in the NIRSpec IFU WCS.

background (image2, spec2)

  • Refactor to skip unnecessary data copies and remove the subtract_images and asn_intake modules.
  • Add wfss_mask parameter to allow user-supplied background mask for WFSS data.
  • Add MIRI WFSS background subtraction of a reference file.
  • Bug fix for non-finite values causing the SOSS background subtraction to skip.

clean_flicker_noise (detector1)

  • Simplify WCS access for NIRSpec FS and MOS data processed with the mask_science_regions option.
  • Add an option to correct 1/f noise in TSO data with reference to a median image (background_method=median_image). Add support for masking expected spectral traces for NIRISS SOSS data when mask_science_regions=True.
  • Interpret string values of "none" or "None" as Python None, for the user_mask parameter.

combine_1d (spec3)

  • Add a failsafe that skips processing an input spectrum if its wavelength array is not monotonic.

cube_build (spec2 IFU, spec3)

  • Always create a wavetab extension and add linear_wave as option.

dq_init (detector1)

  • Add a new parameter to this step, --user_supplied_dqfile, for user to pass in their own DQ array. See dq_init documentation for more details.

emicorr (detector1 MIR)

  • Deprecate the user_supplied_reffile step parameter. The auto-generated parameter override_emicorr should be used instead.

extract_1d (spec2, spec3)

  • Refactor SOSS extraction to compute reference wavelength maps and spectral traces only once, instead of every integration.
  • For SOSS ATOCA, reuse regularization factor integration-by-integration for well-separated blue part of order 2 and order 3, similar to what was already done for order 1 & 2 combined extraction. Improve runtime of SOSS ATOCA extraction; with default options, factor-of-5 improvement for first integration and almost factor-of-2 improvement for subsequent integrations.
  • Add PA_APER keyword to "EXTRACT1D" extension headers.
  • Enable sigma_clipping in the background annulus for IFU source_type POINT.
  • Allow multiprocessing by integration for SOSS. New step-level parameter soss_maximum_cores turns multiprocessing on (off by default).
  • A number of changes to the SOSS ATOCA implementation to impute missing data, use the same uncertainty across integrations, and precompute quantities to improve runtime by a typical factor of 15–30. Multiprocessing removed from SOSS.
  • Fix a bug where file written by soss_wave_grid_out did not ingest properly as soss_wave_grid_in.
  • Replace hard-coded "pastasoss" constants with "pastasoss" reference file metadata attributes.
  • Remove padsize argument from jwst.extract_1d.soss_extract.pastasoss.get_soss_wavemaps.

extract_2d (spec2)

  • Allow source_ids parameter to select from the input catalog for WFSS data. Add source_ra and source_dec parameters to select objects by sky position for WFSS data.
  • Fix a bug where defining source_dec without source_ra did not raise an error. Add source_max_sep parameter to specify maximum distance in arcsec from user-input ra, dec pair that should be considered a match.

firstframe (detector1 MIR)

  • Deprecate the FirstFrame step. Use the RSCD step instead for first-integration flagging.

klip (coron3)

  • Modified the jwst.coron.klip.klip function to update the target model in place and make the PSF output model optional.

msaflagopen (spec2 IFU, spec2 MOS)

  • Simplify WCS access for flagging open MSA shutters and remove unnecessary data copies.

outlier_detection (image3, tso3, spec3, coron3)

  • Add pixmap_stepsize and pixmap_order parameters to allow interpolated calculation of pixel map for imaging mosaics when resampling.

pathloss (spec2 IFU, spec2 MOS)

  • Fixed bug in application of pixel scale to user-provided cross-slit source position.

photom (image2, spec2)

  • Update NIS_WFSS exptype to expect per-wavelength units in "photom" ref file.
  • For WFSS modes, get "photom" reference table units from the reference file metadata instead of hard-coding it.

picture_frame (detector1)

  • Add a new picture_frame step to the detector1 pipeline to address thermal artifacts in NIRSpec full frame exposures.

pixel_replace (spec2 MOS)

  • Vectorize mingrad method and reduce unnecessary per-integration datamodel operations, reducing step runtime for some TSO datasets tested by a factor of roughly 100.
  • Let uninitialized variance arrays pass through step without error or assignment.

ramp_fitting (detector1)

  • Change ramp fitting to expect dictionaries as output from stcal routines as per stcal PR #496.
  • Add option to output the chisq array when using the LIKELY algorithm.

resample (image2, image3, coron3)

  • Use polygon unions to make S_REGION keywords more accurately represent true combined footprint for imaging mosaics.
  • Add pixmap_stepsize and pixmap_order parameters to allow interpolated calculation of pixel map for imaging mosaics; using stepsize=10 and order=3 improves runtime of calwebb_image3 by 20 percent for a 30-image mosaic tested.
  • Add support for propagating DQ flags in resampling. DQ flags are propagated by bitwise OR of all input DQ flags that contribute to a given output pixel.
  • Remove jwst.resample.compute_image_pixel_area() (use stcal.resample.compute_mean_pixel_area() instead).
  • Fix a bug in resample where updating wcsinfo may fail for custom reference WCS.

residual_fringe (spec2 IFU)

  • Catch and ignore a linear algebra error in poorly conditioned fringe fits. Improve emission line detection and masking.
  • Fix a minor bug in which user-defined spectral lines masked in the MIRI MRS 1d residual fringe correction were incorrectly having no RF correction applied at all, rather than simply being excluded when finding the fringe signal.

rscd (detector1 MIR)

  • RSCD updates to flag the first integration, replacing the first frame step. New dynamic RSCD flagging now adjusts group counts to maintain at least two valid groups, compensating for small integrations or saturation.

source_catalog (image3)

  • Fix a bug where fluxes were not being converted from MJy/sr to Jy. Fix a bug where fluxes included background flux when they shouldn't.
  • Wrap sky_orientation angles into the range 0–360 degrees.

targ_centroid (spec2)

  • Initial implementation of the step. Finds x,y position of target on detector, based on TA verification images (if available) for MIRI LRS fixed slit and slitless data.

tso_photometry (tso3)

  • Add BJD_TDB to output catalog.
  • Fix a bug where NaN pixels were included in aperture areas when they shouldn't be.

tweakreg (image3)

  • Add GAIAREFCAT as a supported option for the abs_refcat parameter.
  • Update star finder keyword arguments for Photutils 3+ deprecations.

wfss_contam (spec2 WFSS)

  • Make wfss_contam expect the direct image to have a WCS object instead of the segmentation map.
  • Delete arrays after usage to reduce peak memory footprint. Peak memory was lowered by ~30% for a test NIRCam WFSS dataset.
  • Allow large sources to be split across chunks.
  • Update NIS_WFSS exptype to expect per-wavelength units in "photom" ref file.
  • Get "photom" reference table units from the reference file metadata instead of hard-coding it.
  • Fix a few runtime bottlenecks. Runtime gains depend a lot on input parameters, but for one NIRCam test case with multiprocessing disabled, step runtime decreased by a factor of 1.8 from 170s to 94s.
  • Fix indexing bug in matching simulation with virtual slit cutouts.

Other Changes

  • Add support for Python 3.14.
  • Bump GWCS min version to 1.0.3 to pick up bugfixes for non-coordinate input values.
  • Use new get_dtype and get_default methods of JwstDataModel to make explicit all instances where accessing an attribute was assumed to set that attribute.
  • remove direct dependency on spherical_geometry (offloaded to stcal and tweakwcs).

JWST Science Data Processing subsystem changes

  • Filter and pupil wheel offset values (the difference between achieved and commanded wheel position) have been added to NIRCam FITS files (keywords FWPOSOFF and PWPOSOFF, respectively). Also, messages stating if each wheel was “within commanded tolerance” or “outside calibration tolerance” have been added to NIRCam FITS files (keywords FWPOSTOL and PWPOSTOL).
  • Fixed DATE-BEG and DURATION keyword values for "MIR_IMAGE" FITS files when exposures happen simultaneously with MIRIFUSHORT and MIRIFULONG detectors.  Previously, this could lead to incorrect world coordinate information when the imaging and MRS exposures were very different lengths.
  • On rare occasions, due to downlink packet timing science data could be processed prior to all telescope attitude information being recorded in the engineering database. As a result, nominal planned pointings were used instead (FITS keyword ENGQLPTG = PLANNED), resulting in incorrect world coordinates in the associated data products. This issue has now been fixed; such data are now prevented from making through the pipeline until properly corrected, and they should no longer exist in the archive.
  • Updated the TMEASURE keyword value when a NIRCam exposure has NGROUPS = 1 and a "ZEROFRAME" extension so the i2d array is populated (corrected from fully NULL).
  • Made fixes to properly populate the "REFOUT" table extension and FILTER keyword for MIRI WFSS data to allow them to process all the way through.
  • All time-series observations in the MAST Archive have now been reprocessed with previous build 12.1 to ensure that segmented data all contain approximately the same number of integrations per segment.  This ensures that outlier detection methods that look across integrations can perform similarly well on each segment.




Notable updates


Originally published