Skip to content

get rid of "Undecideable because" strings and rationale - #5943

Merged
briansrls merged 3 commits into
mainfrom
session/tidy-badger-45
Jun 29, 2026
Merged

briansrls merged 3 commits into
mainfrom
session/tidy-badger-45

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session tidy-badger-45.
Pushing to session/tidy-badger-45 advances this PR.

Worker attestation

Before flipping this PR to ready for review, confirm each item:

  • Title describes the change (not the session id or branch).
  • PR body summarises what and why (replace the TODO below).
  • Tests run: name the command (e.g. npm test, cargo test) and the result.
  • If this closes a work item, the body contains a Closes #N directive.
  • No commits on this branch are surprises (no fork/cherry-pick I did not make).
  • No secrets / credentials / large binaries staged.

Summary

TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.

Test plan

  • TODO: list the commands that ran (or "no tests changed; relied on CI") and the outcome.

briansrls and others added 2 commits June 29, 2026 13:53
…uction-justification

These free-text String payloads on ConstructionJustification (rationale) and
ConstructionClass::RatchetForever (undecidable_because) were a §6 parallel-ledger:
unverifiable prose that no consumer ever reads (the only matches discard the value
with `_`). The judgment now lives entirely in the typed ConstructionClass; the
structured `dissolves_to: ConstructionMechanism` on WallAfterGrounding stays.

- construction_justification.dag: drop both String fields (RatchetForever → nullary)
- all 44 v2.lens.* decls: strip rationale + collapse RatchetForever { ... } → RatchetForever
- intent_linearity match arm: RatchetForever { undecidable_because: _ } → RatchetForever
- cli_run.rs hygiene-test fixture updated to the new shape
- construction_justification_rule plan: refresh §1/§3/§4 prose (the vacuity residual
  the rationale field embodied is now resolved by removal) + regenerated its md

Verified: construction_justification hygiene tests (3/3, incl. live-corpus
floor_corpus_every_lens_is_justified) green; modified .dag modules resolve/typecheck
(nullary RatchetForever construction); generated-artifact drift gate ExitSuccess.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review June 29, 2026 14:03
…tion-justification diagnostic

