Add Qualities to UCO

Disclaimer
Participation by NIST in the creation of the documentation of mentioned software is not intended to imply a recommendation or endorsement by the National Institute of Standards and Technology, nor is it intended to imply that any specific software is necessarily the best available for the purpose.
Background
At a recent UCO workshop, somebody raised a design point in UCO that had been intended since UCO's inception and before, but unfortunately had been forgotten.  The point is roughly that "In UCO, an Observable Object must provide the same observed property-values, regardless of the context of how the object was observed."  In particular, among the interpreting agent (whether a person or software), the analytic environment, the time of the observation, and other influential factors in the act of observing and describing something: nothing should differ about the ObservableObject's recorded characteristics, except for possibly the IRI.  (Complete sets of keying characteristics are deeply specific to each class, making deterministic UUIDs a logistical challenge.)
UCO currently does not adhere to this principle in several properties, which can be realized quickly to be liable to differ between observations at two times:

observable:isActive on observable:AccountFacet
observable:owner on observable:AccountFacet
observable:clockSetting on observable:MobileDeviceFacet
observable:uptime on observable:ComputerSpecificationFacet

Further, several proposals have come raising the need for time-influenced observed values of properties:

The CASE proposal for CryptoWalletFacet presents a need to represent the balance of a wallet.
The UCO proposal for ReactionsListFacet presents a need to characterize the vector of reacts (e.g. N hearts, M angry faces).
Under some interpretations of observable:File, the set of associated hashes is not fixed and can be context-dependent.  (This proposal is pending, though a good chunk of it appears as examples in this proposal.)

These varying properties are known as Qualities in some Top-Level Ontologies.  Another mid-level ontology, referenced starting in the Benefits section, maintains calling them Properties, but for the remainder of this Issue they will be called Qualitys to avoid overloading with OWL Propertys.
UCO needs to adopt the idea of Qualities, at least to move towards contextual independence of ObservableObject characterizations.
Requirements
Requirement 1
For certain observable properties, aka Qualities, that are known to vary, UCO MUST be able to hold, within the same graph, that for one object, its instance of a Quality was observed to have different values at different times.  (For instance, a social media post could have 2 Reacts one day, 2 million Reacts a day after going viral.)
Requirement 2
UCO MUST be able to represent how a value of a Quality was observed.
Requirement 3
UCO MUST establish a path forward to move current non-invariant, Facet-housed properties of ObservableObjects to a Quality-based implementation.
Requirement 4
UCO MUST support a mechanism to relate Qualities to (Facet-housed) properties that are expected to be fixed-value.
Requirement 5
UCO MUST be able to support quality values that are both literal-valued and object-valued.  E.g. a quality representing a running computer's boot time should be able to support a literal xsd:dateTime as a value; and the quality representing a file's hash should be able to have a types:Hash object as a value.
Requirement 6
UCO SHOULD define Qualities to enable alignment with other ontologies, top-level and/or mid-level, that already have modeled Qualities.
Risk / Benefit analysis
Benefits
Consistency with other ontologies
Qualities exist in these other ontologies:

Basic Formal Ontology, BFO (a top-level ontology): obo:BFO_0000019
(gentle) Unified Foundational Ontology, gUFO (a top-level ontology): gufo:Quality
SOSA/SSN (a mid-level ontology): sosa:ObservableProperty and sosa:ActuatableProperty (the latter handling qualities that one modifies rather than observes)

Fixity review
One significant motivation for Requirement 4 is file hash review.  In some operational contexts, certain files are expected to not change contents.  A Quality representing the file's contents can be used to show that the file's hash was observed to remain consistent before, during, and after an analysis process.
Currently, it seems the only available UCO mechanism to review a file's hashes is to create a new observable:File object (new IRI), redundantly recording its property-values for match-review.  This can cause significant confusion in chain of custody handling.  If a file is hashed before each of five steps, did the analysis really entail five files corresponding with the five observable:Files?
Risks
Qualities significantly increase graph object interconnectedness.  This appears to be a necessary "tax" on explaining how values were observed.

Counter to this risk, there is significant value in showing that multiple observations with variances in execution find the same value.

Qualities introduce a decision point in all future property discussion, on whether the property is a quality, or something closer to an inherent, invariant characteristic of an object.

Augmenting this risk, UCO would need to do the same for its current suite of properties, at least under the observable namespace.
Counter to this risk, UCO has not made this distinction to date, and this will provide a significant advancement to identifying properties that are essential to objects.

The submitter recommends Qualities be attached to UcoObject subclasses, and not Facets.  No other reviewed ontology that provides Qualities has a concept like Facet, so attempting to make an alignment of another ontology's Quality with a Facet-housed Quality would be significantly difficult.
Competencies demonstrated
Competency 1
A file is characterized at the start of an analysis that, by design and organizational mandate, should not modify the file.
kb:File-c80e6d3c-f2a2-4e39-bff3-52cd40ed7f1f
	a uco-observable:File ;
	uco-core:objectCreatedTime "2022-01-15T09:00:00-05:00"^^xsd:dateTime ;
	uco-core:hasFacet kb:ContentDataFacet-20fd04aa-9ba3-45c4-aace-2a97f6b23d70 ;
	.
kb:ContentDataFacet-20fd04aa-9ba3-45c4-aace-2a97f6b23d70
	a uco-observable:ContentDataFacet ;
	uco-observable:hash kb:Hash-bb622458-c52c-4428-b832-34658c4018d7 ;
	.
kb:Hash-bb622458-c52c-4428-b832-34658c4018d7
	a uco-types:Hash ;
	uco-types:hashMethod "SHA3-256"^^uco-vocabulary:HashNameVocab ;
	uco-types:hashValue "a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a"^^xsd:hexBinary ;
	.

A quality representing the file's content hash is defined.
drafting:FileContentHashQuality
	a owl:Class ;
	rdfs:subClassOf drafting:Quality ;
	.
kb:FileContentHashQuality-a8bf6647-64fe-44e8-b1ab-e3a186e137e0
	a drafting:FileContentHashQuality ;
	drafting:isQualityOf kb:File-c80e6d3c-f2a2-4e39-bff3-52cd40ed7f1f ;
	.

The analysis takes a month, and many operations are done against that file.  Periodically, the file is hashed with a scripted check, and the script records the hash measurement using SOSA Observations.  The analyst finishes the work, runs one last hash operation and sees the following:
kb:Observation-e0d6e355-d561-40c6-bfb3-993c0f96f769
	a
		sosa:Observation ,
		case-investigation:InvestigativeAction
		uco-observable:Observation ,
		;
	sosa:hasFeatureOfInterest kb:File-c80e6d3c-f2a2-4e39-bff3-52cd40ed7f1f ;
	sosa:hasResult kb:Hash-bb622458-c52c-4428-b832-34658c4018d7 ;
	sosa:observedProperty kb:FileContentHashQuality-a8bf6647-64fe-44e8-b1ab-e3a186e137e0 ;
	sosa:resultTime "2022-02-15T15:00:00-05:00"^^xsd:dateTime ;
	uco-action:endTime "2022-02-15T15:00:00-05:00"^^xsd:dateTime ;
	uco-action:object kb:File-c80e6d3c-f2a2-4e39-bff3-52cd40ed7f1f ;
	uco-action:result kb:ProvenanceRecord-0bce3f26-4fc4-46dd-a21e-1137e901d0c1 ;
	uco-action:startTime "2022-02-15T14:55:00-05:00"^^xsd:dateTime ;
	.
kb:ProvenanceRecord-0bce3f26-4fc4-46dd-a21e-1137e901d0c1
	a case-investigation:ProvenanceRecord ;
	uco-core:object kb:File-c80e6d3c-f2a2-4e39-bff3-52cd40ed7f1f ;
	.
kb:Hash-bb622458-c52c-4428-b832-34658c4018d7
	a uco-types:Hash ;
	uco-types:hashMethod "SHA3-256"^^uco-vocabulary:HashNameVocab ;
	uco-types:hashValue "a78f2c566b2439463a2e7ca515bbfa3f92948506583cbadaebdd507f277542bd"^^xsd:hexBinary ;
	.

(Other Observations were not typed here, but please assume they are also in the graph.)
Competency Question 1.1
What is the timeline of Observations of the hash values?
SELECT ?lResultTime ?lHashValue
WHERE {
	?nObservation
		a sosa:Observation ;
		sosa:resultTime ?lResultTime ;
		sosa:hasFeatureOfInterest
		  / uco-core:hasFacet
		    / uco-observable:hash
		      / uco-types:hashValue ?lHashValue ;
		.
}
ORDER BY ?lResultTime

Result 1.1

?lResultTime
?lHashValue

2022-01-15T09:05:00-05:00
a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a

[...]
[...]

2022-01-31T23:05:00-05:00
a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a

[...]
[...]

2022-02-08T23:05:00-05:00
a78f2c566b2439463a2e7ca515bbfa3f92948506583cbadaebdd507f277542bd

[...]
[...]

2022-02-15T15:00:00-05:00
a78f2c566b2439463a2e7ca515bbfa3f92948506583cbadaebdd507f277542bd

Solution suggestion
Note: This solution sketch so far includes the definition of Quality, with how to relate it to UcoObject; and QualityValue, though not with how to relate QualityValues to Qualitys, such as might be done with the observable:Observation class.  The proposer feels sufficient questions are raised with introducing Qualitys, particularly towards correcting issues with ObservableObject properties, that the question of standardizing relating quality-values to qualities can wait for a further proposal.  The demonstration using SSN/SOSA is known to differ in structure from a similarly-purposed representation in gUFO.
Define new classes, core:Quality and core:QualityValue:
core:Quality
	a owl:Class ;
	rdfs:subClassOf core:UcoInherentCharacterizationThing ;
	.

core:QualityValue
	a owl:Class ;
	rdfs:subClassOf core:UcoInherentCharacterizationThing ;
	.

Define a new property, and inverse, to relate a Quality to a UcoObject:
core:hasQuality
        a
		owl:ObjectProperty ,
		owl:InverseFunctionalProperty
		;
        rdfs:domain core:UcoObject ;
        rdfs:range core:Quality ;
        owl:inverseOf core:isQualityOf ;
        .

core:isQualityOf
        a
		owl:ObjectProperty ,
		owl:FunctionalProperty
		;
        rdfs:domain core:Quality ;
        rdfs:range core:UcoObject ;
        owl:inverseOf core:hasQuality ;
        .

Define a new property to relate a QualityValue to a Quality.  A full description of rationale is in the first comment in this Issue.
core:hadLiteralQualityValue
	a owl:DatatypeProperty ;
	rdfs:comment "This property intentionally has an unrestricted range."@en ;
	rdfs:domain core:Quality ;
	.

core:hadObjectQualityValue
	a owl:ObjectProperty ;
	rdfs:domain core:Quality ;
	rdfs:range core:QualityValue ;
	.

Though it is not current UCO style to do so, the proposer would like to also include this general-purpose shape, detached from any owl:Class.  Else, every sh:PropertyShape constraining core:hadObjectQualityValue would need to include core:QualityValue in the sh:class constraint, as well as the further-constrained class.  (e.g. for FileContentHashQuality, the constraint would read sh:class core:QualityValue, types:Hash.)
core:hadObjectQualityValue-range-shape
	a sh:NodeShape ;
	rdfs:comment """
		Note for illustration: This shape is defined to save on making
		redundant sh:class assignments in classes' node shapes.
		"""@en ;
	sh:class core:QualityValue ;
	sh:nodeKind sh:IRI ;
	sh:targetObjectsOf core:hadObjectQualityValue ;
	.

