Skip to content

Commit bb49939

Browse files
percy-raskovaKimi Code
andcommitted
fix(tick): PR #688 harvest — c00's anchor never gates + the transcript fence repair
Two Copilot findings on #688, both real, both fixed: 1. c00 gated on `(= carrier 1)` while its material-basis claimed the anchor is "never gating". Now `(when #t)` with an explicit `(domain NodeType/INSTITUTION)` — forced, not stylistic: an unreferenced anchor under a vacuous guard is E-LOAD-004-undeterminable at load (domain.rs's candidate set is reference-fed), which surfaced a latent engine gap: resolve_domain (load) and subject_type_of (tick) derive the subject independently and nothing cross-checks them. The pack header records the finding for the future reader. Fuel re-measured: computed 78, declared 79. 2. The Task-8 transcript extension had mangled the doc comment's fence structure (three ```text openings, one close). Rebuilt as one fenced block, verified byte-for-byte against the mirror's stdout. Corpus digest re-pinned for the pack's two text moves; content-file line cites to control-ratio.bsl stripped (the citation sentinel binds bare :N to the nearest frozen-source mention — content-file references carry no line numbers now). Co-Authored-By: Kimi Code <noreply@moonshot.cn>
1 parent e40d9d9 commit bb49939

3 files changed

Lines changed: 21 additions & 99 deletions

File tree