The unjustified-lens error message still named the removed `rationale` field;
the decl no longer carries it. Addresses claude-opus-4-7 review finding on #5943.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@briansrls
briansrls merged commit 45ab4ae into main Jun 29, 2026
2 checks passed
@briansrls
briansrls deleted the session/tidy-badger-45 branch June 29, 2026 16:32
briansrls added a commit that referenced this pull request Jun 29, 2026
…rriers) (#5952)

* Design: reference-grounding migration plan (stringly-typed refs → typed carriers)

Adds dsl/gunbc/plans/reference_grounding_migration.dag (a Plan, rendered to
docs/plans/reference-grounding-migration.md via the generated-artifact registry)
and registers it in plan_registry_batch_g.

The carrier half of a two-part groundedness effort (detector half = neat-fox-279's
v2.lens.grounding EXTRACT). Captures the holistic audit finding: ~80+ stringly-typed
references across lens/std/extdeps/gunbc are ONE problem — a symbol/module/fn/path/URL
written as free text where a typed edge belongs — and almost every target carrier
already exists (DeclarationRef, QualifiedName, Uri, UriScheme). Lays out the §2/§3/§5/§6
framing, the reference/enum/derivable/prose partition, the explicit anti-goal (no fresh
branded-NonEmptyStr per field), the EXTRACT-driven worklist (no hand-ledger), the
sequencing (#5933→#5943 → construction→DeclarationRef proof → bulk → quick wins →
path-literal lane), and a dissolution trigger (EXTRACT returns empty).

Verified: plan typechecks + renders (main_wet ExitSuccess); md is byte-stable across a
fresh in-tree main-built gunbc. NOTE: the drift gate currently reds on a PRE-EXISTING
main drift in .githooks/pre-push (regenerates differently from committed on origin/main,
independent of this PR — this change touches only the 3 plan files).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Register reference_grounding_migration in plan registry + regenerate pre-push roster

Fixes the prior commit which dropped the plan_registry_batch_g edit (the plan was
unregistered, so its md was an orphan and it never entered all_plans). Adds the
registration and the one-line .githooks/pre-push regeneration that follows from a new
generated plan artifact (fresh_artifact_path roster). Drift gate now green (ExitSuccess).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Fold role-vs-reference distinction + earn-don't-guess into the migration plan

Incorporates neat-fox-279's substrate-scout finding: the "reference" bucket was itself a
conflation. Split it into REFERENCE (names an independent entity → DeclarationRef/Uri) vs
ROLE (a genitive/ownership word about the enclosing concept → a tag on EdgeLabel/FieldRef,
an upstream substrate gap the carrier models nowhere today). The role carrier is EARNED
from an accumulated adjudication ledger (§1 convention→necessity), never guessed by a
hand-coded stop-list of generic names or a threshold. Adds §3.1, the Role row, the ledger
discipline, the EARNED role-carrier sequencing step, and notes the layer-exclusion (Job A)
as neat-fox's half that runs before these candidates.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Make the reference-grounding plan reachable: add ROADMAP §0 node (fixes orphan-doc gate)

CI failure was doc_graph_has_no_orphan_docs() = false — a new docs/plans/*.md is an
orphan unless ROADMAP links to it. Added a §0 authored_pp node (0-reference-grounding)
in roadmap_authority.dag referencing the plan + its construction-rule sibling, and
regenerated ROADMAP.md (the generated artifact — never hand-edited). Orphan witness now
true; drift gate green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jun 29, 2026
…#5943 carrier shape (#5964)

#5933 (model-grounding lens) merged carrying the PRE-#5943 ConstructionJustification
shape — `RatchetForever { undecidable_because: ... }` + `rationale: ...` — because its
CI was green against an older merge-base. Against current main (where #5943 removed both
fields and #5960 reshaped WallNow) grounding.dag fails to typecheck:
`field 'rationale' not found in type 'ConstructionJustification'`, reddening the lens, its
witness, and the floor. Classic merge-skew (CI-green-on-stale-base).

Fix = the #5943 migration applied to the one site #5933 re-introduced: drop the unread
free-text payloads, `class: RatchetForever` (nullary). Same treatment every other
RatchetForever site already carries; the judgment lives in the typed variant.

Verified in-tree on current main: grounding_lens_witnesses green; candidates() runs;
construction_justification_hygiene_tests 6/6 (incl. wall_now_authority_graph_is_total).

(The dropped undecidable_because prose — the cursor~Cursor / necessary-not-sufficient
reasoning — is real and belongs in the EXTRACT/grounding DESIGN doc, not the carrier;
flagged to neat-fox-279.)

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jun 29, 2026
…-green by construction + repo-standard drift gate [SKETCH] (#5965)

* WIP: get rid of "Undecideable because" strings and rationale

* Remove unstructured rationale / undecidable_because prose from construction-justification

These free-text String payloads on ConstructionJustification (rationale) and
ConstructionClass::RatchetForever (undecidable_because) were a §6 parallel-ledger:
unverifiable prose that no consumer ever reads (the only matches discard the value
with `_`). The judgment now lives entirely in the typed ConstructionClass; the
structured `dissolves_to: ConstructionMechanism` on WallAfterGrounding stays.

- construction_justification.dag: drop both String fields (RatchetForever → nullary)
- all 44 v2.lens.* decls: strip rationale + collapse RatchetForever { ... } → RatchetForever
- intent_linearity match arm: RatchetForever { undecidable_because: _ } → RatchetForever
- cli_run.rs hygiene-test fixture updated to the new shape
- construction_justification_rule plan: refresh §1/§3/§4 prose (the vacuity residual
  the rationale field embodied is now resolved by removal) + regenerated its md

Verified: construction_justification hygiene tests (3/3, incl. live-corpus
floor_corpus_every_lens_is_justified) green; modified .dag modules resolve/typecheck
(nullary RatchetForever construction); generated-artifact drift gate ExitSuccess.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Fix stale error-message string: drop "with a rationale" from construction-justification diagnostic

The unjustified-lens error message still named the removed `rationale` field;
the decl no longer carries it. Addresses claude-opus-4-7 review finding on #5943.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* WIP: Idempotency Manager

* WIP: Idempotency Manager

---------

Co-authored-by: Brian Searls <briansrls@gunb.ai>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jun 30, 2026
…nce residue (retire undecidable_because/rationale) (#5997)

* WIP: get rid of "Undecideable because" strings and rationale

* Remove unstructured rationale / undecidable_because prose from construction-justification

These free-text String payloads on ConstructionJustification (rationale) and
ConstructionClass::RatchetForever (undecidable_because) were a §6 parallel-ledger:
unverifiable prose that no consumer ever reads (the only matches discard the value
with `_`). The judgment now lives entirely in the typed ConstructionClass; the
structured `dissolves_to: ConstructionMechanism` on WallAfterGrounding stays.

- construction_justification.dag: drop both String fields (RatchetForever → nullary)
- all 44 v2.lens.* decls: strip rationale + collapse RatchetForever { ... } → RatchetForever
- intent_linearity match arm: RatchetForever { undecidable_because: _ } → RatchetForever
- cli_run.rs hygiene-test fixture updated to the new shape
- construction_justification_rule plan: refresh §1/§3/§4 prose (the vacuity residual
  the rationale field embodied is now resolved by removal) + regenerated its md

Verified: construction_justification hygiene tests (3/3, incl. live-corpus
floor_corpus_every_lens_is_justified) green; modified .dag modules resolve/typecheck
(nullary RatchetForever construction); generated-artifact drift gate ExitSuccess.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Fix stale error-message string: drop "with a rationale" from construction-justification diagnostic

The unjustified-lens error message still named the removed `rationale` field;
the decl no longer carries it. Addresses claude-opus-4-7 review finding on #5943.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* WIP: Idempotency Manager

* WIP: Idempotency Manager

* WIP: Idempotency Manager

* WIP: Idempotency Manager

---------

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