Skip to content

Color palette catalogue: cited extdeps palettes, island-pastel SwatchSet, register binding - #6991

Merged
briansrls merged 11 commits into
mainfrom
session/crisp-bear-390-color-palette
Jul 21, 2026
Merged

briansrls merged 11 commits into
mainfrom
session/crisp-bear-390-color-palette

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Jul 21, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Part-1 palette catalogue on the post-#6927 SwatchSet model. Split homes (no std.color — dissolved in Part-2 reshape):

Layer Home Contents
extdeps/color/ cited upstream facts srgb (Srgb8, hex, HslProjection, CSS-cited sRGB↔HSL); okabe_ito, solarized (CitedColorRow + Solarized ladder/base-mode involution structure rows)
gunbc.design.* catalogue machinery palette (Swatch, SwatchMemberKind = Filed | Derived, WCAG pairing grades); catalog (island-pastel + okabe-ito + solarized)
gunbc.site.tokens house register policy quiet_envelope_hsl_pct — single 45/68 threshold authority; quiet_envelope_srgb8 wraps srgb8_to_hsl_projection
std.measure unit frontier percent_from_computed_int_frontier — names Int→Nat substrate wall (runtime refuses computed cast); HslProjection uses bounded Int percent counts at binding
  • island-pastel (house, InspiredByExternal): mint/aqua/ivory/camel/butter filed + loam Derived from camel (flagship text-ink row, WCAG-witnessed)
  • Witness: design_palette_catalog_keystone_holds — HSL pin, off-by-one RED, envelope accept/refuse, ivory HSL-proxy teaching case, authored-five/loam-capability pair, Solarized ladder + base-mode involution pins

Staged census frontier (explicit — not silent)

Item Current state Dissolve trigger
Achromatic arm fixes h:0 CSS4 achromatic path in srgb8_to_hsl_projection Achromatic variant + OKLCH reground (design-register-library §10 Class 2), or earlier if named first
hex_digit 16-arm chain in extdeps.color.srgb local duplicate of base16 serialization one base16 home shared with extdeps/languages/json/emit.dag hex_digit_char
Inline 255 / 10000 / 60000 scale constants inline in srgb HSL kernel std.measure scale/permyriad/millidegree carrier rows

Test plan

  • claim_batch --entry dag/test/claim/design_palette_witness_test.dag --function design_palette_catalog_keystone_holds PASS locally
  • site_register_keystone_holds PASS locally (tokens envelope refactor)
  • CI compile-clean + witness floor green

