Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions dag/gunbc/native_serve_probe.dag
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ fn native_serve_wire_parse(response: String) -> NativeServeWire? {
""
}
match parse_int(s: status_text) {
Present { value: status } => NativeServeWire { status: status, head_lines: head_lines, body: join(rest, "\r\n\r\n") }
Present { value: status } => Present { value: NativeServeWire { status: status, head_lines: head_lines, body: join(rest, "\r\n\r\n") } }
Absent => none
}
Empty => none
Expand Down Expand Up @@ -263,7 +263,7 @@ fn native_serve_case_failures(cases: List<NativeServeProbeCase>, responses: List
match cases {
Empty =>
match responses {
Empty => acc
Empty => Present { value: acc }
Cons { head: _, tail: _ } => none
}
Cons { head: c, tail: more } =>
Expand Down
22 changes: 11 additions & 11 deletions dag/gunbc/rung_drop/native_serve_request_budget_unrealized.dag
Original file line number Diff line number Diff line change
Expand Up @@ -22,24 +22,24 @@ import gunbc.guarantee_rung { OutsideTheLadder, Mitigatable }
// THE TRIGGER NAMES THE CAPABILITY (ruling relayed by gentle-dove-36, 2026-10-03): a worker thread
// or a pool is not the trigger; the restored wall is. And the approval broker's move off `gunbc
// serve` is GATED on this row's retirement, because the interpreted broker has the mitigation today.
// THE CAPABILITY IS BUILT AND NOT YET OBSERVED (gunbc#13278, 2026-10-05). gunbc.native_serve now
// carries the deadline, the stuck-worker ceiling and both typed refusals, the rendered main enforces
// them, and the native-serve probe carries the cases this trigger names. Measured over real TCP on a
// scratch build of the fixture: a /spin handler that does not return is refused 500 at the deadline,
// a later /hello on the same process answers 200, and past the ceiling the process refuses 503 and
// exits. The row STAYS STANDING because the trigger is the INSTRUMENT observing it, and today
// `gunbc test //gunbc/instruments:native-serve` stops before the probe runs: the emitted fixture
// library refuses at rustc on three emitter and source defects owned by gunbc#13219, gunbc#13276 and
// gunbc#13237. When those have landed and the instrument holds, this row retires with that run as
// its receipt; a scratch build with hand patches is evidence, not the instrument.
// RETIRED (gunbc#13278 built the capability; the instrument observed it after gunbc#13219 landed).
// The trigger was the INSTRUMENT observing the wall, not the code existing: `gunbc test
// //gunbc/instruments:native-serve` on main at the gunbc#13219 merge emits, builds and starts the
// fixture and holds over real TCP. The probe carries the cases this trigger names, and the row's
// discriminating evidence stays enrolled there (DESIGN 4b meta-obligation 4): /spin is refused a
// typed 500 at the deadline, a later /hello on the same process is answered 200, and past the
// stuck-worker ceiling the process refuses 503 and exits 75.

data native_serve_request_budget_unrealized: RungDrop = RungDrop {
identity: "native_serve_request_budget_unrealized" as NonEmptyStr,

subject: "the per-request evaluation budget on a NativeServeDriver service (std.compiler_entry NativeServeDriver, gunbc.native_serve): a compiled handler that does not return holds the serial loop",

declared: "2026-10-03",

standing: Standing,
standing: Retired {
trigger_fired: "2026-10-08 -- gunbc test //gunbc/instruments:native-serve held on main at the gunbc#13219 merge (23 requests, refused launch status 2): the probe's /spin cases observe the typed 500 at the 500ms request deadline for a handler that does not return, a later /hello on the same process answered 200, and past the stuck-worker ceiling the typed 503 and exit 75. The wall is gunbc.native_serve native_serve_admission / native_serve_deadline_refused enforced by the rendered main, built in gunbc#13278"
},

declaration: TypedDeclaration {
previous: Mitigatable,
Expand Down
4 changes: 3 additions & 1 deletion docs/design-rung-drops.md
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,9 @@ The native lane's live-verdict control pair as a required admission clause: RUNG

single authority over the `module` and `import` productions, for the route's universe derivation: RUNG DROP, structurally guaranteed -> mitigatable (replacement staged: the closure computed from the front end's own import edges after a cheap parse of the seed set). Population: v2.compiler.compile native_lane_declared_module_name — the textual reading of the `module` production, v2.compiler.compile native_lane_declared_imports — the textual reading of the `import` production, v2.compiler.compile native_lane_first_malformed_import — the refusal arm that exists because the scan can misread a line, v2.compiler.compile native_lane_source_facts — their one consumer, which carries both readings onto every facts row. Restored when: The route derives the universe's import closure from the FRONT END'S OWN IMPORT EDGES, after a parse of the seed set that yields those edges WITHOUT preparing each module. That capability must be sufficient for the whole derivation -- module identity and import identity both -- so that native_lane_declared_module_name and native_lane_declared_imports are DELETED rather than retained beside the grammar. A parse that yields edges only after preparation does not retire this row: preparation is the cost the scans exist to avoid, so satisfying the sentence that way would leave the second reading standing.

### the per-request evaluation budget on a NativeServeDriver service (std.compiler_entry NativeServeDriver, gunbc.native_serve): a compiled handler that does not return holds the serial loop — declared 2026-10-03
### the per-request evaluation budget on a NativeServeDriver service (std.compiler_entry NativeServeDriver, gunbc.native_serve): a compiled handler that does not return holds the serial loop — declared 2026-10-03 · RETIRED

**RETIRED — TRIGGER FIRED.** 2026-10-08 -- gunbc test //gunbc/instruments:native-serve held on main at the gunbc#13219 merge (23 requests, refused launch status 2): the probe's /spin cases observe the typed 500 at the 500ms request deadline for a handler that does not return, a later /hello on the same process answered 200, and past the stuck-worker ceiling the typed 503 and exit 75. The wall is gunbc.native_serve native_serve_admission / native_serve_deadline_refused enforced by the rendered main, built in gunbc#13278

the per-request evaluation budget on a NativeServeDriver service (std.compiler_entry NativeServeDriver, gunbc.native_serve): a compiled handler that does not return holds the serial loop: RUNG DROP, mitigatable -> outside the ladder (replacement staged: a NativeServeDriver budget wall: the native door refuses a non-returning or over-budget compiled request with a typed 500 and keeps serving later requests). Population: every NativeServeDriver service; at declaration gunbc.instruments.native_serve_fixture, the only one. Restored when: a non-returning or over-budget compiled request is refused with a typed 500 and cannot block later requests on the native door. SUFFICIENT FOR: the native-serve instrument carries a case whose handler does not return within the declared budget, observes the typed 500 for it, and observes a later request on the same process answered. A thread pool, a timeout knob, or a supervisor restart that drops the request without a typed answer does not retire this row.

Expand Down
Loading