Solution alignments
The proposed solution has the following potential alignments for profiles of UCO usage where the other ontology is treated as a higher-level basis.
The first comment in this Issue has further mappings for assignment of QualityValues to Qualitys.
BFO
obo:BFO_0000019 rdfs:label "quality"@en .
core:Quality
	rdfs:subClassOf obo:BFO_0000019 ;
	.

# It does not appear that BFO directly provides a suitable class for
# alignment with core:QualityValue.
# Potentially, the Information Artifact Ontology does,
# 'measurement datum', indirectly noted in the BFO 2.0 Specification
# and User's Guide.
# http://purl.obolibrary.org/obo/IAO_0000109

obo:BFO_0000159 rdfs:label "has quality at all times"@en .
core:hasQuality
	rdfs:subPropertyOf obo:BFO_0000159 ;
	.

obo:BFO_0000080 rdfs:label "quality of at all times"@en .
core:isQualityOf
	rdfs:subPropertyOf obo:BFO_0000080 ;
	.

gUFO
core:Quality
	rdfs:subClassOf gufo:Quality ;
	.

core:QualityValue
	a gufo:AbstractIndividualType ;
	rdfs:subClassOf gufo:QualityValue ;
	.

# gUFO does not define an inverse property for gufo:inheresIn .

core:isQualityOf
	rdfs:subPropertyOf gufo:inheresIn ;
	.

SOSA/SSN
Note that with the definitions of ssn:FeatureOfInterest, ssn:hasProperty and ssn:isPropertyOf, core:Qualitys aligned as in the following block would be predicated on the existence of some (SOSA) Observation focused on the attached sosa:FeatureOfInterest (or Actuation focused on modifying the quality value).  This dependence appears to be an addition over the alignments from BFO and gUFO, where a quality inheres only in some endurant, and does not further need any process observing that endurant.  This dependence does not necessarily require, via a SHACL shape, that such an Observation be in the graph.
core:Quality
	rdfs:subClassOf [
		a owl:Class ;
		owl:unionOf (
			sosa:ActuatableProperty
			sosa:ObservableProperty
		)
	] ;
	.

core:QualityValue
	rdfs:subClassOf sosa:Result ;
	.

core:hasQuality
	rdfs:subPropertyOf ssn:hasProperty ;
	.

core:isQualityOf
	rdfs:subPropertyOf ssn:isPropertyOf ;
	.

One thing missing from the original post is a design for Requirement 3, how to migrate current Facet-housed properties to Qualitys.  The Solution Suggestion in the Issue will be updated to incorporate definitions in this comment.
Let's take observable:clockSetting on observable:MobileDeviceFacet (with range xsd:dateTime) as an exemplar, as I imagine we won't have any staunch defenders of declaring this as a fixed-value property.  (Its definition seems to run afoul of the intent of ObservableObjects noted in this Issue's background.)
The most straightforward path to migrating this from a owl:DatatypeProperty used in observable:MobileDeviceFacet to a core:Quality would be:

Wholly deprecate observable:clockSetting, as done previously for observable:creationTime.
Define a subclass of core:Quality, observable:ClockSettingQuality.
Bind observable:ClockSettingQuality to observable:MobileDevice through use of a qualified property association.

In OWL, this would mean adding to observable.ttl:
observable:MobileDevice
	rdfs:subClassOf [
		a owl:Restriction ;
		owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ;
		owl:onClass observable:ClockSettingQuality ;
		owl:onProperty core:hasQuality ;
	] ;
	.

(As a reminder, since it has been some time since UCO exercised this portion of OWL, the primer section 5.3 demonstrates this syntax.  Also note that document has Turtle syntax available to be displayed by clicking a button at the end of Section 1.2.)
In SHACL, this would mean adding to observable.ttl:
observable:MobileDevice
	sh:property [
		a sh:PropertyShape ;
		sh:path core:hasQuality ;
		sh:qualifiedMaxCount "1"^^xsd:integer ;
		sh:qualifiedValueShape [
			a sh:NodeShape ;
			sh:class observable:ClockSettingQuality ;
		] ;
	] ;
	.

Revising instance data
Suppose we have this instance data:
{
    "@context": {
        "kb": "http://example.org/kb/",
        "core": "https://ontology.unifiedcyberontology.org/uco/core/",
        "observable": "https://ontology.unifiedcyberontology.org/uco/observable/",
        "xsd": "http://www.w3.org/2001/XMLSchema#"
    },
    "@graph": [
        {
            "@id": "kb:MobileDevice-b8d17daa-3f60-4848-a6e7-dd8c9061ab16",
            "@type": "observable:MobileDevice",
            "core:hasFacet": {
                "@id": "kb:MobileDeviceFacet-42e5c321-11f6-4cab-a1b0-dcf07702e9ea",
                "@type": "observable:MobileDeviceFacet",
                "observable:clockSetting": {
                    "@type": "xsd:dateTime",
                    "@value": "2018-10-31T23:59:59Z"
                }
            },
            "core:modifiedTime": {
                "@type": "xsd:dateTime",
                "@value": "2023-02-01T14:00:00Z"
            }
        }
    ]
}

To migrate the 2018 timestamp from MobileDeviceFacet into a quality-value, we need to define a property to hold the quality-value.  Rather than associate the quality-value with the object, we associate it with the quality.
core:hadLiteralQualityValue
	a owl:DatatypeProperty ;
	rdfs:comment "This property intentionally has an unrestricted range."@en ;
	rdfs:domain core:Quality ;
	.

core:hadObjectQualityValue
	a owl:ObjectProperty ;
	rdfs:domain core:Quality ;
	rdfs:range core:QualityValue ;
	.

core:hadObjectQualityValue-range-shape
	a sh:NodeShape ;
	rdfs:comment """
		Note for illustration: This shape is defined to save on making
		redundant sh:class assignments in classes' node shapes.
		"""@en ;
	sh:class core:QualityValue ;
	sh:nodeKind sh:IRI ;
	sh:targetObjectsOf core:hadObjectQualityValue ;
	.

Both OWL and SHACL offer a mechanism to constrain the DatatypeProperty's range locally within the ClockSettingQuality class.  Similar restrictions can be done for core:hadObjectQualityValue.
# OWL
observable:ClockSettingQuality
	rdfs:subClassOf [
		a owl:Restriction ;
		owl:allValuesFrom xsd:dateTime ;
		owl:onProperty core:hadLiteralQualityValue ;
	] ;
	.

# SHACL
observable:ClockSettingQuality
	sh:property [
		a sh:PropertyShape ;
		sh:datatype xsd:dateTime ;
		sh:path core:hadLiteralQualityValue ;
	] ;
	.

The above implementation so far still permits a reified QualityValue to be used instead of the literal, should UCO adopt or implement a reified temporal instant class in the future.  It is still possible to implement a requirement that only a literal quality value or object quality value be used; take for example this block doing so for FileContentHashQuality, disallowing literals:
observable:FileContentHashQuality
	a
		owl:Class ,
		sh:NodeShape
		;
	rdfs:subClassOf
		core:Quality ,
		[
			a owl:Restriction ;
			rdfs:comment "This property-disallowance style seen in BFO."@en ;
			owl:allValuesFrom owl:Nothing ;
			owl:onProperty core:hadLiteralQualityValue ;
		]
		[
			a owl:Restriction ;
			owl:allValuesFrom types:Hash ;
			owl:onProperty core:hadObjectQualityValue ;
		]
		;
	sh:property
		[
			a sh:PropertyShape ;
			rdfs:comment """
				Note for illustration: This class constraint IS currently
				compatible with core:hadObjectQualityValue-range-shape,
				because UCO does not disallow a node
				(via owl:disjointWith) from being typed both
				core:QualityValue and types:Hash.
				"""@en ;
			sh:class uco-types:Hash ;
			sh:path core:hadObjectQualityValue ;
		] ,
		[
			a sh:PropertyShape ;
			sh:maxCount "0"^^xsd:integer ;
			sh:path core:hadLiteralQualityValue ;
		]
		;
	sh:targetClass observable:FileContentHashQuality ;
	.

Back to the clockSetting migration: Switching to a Quality and removing the Facet-housed property, this is how the JSON would now look:
{
    "@context": {
        "kb": "http://example.org/kb/",
        "core": "https://ontology.unifiedcyberontology.org/uco/core/",
        "observable": "https://ontology.unifiedcyberontology.org/uco/observable/",
        "xsd": "http://www.w3.org/2001/XMLSchema#"
    },
    "@graph": [
        {
            "@id": "kb:ClockSettingQuality-09ae086d-ab33-42a2-a489-1b8281cd735b",
            "@type": "observable:ClockSettingQuality",
            "core:hadLiteralQualityValue": [
                {
                    "@type": "xsd:dateTime",
                    "@value": "2018-10-31T23:59:59Z"
                }
            ]
        },
        {
            "@id": "kb:MobileDevice-b8d17daa-3f60-4848-a6e7-dd8c9061ab16",
            "@type": "observable:MobileDevice",
            "core:hasQuality": {
                "@id": "kb:ClockSettingQuality-09ae086d-ab33-42a2-a489-1b8281cd735b"
            },
            "core:modifiedTime": {
                "@type": "xsd:dateTime",
                "@value": "2023-02-01T14:00:00Z"
            }
        }
    ]
}

There are two reasons for spelling the quality-value association properties in the past tense (hadXQualityValue):

It allows a "shortcut" representation, masking that there was some observation process---or potentially multiple---that yielded the quality-value.
The spelling removes a designation of a "current" value.  If there's only one value in the graph, then that value is current.  (Though, without the observation also being in the graph, it's unknown how long ago, or how frequently, that "current" value was observed.)

For use cases where only a floor and ceiling of one quality-value is needed, the spelling hadXQualityValue meets the need.
For use cases where multiple quality-values could be present, the shortcut property has the shortcoming of not knowing currency, frequency, or other descriptors of the values' applicability.
For use cases where a more full representation of how the value was determined---e.g. to associate a time of observation---the representation can be delegated according to the (future w.r.t. this proposal) representation of some Observation action yielding the quality-value.
Solution alignments
These sections describe how the proposed core:hadXQualityValue properties could align with other ontologies that provide Qualitys.
BFO
With the mapping of QualityValue to BFO unclear (see obo:IAO_0000109) note above, it is unclear how the quality-value assignments would map.
gUFO
The gUFO mapping takes the shortened quality-value assignment property, and maps it forward through some gufo:QualityValueAttributionSituation, then to the value with gufo:concernsReifiedQualityValue (object) or gufo:concernsQualityValue (literal).
Though the OWL inference mechanisms handle this implication automatically, there is one mapping point worth describing: This property chain axiom assumes that the Quality stands in the gufo:QualityValueAttributionSituation, rather than the gufo:Endurant in which the Quality inheres.  gUFO Situations permit any gufo:Endurant to stand therein.
core:hadLiteralQualityValue
        owl:propertyChainAxiom (
                gufo:standsInQualfiedAttribution
                gufo:concernsQualityValue
        ) ;
        .

