Skip to content

D13: requires clauses on the 14 product-layer service ops (1 Network, 4 opaque, 9 none) - #12983

Merged
gunbai-bot[bot] merged 14 commits into
mainfrom
session/vivid-hawk-620
Oct 2, 2026
Merged

gunbai-bot[bot] merged 14 commits into
mainfrom
session/vivid-hawk-620

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

14 product-layer service operations in dag/gunbc had no requires clause. An absent clause means Undecided, so any caller refuses. This PR audits them under the D13 rule:

clause count operations
requires Network 1 ntfy.Publish.PublishMessage (rest to ntfy.sh / tailnet HTTPS)
requires opaque 4 gunbc.Cli.Run, claim_executor.Executor.VerifyBuildArtifacts (runtime bin_path in argv[0]); sol_hold.ActivateHeld (runtime {ipmitool} path); owned_process.launch.LaunchOwned (runtime command)
requires none 9 sol_hold.ReleaseHeld (local kill); 8 transport-less pure folds in code_change_workflow, pr_digests, review_verdict

The 30 test/fixture operations without a clause stay undeclared on purpose: no test reads their demand. The doc lists them; a fixture gains a clause when a test needs one.

Route control and follow-up

approval_ntfy_deployment.dag imports std.resources { Network }, so the requires Network member binds. The route control is the generic pair in v2.test.claim.normalize.operation_requires_edge_test: a_requirement_naming_a_declared_resource_resolves_at_resolve_holds and a_requirement_naming_a_non_resource_refuses_at_resolve_RED. It runs the real resolve_node over an operation Arrow's requirements edge, on a synthetic module.

Follow-up (not done here): add a control specific to ntfy.Publish.PublishMessage that resolves the product module's import closure through v2, so its requirement is shown to resolve to std.resources.Network. No required lane resolves this module's requirement edge today: the head before the import was green with the name unbound.

🤖 Generated with Claude Code

gunbc-ci-auto-heal and others added 12 commits October 2, 2026 03:30
…56sum get rows as ImportsFixed

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

std.resources (#12960) made the bare read ambiguous; the module calls Filesystem.Write, the
extdeps.filesystem.filesystem_io service.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ows (210 none / 19 opaque / 291 Network)

Manager rulings (quiet-seal-543, 2026-10-02) on the HOLD review plus the re-audit of
all 236 none rows against the two classes the first audit missed.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…que, partial-clone git reads Network; NSS boundary (170 none / 29 opaque / 321 Network)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…, drivers, transport helpers, cargo build scripts, npmrc git, agent hooks); 149 none / 91 opaque / 280 Network

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ike its RunArgv siblings

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… toolchain proxies in an input cwd are opaque; 135 none / 119 opaque / 267 Network

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ot ImportsFixed; codex GenerateJsonSchema opaque (runtime argv[0]); 134 none / 120 opaque / 267 Network

get is a std.algebra profile method with no importable declaration; the pair stopped being
derived because the parsed reader does not read it as a bare reference (same as grub.dag and 35
other get rows), not because an import was added.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… 4 opaque, 9 none); undeclared test fixtures listed

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Base automatically changed from session/loyal-crab-214-requires-none-opaque to main October 2, 2026 19:30
# Conflicts:
#	docs/plans/d13-network-audit.md

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HOLD at exact head 20018dd8c75fc77735d4c431375ae2f2858c9a59.

P1 — PublishMessage authors an unbound resource requirement

dag/gunbc/auth/approval_ntfy_deployment.dag adds requires Network, but this head does not add import std.resources { Network }, and the module's existing imports do not bind Network.

That import is semantically required, not cosmetic. requires none and requires opaque are the two closed marker atoms that resolve carries unwalked; a named requirement is walked as a declaration reference and then checked to resolve to a declared resource. The D13 Network population in #12965 therefore added import std.resources { Network } in every module that received requires Network.

As written, the ntfy operation can parse and lower its requirements edge but will refuse once this product module reaches the resolve/census route, so it does not provide the declared Network fact to D13 step (b). The current green checks do not exercise that route for this module.

Please add import std.resources { Network } to approval_ntfy_deployment.dag and add or identify a positive route control establishing that ntfy.Publish.PublishMessage's requirement resolves to std.resources.Network rather than merely parsing. The other 13 classifications look correct: the four opaque rows execute caller-selected programs; ReleaseHeld is fixed local /proc/signal work; and the eight transportless rows are pure folds over supplied values.

Exact-head floor, generated, emit-build, and witnesses are green; this hold is semantic, not CI-related. No direct merge or check bypass.

…ent binds; fix the two stale route-control citations in operation_requires_edge_test

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

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE-MERGE at exact head c3695b100c0cb6599329fe3e9810ac31a8b518bf.

This resolves my CHANGES_REQUESTED review 5396880727. No findings.

The one-commit delta supplies the missing import std.resources { Network } in approval_ntfy_deployment.dag; PublishMessage now authors the same bound resource identity used by the landed extdeps Network population rather than an unbound spelling.

The generic resolve pair is adequate evidence for this data-row correction. a_requirement_naming_a_declared_resource_resolves_at_resolve_holds and a_requirement_naming_a_non_resource_refuses_at_resolve_RED execute resolve_node over an operation Arrow carrying the requirements edge, differing on whether the target path is marked as a declared resource. Together they establish the exact semantic boundary this row relies on: a bound declared resource is admitted and a bound non-resource is refused. The commit also corrects the stale names in the test's authority comment; it does not weaken or replace the controls.

A full import-closure control specific to ntfy.Publish.PublishMessage would be useful integration evidence, but it is not required for every audited operation row and would test the broader product-module closure rather than a new behavior introduced here. The later demand-census/deletion route must still run at its own composed head and fail closed if this module cannot be observed; this approval does not pre-approve that census result.

The other 13 classifications remain unchanged from the otherwise-satisfactory held head. Exact-head floor, generated, emit-build and witnesses are green. Merge-queue landing only; the composed merge_group candidate must pass against then-current main. No direct merge or check bypass.

@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Oct 2, 2026
Merged via the queue into main with commit e3d6a81 Oct 2, 2026
4 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/vivid-hawk-620 branch October 2, 2026 23:37
@briansrls
briansrls restored the session/vivid-hawk-620 branch October 2, 2026 23:41
gunbai-bot Bot pushed a commit that referenced this pull request Oct 2, 2026
…arning reading plus main's first_error locus over the rendered diagnostics

Co-Authored-By: Claude Opus 5.5 (1M context) <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