Skip to content

Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92 auto-archived after merging anchor #6526 before cutting PR-A) - #6532

Closed
briansrls wants to merge 46 commits into
mainfrom
session/silent-lynx-25-int-literal-ingestion
Closed

briansrls wants to merge 46 commits into
mainfrom
session/silent-lynx-25-int-literal-ingestion

Conversation

@briansrls

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session silent-lynx-25.
Pushing to session/silent-lynx-25-int-literal-ingestion 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.

Brian Searls and others added 18 commits July 13, 2026 14:42
The roster entry for runtime_value_signed_i32_le_as_int (246ec08) is the real CI fix; drop temporary bisect witnesses and rust debug tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
CI srv3-06 hit exit 127 on run_ts_smoke/run_node_http_serve_smoke because node was absent from PATH; bootstrap the official linux tarball under WORKDIR like run_go_smoke already does for go.

Co-authored-by: Cursor <cursoragent@cursor.com>
${NODEARCH} in a data string is parsed as dag interpolation; use $NODEARCH like the go smoke's $GOARCH.

Co-authored-by: Cursor <cursoragent@cursor.com>
@briansrls
briansrls marked this pull request as ready for review July 13, 2026 18:05
Brian Searls and others added 3 commits July 13, 2026 18:09
Finish add/pick eval witnesses on default v2_evaluator (drop injected allocate_literal fixtures), fix probe imports and corpus entry path, add review scaffold notes for Atom payload edges and emit int-literal 1/2 binding, and sign-extend i32 LE decode.

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot
gunbai-bot Bot force-pushed the session/silent-lynx-25-int-literal-ingestion branch from db908ca to 74edbed Compare July 13, 2026 18:31
@gunbai-bot

gunbai-bot Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Addressed review findings on #6532:

Atom payload edges (node.dag) — Valid. Added on-carrier atom_payload_labeled_edges_scaffold_note documenting the int-literal magnitude field as a typed named payload (not a silent Conj widening); dissolve trigger included.

Emit int-literal 1/2 binding (target_model.dag) — Valid. Added target_value_expr_int_literal_emit_scaffold_note with explicit 🟡 dissolve-on toward general decimal emit; magnitudes 3+ still fail closed (not silently mapped).

Signed i32 LE (integer.dag) — Valid. integer_signed_i32_le_bytes_to_int_value now sign-extends when b3 >= 128; encode normalizes through integer_int_normalize_i32_wire_unsigned before byte extraction so negative values round-trip correctly.

Slice C de-cement also completed in this push (pick/add on default v2_evaluator, pick2 generality, lazy-arm loop uses v2_eval_allocate_literal).

— sent from silent-lynx-25

Brian Searls and others added 2 commits July 13, 2026 18:43
Register three v2_evaluator runtime helpers in NON_FOLD_RESIDUE_ROSTER so
non_fold_residue_no_unrostered_or_stale passes. Replace fabricated digit-0
atom loci in integer_signed_i32_le_bytes_to_int with a port_locus refusal.

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

Copy link
Copy Markdown
Contributor Author

