Files
OrcaSlicer/resources/profiles/Flashforge/filament/Flashforge PAHT-CF @FF G4P.json
SoftFever 2c0867619c v3.0: content-addressed mint tooling, succession runtime, W1 hardening
Implements phase v3.0 of filament_id_plan_v3.md - tooling and client
prerequisites. No filament_id values change in this commit.

Tooling (scripts/assign_filament_ids.py; 106 unit tests):
- The mint key becomes "filament_product/<filament_vendor>/<filament_type>/
  <family_name>", resolved loader-faithfully from the declarer's flattened
  config - bundle-independent and content-addressed; identity fixes re-id
  by design and are made safe by the succession ledger. --mint now takes
  the triple.
- The snapshot gains "triples" and "triple_exceptions" sections, folded
  into the equality gate: any vendor/type/name change surfaces as a
  reviewable snapshot diff. Check 3 rewritten to triple-mint conformance
  with (id, triple) grandfathering; check 5 generalized from OFL generics
  to every OFL-riding vendor preset; new check 8 (triple integrity) and
  check 9 (succession integrity).
- The retired ledger moves to resources/profiles/retired_filament_ids.json
  so it ships with the app; schema {claims, successor} plus cross-island
  "hints". The 14 v1 entries are migrated with mode-rule successors.
  Vanished ids in a foreign island's space (GF*/QD_*) are RELEASED with a
  hint instead of retired: the island catalog owns them and may
  legitimately (re)ship them, which check 4 must never block.
- New maintenance modes: --remint VENDOR, --drop-redundant-ids VENDOR,
  --add-hint "OLD=NEW", and --update-snapshot --forget-never-shipped FILE
  (never-shipped ids drop from lineage; chains splice through them).

Runtime (C++):
- Succession helpers in libslic3r/Preset (pure chain-follow + lazy ledger
  load from resources), consulted only on resolution miss in
  get_filament_by_filament_id, both AMS sync predicates,
  add_ams_filaments, setting_id_to_type, and the calibration-history
  lookup; behavior is byte-identical while the ledger has no matching
  entry. Catch2 coverage in tests/libslic3r.
- W1 hardening: check_ams_filament_valid no longer remote-wipes trays or
  rewrites temps for P-shaped ids that a system preset carries (ten such
  system ids ship today); the size==8 && [0]=='P' assert is relaxed; the
  unguarded filament_list find deref in the temp-equation check returns
  non-destructively on a miss.
- MoonrakerPrinterAgent: the 23 hardcoded OFL generic ids are replaced by
  a runtime lookup of "Generic <family> @System" (id-equivalent on
  today's shipped profiles, follows future re-mints automatically);
  scripts/test_moonraker_lane_data.py derives its expectations from the
  shipped profiles and gains --check-ofl-map.

Profile data (W3 - type is now a key component, so type bugs are fixed
before any re-mint):
- 17 same-name-different-type groups corrected across 50 files (OFL
  Generic PETG-CF/PE-CF/PP-CF; Flashforge ASA Basic/ASA-CF/ABS-CF/HIPS/
  PAHT-CF/PLA Silk; FusRock PAHT; Creality Generic PA6-CF; InfiMech PETG;
  Anycubic TPU 95A / TPU for ACE; Prusa Generic PA-CF/PLA-CF) - every
  value validated against MaterialType::all(); 3 Snapmaker U1 roots gain
  their missing filament_vendor. Flattened-config equivalence vs the
  previous commit: exactly the 54 intended diffs, zero BBL.
- doc/developer-reference/filament_id.md rewritten for the v3 rule.

Ambiguous type divergences (Prusa Generic TPU/TPU HF FLEX-vs-TPU, FusRock
S-Multi/S-PAHT) and all same-type vendor-tag divergences are deferred to
the v3.2 vendor worksheets, catalogued with analysis.
2026-07-04 16:28:56 +08:00

109 lines
1.6 KiB
JSON

{
"type": "filament",
"name": "Flashforge PAHT-CF @FF G4P",
"inherits": "Flashforge Generic PLA-CF10",
"from": "system",
"setting_id": "9DaSYBA2OI7Jj5zS",
"filament_id": "OFsgANe3",
"instantiation": "true",
"activate_chamber_temp_control": [
"1"
],
"additional_cooling_fan_speed": [
"0"
],
"chamber_temperature": [
"60"
],
"close_fan_the_first_x_layers": [
"3"
],
"complete_print_exhaust_fan_speed": [
"50"
],
"cool_plate_temp": [
"0"
],
"cool_plate_temp_initial_layer": [
"0"
],
"during_print_exhaust_fan_speed": [
"40"
],
"eng_plate_temp": [
"100"
],
"eng_plate_temp_initial_layer": [
"100"
],
"fan_cooling_layer_time": [
"5"
],
"fan_max_speed": [
"60"
],
"fan_min_speed": [
"30"
],
"filament_density": [
"1.06"
],
"filament_flow_ratio": [
"0.95"
],
"filament_max_volumetric_speed": [
"8"
],
"filament_settings_id": [
"Flashforge PAHT-CF @FF G4P"
],
"filament_start_gcode": [
"; filament start gcode\n;right_extruder_material:PA-CF\n"
],
"filament_type": [
"PAHT-CF"
],
"compatible_printers": [
"Flashforge Guider4 Pro 0.4 nozzle"
],
"hot_plate_temp": [
"100"
],
"hot_plate_temp_initial_layer": [
"100"
],
"nozzle_temperature": [
"290"
],
"nozzle_temperature_initial_layer": [
"290"
],
"nozzle_temperature_range_high": [
"300"
],
"nozzle_temperature_range_low": [
"260"
],
"overhang_fan_speed": [
"60"
],
"pressure_advance": [
"0.02"
],
"slow_down_layer_time": [
"2"
],
"support_material_interface_fan_speed": [
"60"
],
"temperature_vitrification": [
"180"
],
"textured_plate_temp": [
"100"
],
"textured_plate_temp_initial_layer": [
"100"
]
}