Skip to content

git extdeps is wrong - lets find the scope - #5059

Merged
briansrls merged 24 commits into
mainfrom
session/zesty-lark-54
Jun 17, 2026
Merged

briansrls merged 24 commits into
mainfrom
session/zesty-lark-54

Conversation

@gunbai-bot

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

Copy link
Copy Markdown
Contributor

Auto-opened by session-dashboard for session zesty-lark-54.
Pushing to session/zesty-lark-54 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 17, 2026 03:39
…across families)

Implements representative fixes from the extdeps damage audit, one per pattern
family, so the friction surfaces concretely:

- git.dag: add faithful name-only diff primitives (DiffNameOnly / DiffNameOnlyMerge);
  the origin/main...HEAD business case (PR #5048's ChangedFiles) composes from these
  in the workflow layer instead of living in extdeps. Drop stale "services/git.dag"
  header (services/ merged into extdeps in 55dd577).
- github.dag: fix stale "core.dag" filename + dead "services/github/*" header.
- gcp.dag: collapse the 3-way OAuth2-refresh fork — remove the shell.OAuth2.RefreshToken
  curl bridge (a business re-impl of the REST endpoint, with a self-flagged JSON defect);
  one model of the refresh endpoint remains (oauth2.Google.Refresh). Repoint the
  patterns.dag usage comment.
- cargo_build.dag: remove decorative all_targets/deny_args inputs (declared but never
  wired into any argv, passed by no caller); mark the fused policy flags as honest debt.
- DESIGN.md §3: state the rule explicitly — extdeps owns interface SHAPE; transport is a
  §2 Realization handler (one of N); business policy is a workflow fact. Names the two
  tells (literal-in-argv; one-op-per-transport fork) so a future lens can gate them.

Verified: v1 parse::gist_transitive_closure_parse + effects (30) green.
Out of scope (load-bearing, escalation-gated): Node.transport Option→Vec for true
N-handlers-per-op (A1), and the enforcing lens (A2).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review June 17, 2026 03:43
briansrls added a commit that referenced this pull request Jun 17, 2026
Fold llm.Claude into llm.Anthropic.CliPrompt on anthropic_rest.dag (one
interface, REST + shell handlers per DESIGN §3). Wire output_format and
permission_mode as inputs. Drop forked Claude service from cli.dag; mark
Gemini fused argv flags as honest debt (#5059 pattern).

Co-authored-by: Cursor <cursoragent@cursor.com>
@gunbai-bot gunbai-bot Bot mentioned this pull request Jun 17, 2026
9 tasks done
briansrls and others added 3 commits June 17, 2026 05:20
Conflicts resolved:
- dsl/extdeps/rust/cargo_build.dag: defer to main. Main fixed the real phantom
  (defined cargo_compile_env/clippy_deny_args that were undefined and erroring at
  runtime) and added the Fmt op; that bugfix outranks my decorative-input removal,
  and the Lane B lens (#5068) flags the fused-policy smell anyway. Dropped my
  cargo edits.
- dsl/extdeps/git/git.dag: main landed `ChangedFiles` (the origin/main...HEAD
  business case) with a live consumer (tools.rust_gates_ci). Kept it working
  alongside the faithful DiffNameOnly/DiffNameOnlyMerge primitives, and reframed my
  comment from "must NOT live here" to a named dissolution trigger (when
  rust_gates_ci composes DiffNameOnlyMerge directly, delete ChangedFiles).

DESIGN.md §3 generalization, gcp OAuth2 fork removal, github header fix all
auto-merged cleanly and survived. Verified: v1 parse + effects (30) green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jun 17, 2026
* WIP: extdeps cleanup: cron protocol + llm split

* WIP: extdeps cleanup: cron protocol + llm split

* Unify Anthropic CLI under llm.Anthropic; parameterize Claude CLI flags

Fold llm.Claude into llm.Anthropic.CliPrompt on anthropic_rest.dag (one
interface, REST + shell handlers per DESIGN §3). Wire output_format and
permission_mode as inputs. Drop forked Claude service from cli.dag; mark
Gemini fused argv flags as honest debt (#5059 pattern).

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

* WIP: extdeps cleanup: cron protocol + llm split

---------

Co-authored-by: Brian Searls <briansrls@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls and others added 15 commits June 17, 2026 05:50
…` (review follow-up)

Review (cursor/composer-2.5) flagged that DiffNameOnlyMerge exposed only `paths`,
while the ChangedFiles op it is meant to replace also exposes `success: Bool from
"exit_success"` — consumed by tools.rust_gates_ci for fail-closed gating
(should_run_gates(git_success: ...)). Without it the documented dissolution trigger
was hollow: the op could not actually drop in for ChangedFiles.

Add `success` (a faithful git fact — the command's exit status) to both name-only
primitives so the merge op carries ChangedFiles' full {paths, success} contract;
update mocks + the dissolution note. Parse green.

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

The prior wording ("what migrates is cited data + dispatch, never the taxonomy
type; the agnostic shape AND its grounded type stay central") was too narrow, and
the EntryKind example ("POSIX EntryKind stays in std") was wrong — it privileged
one OS's taxonomy in a std type. FileSystemSemantics is already Posix|Ntfs|Apfs, so
the multi-OS axis exists: the OS-agnostic reduction stays in std, but each
realization's *taxonomy* (POSIX st_mode special files; NTFS junctions) migrates to
extdeps with a reduction fn. So per-OS taxonomy types DO migrate; only the agnostic
shape stays. Reworded the rule and dropped the EntryKind example (its corrected form
lands with the filesystem PR #5072, which implements posix.dag + ntfs.dag).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… into Refresh's real input shape

Review (claude-opus-4-7 on #5059): the commented local_auth pseudocode showed
oauth2.Google.Refresh(refresh_token: adc_content.content, ...) — eliding that the
REST op's real input shape is {client_id, client_secret, refresh_token} and that the
ADC JSON must be parsed first. On a PR about faithful modeling, narrative should not
paper over the contract. Replace the raw fs.read with gcloud.Auth.ReadADC (which
parses the JSON to the three fields) and pass all three explicitly.

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

The auto-commit captured the in-progress merge with conflict markers still in DESIGN.md.
This commits the resolution: main's 'Scaffolded by v2.lens.extdeps_shape_transport_policy'
supersedes the stale 'not yet lens-enforced' clause (the lens landed in #5068), and the
interface↔realization generalization + the corrected EntryKind/FileSystemSemantics example
are preserved.

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

While verifying the gcp_oauth de-fusion regression guard, a perturbation test
temporarily re-added 'service shell.OAuth2' to gcp.dag; the harness auto-committed
that transient state (6025864), making the de-fusion guard correctly FAIL. This
restores the clean de-fused gcp.dag (no shell.OAuth2 fork). The recast witness
(corpus_gcp_oauth_defused_holds) is unchanged and now passes against the clean file.

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

#5082 (grammar-inverse type-decl round-trip test) merged AFTER #5077's
repo-wide "ban self-naming symbol bindings (data X: Symbol = X -> ^X)"
sweep, so its new emit_ingest_type_decl_round_trip_test.dag was never
swept. Two stragglers, both #5077's exact pattern:
  - imported the deleted named binding grammar_relation_field_tokens
    from target_model -> use the ^grammar_relation_field_tokens literal
    (this is the actual main-RED / CI failure: name not found).
  - re-introduced one self-naming binding (the file #5077 drove to zero)
    -> dead binding removed; ^type_decl_round_trip_foreign_binding literal
    already used at the call site.

Pure merge-skew repair (#5077 x #5082, no merge queue); restores the
"zero self-naming bindings remain" invariant. No substrate/proof-logic
change. Verified by execution.

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

gunbai-bot Bot commented Jun 17, 2026

Copy link
Copy Markdown
Contributor Author

CI triage — the prior red was a main-skew, not this PR's change; this PR now carries the repair.

The failing check (claim_batch floor) was name 'grammar_relation_field_tokens' not found in module 'v2.std.compilers.target_model', from a #5077 × #5082 semantic merge-skew on main (no merge queue, two individually-green PRs combine RED):

This PR's merge of main applies #5077's exact pattern to that one straggler file (4-line change, no substrate/proof-logic change):

Verified green by execution (not grep): the previously-red floor step now reports PASS emit_ingest_type_decl_round_trip_holds (resolves clean, 61 modules) and PASS corpus_gcp_oauth_defused_holds (this PR's de-fusion guard), v2 claim corpus: 198 discriminating witnesses passed, exit 0.

Heads-up on merge ordering: main is red on this skew right now. Merging this PR repairs main; alternatively the same 4-line straggler fix can be applied directly to main.

briansrls added a commit that referenced this pull request Jun 17, 2026
Co-authored-by: Cursor <cursoragent@cursor.com>

#5059 owns the #5077 x #5082 skew fix; keep the DSL gate PR scoped to dsl/.
briansrls and others added 4 commits June 17, 2026 15:11
…dag record-type version

main fixed the #5077 self-naming skew independently (#5091, #5096); take its
version verbatim so the file is consistent across the merge.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@briansrls
briansrls merged commit 6700b40 into main Jun 17, 2026
1 check passed
@briansrls
briansrls deleted the session/zesty-lark-54 branch June 17, 2026 15:49
briansrls added a commit that referenced this pull request Jun 17, 2026
… gcp witness

The auto-committed merge (e2c55aa) left conflict markers in 3 extdeps files.
Resolution: keep this branch's representation migration (*_test.dag rename,
test fn, no unified_claim row) AND main's post-#5059 semantics — the gcp OAuth2
fork was de-fused, so the corpus witness now asserts ABSENCE
(corpus_gcp_oauth_defused_holds = !shows_fork) rather than presence. Receipt
and gate rows updated to the new function name + _test.dag path.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Jun 17, 2026
#5089)

* WIP: dsl whole-tree compile-clean CI gate + fix the backlog it surfaces

* Wire dsl whole-tree compile-clean CI gate and fix Option surface backlog.

Enroll `ci_full_dsl` in the CI floor so every dsl/**/*.dag file must compile;
migrate lingering Some/None spellings to Present/Absent/none and fix the Url→String kv_pair mismatch that blocked a clean tree.

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

* WIP: dsl whole-tree compile-clean CI gate + fix the backlog it surfaces

* Align dsl compile-clean gate with gunbc compile per operator brief.

Replace ci_full_dsl cargo test with `gunbc compile --source-root dsl --target rust` in CI (whole-tree index+resolve+typecheck+emit, 0 hard diagnostics). Add dsl_compile_clean_witness claim-run pin; document RED perturb in witness comments. Note: --target dag blocked on dag_collect identity-key debt (180 emit errors) — escalated to parent.

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

* fix: use ^grammar_relation_field_tokens in type-decl round-trip witness

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

#5082 follow-up: the symbol lives in v2.std.grammar (caret binding), not target_model export — unblocks claim_batch resolve in CI.

* WIP: dsl whole-tree compile-clean CI gate + fix the backlog it surfaces

* Enforce dsl compile-clean gate by execution with rust-target scaffold.

Wire CI through dsl_compile_clean_gate (SCAFFOLD: --target rust pending dag_collect fix) and make the witness run live compile +/- receipts instead of returning true.

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

* Revert out-of-scope type-decl round-trip witness edit to main.

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

#5059 owns the #5077 x #5082 skew fix; keep the DSL gate PR scoped to dsl/.

* WIP: dsl whole-tree compile-clean CI gate + fix the backlog it surfaces

---------

Co-authored-by: Brian Searls <briansrls@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
briansrls added a commit that referenced this pull request Jun 17, 2026
* WIP: ci transpor tpolicy

* WIP: ci transpor tpolicy

* Carry the #5092 main-fix into this branch (main-sync dragged in broken file)

The dashboard synced main into this branch at 24f2571, before #5092 merged,
so the #5077x#5082 breakage (emit_ingest_type_decl_round_trip_test.dag
importing the deleted grammar_relation_field_tokens) is now in this tree and
fails the CI floor claim_batch resolve. Apply the same approved fix as #5092
(drop the stale import, use ^grammar_relation_field_tokens caret form). When
#5092 merges first, this becomes a no-op under squash-merge.

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

* WIP: ci transpor tpolicy

* Resolve merge conflicts: union of test fn migration + main's de-fused gcp witness

The auto-committed merge (e2c55aa) left conflict markers in 3 extdeps files.
Resolution: keep this branch's representation migration (*_test.dag rename,
test fn, no unified_claim row) AND main's post-#5059 semantics — the gcp OAuth2
fork was de-fused, so the corpus witness now asserts ABSENCE
(corpus_gcp_oauth_defused_holds = !shows_fork) rather than presence. Receipt
and gate rows updated to the new function name + _test.dag path.

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

* Drop the two vestigial --scan-dir flags from the consolidated CI floor

#5101 reinstated --scan-dir src/v2/test and the extdeps scan-dir on the
consolidated claim_batch line. Both are now vestigial: this PR migrated the
extdeps witnesses to test fn (discovered via the src/v2 source-root walk), and
src/v2/test has no unified_claim_* rows. claim_batch (main's version) allows
discovery with no scan-dir when explicit --entry rows are present. Honors the
operator request to remove --scan-dir src/v2/test.

Verified by execution: claim_batch over src/v2+dsl, no scan-dir, +5 explicit
entries -> 207 witnesses pass, 0 fail; all 5 extdeps witnesses discovered.

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

---------

Co-authored-by: Brian Searls <briansrls@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@briansrls
briansrls restored the session/zesty-lark-54 branch June 18, 2026 12:49
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