core:hadObjectQualityValue
        owl:propertyChainAxiom (
                gufo:standsInQualfiedAttribution
                gufo:concernsReifiedQualityValue
        ) ;
        .

SOSA/SSN
The SOSA/SSN mapping takes the shortened quality-value assignment property, and maps it back through some sosa:Observation observing it, then forward from the sosa:Observation via sosa:hasSimpleResult (literal) or sosa:hasResult (object).
A note for future development: The propertyChainAxiom spelled here can't also be compatible with sosa:actsOnProperty for sosa:Actuations.  This might induce hadObjectQualityValue to be named hadObservedObjectQualityValue (likewise for hadLiteralQualityValue) instead, if UCO were to move toward adopting SOSA/SSN and/or make a class mappable to sosa:Actuation.
drafting:hadLiteralQualityValue
        owl:propertyChainAxiom (
                [
                        owl:inverseOf sosa:observedProperty ;
                ]
                sosa:hasSimpleResult
        ) ;
        .

drafting:hadObjectQualityValue
        owl:propertyChainAxiom (
                [
                        owl:inverseOf sosa:observedProperty ;
                ]
                sosa:hasResult
        ) ;
        .

On Requirement 4 (relating Qualitys to current Facet-housed properties), I am not quite sure what more would e beneficial beyond a custom owl:AnnotationProperty that links a Quality to a owl:ObjectProperty or owl:DatatypeProperty; something like core:correspondsWithFixedValueProperty?  Feedback is welcome on whether that should remain a requirement for this proposal.
Consider FileContentHashQuality from the initial post, and how it would pertain to observable:hash.
Also, if not clear, this change proposal only includes FileContentHashQuality for illustration, and is not proposing adopting that Quality at the same time as defining UCO's general Quality.

Two points of critique:

I'd like to suggest the relationship between a Quality and the Object it belongs to, be one of inherence, i.e., to underline the principle that the Quality is in its existence dependent on the availability of the Object. Indeed, I'm biased in my view through (g)UFO, but I think this is a necessary principle to formulate: the redness of the apple disappears when the apple has been eaten.
Again, according to (g)UFO, the inherence relationship should not have an inverse in order to underline that the particular redness of the apple is unique to that apple. Rational: The quality is uniquely instantiated for the object that it inheres in: there is no other object that shares the same instantiated redness. Two objects, of course, can have a quality value that is "equal", e.g., they show the same redness. But this does not imply that they share the same instance of the quality value! The apple that is red today, will be brown tomorrow. Hence, if they would share the same quality value, then their color would degrade in exactly the same manner over time, and this is clearly not the case. Furthermore, a unique instantiated quality value allows for a single method to establish equivalence of the quality values of the objects: when the Euclidian distance between the two values is within a certain limit they are considered equivalent, provided consideration on accuracy and resolution of the value ranges.

Hence, in short:

Remove core:hasQuality from the proposal;
Change core:isQualityOf to core:inheresIn, and reject any inversOf property.

Why are the relationships between core:Quality and core:QualityValue expressed in the past tense: core:hadLiteralQualityValue and core:hadObjectQualityValue?

@plbt5 : The reason these are spelled in the past tense is to denote that the quality-value was observed at some point to be X.  X is not the only possible value; Y could be observed at some different time, or via some different observation mechanism.
Spelling the property hasLiteralQualityValue (likewise for hasObjectQualityValue) implies that the quality value is, for all times that triple remains in the graph, X.  If Y is observed to be the value, then we have:
kb:SocialMediaPost-842fe9bf-10bf-4441-97e5-31f0778f4ae7
    a ex:SocialMediaPost ;
    core:hasQuality ex:ThumbsUpLikeCountQuality-f9fc28fb-bfa9-4c90-b986-aa989c8609e6 ;
    .

ex:ThumbsUpLikeCountQuality-f9fc28fb-bfa9-4c90-b986-aa989c8609e6
    a ex:ThumbsUpLikeCountQuality ;
    core:hasLiteralQualityValue
        2 ,
        19854,
        946456
        ;
     .

So, with that spelling, the Quality simultaneously has 2, 20k, and 950k Likes.
I spelled it had because, at points in the past, it had 2, 20k, and 950k likes.  It's then up to referring to the associated Observations, no matter how they're represented, to find times to determine the growth rate.  And again, providing the had...QualityValue properties at all is to provide a shortcut if the application opts to not make objects to represent the Observations.
Personally, I would rather enforce the Observations be represented, but it would not be necessary for some applications such as those providing statistical summarization and needing to feed a more compact data model.  Also, I am concerned that this proposal has enough going on as-is, and bringing in finally exercising UCO's yet-unexercised Observation class might be too much.  I also think making the tie to the Observation class is a separable proposal.  But if Ontology Committee members want Observation to be shored up as part of this proposal, I'm fine incorporating that.

(I apologize for cursing this comment by predicting it would be brief.)
@plbt5 : In response to the suggestion to change core:isQualityOf to core:inheresIn:  I see where you are coming from specifically with gUFO, because of the property gufo:inheresIn.  I have already shown how an alignment with gUFO could have core:isQualityOf be a subproperty of gufo:inheresIn.
I do not think it would be appropriate to switch core:isQualityOf to core:inheresIn, because of the rdfs:domain specificity.  Relatedly, I do think it would eventually be appropriate to start a subproperty hierarchy, with core:inheresIn defined, and core:isQualityOf benefitting, like so:
core:inheresIn
	a
		owl:ObjectProperty ,
		owl:FunctionalProperty
		;
	rdfs:domain core:UcoInherentCharacterizationThing ;
	rdfs:range core:UcoObject ;
	.

core:isQualityOf
	a
		owl:ObjectProperty ,
		owl:FunctionalProperty
		;

	rdfs:subPropertyOf core:inheresIn ;

	# The domain narrows in this subproperty.
	rdfs:domain core:Quality ;

	# rdfs:range is inherited from inheresIn.  No further narrowing required.
	.

However, I'm not inclined to add that to this proposal without a second motivating subproperty.  If we had the inverse property for core:hasFacet, core:isFacetOf, I would take that as sufficient motivation to start the hierarchy.
My hesitation on going with subproperties directly in UCO is that they're a little difficult to support in instance data.  SHACL does not include procedures for reviewing subproperties.  This isn't explicitly noted in the SHACL specification, but can be deduced from Specification Section 1.5 and a text-search of rdfs:subPropertyOf across that same page finding nothing, whereas rdfs:subClassOf shows up in some key recursive operations.  So, with subproperty support delegated to RDFS and/or OWL entailment, starting down the road of subproperties means we would need to set some quality control rules and be overly explicit.  That should happen in a future proposal.
Hence, I intend to leave the proposal as adding core:isQualityOf instead of core:inheresIn.
I also suggest keeping the inverse, core:hasQuality, because of the parallel with core:hasFacet.
Have I answered your concerns?

Oh, and on whether we establish a policy of rejecting inverse properties: I support keeping the option of inverse properties.  UCO hadn't used them before Issue 393, but the adoption of Issue 393 includes two properties with inverses defined, types:threadPredecessor and types:threadPreviousItem.
As a point of keeping UCO potentially interoperable with other ontologies, we should be prepared to make use of OWL features.


[DOCFIX] Add the POSIX user group policy doc

What changes are proposed in this pull request?
Add the POSIX user group policy doc
Why are the changes needed?
Clear instruction of Alluxio POSIX API user group policy
Does this PR introduce any user-facing changes?
NA

@jingwenouyang PTAL, thanks

alluxio-bot, merge this please

@Xenorith cherry-pick?

alluxio-bot, cherry-pick to branch-2.9 please

alluxio-bot, cherry-pick this to branch-2.9 please


pull request for e2e test at 12/13/2016 04:56:03

:white_check_mark: Validation status: passed
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


add a parentLevelDbId in the observation level

alter relationship key so that {"levelName":"plot", "levelCode":""} becomes
relationship key so that {"levelName":"plot", "levelCode":"", "parentLevelDbId": 882323 become

maybe add a /observationUnit//parents and /observationUnit//children call?


Router should check for reuse during resolution, not after

Upon navigation, the router currently goes through three "phases".

Resolution. Beginning at the root <router-outlet>, the router finds a prefix-matching route, creates the component in search of a nested <router-outlet> and recurses on it. As it creates these partially matching routes, it caches them for reuse upon activation. If the partially matching route is already active, it instead retrieves it from the cache.

Activation. Upon successful resolution, the router checks if the matching route leaf can be activated. The leaf component can implement CanActivate to prevent activation in particular circumstances (authentication guard for example).

Upon activation, each <router-outlet> checks if the currently activated component should be reused. If not, it's removed from cache of loaded components and rebuilt.

There are a number of issues with the order of this design

canActivate is potentially invoked on the current instance of the route. If this component isn't reusable, we're technically asking the wrong instance whether it can be activated.

If a non-leaf component isn't reusable (currently default behavior https://github.com/dart-lang/angular/issues/732), destroying and rebuilding it destroys its nested <router-outlet>, losing the cache. This requires rebuilding and change detecting the matching route sub-tree again.

Attaching default routes occurs during resolution, which leads to a subtle issue with default routes concerning https://github.com/dart-lang/angular/issues/734. The router only attempts to load a default route if it detects a <router-outlet> in the route leaf. This means if the <router-outlet> host is reusable, you can't refresh it's default routes, since they're never cleared. This perhaps is a separate issue all on its own.

Instead, I propose that the router check for reuse and activation, during resolution. In addition to fixing the above issues, this would also enable a route to asynchronously load its own sub-routes during canActivate.

Is this still planned, or should we close?

I think at this point it would be too breaking, despite being a better behavior. We can close this and consider it a feature of any refactor or newer version we do in the future.

To clarify, I think the entire way route resolution works is a violation of Angular's lifecycle design. We really would need static route resolution that doesn't involve initializing components before a route is matched.

v6 feature (request)?

Router is very separate and unrelated to v5 or v6.

@leonsenft As it is planned for future, can you please keep this issue open?


Takes a while to update after trade success

After a trade buy or sell success, it'll take a solid 5-10 sec. to update the UI even after the modal says success.  It should ideally be instant after that or < 1 sec

Fixed in 795bec9ce8b008a7eebf29a199debda12da50383.


Deploy Juice shop app on AWS

Deploying the OWASP Juice shop app can aid in testing. Currently, each time we want to test the API, we need to spin up the juice shop. The scanner API would be easily demonstratable with a publicly accessible Juice shop app.

https://juice-shop.apilab.io/


Standardize favicon and open graph data across Nebula

I was updating the Trends icons and decided to standardize the favicons and open graph data on all the Nebula sites. This PR updates the favicons to the new Nebula logo and adds/standardizes the Open Graph metadata.
Every site should now follow the same template for the head tags in _app.tsx and _document.tsx which all link to the same corresponding icons. I also stored this icons in this drive link.
Other sites PRs:
https://github.com/UTDNebula/utd-trends/pull/123
https://github.com/UTDNebula/website-v2/pull/19
https://github.com/UTDNebula/jupiter/pull/175
https://github.com/UTDNebula/planner/pull/731
Planner specific note:
I could use some help as to why this isn't passing checks. I tried to branch off of a commit that was passing deployment as it seems a lot of recent commits on dev for dependency bumps weren't passing but it seems npm ci is failing in the tests.

Thanks for making this change @TyHil 🎉


Not understand

Im say sorry before, I dont understand to use this extention ..
Can you see me the example web or web file that use this extention ?
Thank you

I believe that example in readme is pretty much self-explanatory. What exact problem do you have?


Fix group name for UniqueExtendEntityMethodName Constraint

Hi
Your PR has been merged. Changes from PR will be synced to the public repository in a few days. Thank you.

PR closed as already merged.


race condition on dependant resources (gcp service)

What happened?
Created gcp.projects.Service as a dependent of gcp.firestore.Document but Pulumi attempts to create the document before the service is enabled, despite the explicit use of  dependsOn
Expected Behavior
For the Service to first be enabled and then the Document created.
Steps to reproduce
Create a new gcp typescript project, add the following two resources and pulumi up
const firestoreService = new gcp.projects.Service(`${name}-firestore`, {
  disableDependentServices: true,
  project,
  service: "firestore.googleapis.com",
});

const mydoc = new gcp.firestore.Document(
  "mydoc",
  {
    collection: "somenewcollection",
    documentId: `my-doc-%{random_suffix}`,
    fields: '{"something":{"mapValue":{"fields":{"akey":{"stringValue":"avalue"}}}}}',
    project: "my-project-name",
  },
  {
    dependsOn: [firestoreService],
  }
);

Output of pulumi about
  gcp:firestore:Document (mydoc):
    error: 1 error occurred:
        * Error creating Document: googleapi: Error 403: Cloud Firestore API has not been used in project<PHONE_NUMBER>00 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/firestore.googleapis.com/overview?project=149140858700 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
    Details:
    [
      {
        "@type": "type.googleapis.com/google.rpc.Help",
        "links": [
          {
            "description": "Google developers console API activation",
            "url": "https://console.developers.google.com/apis/api/firestore.googleapis.com/overview?project=149140858700"
          }
        ]
      },
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "domain": "googleapis.com",
        "metadata": {
          "consumer": "projects/149140858700",
          "service": "firestore.googleapis.com"
        },
        "reason": "SERVICE_DISABLED"
      }
    ]

  pulumi:pulumi:Stack (docket-grabber-dev):
    error: update failed