briansrls and others added 3 commits July 21, 2026 12:06
The hue kernel used 600000 instead of 60000 in the milli-degree numerator, producing wood=351° instead of 35° and failing color_palette_catalog_witnesses in compile-clean.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot gunbai-bot Bot changed the title WAIT FOR THE DM BRIEF FROM quick-carp-521 BEFORE ACTING — do not run any command until it arrives (1-2 min after your spawn). Task: color palette catalogue — std color framework + extdeps cited palettes (Okabe-Ito, Solarized) + house soft-pastel palette. Supersedes stuck item adhoc-e59b32d6-92f (spa Add color palette catalogue: std.color framework + cited extdeps palettes + house soft-pastel Jul 21, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review July 21, 2026 12:25
@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for review 40715 — both minor observations verified against current code; no commit needed.

Material bare Int fields (tokens.dag:11-17) — Confirmed. This module is intentionally a minimal excerpt of the envelope law only (see tokens_quiet_envelope_note: full theme machinery deferred to #6927). The hue/sat_pct/light_pct shape mirrors what #6927's gunbc.site.tokens will carry so palette×register witnesses can import the real authority without forking thresholds. Grounding degrees/percent into a measure.dag-shaped alias is out of scope here and belongs in the #6927 / design-register Phase A lift, not a parallel nickname in this catalogue PR.

srgb8_admissible validation vs construction (std/color.dag:17-21) — Confirmed. No bounded 0..255 channel primitive exists in std yet; the constructor + srgb8_admissible gate is the honest interim (same pattern as other catalogue rows). Making out-of-range channels unwritable would be the right construction wall once a kernel bounded-Int carrier exists; until then the witness pins admissibility by execution via palette_admissible.

— sent from crisp-bear-390

@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor Author

Addressed review 40716 in 600750e:

Witness color_palette_catalog_witnesses PASS locally after the move.

— sent from crisp-bear-390

@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor Author

Verified review 40727 against current HEAD 64ded87 (not the WIP reshape commit 4fafa04 the bot reviewed at 12:57Z). All five blocking findings were valid on 4fafa04 and are already removed by 64ded87 (revert of the premature Part-2 reshape that also broke compile-clean via Percent/percent collisions with std.measure).

Finding 4fafa04 64ded87 (current)
Permyriad fork in std.color present gone — no Measure aliases in std.color
duplicate Percent vs std.measure present gone — std.color has only Srgb8/Hsl + srgb8_to_hsl
std.color imports extdeps.color.css_color_4 present gone — no extdeps import; css_color_4.dag deleted
int_max/int_min duplicated in std.integer present gone — std/integer.dag unchanged from main
css_color_4.dag hand-rolled sextant predicates present gone — file deleted

color_palette_catalog_witnesses PASS locally on 64ded87. Part-2 reshape (measure carriers in std.measure, cited tables in extdeps/color/, relationship vocabulary) resumes after #6927 merges per operator sequencing — not re-landed in this revert.

— sent from crisp-bear-390

@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor Author

Addressed review 40731 in the next commit:

  1. PaletteSwatch nickname (catalog.dag:57–79) — Lifted PaletteSwatch to std.color; extdeps rows are now PaletteSwatch directly. Catalogue assigns swatches: okabe_ito_swatches / solarized_swatches with no per-swatch re-projection.

  2. solarized_lab_table_note (solarized.dag:41) — Dropped the prose LAB blob. Canonical L*a*b values remain at the cited authority URL; typed SolarizedLabRow rows land with the OKLCH reground lane (ColorConversionFrontier / design-register-library §10 Class 2).

  3. Hsl units (std/color.dag:14–19) — Added hsl_note documenting h = degrees [0,360), s/l = percent [0,100].

Witness color_palette_catalog_witnesses PASS locally.

— sent from crisp-bear-390

Lift swatch record to std.color so extdeps rows are PaletteSwatch directly and the catalogue stops re-wrapping; remove solarized_lab_table_note until OKLCH lane; document Hsl field units.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor Author

Follow-up: fixes landed in a3e119 (pushed after the note above).

— sent from crisp-bear-390

briansrls and others added 2 commits July 21, 2026 13:31
…lit.

Unify on gunbc.design SwatchSet + island-pastel from main; add okabe-ito/solarized cited rows; move Hsl/srgb8_to_hsl + quiet_envelope_hsl to extdeps.color.srgb with std.measure.Percent; add SwatchMemberKind (Filed|Derived) and loam derived row; fold HSL/quiet-envelope witnesses into design_palette_witness_test; delete std.color and register_walls stubs.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor Author

Addressed reviews 40736, 40737, merge conflict, and operator GO (Part-2 reshape) in 6ec1e77:

40736 (non-blocking)

  • Renamed witness_hsl_projection_red_on_wrong_fixture → witness_hsl_projection_red_on_off_by_one_hue (same camel fixture, discriminates hue 35 vs 36).
  • Hsl unit semantics now on hsl_note + Percent carriers (see 40737).

40737 (REQUEST_CHANGES)

  • Hsl.s/Hsl.l are std.measure.Percent; quiet_envelope_hsl takes Percent params in extdeps.color.srgb.
  • Added percent_from_bounded_int construction wall in std.measure for runtime sRGB→HSL projection.

Merge + Part-2 reshape (6ec1e77)

  • Merged origin/main (plan: gunb.ai site subsumption — dag-emitted frontend, Pages hosting, Deco-Gothic redesign #6927) — island-pastel retained; okabe-ito + solarized added.
  • Dissolved std.color + register_walls → extdeps.color.srgb (cited color-space) + std.measure (Percent) + gunbc.design.* (machinery).
  • SwatchMemberKind (Filed | Derived); loam flagged Derived from camel.
  • Solarized ladder + role-pairing structure rows on extdeps module.
  • Unified witness: design_palette_catalog_keystone_holds PASS locally.

— sent from crisp-bear-390

briansrls and others added 2 commits July 21, 2026 13:51
Move quiet_envelope to gunbc.site.tokens single authority (HslProjection from extdeps); delete percent_lut table in favor of named Int→Nat frontier; replace unverified Solarized accent pairs with documented base-mode involution; witness ladder/pairing pins; reword okabe CVD note; declare census frontier.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor Author

Review 40764 — the pick_percent_lut minor smell is already addressed on HEAD 87fe9f (landed 43faf3 in response to quick-carp-521 verification review, before this artifact):

  • Removed: percent_lut / pick_percent_lut / percent_from_bounded_int (the 101-row O(n) LUT).
  • Replaced with: std.measure.percent_from_computed_int_frontier — names the substrate deficit (runtime refuses computed Int→Nat; percent(n) accepts literal Nat only) and the interim path (extdeps.color.srgb.HslProjection bounded Int counts → gunbc.site.tokens.quiet_envelope_hsl_pct at palette×register binding). Dissolve trigger: numeric-tower Int=Nat grounding for computed values.

No additional commit needed for this finding.

— sent from crisp-bear-390

@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor Author

Verified review 40777 against HEAD 87fe9f: no findings, no commit needed. Approval acknowledged — matches current tree (extdeps cited rows, gunbc.site.tokens envelope authority, HslProjection + percent_from_computed_int_frontier, substantive witnesses including Solarized structure pins).

— sent from crisp-bear-390

@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor Author

Verified review 40778 against HEAD 87fe9f: APPROVE with no findings — no commit needed. Current tree matches the review (extdeps cited palettes, SwatchMemberKind Filed|Derived for loam, HslProjection + percent_from_computed_int_frontier, discriminating envelope/ivory witnesses, Solarized ladder/involution rows on extdeps).

— sent from crisp-bear-390

@gunbai-bot

gunbai-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor Author

CI on 87fe9f — investigated run 29836539240: not a code failure. dag_compile_clean_gate_passes green; claim_executor batch-2 was SIGKILL (exit 137) on srv3-08 (OOM during full floor, ~34min in). No FAIL [batch …] for palette witnesses. Local design_palette_catalog_keystone_holds PASS. Re-triggered failed jobs via gh run rerun 29836539240 --failed.

— sent from crisp-bear-390

@gunbai-bot gunbai-bot Bot changed the title Add color palette catalogue: std.color framework + cited extdeps palettes + house soft-pastel Color palette catalogue: cited extdeps palettes, island-pastel SwatchSet, register binding Jul 21, 2026
@briansrls
briansrls merged commit 59e5cbf into main Jul 21, 2026
4 of 6 checks passed
@briansrls
briansrls deleted the session/crisp-bear-390-color-palette branch July 21, 2026 16:28
@briansrls
briansrls restored the session/crisp-bear-390-color-palette branch July 21, 2026 16:31
gunbai-bot Bot pushed a commit that referenced this pull request Jul 21, 2026
Post-merge regen_stage0 --verify reported regen_divergence_count=1
(std_measure.rs; main's measure.dag delta, not #7002 cli_run). Re-emitted;
verify now regen_divergence_count=0.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jul 21, 2026
Inherited drift, not from this PR. #6991 (59e5cbf, color palette
catalogue) added `data percent_from_computed_int_frontier` to
dag/std/measure.dag without regenerating the emitted seed, so main
carries a stale std_measure.rs. Merging main into this branch inherited
that staleness: regen_divergence_count=1 (std_measure.rs).

Regenerated from the .dag authority via the two-stage bootstrap
(write -> rebuild -> verify); regen_divergence_count=0. The delta is
purely additive (9 lines) and is exactly #6991's declaration -- nothing
from this PR's emitter changes.

neat-swift hit the identical divergence merging the same main into #6986
and resolved it the same way.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jul 21, 2026
…erialization_carriers, program_assembly, source_authority, 02_parse, 03_ingest) refuse with UNRESOLVED_CompilerError in curated probes — census + receipts in #6872 TSVs (calm-boar-697). Read the actual probe error output per module (#6986)

* Gate-A flip prep + Measure nested-generic emitter fix (rebased on main)

Rebased session/neat-swift-795-flip-prep onto origin/main: drop superseded
module-identity/integration history already landed via #6866; retain flip
infrastructure (frontier 6→12 SelfEmitted, wet enrollment, behavioral
transports/shims), Measure emitter generic-env threading (EmitGraphInfo
fn_generic_param_names/fn_type_env, fold lambda param_nodes, container
child recursion gated to generic-fn context), stage0 regen, and nested
List<List<Measure>> emit witness.

PR #6881 remains draft until sign-off receipts complete.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix PR #6881 CI: exclude wet behavioral receipts and repair census gates.

Hermetic discovery was running the three new self-host behavioral witnesses
(shell.Mktemp.Dir has no mock); add them to witness_exclusion_substrings like
the other wet receipts. Discharge Band-A OtherGate rows when the frontier
module is already SelfEmitted. Rename nested-fold witness so its stem covers
the new v1 emit test module for the migration-debt ratchet.

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: unresolved_compiler_error diagnosis + fix: 6 modules (00_compile, materi

* WIP: unresolved_compiler_error diagnosis + fix: 6 modules (00_compile, materi

* Revert unrelated effect-namespace-grants.md collateral from Gate-A PR.

Restore origin/main section 6 (FLAG A interim): workspace Read grant,
ownership-implies-read note, and PR-1/PR-2 LANDED paragraphs. The hunk
was accidental doc drift with no tie to the flip or emitter work.

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: unresolved_compiler_error diagnosis + fix: 6 modules (00_compile, materi

* Add Measure sign-off POST-fix 6-module probe receipt TSV.

Documents hash-verified gunbc rebuild probe results for the flip-wave
baseline: emit 0-diag on all six, cargo at named next layers (std_dup on
5/6; materialization_carriers E0433 deferred per operator routing).

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: unresolved_compiler_error diagnosis + fix: 6 modules (00_compile, materi

* WIP: unresolved_compiler_error diagnosis + fix: 6 modules (00_compile, materi

* WIP: unresolved_compiler_error diagnosis + fix: 6 modules (00_compile, materi

* WIP: unresolved_compiler_error diagnosis + fix: 6 modules (00_compile, materi

* WIP: unresolved_compiler_error diagnosis + fix: 6 modules (00_compile, materi

* WIP: unresolved_compiler_error diagnosis + fix: 6 modules (00_compile, materi

* Fix PR #6881 CI: regen verify gate + stage0 infer sync.

Remove duplicate empty_type_env fallout from stage0 infer emit drift,
and normalize rustfmt-only diffs in regen_stage0 verify so workspace
cargo fmt and fresh self-compile compare cleanly.

Co-authored-by: Cursor <cursoragent@cursor.com>

* ci: retrigger after regen verify + cargo fmt fix (44b23d6).

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: unresolved_compiler_error diagnosis + fix: 6 modules (00_compile, materi

* frontier: sync stage0 crate layout after honest SelfEmitted baseline revert (12→6).

Regenerated stage0_crate_layout_generated artifacts to drop the six
prematurely-flipped modules from hand-maintained pub mod / filename rosters
now that frontier.dag marks them SeedRetained again.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(frontier): restore sweep-order monotonicity after honest revert.

Re-sort compiler_frontier_sweep_order after SeedRetained revert changed
tractability ranks (materialization_carriers/program_assembly →
NameResolutionGap band; 00_compile → EmitSurfaceGap). Fixes
compiler_frontier_census_composite_test CI failure on #6881.

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: unresolved_compiler_error diagnosis + fix: 6 modules (00_compile, materi

* fix(frontier): align reverted behavioral transport docs with honest refresh.

Six reverted-module transport docs now cite SeedRetained / honest_frontier_refresh_probe_note instead of stale "flip landed" prose. Remove three flip-wave seed stubs (parse/ingest/materialization_carriers) that were never wired into the frontier-derived crate layout.

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: Gate-1 emit regression (post-#6848): the Rust emit target renders namesp

* WIP: Gate-1 emit regression (post-#6848): the Rust emit target renders namesp

* emit_imports: field-struct import synth asks "provides", not "physically defines"

An anonymous record literal takes its type from the FIELD it initializes, so the
constructed type name appears nowhere in the source and can never sit in an
authored import list. emit_imports derives use-lines only from import lists, so
the emitted Rust refused: E0422 cannot find struct ... in this scope.

module_data_field_struct_import_names gated candidates on
has_physical_type_def_in_module_filename — field type PHYSICALLY DEFINED in the
module being imported from. That is narrower than the question being asked.
compile_stage_memo imports CacheInterfaceCatalogFacts from extdeps.cache.types
but its io/placement field types are defined in the SIBLING modules
extdeps.cache.catalog_io / catalog_placement and merely re-exported, so they were
rejected and no use-line was synthesized.

Now uses name_in_transitive_export_surface, the existing authority for "does this
module provide this name" (get_exported_names counts specific-import names as
exports, which is exactly re-export) — reused, not re-minted. Routing needed no
change: graph_type_import_module_filename already groups emitted use-lines by the
type's DEFINING module. export_sets is threaded as a parameter rather than rebuilt
inside the filter, which would have been a per-field quadratic cost-shape defect.

Verified by execution, both halves:
  regen_divergence_count=0 (two-stage bootstrap; stage 2 with the new emitter LIVE
    over the whole import-BEARING seed, which is the run that counts)
  materialization_carriers first error advanced
    CacheInterfaceCatalogIoSemantics -> CacheEvidence

Known residue, documented in-code not hidden: a generic field type
(evidence: List<CacheEvidence>) still misses, because build_field_type_map stores
only the type node's HEAD name, so CacheEvidence is absent from field_type_map
entirely and no string-level test can recover it. Distinct axis, separate increment.

Honest frontier refresh (receipt must match measurement, independent of any flip):
01_tokenize / 04_infer / program_partition were recorded as import_closure but all
three now MEASURE as the dotted namespace-qualified render class; rows corrected.
Flip wave produced ZERO flips — 4 of 5 probed modules refuse on the dotted class,
which is emitted into std.collection itself and so sits in every deep closure.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* WIP: unresolved_compiler_error diagnosis + fix: 6 modules (00_compile, materi

* WIP: unresolved_compiler_error diagnosis + fix: 6 modules (00_compile, materi

* emit_imports increment-2: recurse field-type node tree for import surface names.

build_field_type_map now walks resolved generic/container argument nodes so
List<CacheEvidence> contributes CacheEvidence to field_import_surface_names,
not just the List head in field_type_map. emit_imports field-struct synth
consumes the expanded surface list (rides on #6981 sibling-axis machinery).

Oracle: materialization_carriers first cargo error advances past CacheEvidence
E0422 (verified via cssl probe + emitted use of std_cache_interface::CacheEvidence).

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(emit_imports): refresh provider note after increment-2 generic axis.

Replace stale KNOWN RESIDUE paragraph claiming CacheEvidence still misses —
increment-2 now walks the resolved field-type node tree into
field_import_surface_names. Update frontier_probe_types receipt to record
materialization_carriers advancing past CacheEvidence E0422.

Co-authored-by: Cursor <cursoragent@cursor.com>

* ci: cargo fmt for increment-2 stage0 + test module ordering.

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: unresolved_compiler_error diagnosis + fix: 6 modules (00_compile, materi

* Regen stage0 infer_emit_info seed after main merge (#6983).

Post-merge regen_stage0 --verify reported regen_divergence_count=1
(v1_compiler_infer_emit_info.rs stale vs live emitter). Re-emitted seed;
verify now regen_divergence_count=0.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Regen std_measure seed after main merge (#6991 measure.dag).

Post-merge regen_stage0 --verify reported regen_divergence_count=1
(std_measure.rs; main's measure.dag delta, not #7002 cli_run). Re-emitted;
verify now regen_divergence_count=0.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jul 21, 2026
okabe_ito and solarized used okabe_ito_authority/solarized_authority instead of
the required extdeps_external_authority_anchor row; catalog provenance updated
to module-qualified anchors. Unblocks extdeps_external_authority_gate on main.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jul 21, 2026
okabe_ito and solarized used okabe_ito_authority/solarized_authority instead of
the required extdeps_external_authority_anchor row; catalog provenance updated
to module-qualified anchors. Unblocks extdeps_external_authority_gate on main.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jul 21, 2026
gunbai-bot Bot pushed a commit that referenced this pull request Jul 21, 2026
#6991 landed okabe_ito and solarized with module-local authority names;
the live clean-tree gate requires extdeps_external_authority_anchor.
Rename both rows and qualify catalog provenance references.

Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jul 21, 2026
…ly defines" (+ honest frontier refresh, zero flips) (#6981)

* WIP: Gate-1 emit regression (post-#6848): the Rust emit target renders namesp

* WIP: Gate-1 emit regression (post-#6848): the Rust emit target renders namesp

* emit_imports: field-struct import synth asks "provides", not "physically defines"

An anonymous record literal takes its type from the FIELD it initializes, so the
constructed type name appears nowhere in the source and can never sit in an
authored import list. emit_imports derives use-lines only from import lists, so
the emitted Rust refused: E0422 cannot find struct ... in this scope.

module_data_field_struct_import_names gated candidates on
has_physical_type_def_in_module_filename — field type PHYSICALLY DEFINED in the
module being imported from. That is narrower than the question being asked.
compile_stage_memo imports CacheInterfaceCatalogFacts from extdeps.cache.types
but its io/placement field types are defined in the SIBLING modules
extdeps.cache.catalog_io / catalog_placement and merely re-exported, so they were
rejected and no use-line was synthesized.

Now uses name_in_transitive_export_surface, the existing authority for "does this
module provide this name" (get_exported_names counts specific-import names as
exports, which is exactly re-export) — reused, not re-minted. Routing needed no
change: graph_type_import_module_filename already groups emitted use-lines by the
type's DEFINING module. export_sets is threaded as a parameter rather than rebuilt
inside the filter, which would have been a per-field quadratic cost-shape defect.

Verified by execution, both halves:
  regen_divergence_count=0 (two-stage bootstrap; stage 2 with the new emitter LIVE
    over the whole import-BEARING seed, which is the run that counts)
  materialization_carriers first error advanced
    CacheInterfaceCatalogIoSemantics -> CacheEvidence

Known residue, documented in-code not hidden: a generic field type
(evidence: List<CacheEvidence>) still misses, because build_field_type_map stores
only the type node's HEAD name, so CacheEvidence is absent from field_type_map
entirely and no string-level test can recover it. Distinct axis, separate increment.

Honest frontier refresh (receipt must match measurement, independent of any flip):
01_tokenize / 04_infer / program_partition were recorded as import_closure but all
three now MEASURE as the dotted namespace-qualified render class; rows corrected.
Flip wave produced ZERO flips — 4 of 5 probed modules refuse on the dotted class,
which is emitted into std.collection itself and so sits in every deep closure.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* WIP: Gate-1 emit regression (post-#6848): the Rust emit target renders namesp

* emit: route qualified type names through their terminal segment (dotted-render fix)

A namespace-qualified name in a type position arrived from authored_name_at as
the full dotted spelling (std.algebra.FreeMonoid). Every routing lookup on the
alias-RHS path is keyed on the BARE declared name, so a dotted spelling matched
nothing, def_mod fell back to the local module, and the else arm rendered the
dotted string VERBATIM into Rust:

    pub type List<T> = std.algebra.FreeMonoid<T>;   // invalid Rust

rustc reports that as "expected one of !, (, +, ::, ;, <, or where, found ." — a
PARSE error, so it masked every later error in the module.

Measured blast radius: the emitted 04_infer closure (50 files) contained exactly
ONE such line, and it blocked 4 of 5 self-host flip candidates, because
std.collection sits in essentially every deep-module closure. The control proving
it was qualified-specific is the next declaration: type Set<T> = PointwisePower<T>
(BARE) already routed to Rc<crate::v2_std_algebra::PointwisePower<T>>.

Fix routes on the terminal segment via v1.std.core qualified_last_segment — the
existing authority, not a minted helper: a qualified name IS a containment path
and its last segment IS the declared name the registry knows. Explicitly NOT a
string dot-to-colon rewrite, which would fabricate a path from the spelling rather
than resolve the declaration, and would emit a wrong path whenever the qualifier
does not match the defining module.

Zero drift BY CONSTRUCTION rather than by hope: qualified_last_segment is the
identity on an unqualified name, so every bare name renders byte-identically and
only the qualified case changes.

Verified by execution, both halves:
  regen_divergence_count=0 (two-stage bootstrap, stage 2 with the new emitter live)
  pub type List<T> = Rc<crate::std_algebra::FreeMonoid<T>>;
  zero dotted type paths remain in the emitted closure

Deliberately NOT taken: collection.dag already imports FreeMonoid, so editing that
one declaration to the bare name would have turned the chain green in one
character. That is the cement anti-pattern — it hides the emitter defect and the
next qualified name reintroduces it silently.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* regen: refresh std_measure.rs seed after #6991 measure.dag change

Inherited drift, not from this PR. #6991 (59e5cbf, color palette
catalogue) added `data percent_from_computed_int_frontier` to
dag/std/measure.dag without regenerating the emitted seed, so main
carries a stale std_measure.rs. Merging main into this branch inherited
that staleness: regen_divergence_count=1 (std_measure.rs).

Regenerated from the .dag authority via the two-stage bootstrap
(write -> rebuild -> verify); regen_divergence_count=0. The delta is
purely additive (9 lines) and is exactly #6991's declaration -- nothing
from this PR's emitter changes.

neat-swift hit the identical divergence merging the same main into #6986
and resolved it the same way.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* merge main (#6986 increment-2) into 6981; resolve 3 conflicts, regen seed

#6986 merged ahead of #6981, so this integrates it. Three conflicts, NOT
a clean merge:

- src/v1/05_emit_rust.dag and src/v2/compiler/self_host/frontier_probe_types.dag
  both conflicted on a `data ..._note` describing the generic-argument
  residue. Mine documented it as OPEN ("deliberately not fixed here");
  #6986 CLOSED it (increment 2: build_field_type_map walks the resolved
  field-type node tree via collect_type_node_import_surface_names, so
  List<CacheEvidence> now admits CacheEvidence). Took #6986's text on both
  — mine had become factually wrong. Resolved per-hunk, not per-file, so
  the rest of the auto-merge survived.

- src/v1/stage0/src/v1_compiler_emit_rust.rs is the EMITTED SEED and was
  NOT hand-merged. Reset to main's known-good copy, rebuilt, then
  regenerated from the merged .dag via the two-stage bootstrap
  (write -> rebuild -> verify). A git text-merge of two independently
  regenerated seeds is not a valid regen.

Verified both sides survived: this PR's dotted fix (qualified_last_segment)
and emit_imports fix (name_in_transitive_export_surface) are present, and
so is #6986's increment-2. regen_divergence_count=0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jul 21, 2026
…mo (#6999)

* WIP: Floor time regression: bisect the +20min added by #6848 namespace walks

* WIP: Floor time regression: bisect the +20min added by #6848 namespace walks

* test(floor-time): deferral oracle compares outcomes without requiring Pass

The hot-hit vs cold-oracle equivalence test only needs cold==hot; the
witness under test may fail for unrelated corpus reasons. Drop the Pass
gate and remove the now-unused ClaimOutcome import.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(docs): link floor-time diagnosis into doc graph

doc_graph_has_no_orphan_docs failed on the new diagnosis doc — add a
backlink from the already-reachable floor-memory diagnosis parent.

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(floor-time): clarify axis 2b landed on main via #6998

Diagnosis status line still claimed both fixes in this PR; reconcile
deferral is on main, this PR is the entry-closure memo half.

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: Floor time regression: bisect the +20min added by #6848 namespace walks

* fix(extdeps): canonical anchor rows on cited color palettes (#6991)

#6991 landed okabe_ito and solarized with module-local authority names;
the live clean-tree gate requires extdeps_external_authority_anchor.
Rename both rows and qualify catalog provenance references.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jul 21, 2026
…7014)

* WIP: MAIN RED triage: ci exit-137 kills at job tail (3 failures since 10:30)

* ci: retrigger after draft→ready job cancellation (no code change).

Prior run 29854828879 ci/deploy were cancelled at 66s during compile; extdeps anchor fix verified locally via corpus_live_clean_tree_holds.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jul 22, 2026
…ier (#7008)

* Phase-A design-library lift: extract gunbc.design.* L1/L2, census frontier, parity witness.

Lift register machinery from gunbc.site.* into gunbc.design.* (lift-not-fork);
site modules become thin façades. Consolidate census constants onto std.integer,
std.measure, and extdeps.numeric.base16. Add Achromatic HslProjection variant,
typed ElementId, design_register_lift_parity_witness, and rebase roadmap
consumers onto shared design authorities after #6997.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix extdeps authority anchors for cited color palettes (#6991).

okabe_ito and solarized used okabe_ito_authority/solarized_authority instead of
the required extdeps_external_authority_anchor row; catalog provenance updated
to module-qualified anchors. Unblocks extdeps_external_authority_gate on main.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Revert "Fix extdeps authority anchors for cited color palettes (#6991)."

This reverts commit 76e8bb6.

* Address review 40880: derive uint8 max from bit width, document base16 miss arm.

uint8_channel_inclusive_max_value uses int_pow_bounded(2, bits) - 1 instead of
else-0; unsupported widths yield -1 so srgb8_admissible rejects all channels.
base16_digit_miss_note names the fail-loud sentinel contract (witness already pins).

Co-authored-by: Cursor <cursoragent@cursor.com>

* Address review 40896: uint8 max returns Int? with typed refusal.

uint8_channel_inclusive_max_value now returns Present|Absent via int_pow_bounded;
srgb8_admissible fails closed on Absent; witness_uint8_channel_inclusive_max_value_present
pins Present{255} for the declared uint8_channel_bit_width authority.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Address review 40902: pin uint8 max as data authority, drop Absent widens.

uint8_channel_inclusive_max is the construction authority; hot-path srgb
callers use uint8_channel_inclusive_max_value() -> Int with no Option arms.
uint8_channel_inclusive_max_value_derived() remains witness-only (Int?).

Co-authored-by: Cursor <cursoragent@cursor.com>

* Add RFC 4648 authority anchor to extdeps.numeric.base16.

The new base16 module was missing extdeps_external_authority_anchor, causing corpus_live_clean_tree_holds and batch-4 extdeps_external_authority_gate_passes to fail on CI.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Regen stage0 seed for std.integer/std.measure census changes.

Refreshes committed std_integer.rs and std_measure.rs after dag/std/integer.dag
and dag/std/measure.dag authority additions; regen_divergence_count=0 verified.

Co-authored-by: Cursor <cursoragent@cursor.com>

* WIP: WAIT FOR THE DM BRIEF FROM quick-carp-521 BEFORE ACTING — do not run any

* Fix regen emit for uint8 census constants (review 41332).

Move uint8_channel_bit_width/inclusive_max data rows to std.measure (kernel Int,
same pattern as permyriad_denominator) so regen emits plain i64 accessors instead
of invalid Nat<Magnitude>/i64<GroupCompletion<Nat>> in std.integer. Re-run regen;
regen_divergence_count=0; v1-compiler check green.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Brian Searls <11205878+briansrls@users.noreply.github.com>
Co-authored-by: gunbai-bot[bot] <289086189+gunbai-bot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant