eyeling 1.24.6 → 1.24.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HANDBOOK.md +35 -35
- package/dist/browser/eyeling.browser.js +14 -1
- package/examples/act-alarm-bit-interoperability.n3 +2 -0
- package/examples/act-barley-seed-lineage.n3 +2 -0
- package/examples/act-docking-abort.n3 +2 -0
- package/examples/act-gravity-mediator-witness.n3 +2 -0
- package/examples/act-isolation-breach.n3 +2 -0
- package/examples/act-photosynthetic-exciton-transfer.n3 +2 -0
- package/examples/act-sensor-memory-reset.n3 +2 -0
- package/examples/act-tunnel-junction-wake-switch.n3 +2 -0
- package/examples/act-yeast-self-reproduction.n3 +2 -0
- package/examples/annotation.n3 +5 -0
- package/examples/auroracare.n3 +8 -8
- package/examples/backward-recursion.n3 +5 -0
- package/examples/barley-seed-becoming.n3 +2 -0
- package/examples/bmi.n3 +2 -0
- package/examples/builtin-coverage.n3 +5 -0
- package/examples/calidor.n3 +3 -3
- package/examples/collection.n3 +5 -0
- package/examples/complex-matrix-stability.n3 +2 -0
- package/examples/context-association.n3 +0 -8
- package/examples/control-system.n3 +2 -0
- package/examples/deep-taxonomy-10.n3 +2 -0
- package/examples/deep-taxonomy-100.n3 +2 -0
- package/examples/deep-taxonomy-1000.n3 +2 -0
- package/examples/deep-taxonomy-10000.n3 +2 -0
- package/examples/deep-taxonomy-100000.n3 +2 -0
- package/examples/delfour.n3 +3 -3
- package/examples/digital-product-passport.n3 +2 -0
- package/examples/dijkstra-risk-path.n3 +1 -2
- package/examples/easter.n3 +3 -1
- package/examples/eco-route-insight.n3 +1 -2
- package/examples/flandor.n3 +3 -3
- package/examples/french-cities.n3 +2 -0
- package/examples/fundamental-theorem-arithmetic.n3 +2 -0
- package/examples/genetic-algorithm-knapsack.n3 +1 -1
- package/examples/genetic-algorithm.n3 +1 -1
- package/examples/genetic-knapsack-selection.n3 +1 -2
- package/examples/gps.n3 +2 -0
- package/examples/harborsmr.n3 +2 -0
- package/examples/input/rdf-message-flow.trig +10 -10
- package/examples/input/rdf-messages.trig +6 -6
- package/examples/interop-demo.n3 +3 -1
- package/examples/matrix-mechanics.n3 +3 -3
- package/examples/medior.n3 +3 -3
- package/examples/n3-speaks-for-itself.n3 +5 -0
- package/examples/odrl-dpv-ehds-risk-ranked.n3 +1 -1
- package/examples/odrl-dpv-healthcare-risk-ranked.n3 +1 -1
- package/examples/odrl-dpv-risk-ranked.n3 +1 -1
- package/examples/odrl-risk-mitigation.n3 +1 -1
- package/examples/odrl-risk.n3 +1 -1
- package/examples/output/{act-alarm-bit-interoperability.txt → act-alarm-bit-interoperability.md} +19 -17
- package/examples/output/act-barley-seed-lineage.md +27 -0
- package/examples/output/{act-docking-abort.txt → act-docking-abort.md} +21 -19
- package/examples/output/{act-gravity-mediator-witness.txt → act-gravity-mediator-witness.md} +23 -21
- package/examples/output/{act-isolation-breach.txt → act-isolation-breach.md} +26 -24
- package/examples/output/{act-photosynthetic-exciton-transfer.txt → act-photosynthetic-exciton-transfer.md} +19 -17
- package/examples/output/{act-sensor-memory-reset.txt → act-sensor-memory-reset.md} +19 -17
- package/examples/output/{act-tunnel-junction-wake-switch.txt → act-tunnel-junction-wake-switch.md} +20 -18
- package/examples/output/{act-yeast-self-reproduction.txt → act-yeast-self-reproduction.md} +22 -20
- package/examples/output/annotation.md +1 -0
- package/examples/output/auroracare.md +150 -0
- package/examples/output/backward-recursion.md +6 -0
- package/examples/output/barley-seed-becoming.md +27 -0
- package/examples/output/{bmi.txt → bmi.md} +19 -17
- package/examples/output/builtin-coverage.md +1 -0
- package/examples/output/calidor.md +31 -0
- package/examples/output/collection.md +1 -0
- package/examples/output/{complex-matrix-stability.txt → complex-matrix-stability.md} +13 -11
- package/examples/output/context-association.md +7 -0
- package/examples/output/{control-system.txt → control-system.md} +19 -17
- package/examples/output/{deep-taxonomy-10.txt → deep-taxonomy-10.md} +14 -12
- package/examples/output/{deep-taxonomy-100.txt → deep-taxonomy-100.md} +14 -12
- package/examples/output/{deep-taxonomy-1000.txt → deep-taxonomy-1000.md} +14 -12
- package/examples/output/{deep-taxonomy-10000.txt → deep-taxonomy-10000.md} +14 -12
- package/examples/output/{deep-taxonomy-100000.txt → deep-taxonomy-100000.md} +14 -12
- package/examples/output/delfour.md +32 -0
- package/examples/output/digital-product-passport.md +3 -0
- package/examples/output/dijkstra-risk-path.md +11 -0
- package/examples/output/{easter.txt → easter.md} +152 -150
- package/examples/output/eco-route-insight.md +20 -0
- package/examples/output/flandor.md +33 -0
- package/examples/output/{french-cities.txt → french-cities.md} +13 -11
- package/examples/output/{fundamental-theorem-arithmetic.txt → fundamental-theorem-arithmetic.md} +14 -12
- package/examples/output/genetic-algorithm-knapsack.md +3 -0
- package/examples/output/genetic-algorithm.md +3 -0
- package/examples/output/genetic-knapsack-selection.md +13 -0
- package/examples/output/{gps.txt → gps.md} +14 -12
- package/examples/output/harborsmr.md +22 -0
- package/examples/output/{interop-demo.txt → interop-demo.md} +3 -1
- package/examples/output/matrix-mechanics.md +16 -0
- package/examples/output/medior.md +34 -0
- package/examples/output/n3-speaks-for-itself.md +54 -0
- package/examples/output/{odrl-dpv-ehds-risk-ranked.txt → odrl-dpv-ehds-risk-ranked.md} +16 -15
- package/examples/output/{odrl-dpv-healthcare-risk-ranked.txt → odrl-dpv-healthcare-risk-ranked.md} +13 -12
- package/examples/output/{odrl-dpv-risk-ranked.txt → odrl-dpv-risk-ranked.md} +17 -16
- package/examples/output/{odrl-risk-mitigation.txt → odrl-risk-mitigation.md} +17 -16
- package/examples/output/{odrl-risk.txt → odrl-risk.md} +6 -5
- package/examples/output/parcellocker.md +22 -0
- package/examples/output/pn-junction-tunneling.md +25 -0
- package/examples/output/queens.md +23 -0
- package/examples/output/{rc-discharge-envelope.txt → rc-discharge-envelope.md} +10 -8
- package/examples/output/rdf-dataset.md +7 -0
- package/examples/output/rdf-message-flow.md +7 -0
- package/examples/output/rdf-messages.md +7 -0
- package/examples/output/{resto.txt → resto.md} +19 -17
- package/examples/output/school-placement-audit.md +11 -0
- package/examples/output/smoke-arithmetic.md +7 -0
- package/examples/output/sqrt2-cauchy.md +15 -0
- package/examples/output/sqrt2-dedekind.md +33 -0
- package/examples/output/{sudoku.txt → sudoku.md} +45 -43
- package/examples/output/transcendental-numbers-stretched.md +262 -0
- package/examples/output/transistor-switch.md +26 -0
- package/examples/output/triple-terms.md +7 -0
- package/examples/output/{tunnel-junction-wake-switch-becoming.txt → tunnel-junction-wake-switch-becoming.md} +20 -18
- package/examples/output/{wind-turbine.txt → wind-turbine.md} +17 -15
- package/examples/parcellocker.n3 +2 -0
- package/examples/pn-junction-tunneling.n3 +3 -3
- package/examples/queens.n3 +1 -0
- package/examples/rc-discharge-envelope.n3 +1 -1
- package/examples/rdf-dataset.n3 +5 -0
- package/examples/rdf-message-flow.n3 +1 -2
- package/examples/rdf-messages.n3 +1 -2
- package/examples/resto.n3 +2 -0
- package/examples/school-placement-audit.n3 +1 -2
- package/examples/smoke-arithmetic.n3 +1 -1
- package/examples/sqrt2-cauchy.n3 +2 -0
- package/examples/sqrt2-dedekind.n3 +2 -0
- package/examples/sudoku.n3 +14 -14
- package/examples/transcendental-numbers-stretched.n3 +5 -0
- package/examples/transistor-switch.n3 +3 -3
- package/examples/triple-terms.n3 +5 -0
- package/examples/tunnel-junction-wake-switch-becoming.n3 +2 -0
- package/examples/wind-turbine.n3 +2 -0
- package/eyeling.js +14 -1
- package/lib/explain.js +14 -1
- package/package.json +1 -1
- package/test/examples.test.js +44 -13
- package/test/package.test.js +43 -7
- package/examples/output/act-barley-seed-lineage.txt +0 -25
- package/examples/output/annotation.n3 +0 -0
- package/examples/output/auroracare.txt +0 -149
- package/examples/output/backward-recursion.n3 +0 -4
- package/examples/output/barley-seed-becoming.txt +0 -25
- package/examples/output/builtin-coverage.n3 +0 -0
- package/examples/output/calidor.txt +0 -29
- package/examples/output/collection.n3 +0 -0
- package/examples/output/context-association.n3 +0 -9
- package/examples/output/delfour.txt +0 -30
- package/examples/output/digital-product-passport.txt +0 -1
- package/examples/output/dijkstra-risk-path.n3 +0 -3
- package/examples/output/eco-route-insight.n3 +0 -3
- package/examples/output/flandor.txt +0 -31
- package/examples/output/genetic-algorithm-knapsack.txt +0 -1
- package/examples/output/genetic-algorithm.txt +0 -1
- package/examples/output/genetic-knapsack-selection.n3 +0 -3
- package/examples/output/harborsmr.txt +0 -20
- package/examples/output/matrix-mechanics.txt +0 -14
- package/examples/output/medior.txt +0 -32
- package/examples/output/n3-speaks-for-itself.txt +0 -52
- package/examples/output/parcellocker.txt +0 -20
- package/examples/output/pn-junction-tunneling.txt +0 -23
- package/examples/output/queens.txt +0 -21
- package/examples/output/rc-discharge-envelope.n3 +0 -9
- package/examples/output/rdf-dataset.n3 +0 -5
- package/examples/output/rdf-message-flow.n3 +0 -7
- package/examples/output/rdf-messages.n3 +0 -7
- package/examples/output/school-placement-audit.n3 +0 -3
- package/examples/output/smoke-arithmetic.n3 +0 -5
- package/examples/output/smoke-arithmetic.txt +0 -5
- package/examples/output/sqrt2-cauchy.txt +0 -13
- package/examples/output/sqrt2-dedekind.txt +0 -31
- package/examples/output/transcendental-numbers-stretched.txt +0 -260
- package/examples/output/transistor-switch.txt +0 -24
- package/examples/output/triple-terms.n3 +0 -5
|
@@ -303,3 +303,8 @@ log:query
|
|
|
303
303
|
:report :concerns ?A.
|
|
304
304
|
:report :concerns ?B.
|
|
305
305
|
}.
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
# Markdown rendering via log:outputString.
|
|
309
|
+
:__md_output :text "# transcendental-numbers-stretched\n\n@prefix : <https://example.org/transcendental#> .\n\n:report :concerns :prod_e_pi .\n:report :concerns :sum_e_pi .\n:report :headline :quadraticTrick .\n:report :irrational :e .\n:report :irrational :e_div_2 .\n:report :irrational :e_plus_1 .\n:report :irrational :e_plus_2 .\n:report :irrational :exp_minus_pi_over_2 .\n:report :irrational :exp_sqrt2 .\n:report :irrational :half_times_e .\n:report :irrational :half_times_pi .\n:report :irrational :pi .\n:report :irrational :pi_div_2 .\n:report :irrational :pi_plus_1 .\n:report :irrational :pi_plus_sqrt2 .\n:report :irrational :pow_2_sqrt2 .\n:report :irrational :pow_e_pi .\n:report :irrational :pow_i_i .\n:report :irrational :pow_minus1_minusI .\n:report :irrational :pow2sqrt2_div_2 .\n:report :irrational :pow2sqrt2_plus_1 .\n:report :irrational :two_times_e .\n:report :irrational :two_times_pi .\n:report :irrational :two_times_pow2sqrt2 .\n:report :notConstructible :e .\n:report :notConstructible :e_div_2 .\n:report :notConstructible :e_plus_1 .\n:report :notConstructible :e_plus_2 .\n:report :notConstructible :exp_minus_pi_over_2 .\n:report :notConstructible :exp_sqrt2 .\n:report :notConstructible :half_times_e .\n:report :notConstructible :half_times_pi .\n:report :notConstructible :pi .\n:report :notConstructible :pi_div_2 .\n:report :notConstructible :pi_plus_1 .\n:report :notConstructible :pi_plus_sqrt2 .\n:report :notConstructible :pow_2_sqrt2 .\n:report :notConstructible :pow_e_pi .\n:report :notConstructible :pow_i_i .\n:report :notConstructible :pow_minus1_minusI .\n:report :notConstructible :pow2sqrt2_div_2 .\n:report :notConstructible :pow2sqrt2_plus_1 .\n:report :notConstructible :two_times_e .\n:report :notConstructible :two_times_pi .\n:report :notConstructible :two_times_pow2sqrt2 .\n:report :proof {\n :e :provedBy :Hermite1873 .\n} .\n:report :proof {\n :e :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :e :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :e_div_2 :provedBy :TransDivAlg .\n} .\n:report :proof {\n :e_div_2 :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :e_div_2 :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :e_plus_1 :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :e_plus_1 :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :e_plus_1 :provedBy :TransPlusAlg .\n} .\n:report :proof {\n :e_plus_2 :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :e_plus_2 :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :e_plus_2 :provedBy :TransPlusAlg .\n} .\n:report :proof {\n :exp_minus_pi_over_2 :provedBy :GelfondSchneider .\n} .\n:report :proof {\n :exp_minus_pi_over_2 :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :exp_minus_pi_over_2 :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :exp_sqrt2 :provedBy :LindemannWeierstrass .\n} .\n:report :proof {\n :exp_sqrt2 :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :exp_sqrt2 :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :half_times_e :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :half_times_e :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :half_times_e :provedBy :TransTimesAlg .\n} .\n:report :proof {\n :half_times_pi :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :half_times_pi :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :half_times_pi :provedBy :TransTimesAlg .\n} .\n:report :proof {\n :pi :provedBy :Lindemann1882 .\n} .\n:report :proof {\n :pi :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :pi :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :pi_div_2 :provedBy :TransDivAlg .\n} .\n:report :proof {\n :pi_div_2 :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :pi_div_2 :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :pi_plus_1 :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :pi_plus_1 :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :pi_plus_1 :provedBy :TransPlusAlg .\n} .\n:report :proof {\n :pi_plus_sqrt2 :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :pi_plus_sqrt2 :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :pi_plus_sqrt2 :provedBy :TransPlusAlg .\n} .\n:report :proof {\n :pow_2_sqrt2 :provedBy :GelfondSchneider .\n} .\n:report :proof {\n :pow_2_sqrt2 :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :pow_2_sqrt2 :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :pow_e_pi :provedBy :GelfondSchneider .\n} .\n:report :proof {\n :pow_e_pi :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :pow_e_pi :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :pow_i_i :provedBy :GelfondSchneider .\n} .\n:report :proof {\n :pow_i_i :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :pow_i_i :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :pow_minus1_minusI :provedBy :GelfondSchneider .\n} .\n:report :proof {\n :pow_minus1_minusI :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :pow_minus1_minusI :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :pow2sqrt2_div_2 :provedBy :TransDivAlg .\n} .\n:report :proof {\n :pow2sqrt2_div_2 :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :pow2sqrt2_div_2 :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :pow2sqrt2_plus_1 :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :pow2sqrt2_plus_1 :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :pow2sqrt2_plus_1 :provedBy :TransPlusAlg .\n} .\n:report :proof {\n :two_times_e :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :two_times_e :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :two_times_e :provedBy :TransTimesAlg .\n} .\n:report :proof {\n :two_times_pi :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :two_times_pi :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :two_times_pi :provedBy :TransTimesAlg .\n} .\n:report :proof {\n :two_times_pow2sqrt2 :provedBy :TransImpliesIrrational .\n} .\n:report :proof {\n :two_times_pow2sqrt2 :provedBy :TransImpliesNotConstructible .\n} .\n:report :proof {\n :two_times_pow2sqrt2 :provedBy :TransTimesAlg .\n} .\n:report :transcendental :e .\n:report :transcendental :e_div_2 .\n:report :transcendental :e_plus_1 .\n:report :transcendental :e_plus_2 .\n:report :transcendental :exp_minus_pi_over_2 .\n:report :transcendental :exp_sqrt2 .\n:report :transcendental :half_times_e .\n:report :transcendental :half_times_pi .\n:report :transcendental :pi .\n:report :transcendental :pi_div_2 .\n:report :transcendental :pi_plus_1 .\n:report :transcendental :pi_plus_sqrt2 .\n:report :transcendental :pow_2_sqrt2 .\n:report :transcendental :pow_e_pi .\n:report :transcendental :pow_i_i .\n:report :transcendental :pow_minus1_minusI .\n:report :transcendental :pow2sqrt2_div_2 .\n:report :transcendental :pow2sqrt2_plus_1 .\n:report :transcendental :two_times_e .\n:report :transcendental :two_times_pi .\n:report :transcendental :two_times_pow2sqrt2 .\n:report :unknown :pow_pi_e .\n:report :unknown :prod_e_pi .\n:report :unknown :sum_e_pi .\n" .
|
|
310
|
+
{ :__md_output :text ?text } log:query { :__md_output log:outputString ?text } .
|
|
@@ -193,7 +193,7 @@
|
|
|
193
193
|
( "on-state load current : %s\n\n" ?onCurrentText ) string:format ?onCurrentLine .
|
|
194
194
|
}
|
|
195
195
|
=> {
|
|
196
|
-
:01-answer-1 log:outputString "
|
|
196
|
+
:01-answer-1 log:outputString "# transistor-switch\n\n## Answer\n" .
|
|
197
197
|
:01-answer-2 log:outputString "In this toy transistor-switch model, a low input leaves the transistor in cutoff (OFF) and a high input drives it into saturation (ON), so the load behaves like an on/off branch rather than a linear amplifier.\n" .
|
|
198
198
|
:01-answer-3 log:outputString "case : transistor-switch\n" .
|
|
199
199
|
:01-answer-4 log:outputString ?lowStateLine .
|
|
@@ -223,7 +223,7 @@
|
|
|
223
223
|
( "high-input load limit : %s\n" ?loadLimitText ) string:format ?loadLine .
|
|
224
224
|
}
|
|
225
225
|
=> {
|
|
226
|
-
:02-why-01 log:outputString "
|
|
226
|
+
:02-why-01 log:outputString "## Reason Why\n" .
|
|
227
227
|
:02-why-02 log:outputString "We model an NPN low-side switch with exact millivolt and microamp arithmetic. The base current comes from (Vin - Vbe,on)/Rb when the base-emitter junction is forward biased, and the collector current is the smaller of beta * Ib and the load-limited current (Vcc - Vce,sat)/Rl.\n" .
|
|
228
228
|
:02-why-03 log:outputString ?supplyLine .
|
|
229
229
|
:02-why-04 log:outputString ?rbLine .
|
|
@@ -244,7 +244,7 @@
|
|
|
244
244
|
:case :loadVoltageMatchesResistorDrop true .
|
|
245
245
|
}
|
|
246
246
|
=> {
|
|
247
|
-
:03-check-1 log:outputString "
|
|
247
|
+
:03-check-1 log:outputString "## Check\n" .
|
|
248
248
|
:03-check-2 log:outputString "low input stays in cutoff : yes\n" .
|
|
249
249
|
:03-check-3 log:outputString "high input reaches saturation : yes\n" .
|
|
250
250
|
:03-check-4 log:outputString "switching states differ : yes\n" .
|
package/examples/triple-terms.n3
CHANGED
|
@@ -18,3 +18,8 @@ VERSION "1.2"
|
|
|
18
18
|
{ ?observation :entails ?entailment }
|
|
19
19
|
log:query
|
|
20
20
|
{ ?observation :entails ?entailment } .
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# Markdown rendering via log:outputString.
|
|
24
|
+
:__md_output :text "# triple-terms\n\nVERSION \"1.2\"\n\n@prefix : <https://eyereasoner.github.io/eyeling/examples/triple_terms#> .\n\n:observation :entails <<( :sensor :needs :inspection )>> .\n" .
|
|
25
|
+
{ :__md_output :text ?text } log:query { :__md_output log:outputString ?text } .
|
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
@prefix arc: <https://example.org/arc#> .
|
|
19
19
|
@prefix log: <http://www.w3.org/2000/10/swap/log#> .
|
|
20
20
|
|
|
21
|
+
:000_md_title log:outputString "# tunnel-junction-wake-switch-becoming\n\n" .
|
|
22
|
+
|
|
21
23
|
:case a arc:Case ;
|
|
22
24
|
arc:question "Can a tunnel-junction wake switch become a low-bias wake-triggering state in a regime where a conventional PN junction cannot?" .
|
|
23
25
|
|
package/examples/wind-turbine.n3
CHANGED
package/eyeling.js
CHANGED
|
@@ -9209,6 +9209,19 @@ function makeExplain(deps) {
|
|
|
9209
9209
|
return 0;
|
|
9210
9210
|
}
|
|
9211
9211
|
|
|
9212
|
+
function addMarkdownHardBreaks(text) {
|
|
9213
|
+
const normalized = String(text).replace(/\r\n/g, '\n').replace(/\r/g, '\n');
|
|
9214
|
+
if (!normalized.startsWith('# ')) return text;
|
|
9215
|
+
|
|
9216
|
+
return normalized
|
|
9217
|
+
.split('\n')
|
|
9218
|
+
.map((line) => {
|
|
9219
|
+
if (line.length === 0) return line;
|
|
9220
|
+
return line.replace(/[ \t]+$/g, '') + ' ';
|
|
9221
|
+
})
|
|
9222
|
+
.join('\n');
|
|
9223
|
+
}
|
|
9224
|
+
|
|
9212
9225
|
function collectOutputStringsFromFacts(facts, prefixes) {
|
|
9213
9226
|
// Gather all (key, string) pairs from the saturated fact store.
|
|
9214
9227
|
const pairs = [];
|
|
@@ -9229,7 +9242,7 @@ function makeExplain(deps) {
|
|
|
9229
9242
|
return a.idx - b.idx; // stable tie-breaker
|
|
9230
9243
|
});
|
|
9231
9244
|
|
|
9232
|
-
return pairs.map((p) => p.text).join('');
|
|
9245
|
+
return addMarkdownHardBreaks(pairs.map((p) => p.text).join(''));
|
|
9233
9246
|
}
|
|
9234
9247
|
|
|
9235
9248
|
return { printExplanation, collectOutputStringsFromFacts };
|
package/lib/explain.js
CHANGED
|
@@ -181,6 +181,19 @@ function makeExplain(deps) {
|
|
|
181
181
|
return 0;
|
|
182
182
|
}
|
|
183
183
|
|
|
184
|
+
function addMarkdownHardBreaks(text) {
|
|
185
|
+
const normalized = String(text).replace(/\r\n/g, '\n').replace(/\r/g, '\n');
|
|
186
|
+
if (!normalized.startsWith('# ')) return text;
|
|
187
|
+
|
|
188
|
+
return normalized
|
|
189
|
+
.split('\n')
|
|
190
|
+
.map((line) => {
|
|
191
|
+
if (line.length === 0) return line;
|
|
192
|
+
return line.replace(/[ \t]+$/g, '') + ' ';
|
|
193
|
+
})
|
|
194
|
+
.join('\n');
|
|
195
|
+
}
|
|
196
|
+
|
|
184
197
|
function collectOutputStringsFromFacts(facts, prefixes) {
|
|
185
198
|
// Gather all (key, string) pairs from the saturated fact store.
|
|
186
199
|
const pairs = [];
|
|
@@ -201,7 +214,7 @@ function makeExplain(deps) {
|
|
|
201
214
|
return a.idx - b.idx; // stable tie-breaker
|
|
202
215
|
});
|
|
203
216
|
|
|
204
|
-
return pairs.map((p) => p.text).join('');
|
|
217
|
+
return addMarkdownHardBreaks(pairs.map((p) => p.text).join(''));
|
|
205
218
|
}
|
|
206
219
|
|
|
207
220
|
return { printExplanation, collectOutputStringsFromFacts };
|
package/package.json
CHANGED
package/test/examples.test.js
CHANGED
|
@@ -30,18 +30,44 @@ function run(cmd, args, opts = {}) {
|
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
function normalizeNewlines(text) {
|
|
34
|
+
return String(text).replace(/\r\n/g, '\n').replace(/\r/g, '\n');
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function stripTrailingWhitespace(text) {
|
|
38
|
+
return normalizeNewlines(text)
|
|
39
|
+
.split('\n')
|
|
40
|
+
.map((line) => line.replace(/[\t ]+$/g, ''))
|
|
41
|
+
.join('\n');
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function normalizeTextForCompare(text) {
|
|
45
|
+
return stripTrailingWhitespace(text).trim();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function normalizeMarkdownForCompare(text) {
|
|
49
|
+
return normalizeNewlines(text).replace(/^\n+|\n+$/g, '');
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Normalize N3 output for comparison.
|
|
34
53
|
// Eyeling (and other N3 tools) may emit the same closure with different
|
|
35
54
|
// triple ordering. Examples tests should verify content, not presentation.
|
|
36
|
-
function
|
|
37
|
-
return
|
|
38
|
-
.split(
|
|
39
|
-
.map((l) => l.replace(/[\t ]+$/g, '')) // trim trailing whitespace
|
|
55
|
+
function normalizeN3ForCompare(n3Text) {
|
|
56
|
+
return stripTrailingWhitespace(n3Text)
|
|
57
|
+
.split('\n')
|
|
40
58
|
.filter((l) => l.length > 0)
|
|
41
59
|
.sort((a, b) => a.localeCompare(b))
|
|
42
60
|
.join('\n');
|
|
43
61
|
}
|
|
44
62
|
|
|
63
|
+
function normalizeForCompare(text, expectedPath) {
|
|
64
|
+
const ext = path.extname(expectedPath);
|
|
65
|
+
const value = text;
|
|
66
|
+
if (ext === '.md') return normalizeMarkdownForCompare(value);
|
|
67
|
+
if (ext === '.txt') return normalizeTextForCompare(value);
|
|
68
|
+
return normalizeN3ForCompare(value);
|
|
69
|
+
}
|
|
70
|
+
|
|
45
71
|
// Expectation logic (robust, long-term):
|
|
46
72
|
// 1) If file contains: # expect-exit: N -> use N
|
|
47
73
|
// 2) Else -> expect exit 0
|
|
@@ -79,23 +105,26 @@ function showDiff({ examplesDir, expectedPath, generatedPath }) {
|
|
|
79
105
|
}
|
|
80
106
|
|
|
81
107
|
function resolveExpectedPath(outputDir, inputFile) {
|
|
82
|
-
const exactPath = path.join(outputDir, inputFile);
|
|
83
|
-
if (fs.existsSync(exactPath)) return exactPath;
|
|
84
|
-
|
|
85
108
|
const stem = path.basename(inputFile, path.extname(inputFile));
|
|
109
|
+
const preference = new Map([
|
|
110
|
+
['.md', 0],
|
|
111
|
+
['.txt', 1],
|
|
112
|
+
['.n3', 2],
|
|
113
|
+
]);
|
|
86
114
|
const candidates = fs
|
|
87
115
|
.readdirSync(outputDir)
|
|
88
116
|
.filter((name) => path.basename(name, path.extname(name)) === stem)
|
|
89
117
|
.sort((a, b) => {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return a.localeCompare(b);
|
|
118
|
+
const pa = preference.get(path.extname(a)) ?? 99;
|
|
119
|
+
const pb = preference.get(path.extname(b)) ?? 99;
|
|
120
|
+
return pa - pb || a.localeCompare(b);
|
|
93
121
|
});
|
|
94
122
|
|
|
95
123
|
if (candidates.length === 0) return null;
|
|
96
124
|
return path.join(outputDir, candidates[0]);
|
|
97
125
|
}
|
|
98
126
|
|
|
127
|
+
|
|
99
128
|
function resolveExampleTrigInput(root, inputFile) {
|
|
100
129
|
const stem = path.basename(inputFile, path.extname(inputFile));
|
|
101
130
|
const rel = path.join('input', `${stem}.trig`);
|
|
@@ -229,13 +258,15 @@ function main() {
|
|
|
229
258
|
|
|
230
259
|
const ms = Date.now() - start;
|
|
231
260
|
|
|
232
|
-
// Compare output
|
|
261
|
+
// Compare output. N3 outputs are order-insensitive; Markdown outputs are order-sensitive.
|
|
233
262
|
let diffOk = false;
|
|
234
263
|
try {
|
|
235
264
|
const expectedText = fs.readFileSync(expectedPath, 'utf8');
|
|
236
265
|
const generatedText = fs.readFileSync(generatedPath, 'utf8');
|
|
237
266
|
if (expectedText == null) throw new Error('missing expected output');
|
|
238
|
-
diffOk =
|
|
267
|
+
diffOk =
|
|
268
|
+
normalizeForCompare(expectedText, expectedPath) ===
|
|
269
|
+
normalizeForCompare(generatedText, expectedPath);
|
|
239
270
|
} catch {
|
|
240
271
|
diffOk = false;
|
|
241
272
|
}
|
package/test/package.test.js
CHANGED
|
@@ -58,8 +58,23 @@ function runChecked(cmd, args, opts = {}) {
|
|
|
58
58
|
return res;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
function normalizeNewlines(
|
|
62
|
-
return String(
|
|
61
|
+
function normalizeNewlines(text) {
|
|
62
|
+
return String(text).replace(/\r\n/g, '\n').replace(/\r/g, '\n');
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function stripTrailingWhitespace(text) {
|
|
66
|
+
return normalizeNewlines(text)
|
|
67
|
+
.split('\n')
|
|
68
|
+
.map((line) => line.replace(/[\t ]+$/g, ''))
|
|
69
|
+
.join('\n');
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function normalizeTextForCompare(text) {
|
|
73
|
+
return stripTrailingWhitespace(text).trim();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function normalizeMarkdownForCompare(text) {
|
|
77
|
+
return normalizeNewlines(text).replace(/^\n+|\n+$/g, '');
|
|
63
78
|
}
|
|
64
79
|
|
|
65
80
|
// Expectation logic (shared with test/examples.test.js):
|
|
@@ -81,6 +96,26 @@ function resolveExampleTrigInput(examplesDir, inputFile) {
|
|
|
81
96
|
return { abs, rel };
|
|
82
97
|
}
|
|
83
98
|
|
|
99
|
+
function resolveExpectedPath(outputDir, inputFile) {
|
|
100
|
+
const stem = path.basename(inputFile, path.extname(inputFile));
|
|
101
|
+
const preference = new Map([
|
|
102
|
+
['.md', 0],
|
|
103
|
+
['.txt', 1],
|
|
104
|
+
['.n3', 2],
|
|
105
|
+
]);
|
|
106
|
+
const candidates = fs
|
|
107
|
+
.readdirSync(outputDir)
|
|
108
|
+
.filter((name) => path.basename(name, path.extname(name)) === stem)
|
|
109
|
+
.sort((a, b) => {
|
|
110
|
+
const pa = preference.get(path.extname(a)) ?? 99;
|
|
111
|
+
const pb = preference.get(path.extname(b)) ?? 99;
|
|
112
|
+
return pa - pb || a.localeCompare(b);
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
if (candidates.length === 0) return null;
|
|
116
|
+
return path.join(outputDir, candidates[0]);
|
|
117
|
+
}
|
|
118
|
+
|
|
84
119
|
function hasGit() {
|
|
85
120
|
const r = run('git', ['--version']);
|
|
86
121
|
return r.status === 0;
|
|
@@ -191,11 +226,11 @@ function main() {
|
|
|
191
226
|
try {
|
|
192
227
|
for (const file of SMOKE_EXAMPLES) {
|
|
193
228
|
const inputPath = path.join(examplesDir, file);
|
|
194
|
-
const expectedPath =
|
|
229
|
+
const expectedPath = resolveExpectedPath(outputDir, file);
|
|
195
230
|
|
|
196
231
|
if (!fs.existsSync(inputPath)) throw new Error(`Missing example in installed package: ${inputPath}`);
|
|
197
|
-
if (!fs.existsSync(expectedPath))
|
|
198
|
-
throw new Error(`Missing golden output in installed package
|
|
232
|
+
if (!expectedPath || !fs.existsSync(expectedPath))
|
|
233
|
+
throw new Error(`Missing golden output in installed package for ${file}`);
|
|
199
234
|
|
|
200
235
|
const n3Text = fs.readFileSync(inputPath, 'utf8');
|
|
201
236
|
const expectedRc = expectedExitCode(n3Text);
|
|
@@ -229,9 +264,10 @@ ${stderr}`
|
|
|
229
264
|
// Normalize newlines so this is stable across platforms.
|
|
230
265
|
const got = normalizeNewlines(r.stdout || '');
|
|
231
266
|
const exp = normalizeNewlines(fs.readFileSync(expectedPath, 'utf8'));
|
|
267
|
+
const compare = path.extname(expectedPath) === '.md' ? normalizeMarkdownForCompare : normalizeTextForCompare;
|
|
232
268
|
|
|
233
|
-
if (got !== exp) {
|
|
234
|
-
const genPath = path.join(tmpExamplesOut,
|
|
269
|
+
if (compare(got) !== compare(exp)) {
|
|
270
|
+
const genPath = path.join(tmpExamplesOut, path.basename(expectedPath));
|
|
235
271
|
fs.writeFileSync(genPath, got, 'utf8');
|
|
236
272
|
console.error(`
|
|
237
273
|
Output differs for ${file}:`);
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
ACT barley seed lineage — can and can't
|
|
2
|
-
|
|
3
|
-
Answer
|
|
4
|
-
YES for the viable barley lineage.
|
|
5
|
-
NO for the contrast lineages when digital heredity, repair, protected dormancy, or heritable variation are missing.
|
|
6
|
-
|
|
7
|
-
Reason Why
|
|
8
|
-
The main lineage can achieve genome copying under no-design laws because its hereditary information is digitally instantiated. It can also pass through protected dormancy, germinate, produce propagules, reproduce accurately, close its life cycle, and adaptively persist under saline selection. But the contrast lineages show the "can't" side: non-digital heredity blocks accurate genome copying under no-design laws, lack of repair blocks accurate self-reproduction, lack of dormancy protection blocks lineage closure through a protected seed phase, and lack of heritable variation blocks adaptive evolution and thus blocks evolvability.
|
|
9
|
-
|
|
10
|
-
Check
|
|
11
|
-
C1 OK - no-design laws are assumed
|
|
12
|
-
C2 OK - the viable genome can be copied under no-design laws
|
|
13
|
-
C3 OK - the viable seed can achieve protected dormancy
|
|
14
|
-
C4 OK - the viable seed can germinate
|
|
15
|
-
C5 OK - the viable adult can produce propagules
|
|
16
|
-
C6 OK - the viable lineage can achieve accurate self-reproduction
|
|
17
|
-
C7 OK - the viable lineage can achieve lineage closure
|
|
18
|
-
C8 OK - the viable lineage can exhibit heritable variation
|
|
19
|
-
C9 OK - the viable lineage can adaptively persist
|
|
20
|
-
C10 OK - the viable lineage is evolvable
|
|
21
|
-
C11 OK - the non-digital lineage cannot achieve accurate self-reproduction
|
|
22
|
-
C12 OK - the repair-deficient lineage cannot achieve accurate self-reproduction
|
|
23
|
-
C13 OK - the coatless lineage cannot achieve lineage closure through protected dormancy
|
|
24
|
-
C14 OK - the static lineage cannot achieve adaptive evolution
|
|
25
|
-
C15 OK - the static lineage cannot be an evolvable lineage
|
|
File without changes
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
AuroraCare — Purpose-based Medical Data Exchange
|
|
2
|
-
|
|
3
|
-
=== A – Primary care visit ===
|
|
4
|
-
Clinician in the patient's care team accessing the patient summary for primary care management.
|
|
5
|
-
|
|
6
|
-
Answer
|
|
7
|
-
PERMIT
|
|
8
|
-
|
|
9
|
-
Reason Why
|
|
10
|
-
Permitted: clinician in the patient's care team, and the primary-care policy matched.
|
|
11
|
-
|
|
12
|
-
Check
|
|
13
|
-
C1 SKIPPED - not a prohibited purpose
|
|
14
|
-
C2 OK - clinician
|
|
15
|
-
C3 OK - care-team linked
|
|
16
|
-
C4 SKIPPED
|
|
17
|
-
C5 OK - operator=isAnyOf, allowed=["https://example.org/health#PATIENT_SUMMARY","https://example.org/health#LAB_RESULTS"], requested=["https://example.org/health#PATIENT_SUMMARY"]
|
|
18
|
-
C6 SKIPPED - no prohibition matched
|
|
19
|
-
C7 OK - trace shows matching permission
|
|
20
|
-
C8 SKIPPED - no matched policy or no duties
|
|
21
|
-
C9 SKIPPED - policy has no environment constraint
|
|
22
|
-
C10 INFO - matched policy: urn:policy:primary-care-001
|
|
23
|
-
|
|
24
|
-
=== B – Quality improvement (in scope) ===
|
|
25
|
-
QI analyst using lab results + summary in a secure environment.
|
|
26
|
-
|
|
27
|
-
Answer
|
|
28
|
-
PERMIT
|
|
29
|
-
|
|
30
|
-
Reason Why
|
|
31
|
-
Permitted: ODRL/DPV policy matched for secondary use.
|
|
32
|
-
|
|
33
|
-
Check
|
|
34
|
-
C1 SKIPPED - not a prohibited purpose
|
|
35
|
-
C2 SKIPPED
|
|
36
|
-
C3 SKIPPED
|
|
37
|
-
C4 OK - opt-in present and policy matched
|
|
38
|
-
C5 OK - operator=isAllOf, allowed=["https://example.org/health#LAB_RESULTS","https://example.org/health#PATIENT_SUMMARY"], requested=["https://example.org/health#LAB_RESULTS","https://example.org/health#PATIENT_SUMMARY"]
|
|
39
|
-
C6 SKIPPED - no prohibition matched
|
|
40
|
-
C7 OK - trace shows matching permission
|
|
41
|
-
C8 INFO - duties attached: duty:https://w3id.org/dpv/legal/eu/ehds#requireConsent, duty:https://w3id.org/dpv/legal/eu/ehds#noExfiltration
|
|
42
|
-
C9 OK - operator=eq, allowed="secure_env", requested="secure_env"
|
|
43
|
-
C10 INFO - matched policy: urn:policy:qi-2025-aurora
|
|
44
|
-
|
|
45
|
-
=== C – Quality improvement (out of scope) ===
|
|
46
|
-
QI analyst with only lab results; policy expects labs + summary.
|
|
47
|
-
|
|
48
|
-
Answer
|
|
49
|
-
DENY
|
|
50
|
-
|
|
51
|
-
Reason Why
|
|
52
|
-
Denied: no policy matched (purpose, environment, TOMs, or categories out of scope).
|
|
53
|
-
|
|
54
|
-
Check
|
|
55
|
-
C1 SKIPPED - not a prohibited purpose
|
|
56
|
-
C2 SKIPPED
|
|
57
|
-
C3 SKIPPED
|
|
58
|
-
C4 OK - denied because opt-in missing or no policy match
|
|
59
|
-
C5 SKIPPED
|
|
60
|
-
C6 SKIPPED - no prohibition matched
|
|
61
|
-
C7 SKIPPED
|
|
62
|
-
C8 SKIPPED - no matched policy or no duties
|
|
63
|
-
C9 SKIPPED
|
|
64
|
-
C10 SKIPPED - no matched policy
|
|
65
|
-
|
|
66
|
-
=== D – Insurance management ===
|
|
67
|
-
Insurance bot attempting to use health data for insurance management (prohibited purpose).
|
|
68
|
-
|
|
69
|
-
Answer
|
|
70
|
-
DENY
|
|
71
|
-
|
|
72
|
-
Reason Why
|
|
73
|
-
Denied: the requested purpose (insurance management) is prohibited by policy.
|
|
74
|
-
|
|
75
|
-
Check
|
|
76
|
-
C1 OK - denied prohibited purpose
|
|
77
|
-
C2 SKIPPED
|
|
78
|
-
C3 SKIPPED
|
|
79
|
-
C4 SKIPPED
|
|
80
|
-
C5 SKIPPED
|
|
81
|
-
C6 OK - denied due to prohibition
|
|
82
|
-
C7 SKIPPED
|
|
83
|
-
C8 SKIPPED - no matched policy or no duties
|
|
84
|
-
C9 SKIPPED
|
|
85
|
-
C10 SKIPPED - no matched policy
|
|
86
|
-
|
|
87
|
-
=== E – GP checks labs ===
|
|
88
|
-
GP for the same patient checking lab results via the API gateway.
|
|
89
|
-
|
|
90
|
-
Answer
|
|
91
|
-
PERMIT
|
|
92
|
-
|
|
93
|
-
Reason Why
|
|
94
|
-
Permitted: clinician in the patient's care team, and the primary-care policy matched.
|
|
95
|
-
|
|
96
|
-
Check
|
|
97
|
-
C1 SKIPPED - not a prohibited purpose
|
|
98
|
-
C2 OK - clinician
|
|
99
|
-
C3 OK - care-team linked
|
|
100
|
-
C4 SKIPPED
|
|
101
|
-
C5 OK - operator=isAnyOf, allowed=["https://example.org/health#PATIENT_SUMMARY","https://example.org/health#LAB_RESULTS"], requested=["https://example.org/health#LAB_RESULTS"]
|
|
102
|
-
C6 SKIPPED - no prohibition matched
|
|
103
|
-
C7 OK - trace shows matching permission
|
|
104
|
-
C8 SKIPPED - no matched policy or no duties
|
|
105
|
-
C9 SKIPPED - policy has no environment constraint
|
|
106
|
-
C10 INFO - matched policy: urn:policy:primary-care-001
|
|
107
|
-
|
|
108
|
-
=== F – Research on anonymised dataset ===
|
|
109
|
-
Researcher using anonymised labs + summary in a secure environment, with opt-in.
|
|
110
|
-
|
|
111
|
-
Answer
|
|
112
|
-
PERMIT
|
|
113
|
-
|
|
114
|
-
Reason Why
|
|
115
|
-
Permitted: subject opted in and an ODRL/DPV policy matched (anonymised dataset in secure environment).
|
|
116
|
-
|
|
117
|
-
Check
|
|
118
|
-
C1 SKIPPED - not a prohibited purpose
|
|
119
|
-
C2 SKIPPED
|
|
120
|
-
C3 SKIPPED
|
|
121
|
-
C4 OK - opt-in present and policy matched
|
|
122
|
-
C5 OK - operator=isAnyOf, allowed=["https://example.org/health#LAB_RESULTS","https://example.org/health#PATIENT_SUMMARY","https://example.org/health#IMAGING_REPORT"], requested=["https://example.org/health#PATIENT_SUMMARY","https://example.org/health#LAB_RESULTS"]
|
|
123
|
-
C6 SKIPPED - no prohibition matched
|
|
124
|
-
C7 OK - trace shows matching permission
|
|
125
|
-
C8 INFO - duties attached: duty:https://w3id.org/dpv/legal/eu/ehds#annualOutcomeReport, duty:https://w3id.org/dpv/legal/eu/ehds#noReidentification, duty:https://w3id.org/dpv/legal/eu/ehds#noExfiltration
|
|
126
|
-
C9 OK - operator=eq, allowed="secure_env", requested="secure_env"
|
|
127
|
-
C10 INFO - matched policy: urn:policy:research-aurora-diabetes
|
|
128
|
-
|
|
129
|
-
=== G – AI training (opt-out) ===
|
|
130
|
-
Data user wants to train AI, but the subject opted out of AI training.
|
|
131
|
-
|
|
132
|
-
Answer
|
|
133
|
-
DENY
|
|
134
|
-
|
|
135
|
-
Reason Why
|
|
136
|
-
Denied: you opted out of your data being used to train AI systems.
|
|
137
|
-
|
|
138
|
-
Check
|
|
139
|
-
C1 SKIPPED - not a prohibited purpose
|
|
140
|
-
C2 SKIPPED
|
|
141
|
-
C3 SKIPPED
|
|
142
|
-
C4 OK - denied because opt-in missing or no policy match
|
|
143
|
-
C5 SKIPPED
|
|
144
|
-
C6 SKIPPED - no prohibition matched
|
|
145
|
-
C7 SKIPPED
|
|
146
|
-
C8 SKIPPED - no matched policy or no duties
|
|
147
|
-
C9 SKIPPED
|
|
148
|
-
C10 SKIPPED - no matched policy
|
|
149
|
-
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
Barley seed lineage — becoming
|
|
2
|
-
|
|
3
|
-
Answer
|
|
4
|
-
YES for the viable barley lineage.
|
|
5
|
-
NO for the contrast lineages when digital heredity, repair, protected dormancy, or heritable variation are missing.
|
|
6
|
-
|
|
7
|
-
Reason Why
|
|
8
|
-
The main lineage can be read as a becoming: a protected dormant seed can germinate, an adult plant can become a next seed stage, and the lineage can therefore become a self-renewing cycle. Because its hereditary information is digitally instantiated and repair is available, it can also become an accurately reproduced next generation under no-design laws. And because heritable variation is present under a matching selection environment, it can become an adaptively persistent lineage. The contrast lineages mark blocked becomings: non-digital heredity blocks accurate copying, lack of repair blocks reliable renewal, lack of dormancy protection blocks closure through the seed phase, and lack of heritable variation blocks adaptive becoming.
|
|
9
|
-
|
|
10
|
-
Check
|
|
11
|
-
B1 OK - no-design laws are assumed
|
|
12
|
-
B2 OK - the viable genome can become accurately copied
|
|
13
|
-
B3 OK - the viable seed can become a protected dormant phase
|
|
14
|
-
B4 OK - the viable seed can become a germinating stage
|
|
15
|
-
B5 OK - the viable adult can become a next dormant seed stage
|
|
16
|
-
B6 OK - the viable lineage can become an accurately reproduced next generation
|
|
17
|
-
B7 OK - the viable lineage can become a closed life cycle
|
|
18
|
-
B8 OK - the viable lineage can become a novel variant lineage
|
|
19
|
-
B9 OK - the viable lineage can become adaptively persistent
|
|
20
|
-
B10 OK - the viable lineage is an evolvable becoming
|
|
21
|
-
B11 OK - the non-digital lineage cannot become an accurately reproduced next generation
|
|
22
|
-
B12 OK - the repair-deficient lineage cannot become an accurately reproduced next generation
|
|
23
|
-
B13 OK - the coatless lineage cannot become a closed life cycle
|
|
24
|
-
B14 OK - the static lineage cannot become an adaptive lineage
|
|
25
|
-
B15 OK - the static lineage cannot become an evolvable becoming
|
|
File without changes
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
=== Answer ===
|
|
2
|
-
The city is allowed to use a narrow heatwave-response insight and recommends Calidor Priority Cooling Bundle for this household.
|
|
3
|
-
case : calidor
|
|
4
|
-
decision : Allowed
|
|
5
|
-
municipality : Calidor
|
|
6
|
-
recommended package : Calidor Priority Cooling Bundle
|
|
7
|
-
|
|
8
|
-
=== Reason Why ===
|
|
9
|
-
The gateway desensitizes local heat, vulnerability, and prepaid-energy stress into an expiring municipal support insight, and the city consumes that envelope only for heatwave response.
|
|
10
|
-
metric : active_need_count
|
|
11
|
-
threshold : 3.0
|
|
12
|
-
scope : household-gateway @ heat-alert-window
|
|
13
|
-
required capabilities: bill_credit, cooling_kit, transport, welfare_check
|
|
14
|
-
signature alg : HMAC-SHA256
|
|
15
|
-
expires at : 2026-07-18T21:00:00+00:00
|
|
16
|
-
reason.txt : The gateway keeps raw indoor heat, vulnerability, and prepaid-energy data local, derives a priority-support signal, and shares only a scoped heatwave-response envelope with expiry.
|
|
17
|
-
dispatches logged : 1
|
|
18
|
-
|
|
19
|
-
=== Check ===
|
|
20
|
-
signature verifies : yes
|
|
21
|
-
payload hash matches : yes
|
|
22
|
-
minimization strips sensitive terms: yes
|
|
23
|
-
scope complete : yes
|
|
24
|
-
authorization allowed : yes
|
|
25
|
-
heat-alert active : yes
|
|
26
|
-
unsafe indoor heat : yes
|
|
27
|
-
recommended package eligible : yes
|
|
28
|
-
duty timing consistent : yes
|
|
29
|
-
tenant screening prohibited : yes
|
|
File without changes
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
@prefix : <http://example.org/#> .
|
|
2
|
-
|
|
3
|
-
:association :subject :Bob .
|
|
4
|
-
:association :dataGraph _:src2_g0 .
|
|
5
|
-
:association :signatureGraph _:src2_g1 .
|
|
6
|
-
:association :metadataGraph _:src2_g3 .
|
|
7
|
-
:association :cryptosuite "ecdsa-rdfc-2019" .
|
|
8
|
-
:association :issuer <https://university.example/issuers/14> .
|
|
9
|
-
:association :status :contextAssociationVerified .
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
=== Answer ===
|
|
2
|
-
The scanner is allowed to use a neutral shopping insight and recommends Low-Sugar Tea Biscuits instead of Classic Tea Biscuits.
|
|
3
|
-
case : delfour
|
|
4
|
-
decision : Allowed
|
|
5
|
-
scanned product : Classic Tea Biscuits
|
|
6
|
-
suggested alternative: Low-Sugar Tea Biscuits
|
|
7
|
-
|
|
8
|
-
=== Reason Why ===
|
|
9
|
-
The phone desensitizes a diabetes-related household condition into a scoped low-sugar need, wraps it in an expiring Insight + Policy envelope, signs it, and the scanner consumes that envelope for shopping assistance.
|
|
10
|
-
metric : sugar_g_per_serving
|
|
11
|
-
threshold : 10.0
|
|
12
|
-
scope : self-scanner @ pick_up_scanner
|
|
13
|
-
retailer : Delfour
|
|
14
|
-
signature alg : HMAC-SHA256
|
|
15
|
-
banner headline : Track sugar per serving while you scan
|
|
16
|
-
expires at : 2025-10-05T22:33:48.907185+00:00
|
|
17
|
-
reason.txt : Household requires low-sugar guidance (diabetes in POD). A neutral Insight is scoped to device 'self-scanner', event 'pick_up_scanner', retailer 'Delfour', and expires soon; the policy confines use to shopping assistance.
|
|
18
|
-
audit entries : 1
|
|
19
|
-
bus files written : 6
|
|
20
|
-
|
|
21
|
-
=== Check ===
|
|
22
|
-
signature verifies : yes
|
|
23
|
-
payload hash matches : yes
|
|
24
|
-
minimization strips sensitive terms: yes
|
|
25
|
-
scope complete : yes
|
|
26
|
-
authorization allowed : yes
|
|
27
|
-
high-sugar banner : yes
|
|
28
|
-
alternative lowers sugar : yes
|
|
29
|
-
duty timing consistent : yes
|
|
30
|
-
marketing prohibited : yes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
ACME X1000 SN123 | recycled=13% | lifecycle=52500 gCO2e | CRM=true | hint=http://example.org/dpp#repairFriendly
|