Additional context
No response
Contributing
Vote on this issue by adding a 👍 reaction.
To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

Hi @tomdavidson, I just wanted to confirm if this is working for you when you define your own parameters for the resources?
In the example you provided, you have project: "my-project-name", listed as a field for the document you're trying to create. If you're trying to bring up exactly what you have in the example, this is expected to fail as you're first enabling the firestore.googleapis.com API within the project you're specifying, but then attempting to create the Firestore document within the my-project-name project, rather than your own project. This seems like the case as well, as the error message is reporting that Cloud Firestore API has not been used in project<PHONE_NUMBER>00. This project number<PHONE_NUMBER>00 appears to be for to the my-project-name project id.
You could either update this project field to be the same project that you enabled the service in, or remove that field completely.
Please let us know if this is not the case.

Thanks @rquitales and sorry for the bad data above. Ill edit it to avoid confusing again. My git history (ive abandoned using pulumi for this) shows:
const mydoc = new gcp.firestore.Document(
  "mydoc",
  {
    collection: "somenewcollection",
    documentId: `my-doc-%{random_suffix}`,
    fields: '{"something":{"mapValue":{"fields":{"akey":{"stringValue":"avalue"}}}}}',
    project,
  },
  {
    dependsOn: [firestoreService],
  }
);

I think above I had the wrong entry out of my clipboard history.

I gave this a quick repro:

Disabled Firestore API on my test project.
Ran the following program

import * as gcp from "@pulumi/gcp";

const firestoreService = new gcp.projects.Service(`firestore`, {
  disableDependentServices: true,
  service: "firestore.googleapis.com",
});

const mydoc = new gcp.firestore.Document("mydoc", {
    collection: "somenewcollection",
    documentId: `my-doc-%{random_suffix}`,
    fields: '{"something":{"mapValue":{"fields":{"akey":{"stringValue":"avalue"}}}}}',
  }, { dependsOn: [firestoreService] });

It completed successfully. The Service resource creation took about 30 seconds and Document was created right after this.
As far as I can tell, everything is behaving correctly. Since the issue author isn't using Pulumi for this anymore, I'll go ahead and close the issue.


Bug Fix：Depth for treeAggregate

In master branch, the treeDepth equals 0 when local mode is set(PS: local model rather than local[*] ) because only one partition exists. This will result in exception when training. And the solution is to set a minimum/default depth which is also the default value for treeAggregate.

looks good to me, but we need fix it in our imllib as well.  Anyway, thank you for your pr.
@mpjlu would you merge this?

Thanks @AllenWGX and @hqzizania.


CB-12780 - Audit API and new event API should be authorized

See detailed description in the commit message.

retest this please

pls remove @DisableCheckPermission from AuditEventV4Controller

for the new permission check logic, we need at least unit tests, but it would be even better, if you could write a mock test for it in integration-test module under com.sequenceiq.it.cloudbreak.testcase.authorization package

we should wait until 2.47 is branched

please rebase this onto fresh master to resolve swagger issue


Object of class Illuminate\Database\Query\Expression could not be converted to string

