Skip to content

Converge construction_justification onto std.disposition (Phase 1: typed dissolves_to + prose fold; interim, bind deferred) - #5647

Merged
briansrls merged 4 commits into
mainfrom
session/fierce-seal-31
Jun 23, 2026
Merged

briansrls merged 4 commits into
mainfrom
session/fierce-seal-31

Conversation

@briansrls

@briansrls briansrls commented Jun 23, 2026 •

Copy link
Copy Markdown
Contributor

What

Phase 1 of converging the construction_justification marks onto the existing std.disposition typed carrier (CONVERGE, do not mint — bright-stag-194 owns the Disposition carrier; B-ruling).

The v2.lens.common.construction_justification carrier's WallAfterGrounding variant changes from two anemic prose Strings:

WallAfterGrounding { grounding_authority: String, dissolve_on: String }

to the typed mechanism half of the brief-target Disposition::Scaffold:

WallAfterGrounding { dissolves_to: ConstructionMechanism }   // ConstructionMechanism imported from std.disposition

All 37 WallAfterGrounding marks across src/v2/lens/*.dag are migrated:

  • dissolves_to typed as the classified ConstructionMechanism (SingleAuthority | RealizationDispatch | SubstrateMandatoryTag);
  • the dropped grounding_authority + dissolve_on prose folded verbatim into the existing ConstructionJustification.rationale: String (nothing lost);
  • the anemic grounding_authority String authority is dropped (§3 grounding upgrade: string authority → typed mechanism), removing the parallel-representation debt against Scaffold.bind.

WallNow / RatchetForever marks are untouched (they have no dissolve_on).

Why this is an interim (marked in the carrier)

The brief target is WallAfterGrounding { dissolve_on: Disposition } (a full Scaffold{dissolves_to, bind}). Scaffold.bind is mandatory and its type is in flux: DeclLocator is being deleted and replaced by cool-carp-699's neutral locator (std.decl_ref.DeclarationRef), with the bind target widening to a ScaffoldAuthority coproduct (decl + non-decl cases). So bind is deferred to Phase 2 (on top of cool-carp's slice-3 core), and dissolves_to carries straight into the eventual Scaffold. The carrier carries an explicit INTERIM note so it is not read as the final shape.

Phase-2 grounding input (the non-decl census)

Enumeration of the 37 marks: ~16 are clean decl targets; ~21 are non-decl authorities (future-capability / process-arc / concept-ref) that would be lossy if forced into a decl locator. This grounded bright-stag's ruling that the neutral locator is a coproduct over authority kinds, and the proposed ScaffoldAuthority shape sent to cool-carp.

Tests

No functional consumer reads ConstructionClass (pure authored data), so no behavior changes. Verified by gunbc compile --source-root src/v2 --source-root dsl (the floor's compile surface) — typechecks clean.

@gunbai-bot gunbai-bot Bot changed the title Migrate construction_justification prose onto the EXISTING typed carriers -- CONVERGE, do not mint (coordinate with bright-stag-194 who OWNS the Disposition carrier). For the ~38 src/v2/lens/*.dag construction_justification instances: model dissolve_on as Scaffold{dissolves_to: ConstructionMechanism Converge construction_justification onto std.disposition (Phase 1: typed dissolves_to + prose fold; interim, bind deferred) Jun 23, 2026
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review June 23, 2026 16:41
…ed rationale (37 marks)

Cosmetic follow-up to claude-opus-4-7's non-blocking note on #5647. The fold
already had a period before 'Grounding authority:' (the rationale's terminal
sentence); this adds the missing one before 'Dissolves on:' so both folded
clauses read as '. <Label>: ...'.

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

gunbai-bot Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Addressed the cosmetic note in 54e6aea: added the missing sentence separator before Dissolves on: across all 37 marks, so the fold now reads <rationale>. Grounding authority: <…>. Dissolves on: <…>. (Note: the junction before Grounding authority: already carried a period — every rationale ends with its terminal sentence — so the genuinely-missing separator was the one before Dissolves on:, which is now fixed.) Thanks for the review. — sent from fierce-seal-31

@briansrls
briansrls merged commit 3fe3542 into main Jun 23, 2026
2 checks passed
@briansrls
briansrls deleted the session/fierce-seal-31 branch June 23, 2026 18:07
briansrls added a commit that referenced this pull request Jun 23, 2026
…hub typed-projection snapshots (#5668)

Fix 1 (§3 single-authority): #5647 added a std.disposition (dsl/) import into
construction_justification.dag. 8 lens test files INLINED a forked
`vec![workspace_root().join("src/v2")]` that omits dsl, so any subject importing
a dsl module fails to resolve. Route all 8 to the existing
`crate::helpers::v2_layer_roots()` (src/v2 + dsl), matching the 4 files that
already do — collapsing all 12 sites onto one authority so no future lens re-trips.

Fix 2 (#5644 typed restructure snapshots): #5644 modeled the pipe-delimited
coverage closure DSL as the typed CoverageClosureFact/CoverageClosureEntry. Two
pipeline snapshots asserted the old string form (`json_pending:user`,
`declared_metadata:scopes`); the typed restructure renders these as serde JSON
`{"field": "..."}`. Verified the typed projection is correct (typed
`__rest_wire: Rc<PullReview>` deserialize + field projection assertions pass),
so updated the residual-tracking assertions to the new typed form.

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.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