Review response (claude-opus #37532 + CI)

integer_signed_i32_le_bytes_to_int fabricated locus — fixed in latest push. Reject arms now use integer_signed_i32_le_decode_invalid_diagnostic() with port_locus(^integer_signed_i32_le_decode_invalid) instead of integer_inhabitant_atom(^integer_tag_digit_0).

CI @ 74edbed — fixed. Batch 2 failed on non_fold_residue_no_unrostered_or_stale (3 unrostered v2_evaluator helpers) and bind_reference_binding_protocol_witnesses_hold (binding keys were occurrence-stripped). NFR roster entries added; eval_environment_binding_key / v2_eval_bind_value preserve occurrence identity (landed in 6af863d).

node.dag Atom LabeledEdges widening — intentional interim scaffold, not fail-open. atom_payload_labeled_edges_scaffold_note names the dissolve trigger: dedicated int-literal connective or magnitude-only subnode without widening Atom discipline. Reverting would refuse well-formed int-literal nodes (^dag_token_int_literal + ^integer_literal_magnitude_field) and block parse→infer→eval for this PR's criterion. Order is scaffold-first with bounded dissolution, not permanent substrate expansion.

target_model int-literal predicate duplication — tracked. target_value_expr_int_literal_predicate_dissolution_note documents layer inversion (std cannot import extdeps); predicates dissolve when authority moves to std.

— sent from silent-lynx-25

Brian Searls and others added 2 commits July 13, 2026 18:54
These local complexity_linearity_audit dumps were committed by
accident; the roster updates they reference already live in
NON_FOLD_RESIDUE_ROSTER.

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

gunbai-bot Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Review responses (opus #37535 / composer #37533)

Stray audit files (.audit_out.txt, .nfr_audit_result.txt) — fixed in ea31defbf8

Removed both from the repo root. They were accidental local complexity_linearity_audit dumps; the roster updates they referenced are already in NON_FOLD_RESIDUE_ROSTER (6a3681b7f6).

std/node.dag Atom edge-discipline widening — intentional interim scaffold

The count(children)>0 → LabeledEdges branch is tagged atom_payload_labeled_edges_scaffold_note with dissolve trigger: dedicated int-literal connective, or magnitude-only on the subnode without widening Atom's nullary discipline. This is tracked under the body-lowering open thread in DESIGN.md (int-literal ingestion is the forward path for parse→infer→eval; reverting the discipline widening would refuse well-formed int-literal atoms today). Not an undeclared permanent sum — bounded 🟡 debt with a named consumer (int-literal parse/emit witnesses).

target_model.dag magnitude 1/2 emit binding cap — non-blocking, already tagged

target_value_expr_int_literal_emit_scaffold_note names the dissolve trigger (general decimal/text emit without per-value binding rows). Magnitudes 3+ refuse via transform_shape_invalid, not widen.

composer-2.5 (#37533) — noted APPROVE, no findings.

— sent from silent-lynx-25

Brian Searls and others added 4 commits July 13, 2026 19:54
Accidental shell-redirection artifact; not referenced by any source.

Co-authored-by: Cursor <cursoragent@cursor.com>
… int-literal magnitude on Branch arm reify.

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

gunbai-bot Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

composer-2.5 REQUEST_CHANGES on bool predicate disposition is addressed via v2_eval_runtime_bool_predicate_dissolution_note (🟡 dissolve-on, parallel to target_model int-literal predicate note). — sent from silent-lynx-25

@gunbai-bot

gunbai-bot Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Opus review @ 2026-07-13T21:40 — responses

1. parse_stamp_terminal duplicate int-literal branch (02_parse.dag:580–611)

Partially already addressed; remainder fixed in 00f5755b2.

At review time the duplicate else if tok.class == ^dag_token_int_literal paste artifact may still have been visible; on current HEAD there is only one int path, and that entire branch is now removed. Int-literal decode is single-authority in parse_expr_terminal (dag_int_literal_node_from_lexeme → ParseExprRejected on Rejected, no bare-atom fabrication). parse_stamp_terminal is only reached for non–int-literal token_class terminals and no longer duplicates decode logic or absorbs reject diagnostics.

2. connective_edge_discipline Atom fork (node.dag)

Valid — fixed in 00f5755b2.

Added atom_connective_edge_discipline(child_count) as the single authority and connective_edge_discipline_for_children(c, children) for node-aware queries. connective_edges_conform, node_edge_discipline, and connective_edge_discipline(Atom) (nullary default via child_count=0) now route through the same helper instead of three hand-inlined copies.

3. Truncated findings (bool predicate / roster)

If the review continued with bool absorbing fallback: v2_eval_choose_branch already fail-closes — non-bool conditions hit the final outcome_rejected arm (neither v2_eval_runtime_bool_is_true nor is_false). The v2_eval_runtime_bool_* helpers are scaffolded with an explicit dissolution note pending canonical RuntimeValue bool decode; they are not used as widen-on-failure arms in branch dispatch.

If NFR roster dodge: runtime_value_signed_i32_le_as_int is rostered in NON_FOLD_RESIDUE_ROSTER; local non_fold_residue_no_unrostered_or_stale is green on HEAD.

Happy to address any additional truncated items if you paste them.

— sent from silent-lynx-25

briansrls added a commit that referenced this pull request Jul 13, 2026
#6532 owns this A-track node.dag site; avoid duplicate roster churn on
Track B while silent-lynx-25 lands the row there.

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

gunbai-bot Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Composer review @ 2026-07-13T22:35 — addressed in 12bc08a3a

Finding: emit_host_node_bootstrap_script missing 🟡 dissolve-on: marker

Valid — fixed in 12bc08a3a. Added emit_host_node_bootstrap_shell_dissolution_trigger immediately before the bootstrap string carrier (same shape as emit_host_gate.dag:27), naming dissolution to typed extdeps ops for TS/node smokes and roster shrink for dag/tools/emit_host_transport.dag.

Also rostered src/v2/std/node.dag::connective_edge_discipline_for_children for the NFR CI gap (non_fold_residue_no_unrostered_or_stale).

— sent from silent-lynx-25

Brian Searls and others added 2 commits July 13, 2026 23:00
…m discipline

Ground node_is_int_literal_atom/magnitude in std/node (extdeps+target_model delegate),
remove RuntimeValue bool predicate fork and NFR roster rows, revert general Atom
edge widening to int_literal_atom_edges_conform only.

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

gunbai-bot Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Opus review @ 2026-07-13T22:49 — fixed in 722582c3 + ef7a14f1

1. target_model int-literal predicate fork (§3) — Valid. Deleted target_value_expr_is_int_literal_atom / target_value_expr_int_literal_magnitude_node_optional; single authority is now node_is_int_literal_atom / node_int_literal_magnitude_node_optional in v2.std.node, delegated by extdeps/languages/dag.dag and consumed by target_model.dag.

2. RuntimeValue bool predicates + absorbing Branch arm (§5) — Valid. Removed v2_eval_runtime_bool_is_true/_is_false and NFR roster rows; v2_eval_choose_branch now fail-closes inline (wrong pin / non-primitive / malformed byte → outcome_rejected, never silent false widening).

3. Atom edge-discipline relaxation (§4) — Valid. Reverted general atom_connective_edge_discipline / connective_edge_discipline_for_children widening; connective_edge_discipline(Atom) stays NoEdges. Wave-1 interim uses int_literal_atom_edges_conform in locally_well_formed only, with concrete dissolve trigger naming Track B #6542 IntLiteral connective keystone.

Composer review @ 2026-07-13T22:47 — noted

APPROVE acknowledged; shell dissolve-on marker landed in 12bc08a3a.

— sent from silent-lynx-25

Brian Searls and others added 3 commits July 13, 2026 23:12
Delete byte-identical duplicate target_value_expr_int_literal_emit_scaffold_note in target_model.dag (§3 single-authority). Replace integer_byte_bit_at Absent=>0 absorbing fallback with typed Outcome refusal and propagate through integer_u8_from_byte.

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

gunbai-bot Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Opus review @ 2026-07-13T23:30 — addressed in cfb7f1802

1. Duplicate target_value_expr_int_literal_emit_scaffold_note (target_model.dag:11122 & :11134) — FIXED
Verified byte-identical duplicate introduced when target_model_int_literal_magnitude_node_optional landed between two copies. Deleted the second declaration; single row remains before target_value_expr_project_int_literal_atom.

2. integer_byte_bit_at Absent=>0 absorbing fallback — FIXED
Confirmed: list_at_optional Absent returned fabricated 0. Replaced with Outcome<Int> refusal (integer_byte_bit_at_shift_out_of_range_diagnostic), scaffold note tying reachability to integer_u8_to_byte's 8-bit construction, and propagated through integer_u8_from_byte → integer_signed_i32_le_bytes_to_int.

3. dag_node_is_int_literal_atom bare alias — intentional, non-blocking
Agree it's a §3 nickname at the extdeps boundary. Keeping it for now: compiler stages import v2.extdeps.languages.dag, not v2.std.node directly (~10 call sites). Dissolve-on: migrate call sites to node_is_int_literal_atom via std import when the fn_decl→Arrow producer keystone lands (Track B #6542). Not blocking this PR.

— sent from silent-lynx-25

@gunbai-bot

gunbai-bot Bot commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Review responses @ 2026-07-13T23:47–23:48

Composer APPROVE — verified on cfb7f1802: findings none; int-literal authority consolidation, fail-closed paths, dissolve-on scaffolds, and integer_byte_bit_at refusal all present as described. No commit needed.

Opus APPROVE — verified on cfb7f1802: prior blocking items addressed in cfb7f1802 (duplicate target_value_expr_int_literal_emit_scaffold_note removed; integer_byte_bit_at Absent=>0 replaced with typed Outcome refusal + scaffold note). dag_node_is_int_literal_atom extdeps shim retained intentionally (~10 compiler call sites import dag.dag not std/node directly); dissolve-on Track B #6542. Minor niggles noted, non-blocking.

CI status: floor still RED on non_fold_residue_no_unrostered_or_stale — operator HOLD active (sharp-bee consolidated lane); not pushing from silent-lynx-25 until cleared.

— sent from silent-lynx-25

@gunbai-bot

gunbai-bot Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Superseded by consolidate/int-literal-body-producer (clean base 12bc08a, drops the f956b1c/241a5cea2 regression). Branch preserved; parse-side work + pick witnesses reused in the consolidated lane.

@gunbai-bot gunbai-bot Bot closed this Jul 14, 2026
briansrls pushed a commit that referenced this pull request Jul 14, 2026
…cution (Wave 1 gate 1) (#6558)

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* Remove non-fold-residue debug scaffolding from int-literal PR.

The roster entry for runtime_value_signed_i32_le_as_int (246ec08) is the real CI fix; drop temporary bisect witnesses and rust debug tests.

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

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* Revert "WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92"

This reverts commit 3dece8b.

* Provision node in emit-host TS smokes when runner lacks it.

CI srv3-06 hit exit 127 on run_ts_smoke/run_node_http_serve_smoke because node was absent from PATH; bootstrap the official linux tarball under WORKDIR like run_go_smoke already does for go.

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

* Fix emit-host node bootstrap string for dag resolve.

${NODEARCH} in a data string is parsed as dag interpolation; use $NODEARCH like the go smoke's $GOARCH.

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

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* Fix Slice C de-cement completion and CI resolve failures on #6532.

Finish add/pick eval witnesses on default v2_evaluator (drop injected allocate_literal fixtures), fix probe imports and corpus entry path, add review scaffold notes for Atom payload edges and emit int-literal 1/2 binding, and sign-extend i32 LE decode.

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

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* Fix CI NFR roster and integer i32 decode diagnostic locus.

Register three v2_evaluator runtime helpers in NON_FOLD_RESIDUE_ROSTER so
non_fold_residue_no_unrostered_or_stale passes. Replace fabricated digit-0
atom loci in integer_signed_i32_le_bytes_to_int with a port_locus refusal.

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

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* Remove stray audit tool outputs from repo root.

These local complexity_linearity_audit dumps were committed by
accident; the roster updates they reference already live in
NON_FOLD_RESIDUE_ROSTER.

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

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* Fix CI NFR roster after main merge and tidy resolve_atom indent.

Register frontier_blocker_class_matches from merged Wave 2 frontier
probe types so non_fold_residue_no_unrostered_or_stale passes. Fix
accidental dedent in resolve_atom int-literal early-return arm.

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

* Remove stray .tmp_cmd_output.txt from repo root.

Accidental shell-redirection artifact; not referenced by any source.

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

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* Add dissolve-on receipt for v2 eval bool runtime predicates; preserve int-literal magnitude on Branch arm reify.

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

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* WIP: Wave 1 criterion 1 — general body producer PR-A→E (resume; zesty-ant-92

* general body producer: ingested if-body fn_decl -> Arrow, green by execution (Wave 1 exit criterion 1)

An ingested `fn pick() -> Int { if c { 1 } else { 2 } }` silently failed to become a
substrate Arrow: parse decoded the int-literal magnitude correctly, but fn_decl->Arrow
lowering rejected, so no Branch, no eval. Pinned by execution via a graduated probe ladder
(parse GREEN, normalize produced no Arrow) down to two coupled defects — neither fixes it alone:

1. Speculative if-lowering miss reported as a terminal Reject (root of the no-Arrow).
   `body_lower_try_if_from_node`'s wrapper-less arm treated "an if-condition is reachable
   somewhere in this node" as proof the node IS an if-captured, called
   `try_if_from_captured` on the whole block, and propagated its Reject. That short-circuited
   `body_lower_body_subtree_lower` before its robust `find_captured(if_expr)` path (which
   lowers the same if correctly). A strategy-miss is not a malformation (DESIGN §5
   state-space conflation): convert the speculative Reject to a retryable Absent so the
   specific strategy runs. Confident arms (emitted == if_expr) and find_captured'd malformed
   ifs still reject loudly.

2. Operand navigation landed on the production identity-projection atom (magnitude-less)
   instead of the captured magnitude-bearing sibling. Made operand resolution magnitude-aware:
   skip identity-projection edges (`body_lower_operand_fold_children_optional`,
   `body_lower_literal_int_atom_optional`), reject magnitude-less int atoms
   (`body_lower_operand_ref_acceptable_optional`), and reach arm operands through the
   production shell (`body_lower_find_production_shell_optional`) so the captured projection
   is followed.

Proven by execution (local claim_batch --wet; these witnesses live in the CI-excluded
test/claim/execution/ dir, so local run is the oracle):
- pick_ingested_equals_eval_keystone_holds (literals 1/2): PASS
- pick2_ingested_equals_eval_generality_holds (literals 3/4): PASS
- pick_ingested_normalized_swapped_arms_structural_red_holds (discriminating RED): PASS
- probe ladder normalized/resolved/eval magnitude-child: PASS
- constructed-match controls (emit_host eval, swapped-refuses, arrow-has-match, resolves):
  PASS (no regression to the match-lowering path)

CI-visible enrollment of these witnesses is tracked separately (royal-wolf-43 #6552).

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

* address §5 review: body_lower_try_if_from_node returns honest Absent, no laundered reject

Review (claude-opus-4-7, #6558) correctly flagged the prior fix as a §5 absorbing
fallback: once `if_condition_optional` recognized the node as if-shaped, a `Rejected`
from `try_if_from_captured` was rewritten to `Accepted(optional_absent())` — laundering a
structural rejection into "not an if" with no counted refusal (fabricated Absent after
shape recognition).

Root of that imprecision: `if_condition_optional(node)` Present is a weak signal — it
fires for a block that merely *contains* an if (the pick case), not only for a genuine
if-captured. So the speculative `try_if_from_captured(node)` reject was a mis-granularity
guess, but converting it to Absent laundered any *genuine* malformation identically.

Fix: remove the speculative if arm entirely. `body_lower_try_if_from_node` now returns an
honest `Absent` for wrapper-less nodes — it never calls `try_if_from_captured`
speculatively, so there is no rejection to launder. Precise if-location is delegated to
`body_lower_body_subtree_lower`'s existing `find_captured(if_expr) -> try_if_from_captured`
path, which (a) runs AFTER `try_body_lowered`'s match handling, so it never over-reaches
into match arms, and (b) propagates any `try_if_from_captured` Rejected directly (loud, no
launder). Every genuine structural rejection now propagates; the only Absent is honest
"no if recognized here."

An intermediate attempt that resolved the if via `find_captured` inside `try_if_from_node`
was discarded: it over-reached into `if`s nested in match arms and regressed the
constructed-match controls (emit_host eval / swapped-refuses / arrow-has-match). The
honest-Absent form relies on the caller's correctly-ordered fallback and avoids that.

Proven by execution (local claim_batch --wet):
- pick_ingested_equals_eval_keystone_holds (1/2): PASS
- pick2_ingested_equals_eval_generality_holds (3/4): PASS
- pick_ingested_normalized_swapped_arms_structural_red_holds (discriminating RED): PASS
- constructed-match controls (emit_host eval, swapped-refuses, arrow-has-match): PASS
  (regressed by the discarded find_captured attempt, green again under honest-Absent)

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

* fix inherited doc-graph orphan: wire shell-to-dag census doc into its parent

CI batch-2 red on the merge commit was a single discovery witness,
doc_graph_has_no_orphan_docs (src/v2/lens/doc_reachability_test.dag) — a
pre-existing main regression inherited via the origin/main merge, NOT introduced
by this PR's int-literal work (docs/ and the doc-reachability lens are
byte-identical to origin/main).

Root: #6559 merged docs/plans/shell-to-dag-residual-census-and-arc-completion.md
(witty-ibex-317) to main with zero inbound references, so the doc-graph orphan
lens fails corpus-wide (every PR merging current main inherits it).

Fix: add the faithful inbound edge — the census doc's own header states it
"builds on lane D's authority provisioning-window-executor-capability-design.md",
so the parent design doc now forward-references the census/arc-completion doc
(same witty-ibex-317 arc, real upstream→downstream relationship). Minimal,
reversible, and clears the orphan for the whole corpus, not just this PR.

Verified by execution: doc_graph_has_no_orphan_docs PASS (orphan count 0).

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

---------

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
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