Describe the bug
A clear and concise description of what the bug is.
Eloquent Query
Please provide the complete eloquent query that caused the bug, for example:
$data->whereHas($relation, function ($q) use ($search, $searchKey) {
	$table = $q->getModel()->getTable();
	$q->whereRaw("LOWER(cast(" . $table . "." . $searchKey . " as text)) ilike '%" . $search .

Can you provide a test repository that recreates this issue, or write a failing test in a PR that recreates this issue?

This is my controller,
        if ($request->input('search_type')) $this->search_type = Str::snake($request->search_type);
        if ($request->input('per_page')) $this->per_page = $request->per_page;
        if ($request->input('sort_by')) $this->sort_by = Str::snake($request->sort_by);
        if ($request->input('sort_key')) $this->sort_key = ($request->sort_key == 'asc') ? 'asc' : 'desc';
        if ($request->input('search')) {
            $search = Str::lower(str_replace(' ', '%', $request->input('search')));
            if (Str::contains($this->search_type, '.')) {
                $keys = explode('.', $this->search_type);
                foreach ($keys as $value) {
                    $key[] = Str::camel($value);
                }
                $searchKey = end($key);
                array_pop($key);
                $relation = implode('.', $key);
                $data->whereHas($relation, function ($q) use ($search, $searchKey) {
                    $table = $q->getModel()->getTable();
                    $q->where($table . '.' . Str::snake($searchKey), 'like', '%' . $search . '%');
                });
            } else {
                $searchType = Str::of($this->search_type)->camel()->toString();
                if (isset($this->mapRelation[$searchType])) {
                    $search_type = $this->mapRelation[$searchType];
                } else {
                    $search_type = $this->search_type;
                }
                $case = is_numeric($search) ? $search_type : "LOWER(" . $search_type . ")";
                $data->whereRaw($case . " like '%" . $search . "%'");
            }
        }

its work before on laravel 9.53 an this version 0.12.5
but when i try to upgrade to Laravel 10 & need upgrade laravel-model-caching to latest version, its throw an error Object of class Illuminate\Database\Query\Expression could not be converted to string so i'm revert back to laravel 9.53 and 0.125

its same to
$data->whereHas('user', function ($q) use ($search, $searchKey) {
    $table = $q->getModel()->getTable();
    $q->where('users.name', 'like', '%boo yaaa%');
});

or
$data->whereHas('other.relation', function ($q) use ($search, $searchKey) {
    $table = $q->getModel()->getTable();
    $q->where('other.field, 'like', '%boo yaaa%');
});

i Found the issue , its on getColumnClauses
    protected function getColumnClauses(array $where) : string
    {
        if ($where["type"] !== "Column") {
            return "";
        }

        return "-{$where["boolean"]}_{$where["first"]}_{$where["operator"]}_{$where["second"]}";
    }

i try to dump $where variable and got
array:5 [ // vendor/genealabs/laravel-model-caching/src/CacheKey.php:85
  "type" => "Column"
  "first" => Illuminate\Database\Query\Expression {#2342
    #value: ""subscriptions"."subscriber_id""
  }
  "operator" => "="
  "second" => "users.id"
  "boolean" => "and"
]

in my case $where["first"] return Illuminate\Database\Query\Expression
refer to https://laravel.com/docs/10.x/upgrade#database-expressions
however, if your application is manually casting database expressions to strings using (string) or invoking the __toString method on the expression directly, you should update your code to invoke the getValue method instead:
so i try overide that variable into
$where["first"] = $where["first"]->getValue(\DB::connection()->getQueryGrammar());

and its works
may i send pull request @mikebronner ?

i had send PR on #442
Thanks you

Fix at #442


Error Updating

I've been getting this error when trying to update. Happens both via automatic prompt and the doing manually via upgrade_oh_my_zsh
▶ upgrade_oh_my_zsh
Upgrading Oh My Zsh
error: Could not read f73e642e2265601b705b6aa9d9f71878ca98644a
error: Could not read f73e642e2265601b705b6aa9d9f71878ca98644a
remote: Counting objects: 630, done.
remote: Total 630 (delta 181), reused 181 (delta 181), pack-reused 449
Receiving objects: 100% (630/630), 176.19 KiB | 0 bytes/s, done.
Resolving deltas:  94% (329/350), completed with 59 local objects.
fatal: pack has 21 unresolved deltas
fatal: index-pack failed
There was an error updating. Try again later?

any ideas what's causing this?

It might be due to the way we use a shallow clone instead of copying the full repository. Try the following commands:
cd $ZSH
git pull --rebase --unshallow

same issue here.
Cannot pull with rebase: You have unstaged changes.
Please commit or stash them.```

@rjrobinson, your problem is that you have modified some file in the oh-my-zsh directory.
If you don't get the fatal: index-pack failed error you shouldn't have to do the git pull --unshallow thing.
 Was in a .dotfiles dir. Now its all good. Thanks.

Ok. @afxjzs, what about you?

This is what i'm getting when i try the command you suggested (sorry for the delay, had notifs turned off)
▶ git pull --rebase --unshallow
fatal: --unshallow on a complete repository does not make sense

and then
▶ git pull --rebase
error: Could not read f73e642e2265601b705b6aa9d9f71878ca98644a
error: Could not read f73e642e2265601b705b6aa9d9f71878ca98644a
remote: Counting objects: 2611, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 2611 (delta 1212), reused 1211 (delta 1211), pack-reused 1387
Receiving objects: 100% (2611/2611), 735.53 KiB | 0 bytes/s, done.
Resolving deltas:  95% (1392/1457), completed with 154 local objects.
fatal: pack has 65 unresolved deltas
fatal: index-pack failed

It seems you have a corrupt local repository.
If you haven't made any modifications to OMZ or you have, but don't care about losing them, you can reinstall OMZ:

Delete the oh-my-zsh folder: rm -r $ZSH
Clone the repository in the same place: git clone https://github.com/robbyrussell/oh-my-zsh.git $ZSH

I have a similar issue:
➜  ~ echo  $ZSH
/home/vagrant/.oh-my-zsh
➜  ~ ls -al /home/vagrant/.oh-my-zsh
ls: cannot access /home/vagrant/.oh-my-zsh: No such file or directory
➜  ~ git clone https://github.com/robbyrussell/oh-my-zsh.git $ZSH
Cloning into '/home/vagrant/.oh-my-zsh'...
remote: Counting objects: 15886, done.
error: object 2b7227859263b6aabcc28355b0b994995b7148b6:contains zero-padded file modes
fatal: Error in object
fatal: index-pack failed
➜  ~ git clone https://github.com/robbyrussell/oh-my-zsh.git # clone it to a different directory
Cloning into 'oh-my-zsh'...
remote: Counting objects: 15886, done.
error: object 2b7227859263b6aabcc28355b0b994995b7148b6:contains zero-padded file modes
fatal: Error in object
fatal: index-pack failed

@czerasz see #4963 for the solution.

@afxjzs I'm assuming you fixed it. Reopen if necessary.

After adding in /home/vagrant/.oh-my-zsh/.git/config the following lines pulling worked again:
[transfer]
        fsckobjects = false
[fetch]
        fsckobjects = false
[receive]
        fsckObjects = false


ParaTime picker

PR covers only desktop version
Need to go through this with Don tomorrow + there are some missing descriptions in lang files. This is done

I checked this out, and have a few difficulties with with, and suggestions.

By default, we only see the level where we can select Paratimes within the network. There is no indication whatsoever that it should be possible to switch between networks. (Even when I am running in TestNet mode!) There is only this little arrow at the top, which is nor clear at all. I think at least a work of explanation would be very useful there.
When I click that semi-hidden button, the network selector is revealed, but it only shows the Mainnet, even if I am currently at TestNet! I understand that we don't want to promote TestNet too much, but when we are already on TestNet, what is the point of hiding it's existence? I think it's confusing that the opening state is not synced to the current setting. I think if we are at TestNet, it should shot TestNet selected by default.
Why is the currently selected state not highlighted by a different bg color? (Both network and Paratime.)

@donouwens I'm sorry to bring the feedback so late in the game, but I think it's better late then never.

For point 1: Having it collapsed is OK. All I am advocating for is having a single word of explanation besides the arrow.
For point 3: For me, on my monitor, the difference between the selected and not selected stats is undetectable. About confusion with the hover state: the hover state has both the moving arrow and the background color change. I think we could take one of the two to indicate the selected state. (Or something else, but the current way I just can not see.)

the active state does have a background in the designs. Has it not been implemented correctly? I feel there are significant color differences and visual indicators between default/selected/hover/disabled (which also has the tooltip) - see screenshot.

No, it doesn't look that way. This is the current implementation:

So,

In the design, both the lighter shade of highlight, and the arrow signifies the current selection, and the hover is a stronger shade of highlight.
However, in the implementation, there is only one shade of highlight, and both it and the arrow serve the hover, and the selection only has the small "(currently active)" flag.

Should be easy to fix, though.

When I click that semi-hidden button, the network selector is revealed, but it only shows the Mainnet, even if I am currently at TestNet! I understand that we don't want to promote TestNet too much, but when we are already on TestNet, what is the point of hiding it's existence? I think it's confusing that the opening state is not synced to the current setting. I think if we are at TestNet, it should shot TestNet selected by default.

This is true - if the user is one Testnet we should show the Testnet icon or Testnet icon with 'Testnet' title.

That part works, we can see the Testnet icon and title, that's not what I'm talking about.
My issue is that when I bring out the network selector, it only shows Mainnet, and hides Testnet, which is the current selection.

So, to summarize: we are on Testnet, why is testnet not listed as one of the options, and marked as selected?

@csillag

Network menu is open and expanded for non mainner networks
hover and selected states updated based on Don's feedback.

If I did not catch something else from your comment let me know 🖖

* network menu is open and expanded for non mainnet networks

Yep, that works great now!

* hover and selected states updated based on Don's feedback

I'm sorry I still don't see the highlight color on the bg of the selected option.
I'm looking for this:
I do see the highlight for hover, but not for selection. In Don's visuals, there were two distinct highlights, one for hover, and one for selection.

I've received this from Don today. I will double check with him again.

default
hover
selected
disabled

Turns out there was an issue with mockups and some colors were wiped out :D Background to selected state added.

I think it would make total sense to reassign the arrow for selection type 2 instead of type 1.
It's a nice connection between the left side (the option selected) and the right side (where the option is described).

Here's answer from Don: We have default, selected, disabled, active states. Let’s stick with those. The ‘mouse down’ state Kristof is describing is a split second state between hover and active. We are okay without it.

OK, can clear up the dictionary? I am suspecting that we might assing different meaning to some of the terms here.
The state I'm talking about (selection type 2) is definitely not a split second state; it starts when the users clicks on the list item, and exists indefinitely, at least until the user clicks the "select" button at the other side of the dialog, hence closing the dialog.

imo it doesn't make sense to discuss such design changes via code review process. It's better to discuss this during Sync meeting. I will keep PR open until then.


ethtool: 4.16 -> 4.17

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools.
This update was made based on information from https://repology.org/metapackage/ethtool/versions.
These checks were done:

built on NixOS
/nix/store/l6vkhh88xfbdfjaqm9wmnlvm1q6qqg7i-ethtool-4.17/bin/ethtool passed the binary check.
1 of 1 passed binary check by having a zero exit code.
1 of 1 passed binary check by having the new version present in output.
found 4.17 with grep in /nix/store/l6vkhh88xfbdfjaqm9wmnlvm1q6qqg7i-ethtool-4.17
directory tree listing: https://gist.github.com/1861fff97928fe0b6cb81079b3266156
du listing: https://gist.github.com/65766ebe5f7022f5c96f6f8266a93c78

meta.description for ethtool is: '"Utility for controlling network drivers and hardware"'.
cc @bjornfor for testing.
Experimental: this build is cached with Cachix. To use the cache follow these experimental instructions:
One time setup in nixpkgs Git checkout:
cachix use r-ryantm
git remote add r-ryantm https://github.com/r-ryantm/nixpkgs.git

Test this build:
git fetch r-ryantm && git checkout 3c86c78cf195d24f778bd11cd5ad666f3e1a2248 && nix-shell --pure -I nixpkgs=. -p ethtool

No attempt on x86_64-darwin (full log)
The following builds were skipped because they don't evaluate on x86_64-darwin: ethtool
Partial log (click to expand)

a) For `nixos-rebuild` you can set
  { nixpkgs.config.allowUnsupportedSystem = true; }
in configuration.nix to override this.

b) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
  { allowUnsupportedSystem = true; }
to ~/.config/nixpkgs/config.nix.

Success on x86_64-linux (full log)
Attempted: ethtool
Partial log (click to expand)
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/l6vkhh88xfbdfjaqm9wmnlvm1q6qqg7i-ethtool-4.17
shrinking /nix/store/l6vkhh88xfbdfjaqm9wmnlvm1q6qqg7i-ethtool-4.17/sbin/ethtool
gzipping man pages under /nix/store/l6vkhh88xfbdfjaqm9wmnlvm1q6qqg7i-ethtool-4.17/share/man/
strip is /nix/store/4mf2xm9p32lzrim927yk92xhx35yaz62-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/l6vkhh88xfbdfjaqm9wmnlvm1q6qqg7i-ethtool-4.17/sbin
patching script interpreter paths in /nix/store/l6vkhh88xfbdfjaqm9wmnlvm1q6qqg7i-ethtool-4.17
checking for references to /build in /nix/store/l6vkhh88xfbdfjaqm9wmnlvm1q6qqg7i-ethtool-4.17...
moving /nix/store/l6vkhh88xfbdfjaqm9wmnlvm1q6qqg7i-ethtool-4.17/sbin/* to /nix/store/l6vkhh88xfbdfjaqm9wmnlvm1q6qqg7i-ethtool-4.17/bin
/nix/store/l6vkhh88xfbdfjaqm9wmnlvm1q6qqg7i-ethtool-4.17

Success on aarch64-linux (full log)
Attempted: ethtool
Partial log (click to expand)
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/kicsn1vbssv086b5dyzyvq03zbyy79s1-ethtool-4.17
shrinking /nix/store/kicsn1vbssv086b5dyzyvq03zbyy79s1-ethtool-4.17/sbin/ethtool
gzipping man pages under /nix/store/kicsn1vbssv086b5dyzyvq03zbyy79s1-ethtool-4.17/share/man/
strip is /nix/store/min150lkigznaayzpwvf8d4jdl1dqvx6-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/kicsn1vbssv086b5dyzyvq03zbyy79s1-ethtool-4.17/sbin
patching script interpreter paths in /nix/store/kicsn1vbssv086b5dyzyvq03zbyy79s1-ethtool-4.17
checking for references to /build in /nix/store/kicsn1vbssv086b5dyzyvq03zbyy79s1-ethtool-4.17...
moving /nix/store/kicsn1vbssv086b5dyzyvq03zbyy79s1-ethtool-4.17/sbin/* to /nix/store/kicsn1vbssv086b5dyzyvq03zbyy79s1-ethtool-4.17/bin
/nix/store/kicsn1vbssv086b5dyzyvq03zbyy79s1-ethtool-4.17

No attempt on x86_64-darwin (full log)
The following builds were skipped because they don't evaluate on x86_64-darwin: ethtool
Partial log (click to expand)

a) For `nixos-rebuild` you can set
  { nixpkgs.config.allowUnsupportedSystem = true; }
in configuration.nix to override this.

b) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
  { allowUnsupportedSystem = true; }
to ~/.config/nixpkgs/config.nix.

Success on aarch64-linux (full log)
Attempted: ethtool
Partial log (click to expand)
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/g5s91s2k4g26sw61l1jll3ly7sfm1hyj-ethtool-4.17
shrinking /nix/store/g5s91s2k4g26sw61l1jll3ly7sfm1hyj-ethtool-4.17/sbin/ethtool
gzipping man pages under /nix/store/g5s91s2k4g26sw61l1jll3ly7sfm1hyj-ethtool-4.17/share/man/
strip is /nix/store/0pjsgkxz0rp5baycq5sp2s72lrr5q9sg-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/g5s91s2k4g26sw61l1jll3ly7sfm1hyj-ethtool-4.17/sbin
patching script interpreter paths in /nix/store/g5s91s2k4g26sw61l1jll3ly7sfm1hyj-ethtool-4.17
checking for references to /build in /nix/store/g5s91s2k4g26sw61l1jll3ly7sfm1hyj-ethtool-4.17...
moving /nix/store/g5s91s2k4g26sw61l1jll3ly7sfm1hyj-ethtool-4.17/sbin/* to /nix/store/g5s91s2k4g26sw61l1jll3ly7sfm1hyj-ethtool-4.17/bin
/nix/store/g5s91s2k4g26sw61l1jll3ly7sfm1hyj-ethtool-4.17

Success on x86_64-linux (full log)
Attempted: ethtool
Partial log (click to expand)
post-installation fixup
shrinking RPATHs of ELF executables and libraries in /nix/store/0c7f7vrrv1gh3wsd2qdzyc9r6x3bpmxi-ethtool-4.17
shrinking /nix/store/0c7f7vrrv1gh3wsd2qdzyc9r6x3bpmxi-ethtool-4.17/sbin/ethtool
gzipping man pages under /nix/store/0c7f7vrrv1gh3wsd2qdzyc9r6x3bpmxi-ethtool-4.17/share/man/
strip is /nix/store/4qvrxzxa535y8304mk195x50b6p9607d-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/0c7f7vrrv1gh3wsd2qdzyc9r6x3bpmxi-ethtool-4.17/sbin
patching script interpreter paths in /nix/store/0c7f7vrrv1gh3wsd2qdzyc9r6x3bpmxi-ethtool-4.17
checking for references to /build in /nix/store/0c7f7vrrv1gh3wsd2qdzyc9r6x3bpmxi-ethtool-4.17...
moving /nix/store/0c7f7vrrv1gh3wsd2qdzyc9r6x3bpmxi-ethtool-4.17/sbin/* to /nix/store/0c7f7vrrv1gh3wsd2qdzyc9r6x3bpmxi-ethtool-4.17/bin
/nix/store/0c7f7vrrv1gh3wsd2qdzyc9r6x3bpmxi-ethtool-4.17

Applied to master (a3963742e5c2c5ea972378852776026e26dadb04).


Emulation Station Joypad Binding Not Working in Games

Hi Guys,
I have just got Emulation station working and retroarch working however i can not get my PS4 controller to work in the games.
Here are the issues:

Emulation Station does not appear to recognise all the PS4 buttons (or most of them) it only recognises the D pad, a,b,L and R buttons (i.e. no joypads). Does anyone know how i can get it to pick up the other inputs?

When using the joypad in emulation station (on a basic configuration as per my point above), the controller works in the emulation station interface, but not once the game is loaded (in retroarch). I have attempted to delete the retroarch .cfg file but this has not done anything. Does anyone know what might be causing this? is there a particular file that needs to be changed for retroarch to download the emulation station bindings?

Cheers

emulationstation does not communicate with retroarch at all. you have to configure them separately.

emulationstation does not communicate with retroarch at all. you have to configure them separately.

It does not directly communicate with retroarch, but it does in fact generate configuration files for it. When you have finished configuring your controller in Emulationstation, it will generate a file es_temporaryinput.cfg in ~/.emulationstation, then it will run the following script:
/opt/retropie/supplementary/emulationstation/scripts/inputconfiguration.sh

This script will read the temporary input file and generate a retroarch joypad config file from it in /opt/retropie/configs/all/retroarch-joypads

@bernhard263 not this one - this repo is emulationstation standalone. not the retropie version. see https://github.com/RetroPie/emulationstation

@dankcushions Oh, I see. Sorry, I did not know that the RetroPie version has its own repository. I will post the issue there.


feat(frame-rate): add configurable frame-rate option

By this changes, we will be able to set frame rate before starting our program.
p := tea.NewProgram(&m, tea.WithAltScreen())
p.FrameRate(time.Second) // setting frame rate to one second
if err := p.Start(); err != nil {
        fmt.Println("Error running program:", err)
        os.Exit(1)
}

fix #577

Related #636

Hi! This doesn't actually solve #636 because it sets a constant framerate as opposed to a max frame rate.
Regardless, if we decide this is something we want to go with with PR will need to:

Introduce a ProgramOption for this, i.e. tea.WithFramerate(30)
Change variable naming should drop camelcasing to match the variable under the hood: FrameRate -> Framerate
Decide if it makes sense for one to be able to change the framerate after the program has started. If so, we'll also want to introduce a command for that so it can be changed from within a program. If not, Program.Framerate should not be exposed.


We've tried 3 different geocoding tools and they all produce different results that we don't understand?

Non-spatial researchers are trying to map and intersect 2 national phenomenon relevant to their professional society. The spatial metadata that they have is low-quality textual data that was input free-form into unstructured fields by volunteers.
They've tried to manually search for and correct errors in the data and use free geocoding services to map them, but the results appear to contain persistent errors and the geocoding services produce different results. They are aware of false positive errors that persist and are unsure how to test for false negatives.

Problem: Collecting data from right sources and the analysis of the data.


Open New External Terminal in remote - containers

VSCode Version: 1.45.1
Local OS Version: Arch Linux
Remote OS Version: N/A
Remote Extension/Connection Type: Docker

Steps to Reproduce:

Open a dev container (docker)
Launch Open New External Terminal command

Expected behavior:
3. my external terminal opens (or at least some error message)
Actual behavior:
3. nothing happens (I can see CommandService#executeCommand workbench.action.terminal.openNativeConsole when running in --verbose mode)
Does this issue occur when you try this locally?: No, everything works fine when the container is disabled

I'm also having this issue. I'd love to access an external terminal because there are several tools outside my container I typically want access to. This forces me to use an extra terminal outside of VS Code. I try "Open New External Terminal" and nothing happens. I don't see any logs.

Just started happening to me with VSC 1.57.0

Just started happening to me with VSC 1.57.0

Same

The issue in 1.57.0 is fixed in the upcoming 1.57.1 here: https://github.com/microsoft/vscode/issues/125985

@Tyriar i am still unable to have this working. I have a devcontainer workspace running. However, when I select "open external terminal" it only opens the local dir.
Is there a way to open a connection to the devcontainer workspace? i posted on SO with a screenshot and example usage.
any advice would be appreciated.

This correctly opens a local terminal now. There's no plan to allow it to connect to the remote, this would need to be a feature in the ssh/containers extensions.

@Tyriar thank you for the info. Do you happen to know what VSCode sets in terms of env vars and other settings for the integrated terminal session? Or where I can find those details?
If i know what its doing I can write a script to replicate it when I open from iterm. Thanks in advance

I know for local but I'm guessing you care more about the remote variables. You could run env and diff your environments to see what the difference is. You could also write an extension that does what you're after, I write a Windows Terminal Integration extension which supports opening the terminal for the various remote connections which is here for reference: https://github.com/Tyriar/vscode-windows-terminal

cheers man thank you

hey man its been a while but finally got some time to sort this out. think i came up with a relatively simple solution in case someone else has the same need

add a postStartCommand to .devcontainer/devcontainer.json

this will capture the env (as configured by vscode/devcontainer ext) and store it in an env file. every time the  dev container starts it has a slightly different env so we use this lifecycle hook to always have the current values.
"postStartCommand": "printenv > .devcontainer/container.env"

note you will need to rebuild the container for this to take effect
afterwards every "open/reopen in container" usage will cause this hook to trigger and refresh the env file

run the following command in the project dir you want to connect to from your external terminal

this will exec into the container using the devcontainer env file ensuring the external terminal session has the same env as using the integrated terminal
docker exec -it --env-file="$(pwd)/.devcontainer/container.env" \
  $(docker ps --filter "name=$(basename $(pwd))_devcontainer_app" --format "{{.ID}}") \
  zsh

this assumes your workspace container has the service name app (in the .devcontainer/docker-compose.yml file) if not then adjust the suffix _devcontainer_app as needed to match
set whatever shell you prefer at the end there if you dont use zsh

hope this helps someone else. cheers

to make this a bit more ergonomic set the following alias in your local shell profile (making adjustments as described above):
alias devcontainer='docker exec -it -w /workspace --env-file="$(pwd)/.devcontainer/container.env" $(docker ps --filter "name=$(basename $(pwd))_devcontainer_app" --format "{{.ID}}") zsh'

usage from external terminal

in vscode open the project in the devcontainer
open your external terminal

cd <project dir>
devcontainer


Workspace & Toolbox Editor: Export (JS/XML)

Can now export workspace contents as javascript and xml files.

This change is

Review status: 0 of 6 files reviewed at latest revision, 1 unresolved discussion.

src/factory_utils.js, line 1340 at r1 (raw file):

 * @recursive
 */
FactoryUtils.addAttributes = function(obj, tabChar) {

Reason for moving this to FactoryUtils?

Comments from Reviewable

Reviewed 6 of 6 files at r1.
Review status: all files reviewed at latest revision, 4 unresolved discussions.

src/factory_utils.js, line 1340 at r1 (raw file):
Previously, svouse wrote…
Reason for moving this to FactoryUtils?

+1, I'm also wondering about that.

src/factory_utils.js, line 1347 at r1 (raw file):

  for (var key in obj) {
    if (key == 'grid' || key == 'zoom') {
      var temp = tabChar + key + ' : {\n' + addAttributes(obj[key],

Nit: for clarity and since this is getting a line break anyway, line break right before addAttributes.  The style guide generally says to break at higher syntactic levels where possible, and you can fit all of the addAttributes call on one line that way.

src/controller/workspace_controller.js, line 493 at r1 (raw file):

        return;
      }
      fileName = prompt('File name for workspace blocks:',

Same comment as I had in #150 about needing to validate user input.

src/controller/workspace_controller.js, line 537 at r1 (raw file):

    // XML ASSIGNMENT STRING (not to be executed)
    const jsFromXml = `

Is this string the same as the one you used in #150?  If so, it might belong in FactoryUtils.

Comments from Reviewable

Review status: all files reviewed at latest revision, 5 unresolved discussions.

src/controller/workspace_controller.js, line 541 at r1 (raw file):

if (!${xmlStorageVariable}) {
  ${xmlStorageVariable} = {};
}

Same comment from #150:
${xmlStorageVariable} = ${xmlStorageVariable} || Object.create(null);

Comments from Reviewable

Review status: all files reviewed at latest revision, 7 unresolved discussions.

src/controller/workspace_controller.js, line 556 at r1 (raw file):

   * @param {!Object} obj Object representing the options selected in the current
   *     configuration.
   * @param {string} tabChar The tab character.

"The string representing a tab"? As tab, so it could be a group of spaces.

src/controller/workspace_controller.js, line 562 at r1 (raw file):

   * @private
   */
  addAttributes_(obj, tabChar) {

The naming confuses me. But I see this is just imported from somewhere else.

Comments from Reviewable

Review status: 2 of 7 files reviewed at latest revision, 7 unresolved discussions.

src/factory_utils.js, line 1340 at r1 (raw file):
Previously, rachel-fenichel (Rachel Fenichel) wrote…
+1, I'm also wondering about that.

Ah, I forgot to remove this. This is a duplicate function -- the real one is in WorkspaceController (renamed to stringifyOptions_().

src/factory_utils.js, line 1347 at r1 (raw file):
Previously, rachel-fenichel (Rachel Fenichel) wrote…
Nit: for clarity and since this is getting a line break anyway, line break right before addAttributes.  The style guide generally says to break at higher syntactic levels where possible, and you can fit all of the addAttributes call on one line that way.

Done.

src/controller/workspace_controller.js, line 493 at r1 (raw file):
Previously, rachel-fenichel (Rachel Fenichel) wrote…
Same comment as I had in #150 about needing to validate user input.

(Removed the prompt for same reason as #150)

src/controller/workspace_controller.js, line 537 at r1 (raw file):
Previously, rachel-fenichel (Rachel Fenichel) wrote…
Is this string the same as the one you used in #150?  If so, it might belong in FactoryUtils.

Moved to a FactoryUtils function.

src/controller/workspace_controller.js, line 541 at r1 (raw file):
Previously, AnmAtAnm (Andrew n marshall) wrote…
Same comment from #150:
${xmlStorageVariable} = ${xmlStorageVariable} || Object.create(null);

Done (in the FactoryUtils function).

src/controller/workspace_controller.js, line 556 at r1 (raw file):
Previously, AnmAtAnm (Andrew n marshall) wrote…
"The string representing a tab"? As tab, so it could be a group of spaces.

Done.

src/controller/workspace_controller.js, line 562 at r1 (raw file):
Previously, AnmAtAnm (Andrew n marshall) wrote…
The naming confuses me. But I see this is just imported from somewhere else.

True--I renamed it to stringifyOptions_().

Comments from Reviewable

Reviewed 5 of 5 files at r2.
Review status: all files reviewed at latest revision, 7 unresolved discussions.

src/controller/workspace_controller.js, line 493 at r1 (raw file):
Previously, chynu (celine choo) wrote…
(Removed the prompt for same reason as #150)

Acknowledged, but you should make an issue that covers validation of names that people give to their resources.
For instance, windows isn't case-sensitive.  Should you check for that?  What about names containing slashes and backslashes?  You have to check these things somewhere.

src/controller/workspace_controller.js, line 537 at r1 (raw file):
Previously, chynu (celine choo) wrote…
Moved to a FactoryUtils function.

It's still here.  You might be missing a commit.

src/view/workspace_editor_view.js, line 149 at r2 (raw file):

   */
  init(controller) {
    console.log('init() called');

Remove these logs.

Comments from Reviewable

Review status: all files reviewed at latest revision, 9 unresolved discussions.

src/factory_utils.js, line 1348 at r2 (raw file):

  // XML ASSIGNMENT STRING (not to be executed)
  const jsFromXml = `
// If ${xmlStorageVariable} does not exist.

Nit: Remove comment that largely describe exactly what idiomatic code does.

src/controller/workspace_controller.js, line 537 at r1 (raw file):
Previously, chynu (celine choo) wrote…
Moved to a FactoryUtils function.

I'm not seeing this.  Do you mean in the other PR or in the future?

src/controller/workspace_controller.js, line 556 at r1 (raw file):
Previously, chynu (celine choo) wrote…
Done.

Per offline, the parameter should be named indent.  This is a single indent, but rather the accumulation of all indents prior to this function call (where each indent is a '\t')

src/controller/workspace_controller.js, line 520 at r2 (raw file):

   * @returns {string} String representation of JS file to be exported.
   */
  generateWorkspaceContentsFile(workspaceContents) {

Remove old version.

Comments from Reviewable

PR responses pre-merge.

Review status: all files reviewed at latest revision, 9 unresolved discussions.

src/factory_utils.js, line 1348 at r2 (raw file):
Previously, AnmAtAnm (Andrew n marshall) wrote…
Nit: Remove comment that largely describe exactly what idiomatic code does.

Done.

src/controller/workspace_controller.js, line 493 at r1 (raw file):
Previously, rachel-fenichel (Rachel Fenichel) wrote…
Acknowledged, but you should make an issue that covers validation of names that people give to their resources.
For instance, windows isn't case-sensitive.  Should you check for that?  What about names containing slashes and backslashes?  You have to check these things somewhere.

I made an issue #156 for this, and created an empty function for this in #150.

src/controller/workspace_controller.js, line 537 at r1 (raw file):
Previously, AnmAtAnm (Andrew n marshall) wrote…
I'm not seeing this.  Do you mean in the other PR or in the future?

Oops... removed now.

src/controller/workspace_controller.js, line 556 at r1 (raw file):
Previously, AnmAtAnm (Andrew n marshall) wrote…
Per offline, the parameter should be named indent.  This is a single indent, but rather the accumulation of all indents prior to this function call (where each indent is a '\t')

Done.

src/view/workspace_editor_view.js, line 149 at r2 (raw file):
Previously, rachel-fenichel (Rachel Fenichel) wrote…
Remove these logs.

Done.

Comments from Reviewable

Merged code in #150 with this PR, since they both have similar code that deal with similar concepts.

One more thing, then lgtm.

Reviewed 6 of 6 files at r3.
Review status: all files reviewed at latest revision, 6 unresolved discussions.

src/controller/workspace_controller.js, line 493 at r1 (raw file):
Previously, chynu (celine choo) wrote…
I made an issue #156 for this, and created an empty function for this in #150.

Now that the function exists, call it here (on the let fileName = resource.name; line) as well.

Comments from Reviewable

Review status: all files reviewed at latest revision, 6 unresolved discussions.

src/factory_utils.js, line 1340 at r1 (raw file):
Previously, chynu (celine choo) wrote…
Ah, I forgot to remove this. This is a duplicate function -- the real one is in WorkspaceController (renamed to stringifyOptions_().

Note: This is the real one, now.

Comments from Reviewable

Reviewed 1 of 6 files at r1, 2 of 6 files at r3.
Review status: all files reviewed at latest revision, 3 unresolved discussions.

Comments from Reviewable

Review status: all files reviewed at latest revision, 3 unresolved discussions.

src/controller/workspace_controller.js, line 493 at r1 (raw file):
Previously, rachel-fenichel (Rachel Fenichel) wrote…
Now that the function exists, call it here (on the let fileName = resource.name; line) as well.

Done.

Comments from Reviewable


Auto-generate Prometheus metric docs

Describe the solution you'd like

Auto-generate documentation for Prometheus metrics using golang code annotations:

[ ] May use metrics2docs tool from GrafanaLabs
[ ] Integrate auto-generated documentation for metrics with Aperture Docs

Decided to create the docs manually: https://github.com/fluxninja/aperture/issues/720
Rationale: Takes the same manual effort to create annotation via generators. Manual catalog is less effort overall. And works for both Prometheus and OLAP Flow events


gen_build logging

Because I'm running out of buffer in the default console window. Could pipe the contents but color is nice. Work around, increase buffer size using

Aha, just found err.txt


[Synthetics] Fix api min location failed in test

What does this PR do?
Fix min location failed value in synthetics tests.

[x] This PR includes all newly recorded cassettes for any modified tests.

/azp run

Should be good now, I've updated all cassettes that needed to be.

/azp run


New Jekyll Collections

Will this support Jekyll 2 Collections? They don't appear to be getting indexed, Posts and  Pages show up just fine.

Hello,
Does this plugin support Jekyll Collections now?

I guess we can close that now?

Fixed thanks to @kojoru via #69.


BLD: use geos INSTALL_NAME_DIR for MacOS instead of specifying custom LDFLAGS with rpath

If this works, it might be a bit cleaner (from https://github.com/isciences/exactextract/pull/87)

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.3%) to 88.12%

Totals

Change from base Build<PHONE_NUMBER>:
0.3%

Covered Lines:
2611

Relevant Lines:
2963

💛  - Coveralls


How to place astro-paper in a subdirectory of the website

Hello, I have a confusion. After I deploy astro-paper to vercel, I want to put the website under xxx.com/blog. When I set it in next.config.js of xxx.com
 async rewrites() {
    return [
      {
        source: '/blog/:subdir*',
        destination: 'http://xxx.com/:subdir*',
      },
      {
        source: '/(.*)',
        destination: '/',
      },
    ];
  },

Style and css error reporting, click on the article, there is no prefix (/blog)
PS：I am a Chinese and my English is not very good.

Have you considered using a subdomain? That would make it https://blog.xxx.com. I see that pattern a lot more and I think it will be much easier to configure

Hello @johanazhu
I might be a little too late. However, here's the solution I can think of.

Add a base and trailingSlash in astro.config.ts

export default defineConfig({
  // others
  base: "/blog",
  trailingSlash: "ignore",
  // others
)}

Then, update all the links to include /blog/ or import.meta.env.BASE_URL at the start.

<a href=`/blog/posts/`>Posts
<link rel="icon" type="image/svg+xml" href="/blog/favicon.svg" />

I have implemented a base URL in my fork that we use at our lab. It basically follows @satnaing's suggestion above. You can take a look here: https://github.com/JeS24/smlab-talks.
P.S.: There are some other changes that were needed in our case. Feel free to ignore those.


_HttpDetachedIncoming is missing test for no subscription

The class _HttpDetachedIncoming seems to be missing a test case for the case when subscription is null.

https://dart-review.googlesource.com/c/sdk/+/330201


How to get the probability of masked words with pre-trained model

I want to re-use the projection layer in "tf.variable_scope("cls/predictions")" in run_pretraining.py besides the features, so that I can directly take advantage of the pre-trained model to do tasks like cloze-style problems. Is there an easy way to do so?

If you just look at the code for run_pretraining.py you can see how the loss is computed, which is giving you log probabilities over the vocabulary. So you can just construct your input like the man went to the [MASK] and bought a gallon of milk and then use the same code from that script.
The catch is that this distribution is over WordPieces, not words. It wasn't really trained to model the joint probability of multiple [MASK] tokens in a row so just multiplying those probabilities probably wont give you what you want.


Notifications not working anymore. [at least for me they aren't]

Im not entirely sure if this is just a me thing or not, but i still do want to point it out.. the very first update that the notifications option in VRCX came out, it worked flawlessly and during that time my anti-virus didnt ever try blocking vrcx, but the next following updates and up to right now,  if i were to try to use the notifications, i dont get them, none of them. Now it could just be a setting i set on my PC by accident, but i personally did try looking everywhere for something like that, but i had no luck.. and not to mention now the anti-virus does try to think its a virus when its clearly not. "im not trying to point out 2 issues, im just pointing out that.. the period when the notifcations stopped was around the time the anti-virus started being dumb and saying it was a virus, when i know it isn't."
Anyways.. if there is anyway for me to know, why exactly aren't they working for me.. i  have them set up them like in the screenshot below

yet i get absolutly no notifcations from VRCX,  but anywho to wrap this up,  if its a setting i messed up then ill be happy to know what i messed up since i do like getting the notifications and for a while i have dealt with them just not working anymore but now i feel like its worth to ask.

If you don't have XS Overlay try disable that option, also are you having problems with VR notifications or desktop ones?

its the desktop, i thought by turning on that XS overlay it would get the notifications to work again, but it never did anything.. so... its really the desktop ones, Im not sure about VR since i dont have a VR, so as of right now, i only know im having issues with the desktop notifications

Hmm alright make sure notifications are enabled in windows settings because VRCX uses it to display notifications.

in the settings app, i dont see vrcx showing up, so maybe i did something wrong

It's not there for me either and I don't think you have done anything wrong, are the notifications visible in the action center? maybe you have "Focus Assist" enabled?

i dont exactly have focus assist enabled, and i do see other notifications from other apps in the action center, but nothing from vrcx.

i see theres a new update.. ill check if it works now in this newer one

Ok so when i logged on to vrcx using a different user account on my windows laptop, i got notifications.. but when i switched back to my original account and logged on to vrcx on my normal user account.. i didn't get any notifications.. so i think its something on my end.. so ill continue to look into what might be causing it.

I've triggered this same issue. I right-clicked a notification and clicked "Mute all notifications" as a temporary measure to stop some spam. After doing that, I've been unable to get them back.
The registry key
Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Notifications\Settings\VRCX\Enabled keeps getting written back to 0. I've cleared every reference I can from the registry but it won't come back.
VRCX doesn't appear in the list of applications that are allowed/blocked from sending toasts in Windows.

Did some research and came to a solution. Windows is being Windows here.
ToastNotificationManager.CreateToastNotifier("VRCX") is returning DisabledForApplication (as expected since I clicked the button in the notification to mute all notifications from the application)
Turns out, the docs are pretty explicit in saying that there needs to be a shortcut with an AppUserModelID for toasts to work for Win32 apps.
https://docs.microsoft.com/en-us/windows/win32/shell/quickstart-sending-desktop-toast

You must include the AppUserModelID of your app's shortcut on the Start screen each time that you call CreateToastNotifier. If you fail to do this, your toast will not be displayed.

Obviously, this isn't 100% true. The toasts display, but the toast notifier doesn't register in a useful way (e.g. if you disable them, you can't re-enable them. You also can't customize how they show in the action center)
Using this person's library, I was able to manually create the shortcut which added VRCX to the list on the "Notifications & Actions" page and I was able to re-enable it.
https://emoacht.wordpress.com/2012/11/14/csharp-appusermodelid/
I don't have the time to submit a PR right now. This person's code is MIT.
Here's the official docs with the CPP COM garbage for reference.
https://docs.microsoft.com/en-us/windows/win32/shell/enable-desktop-toast-with-appusermodelid


[Mod Conflict] Cobblemon Restoration Tank

When connected to the storage network, the restoration tank (As multiblock or on it's own) throws an index out of bounds exception when ticking InventoryConnectorBlockEntity. This crashes the server.
This is the file for the restoration block: https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/block/RestorationTankBlock.kt
I am a Cobblemon dev so if the restoration block needs to be changed to create compatibility then feel free to let me know and/or point me in the right direction.
https://mclo.gs/Wy82ShJ

It's an issue in your code here:
https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/block/entity/RestorationTankBlockEntity.kt#L121
You return -1 that's then crashing inside Fabric API, you have to return an empty array instead.
This will crash with every mod that's trying to interact with the block's inventory.


Have UVAtlasTool consume NuGet packages for DirectXMesh/DirectXTex

Currently the uvatlastool assumes a particular placement of related projects. This could be replaced by just using the NuGet packages.

Fixed in this commit


$translate.use() at runtime to the setup fallbackLanguage does not change the language

angular-translate version: 2.9.2
angularjs version: 1.3.7
I have the following angular-translate configuration:
myApp.config(function ($translateProvider) {
    $translateProvider.useSanitizeValueStrategy(null);
    $translateProvider.useStaticFilesLoader({
        prefix: 'translations/lang-',
        suffix: '.json'
    });
    $translateProvider.fallbackLanguage(['en']);
});

Then I setup (at regular runtime, not in .config) my language, e.g. $translate.use('de'). This works fine; all my bindings (e.g. <span>{{'MY_TEXT' | translate}}</span> in html are correct.
If I switch now a second time the language with $translate.use('en'), my html bindings are not changed to english, they stay at the previously set language; however, I may change the language to whathever I like and it works - except for 'en', because it is setup as fallbackLanguage. If I remove the fallbackLanguage assignement, there is no problem.
Why this behavior? For me, this looks like a bug... or what did I have understand incorrectly?

Hm. Works? What is different in your setup?
http://plnkr.co/edit/hLjZwKH8MptxkeOIsqp4?p=preview

Hm. I see. Even with 2.9.2 (the version I used) it works. I will check, what is different in my project...
Thanks for your quick response and the plunker!!

I really do not understand, what I have made... as I wanted to trace down this problem today, I can no more see a problem in my real project... I must have messed up somthing. I am really sorry for this wrong issue notification!


Passing never type as a function parameter does not fail type check

🔎 Search Terms
never parameter argument
🕗 Version & Regression Information

This is the behavior in every version I tried, and I reviewed the FAQ for entries about 'never'

⏯ Playground Link
https://www.typescriptlang.org/play?#code/FAMwrgdgxgLglgewgAhAhAKARgQwE7IBcyAzjHnBAOYCUyA3sMslEiQgDYCmAdBwlWz4aAbmABfYKEixEKKlxgA5LgDcueDHWIQ1Ghk2QwAFngQB3ZLssBRPGc0ADJQgAOXR6IlS0mBcr1NGlEgA
💻 Code
function foo(bar : string) {
  console.log(bar);
}

function getNever() : never {
  throw new Error(`Nope`);
}

foo(getNever());

🙁 Actual behavior
No type errors
🙂 Expected behavior
Type error: can not pass type never to function foo
Additional information about the issue
No response

never is the empty set; the subtype of all types. By definition, it is assignable to anything.

OK, understood -- but is there a reason it doesn't work a bit more like unknown? Would there be any downside to not allowing a never value to be passed around since that seems to indicate an error case, or at least probably not what the code author intended.

I'm not sure what rule you're proposing. At best, you'd introduce many different inconsistencies where higher-order and zero-order forms disagreed about validity.

I'm arguing from a 'principle of least surprise' angle. If I try to pass a never value into a function, and that function doesn't explicitly accept never as a parameter type, there's like a 99% chance I'm doing something I shouldn't be, and a warning would help me fix that mistake.
My proposal is there would be some setting like noImplicitAny which makes never unusable. Once I have a never value, I would be unable to return it, pass it to any function, unless those functions explicitly have never types defined as inputs or outputs. Essentially how unknown behaves.
Is there a real world example where someone would actually want to be able to pass or return a never?

Sure, you might have something like this
declare function myRoundingFunc(n: number): number;
declare function doSomething(value: number, ifEven: () => string, ifOdd: () => string, ifFractional: () => string): string;

// Input from somewhere
declare let n: number
n = myRoundingFunc(n);
const p = doSomething(n, () => "n is even", () => "n is odd", () => { throw new Error("This can't happen") });
console.log(p);


add feature wasmtime-jitdump

Expose wasmtime optional feature jitdump to be able to profile wasm execution with perf.

@pepyakin i'm applied 1. and 3. :)
For 2, it would require a lot more changes and we need jitdump quickly, are you ok that we go through an env var for the moment and that the creation of a cli option is for future PR?


Indicate true pricing on the website

Description

Changed the main toggle to switch between monthly and annually.
Removed the starter plan from the annual option.
Added sliders to the team and enterprise plans to calculate prices with discounts applied based on volume and billing frequency.
Updated the "Contact Us" link to scroll down to the form.

Related Issue(s)
closes #1662
Checklist

[x] I have read the contribution guidelines
[x] I have considered the performance impact of these changes
[ ] Suitable unit/system level tests have been added and they pass
[ ] Documentation has been updated

One piece of feedback, I don't know if this is intentional. If I select the annual option, the pricing is still labeled as per-month - it doesn't tell me what the annual cost is:

Hi @knolleary, thanks for the feedback 🙂
It is intentional, aimed at making it easier to compare prices.
Initially, I displayed monthly prices in the monthly section and annual prices in the annual section, but it seemed a bit confusing, especially with the high annual figure. It's not common to see such large numbers on pricing pages.
Upon further review of other pricing pages for reference:
Asana Pricing
Dropbox Business Plans
Canny Pricing
Grammarly Plans
I noticed they all show monthly prices in their yearly and monthly billing options. So, I thought it would be beneficial to provide a consistent basis for comparison.

@Yndira-FlowForge thanks for the detailed reply. Makes sense to me - especially if this appears to be a standard practice.

@knolleary I meant to add you as a reviewer yesterday, and now I see I didn't. Would you mind checking the code as well? It's working fine, @zackwasli confirmed the numbers were correct, but I'd appreciate a double-check on the script.


Support table mode for CP mode

Is your feature request related to a problem? Please describe.
Currently only BGP, APR and WG modes are implemented for the CP mode.
Describe the solution you'd like
We would like to have the table mode with an healthcheck of the local API-Server on each node, so that we can utilize ECMP Load Balancing for the API-Server

Makes sense, I don't think it would be a large amount of effort... all the functions are there, they just need wiring together! 🔌

Done


Pico W won't reboot when uf2 file dragged Windows

I guess this is a problem similar to the ventura issue (which I also encounter with on my mac) but it is happening on Windows 10 Pro version 20H2.
I've built the examples using the C/C++ SDK and I'm trying to flash the Blink example but every time I drag and drop the blink.uf2 (or any other uf2 file) the device won't eject or do anything.
Something I've also noticed is that even if I plug in the pico, even if the bootsel is not pressed, it will get mounted as a hard drive.
I also tried flashing through SWD using a MAX32625PICO  which uses a DAPLink interface but I got the following error:

Error: Failed to connect multidrop rp2040.dap0

Something I've also noticed is that even if I plug in the pico, even if the bootsel is not pressed, it will get mounted as a hard drive.

Sounds to me like either your BOOTSEL button is broken (i.e. perhaps it's being "pressed" when you think it isn't), your Flash is entirely empty, or you've got some other software already running on your Pico which is presenting itself as a virtual storage device? :man_shrugging:
What file-contents do you see in the Pico's "hard drive"?
And just to rule out any build-error with the UF2s you've built yourself, you can download pre-compiled UF2s from https://www.raspberrypi.com/documentation/microcontrollers/c_sdk.html#blink-an-led (note that the blink UF2 is different for Pico and Pico W).


Build project with git2go

What version of Go (go version) and dep (git describe --tags) are you using?
$ go version
go version go1.8.3 linux/amd64

cd $GOPATH/src/github.com/golang/dep
v0.1.0-191-g4bfa359

What dep command did you run?
git clone https://github.com/fedux-org/letter-generator-go
dep ensure
make
# or build by hand with
go build -o dist/lg github.com/fedux-org/letter-generator-go/cmd/lg

What did you expect to see?
Project is built.
What did you see instead?
Failed to open '/home/user/.local/share/go-packages/src/github.com/fedux-org/letter-generator-go/vendor/github.com/libgit2/git2go/vendor/libgit2/build/libgit2.pc': No such file or directory
No package '/home/user/.local/share/go-packages/src/github.com/fedux-org/letter-generator-go/vendor/github.com/libgit2/git2go/vendor/libgit2/build/libgit2.pc' found
pkg-config: exit status 1
make: *** [Makefile:2: build] Error 2
~

hi! thanks for the issue report.
git2go requires that libgit2 be installed and available on your system, such that (in your case) pkg-config can locate it. this is noted in the git2go README. while it's possible that we may eventually be able to introduce mechanisms for automating the retrieval of external, non-Go libraries - #269  - it's not high on our current priority list.


Hover_effect

Added hover effect on home and tours page

@pranavpathak08 I appreciate your contribution
But you need to follow the contributing guidelines
Add all things such as changes you made, description of changes, screenshots of changes, and the checklist(which was present in original format) etc.

@pranavpathak08 I appreciate your changes
But you need to make separate branch other than main to make a PR in your forked repository
Plz follow the contributing guidelines


feature: generate rsa keys

Make it possible to generate rsa public key and private key on the fly.
I will add documentation in the next pr if this one is merged.

@spacewander I have invited you to be collaborators, feel free to push master, thanks :)

@doujiang24 Thanks for your appreciation! I will update the test case and get it merged.


functional-linear-algebra: 0.4->0.4.1

Description of changes
Updates the agda package functional-linear-algebra from 0.4 to 0.4.1, which works with the newer 2.6.4 version of Agda.
@turion, I am unsure if you want this merged into the haskell-updates or the master branch. I chose master since it builds against both.
Things done

Build with the following command:
nix-build -E "with import <nixpkgs> {}; agdaPackages.callPackage ./pkgs/development/libraries/agda/functional-linear-algebra/default.nix {}"

Built on platform(s)

[ ] x86_64-linux
[x] aarch64-linux
[ ] x86_64-darwin
[x] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[x] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Thanks @ncfavier for the help with the update for Agda 2.6.4

I think master is fine, since you're not touching the Agda version :+1: thanks!

@ofborg build agdaPackages.functional-linear-algebra