rust/crates/babylon-bsl/tests/content_corpus_digests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ fn corpus_files() -> Vec<PathBuf> {
6969
const PINNED_DIGESTS: &[(&str, &str)] = &[
7070
(
7171
"community.bsl",
72-
"d841d50bce7d9940947f5ece4e3145a85d63fe29bd0b50c59915d9d285873c6d",
72+
"9c9599f79f8cd4d92c0dfae36c498d13654d14cc933d90e202beabd81add9557",
7373
),
7474
(
7575
"consciousness.bsl",

rust/crates/babylon-tick/content/rules/community.bsl

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
; never read again, never gating anything (the binding exists because
2020
; tick.rs::subject_type_of requires >=1 :field binding to derive
2121
; INSTITUTION; this sentence exists so no reader mistakes it for a gate —
22-
; control-ratio.bsl:277's pattern, verbatim in intent). A second
22+
; control-ratio.bsl's pattern, verbatim in intent). A second
2323
; INSTITUTION node in any world loading this pack double-applies every
2424
; hyperedge write (each carrier-subject rule iterates EVERY institution);
2525
; §8c guard 4 (`exactly_one_institution_carrier`,
@@ -44,6 +44,21 @@
4444
; four repression helpers (:210-279) await a verb layer (D-NF+11). c07/c08
4545
; are DG-2-gated (Director question, unresolved at authoring).
4646
;
47+
; THE EXPLICIT-DOMAIN NOTE (PR #688 review, Copilot finding 1 — a REAL
48+
; latent engine gap, named here for the future pack reader): c00's carrier
49+
; binding is never referenced (its guard is `#t`), which makes the rule
50+
; E-LOAD-004-undeterminable at LOAD — domain.rs::resolve_domain's
51+
; None-branch candidate set is REFERENCE-fed, so an anchor that is bound
52+
; but never read contributes nothing there, while tick.rs's
53+
; subject_type_of counts every :field binding, referenced or not. The two
54+
; derivations can therefore disagree and NOTHING cross-checks them
55+
; (run_tick ignores the loaded domain entirely) — control-ratio.bsl's
56+
; (when #t) precedent passes only because its :expr fold bodies feed the
57+
; candidate set. This pack declares `(domain NodeType/INSTITUTION)`
58+
; explicitly on every carrier rule whose guard is vacuous, which keeps
59+
; both derivations honest by construction. Filed as a follow-up, not
60+
; silently absorbed.
61+
;
4762
; THE FLOOR TABLE: the 14 ADR214 defconst rows live in each WORLD's .bscn
4863
; (the scenario's defconst registry IS the driver's defines env — §6.2's
4964
; "re-declared per scenario" precedent), never in this pack; the
@@ -79,11 +94,12 @@
7994

8095
; ============================================================ c00 — the reset
8196
(rule community/c00-census-reset
82-
:material-basis "The per-tick rebuild (community.py:392-397 mints a fresh community_agents map on every step, and community.py:460-462 writes back via model_copy): every accumulator this pack reads derives from THIS tick's writes, so the tick begins by zeroing them. The institution/community-carrier binding is a SUBJECT-TYPE ANCHOR ONLY (tick.rs::subject_type_of requires >=1 :field binding to derive INSTITUTION) — never read again, never gating anything."
83-
:fuel 81
97+
:material-basis "The per-tick rebuild (community.py:392-397 mints a fresh community_agents map on every step, and community.py:460-462 writes back via model_copy): every accumulator this pack reads derives from THIS tick's writes, so the tick begins by zeroing them. The institution/community-carrier binding is a SUBJECT-TYPE ANCHOR ONLY (tick.rs::subject_type_of requires >=1 :field binding to derive INSTITUTION) — never read again, never gating anything (`when #t`), so the domain is declared EXPLICITLY: an unreferenced anchor plus a vacuous guard is E-LOAD-004-undeterminable at load (domain.rs's candidate set is reference-fed), and control-ratio.bsl's precedent passes only because its fold bodies feed that set — recorded in the pack header."
98+
:fuel 79
8499
(bindings
85100
(binding carrier :field institution/community-carrier))
86-
(when (= carrier 1))
101+
(domain NodeType/INSTITUTION)
102+
(when #t)
87103
(effects
88104
(for-each (hyperedges HyperedgeType/COMMUNITY)
89105
(update-hyperedge it community/member-count (set 0))

rust/crates/babylon-tick/tests/community_conformance.rs

Lines changed: 0 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -87,100 +87,6 @@
8787
//! n4 unaffiliated: community-cost-modifier = 1.0
8888
//! n5 inactive-member: org-r-weight = 0.0, org-l-weight = 0.0, org-f-weight = 0.0, org-count = 0.0
8989
//! n5 inactive-member: community-cost-modifier = ABSENT (honest null)
90-
//! ```text
91-
//! community-conformance world 1 — mirror output (the oracle)
92-
//! h0 new-afrikan kind=NEW_AFRIKAN
93-
//! member-count = 2.0
94-
//! density-sum = 1.5
95-
//! r = 0.8648648648648649
96-
//! l = 0.13513513513513511
97-
//! f = 0.0
98-
//! contestation = 0.36048485321765583 (DG-2-gated)
99-
//! dominant = REVOLUTIONARY (DG-2-gated)
100-
//! decayed heat = 0.475
101-
//! decayed cohesion = 0.7275
102-
//! decayed education-pressure = 0.225
103-
//! h1 settler kind=SETTLER
104-
//! member-count = 1.0
105-
//! density-sum = 2.0
106-
//! r = 0.0
107-
//! l = 0.5
108-
//! f = 0.5
109-
//! contestation = 0.6309297535714574 (DG-2-gated)
110-
//! dominant = LIBERAL (DG-2-gated)
111-
//! decayed heat = 0.2375
112-
//! decayed cohesion = 0.485
113-
//! decayed education-pressure = 0.1125
114-
//! h2 queer kind=QUEER
115-
//! member-count = 1.0
116-
//! density-sum = 2.0
117-
//! r = 0.7619047619047619
118-
//! l = 0.23809523809523808
119-
//! f = 0.0
120-
//! contestation = 0.4996069952489026 (DG-2-gated)
121-
//! dominant = REVOLUTIONARY (DG-2-gated)
122-
//! decayed heat = 0.7124999999999999
123-
//! decayed cohesion = 0.60625
124-
//! decayed education-pressure = 0.45
125-
//! n1 na-worker: community-cost-modifier = 1.09375
126-
//! n2 na-organizer: community-cost-modifier = 0.875
127-
//! n3 settler-la: community-cost-modifier = 1.0
128-
//! n4 unaffiliated: community-cost-modifier = 1.0
129-
//! n5 inactive-member: community-cost-modifier = ABSENT (honest null)
130-
//! ```text
131-
//! community-conformance world 1 — mirror output (the oracle)
132-
//! h0 new-afrikan kind=NEW_AFRIKAN
133-
//! member-count = 2.0
134-
//! r-raw = 0.4
135-
//! l-raw = 0.0625
136-
//! f-raw = 0.0
137-
//! density-sum = 1.5
138-
//! r = 0.8648648648648649
139-
//! l = 0.13513513513513511
140-
//! f = 0.0
141-
//! contestation = 0.36048485321765583 (DG-2-gated)
142-
//! dominant = REVOLUTIONARY (DG-2-gated)
143-
//! decayed heat = 0.475
144-
//! decayed cohesion = 0.7275
145-
//! decayed education-pressure = 0.225
146-
//! h1 settler kind=SETTLER
147-
//! member-count = 1.0
148-
//! r-raw = 0.0
149-
//! l-raw = 0.125
150-
//! f-raw = 0.125
151-
//! density-sum = 2.0
152-
//! r = 0.0
153-
//! l = 0.5
154-
//! f = 0.5
155-
//! contestation = 0.6309297535714574 (DG-2-gated)
156-
//! dominant = LIBERAL (DG-2-gated)
157-
//! decayed heat = 0.2375
158-
//! decayed cohesion = 0.485
159-
//! decayed education-pressure = 0.1125
160-
//! h2 queer kind=QUEER
161-
//! member-count = 1.0
162-
//! r-raw = 0.4
163-
//! l-raw = 0.125
164-
//! f-raw = 0.0
165-
//! density-sum = 2.0
166-
//! r = 0.7619047619047619
167-
//! l = 0.23809523809523808
168-
//! f = 0.0
169-
//! contestation = 0.4996069952489026 (DG-2-gated)
170-
//! dominant = REVOLUTIONARY (DG-2-gated)
171-
//! decayed heat = 0.7124999999999999
172-
//! decayed cohesion = 0.60625
173-
//! decayed education-pressure = 0.45
174-
//! n1 na-worker: org-r-weight = 0.4, org-l-weight = 0.125, org-f-weight = 0.0, org-count = 2.0
175-
//! n1 na-worker: community-cost-modifier = 1.09375
176-
//! n2 na-organizer: org-r-weight = 0.4, org-l-weight = 0.0, org-f-weight = 0.0, org-count = 1.0
177-
//! n2 na-organizer: community-cost-modifier = 0.875
178-
//! n3 settler-la: org-r-weight = 0.0, org-l-weight = 0.125, org-f-weight = 0.125, org-count = 2.0
179-
//! n3 settler-la: community-cost-modifier = 1.0
180-
//! n4 unaffiliated: org-r-weight = 0.0, org-l-weight = 0.0, org-f-weight = 0.0, org-count = 0.0
181-
//! n4 unaffiliated: community-cost-modifier = 1.0
182-
//! n5 inactive-member: org-r-weight = 0.0, org-l-weight = 0.0, org-f-weight = 0.0, org-count = 0.0
183-
//! n5 inactive-member: community-cost-modifier = ABSENT (honest null)
18490
//! ```
18591
//!
18692
//! # THE SPIKE (Task 7 Step 5) — the seven-shape verdicts

0 commit comments

Comments
 (0)