@tendrilapp/cli 0.1.29 → 0.1.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SKILL.md +7 -2
- package/dist/tendril.js +10 -5
- package/package.json +1 -1
package/dist/SKILL.md
CHANGED
|
@@ -254,8 +254,13 @@ Batch runs (several components in one session):
|
|
|
254
254
|
CSS. Import every React API you use.
|
|
255
255
|
3. `tendril_engine_score` → read the per-config results and feedback.
|
|
256
256
|
Fix FAIL configs without regressing PASS configs; re-score.
|
|
257
|
-
4. Stop when `allPass` is true
|
|
258
|
-
|
|
257
|
+
4. Stop when `allPass` is true. Two consecutive rounds with no
|
|
258
|
+
improvement is a TRIGGER TO INSPECT, not to stop: open the
|
|
259
|
+
verify-evidence diff images for the worst configs and look before
|
|
260
|
+
deciding (a measured run scored byte-identical twice, inspected
|
|
261
|
+
the diffs, and round 3 went 27/27 certified — a stop rule would
|
|
262
|
+
have shipped 5/27). Stop only after an inspection round produced
|
|
263
|
+
no fix hypothesis — then report the honest final state.
|
|
259
264
|
5. MODEL SELECTION — mechanical AND asked. `engine brief` and
|
|
260
265
|
`engine score` refuse to run without a declared model, so the
|
|
261
266
|
choice must be settled first. When a user is present, ask before
|
package/dist/tendril.js
CHANGED
|
@@ -2232,6 +2232,8 @@ async function runTokenLint(css, fileLabel = "generated.css", definedVars2, reco
|
|
|
2232
2232
|
property: "custom-property-ident",
|
|
2233
2233
|
message: `var(${name}) is not a legal custom property reference \u2014 the browser drops the whole declaration`
|
|
2234
2234
|
});
|
|
2235
|
+
} else if (name.startsWith("--tendril-")) {
|
|
2236
|
+
continue;
|
|
2235
2237
|
} else if (definedVars2 !== void 0 && !definedVars2.has(name) && !ownDefs.has(name)) {
|
|
2236
2238
|
violations.push({
|
|
2237
2239
|
file: fileLabel,
|
|
@@ -11146,14 +11148,15 @@ function latticeCoverage(setManifest, scoredConfigs) {
|
|
|
11146
11148
|
const lattice = setManifest.latticeNames?.length;
|
|
11147
11149
|
const established = setManifest.variantScope === "component-set";
|
|
11148
11150
|
const notRecorded = setManifest.notRecorded !== void 0 && setManifest.notRecorded !== "" ? { notRecorded: setManifest.notRecorded } : {};
|
|
11149
|
-
|
|
11151
|
+
const latticeUnestablished = setManifest.variantScope === "selection" ? "the recording was planned from a node SELECTION, not from a component set \u2014 the plan counted the nodes it was handed and could not see whether the set holds more variants, so the number of unrecorded poses is UNKNOWN, not zero" : setManifest.variantScope === "component-set" ? "the planner saw the component set and it declares no variant axes \u2014 the planned pose(s) are the whole set as Figma showed it, but there is no variant lattice to count" : "this set was planned before variant scope was recorded, so whether its lattice came from a component set or from a handed-in selection was never established \u2014 the number of unrecorded poses is unknown, not zero";
|
|
11152
|
+
if (lattice === void 0) return { latticeConfigs: null, latticeUnestablished, ...notRecorded };
|
|
11150
11153
|
if (established) return { latticeConfigs: lattice, unrecordedConfigs: Math.max(0, lattice - scoredConfigs), ...notRecorded };
|
|
11151
11154
|
return {
|
|
11152
11155
|
latticeConfigs: null,
|
|
11153
11156
|
// The count is still worth reporting — it is just not a
|
|
11154
11157
|
// denominator, and the name has to stop implying that it is.
|
|
11155
11158
|
variantsPlanned: lattice,
|
|
11156
|
-
latticeUnestablished
|
|
11159
|
+
latticeUnestablished,
|
|
11157
11160
|
...notRecorded
|
|
11158
11161
|
};
|
|
11159
11162
|
}
|
|
@@ -11557,8 +11560,10 @@ ${certified}/${statuses.length} certified \xB7 ${report.coverage.pass}/${statuse
|
|
|
11557
11560
|
process.stdout.write(`LATTICE all ${cov.latticeConfigs} poses of the component set's own lattice are recorded and scored \u2014 the denominator is the set's, not the recorded subset's
|
|
11558
11561
|
`);
|
|
11559
11562
|
} else if (cov.latticeConfigs === null) {
|
|
11560
|
-
process.stdout.write(
|
|
11561
|
-
`
|
|
11563
|
+
process.stdout.write(
|
|
11564
|
+
`COVERAGE denominator unknown \u2014 ${cov.latticeUnestablished ?? "set predates lattice tracking"} \u2014 scored configs are verified; completeness is not established
|
|
11565
|
+
`
|
|
11566
|
+
);
|
|
11562
11567
|
}
|
|
11563
11568
|
}
|
|
11564
11569
|
process.stdout.write(`environment: chrome=${report.environment.chromeVersion ?? report.environment.chrome} fonts=${report.environment.fontsManifestSha256 ?? "UNRESOLVED"}
|
|
@@ -11767,7 +11772,7 @@ ${segments}`;
|
|
|
11767
11772
|
`Run \`${tendrilCommand(
|
|
11768
11773
|
`engine score ${quoteArg(ref)} ${quoteArg(candidateDirSuggestion)} --bar ${opts.bar} --model ${opts.model ?? "<declared-model>"} --json`
|
|
11769
11774
|
)}\` \u2014 the CLI is the sole judge, and it refuses to score an undeclared model. If you wrote the bundle elsewhere, pass that directory instead.`,
|
|
11770
|
-
"Apply the returned feedback and re-score. Stop when all checks pass
|
|
11775
|
+
"Apply the returned feedback and re-score. Stop when all checks pass. Two consecutive non-improving scores mean INSPECT the verify-evidence diffs before deciding \u2014 stop only when inspection yields no fix hypothesis (a measured run was byte-identical twice, then went 27/27 after reading the diffs).",
|
|
11771
11776
|
"Never edit recording sets; never claim scores yourself \u2014 only the score command's output counts."
|
|
11772
11777
|
]
|
|
11773
11778
|
},
|