@aeptus/aexeo-emdash 0.8.3 → 0.8.7
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/CHANGELOG.md +219 -1
- package/dist/configured.js +1 -1
- package/dist/index.js +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
- package/wasm/aexeo_emdash_bridge_bg.wasm +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,220 @@ and the project follows [Semantic Versioning](https://semver.org/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.8.7] - 2026-05-04
|
|
10
|
+
|
|
11
|
+
Picks up upstream aexeo-core 0.0.13 — three quality fixes from
|
|
12
|
+
Aeptus's post-0.0.12 rollout feedback. All affect `intelligence
|
|
13
|
+
facts generate` output and `intelligence presence` Wikidata
|
|
14
|
+
disambiguation; no plugin-side UI change.
|
|
15
|
+
|
|
16
|
+
### Changed (engine via bridge)
|
|
17
|
+
|
|
18
|
+
- **Product name inference is now schema-first.** When no JSON-LD
|
|
19
|
+
`SoftwareApplication` or `Product` block declares a name, the
|
|
20
|
+
generator falls back to the organization name rather than
|
|
21
|
+
inferring from title-segment frequency. The old algorithm
|
|
22
|
+
picked the most-frequent title segment across content pages,
|
|
23
|
+
which on Aeptus produced `products[0].name = "ISO 27001"`
|
|
24
|
+
(the compliance keyword that appeared in many content-page
|
|
25
|
+
titles). Generators that do declare typed products keep
|
|
26
|
+
picking the typed name.
|
|
27
|
+
- **Wikidata disambiguation uses positive scoring.** Candidates
|
|
28
|
+
whose description mentions company/organization/software-like
|
|
29
|
+
terms score positively; binomial-nomenclature labels
|
|
30
|
+
("Aeptus singularis" — Q119813945, the species record Aeptus
|
|
31
|
+
reported as a false-match) and taxonomic descriptions score
|
|
32
|
+
negatively. When no candidate scores positively, the result is
|
|
33
|
+
`not_found` rather than a confidently-wrong match. Aeptus
|
|
34
|
+
reported the species match was still slipping through after
|
|
35
|
+
the 0.0.10 disambiguation fix because the description didn't
|
|
36
|
+
start with the canonical "species of" prefix.
|
|
37
|
+
- **Descriptor scoring threshold raised from `> 0` to `>= 2`.**
|
|
38
|
+
The 2-word bonus alone is no longer enough to qualify a
|
|
39
|
+
bigram as a descriptor; a phrase needs at least one anchor
|
|
40
|
+
word (+3) or core descriptor word (+2) to be emitted. Drops
|
|
41
|
+
the bigram-fragment class Aeptus reported: `"behind long"`,
|
|
42
|
+
`"engineer small"`, `"cycles heavy"`, `"bloated pricing"`,
|
|
43
|
+
`"heavy deployments"`, `"autonomous engineer"`.
|
|
44
|
+
|
|
45
|
+
### Added
|
|
46
|
+
|
|
47
|
+
- **Per-field low-confidence warnings on generated manifests.**
|
|
48
|
+
`TruthManifestGeneration.warnings` now includes:
|
|
49
|
+
- An explicit "organization name fallback" note when
|
|
50
|
+
`products[0].name` was set conservatively because no
|
|
51
|
+
schema-typed Product was found.
|
|
52
|
+
- A "descriptors are heuristic-quality" note when the
|
|
53
|
+
organization has any descriptors at all, so downstream
|
|
54
|
+
consumers know not to take them at face value for identity
|
|
55
|
+
matching.
|
|
56
|
+
These reach the CLI via `intelligence facts generate`'s
|
|
57
|
+
warnings section and the JSON output's `warnings` array.
|
|
58
|
+
|
|
59
|
+
### Notes for hosts upgrading from 0.8.6
|
|
60
|
+
|
|
61
|
+
- No code changes required; engine-side improvements only.
|
|
62
|
+
- Re-run `intelligence facts generate` to regenerate manifests
|
|
63
|
+
with the cleaner output. Sites that had a generated
|
|
64
|
+
`products[0].name` of an unrelated keyword (compliance
|
|
65
|
+
standard, technology, blog topic) will now get the org name
|
|
66
|
+
with a conservative-fallback warning.
|
|
67
|
+
- Re-run `intelligence presence` to get the cleaner Wikidata
|
|
68
|
+
disambiguation. False-positive matches against species /
|
|
69
|
+
taxonomic / geographic Wikidata records should drop.
|
|
70
|
+
|
|
71
|
+
## [0.8.6] - 2026-05-04
|
|
72
|
+
|
|
73
|
+
Code-review follow-ups on the 0.8.5 agent-readiness rule bundles.
|
|
74
|
+
All five issues are real correctness fixes; no behavior change
|
|
75
|
+
for sites that already had clean output.
|
|
76
|
+
|
|
77
|
+
### Fixed (engine via bridge)
|
|
78
|
+
|
|
79
|
+
- **Public API exposure.** `SiteCapabilities`, `infer_site_capabilities`,
|
|
80
|
+
`well_known_path_exists`, `run_well_known_rules`, and
|
|
81
|
+
`run_header_rules` are now re-exported at the `aexeo-core` root
|
|
82
|
+
to match the existing pattern (`run_robots_rules`,
|
|
83
|
+
`run_surface_rules`, etc.). Previously consumers had to use the
|
|
84
|
+
long `aexeo_core::well_known_rules::run_well_known_rules` form.
|
|
85
|
+
- **LNK020 group/check-key mismatch.** The rule was registered under
|
|
86
|
+
the `links` group but gated on the `headers` config key in
|
|
87
|
+
`static_check.rs`; toggling `links: false` would not silence it
|
|
88
|
+
and toggling `headers: false` would silence an unrelated group.
|
|
89
|
+
Fixed by moving LNK020 to a new `headers` rule group so the
|
|
90
|
+
registry name matches the toggle key.
|
|
91
|
+
- **`route_looks_api` over-match.** Bare `v1/`, `v2/`, and
|
|
92
|
+
`graphql` prefixes incorrectly classified docs routes
|
|
93
|
+
(`/v1/getting-started`, `/v2/migration-guide`, `/graphql-101`)
|
|
94
|
+
as API surfaces, triggering SRF020 false-positives on
|
|
95
|
+
content-only docs sites. Tightened to require `api/` or
|
|
96
|
+
`graphql/` (with the slash) — the conditional-firing design's
|
|
97
|
+
whole point is to keep these silent on content sites.
|
|
98
|
+
- **`render_robots_txt` round-trip.** Aexeo's own generator emitted
|
|
99
|
+
a robots.txt that tripped ROB010 + ROB011 (no AI-bot block, no
|
|
100
|
+
Content-Signal). Generator now emits explicit AI-bot blocks
|
|
101
|
+
(GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot) and
|
|
102
|
+
a permissive Content-Signal default so Aexeo's own output
|
|
103
|
+
passes Aexeo's own rules.
|
|
104
|
+
- **SRF010/SRF015 unreachable from path-only signals.** The
|
|
105
|
+
capability gate required the canonical card/index file to
|
|
106
|
+
exist, but the rule fires when that exact file is missing —
|
|
107
|
+
structurally unreachable. Inference now also fires when the
|
|
108
|
+
`.well-known/mcp/` or `.well-known/agent-skills/` directory
|
|
109
|
+
exists without a canonical file inside (the partial-stub
|
|
110
|
+
pattern editors hit when starting an implementation).
|
|
111
|
+
|
|
112
|
+
### Notes for hosts upgrading from 0.8.5
|
|
113
|
+
|
|
114
|
+
- No code changes required.
|
|
115
|
+
- `aexeo-cli generate robots-txt` (and the deploy generator) now
|
|
116
|
+
produces a robots.txt with explicit AI-bot blocks and a
|
|
117
|
+
Content-Signal directive. Editors who want a non-permissive
|
|
118
|
+
stance edit the line; the defaults match the wildcard `Allow: /`
|
|
119
|
+
posture so existing crawl behavior is unchanged.
|
|
120
|
+
- Sites that have a `.well-known/mcp/` or
|
|
121
|
+
`.well-known/agent-skills/` directory stub without canonical
|
|
122
|
+
files inside will now see SRF010 / SRF015 fire (correctly —
|
|
123
|
+
the directory-stub state is exactly what the rule was meant
|
|
124
|
+
to catch).
|
|
125
|
+
|
|
126
|
+
## [0.8.5] - 2026-05-04
|
|
127
|
+
|
|
128
|
+
Brings in the agent-readiness audit rules from upstream
|
|
129
|
+
aexeo-core 0.0.11 — three bundles extracted from the Cloudflare
|
|
130
|
+
"Is Your Site Agent-Ready?" scan model.
|
|
131
|
+
|
|
132
|
+
### Added (engine via bridge)
|
|
133
|
+
|
|
134
|
+
- **Bundle A — robots.txt extensions** (always-on, retrievability):
|
|
135
|
+
- `ROB010` — robots.txt has no AI-bot User-agent directives
|
|
136
|
+
(GPTBot, ClaudeBot, ChatGPT-User, PerplexityBot, …)
|
|
137
|
+
- `ROB011` — robots.txt has no Content-Signal directives
|
|
138
|
+
(`ai-train`, `search`, `ai-input`)
|
|
139
|
+
|
|
140
|
+
- **Bundle B — `.well-known/*` discovery surfaces** (conditional,
|
|
141
|
+
absorbability). All gated on a new `SiteCapabilities` inference
|
|
142
|
+
that reads route patterns, JSON-LD schema, llms.txt content,
|
|
143
|
+
and partial-file presence to decide whether the site claims
|
|
144
|
+
the underlying capability — so these rules don't fire on
|
|
145
|
+
content-only sites that have no business exposing the surface:
|
|
146
|
+
- `SRF010 / SRF011` — agent-skills index (Cloudflare RFC v0.2.0)
|
|
147
|
+
- `SRF015 / SRF016` — MCP server card (SEP-1649)
|
|
148
|
+
- `SRF020 / SRF021` — API catalog (RFC 9727 linkset+json)
|
|
149
|
+
- `SRF025` — OAuth/OIDC discovery (RFC 8414, OIDC Discovery 1.0)
|
|
150
|
+
- `SRF026` — OAuth protected-resource metadata (RFC 9728)
|
|
151
|
+
|
|
152
|
+
- **Bundle C — runtime header audits** (runtime-only, mixed):
|
|
153
|
+
- `LNK020` — homepage response sends no Link headers (RFC 8288).
|
|
154
|
+
Silent on pure static audits — fires only when `Page.response_headers`
|
|
155
|
+
is populated.
|
|
156
|
+
- `SRF030` — homepage doesn't honor `Accept: text/markdown`
|
|
157
|
+
content negotiation (Cloudflare Markdown for Agents). Adds
|
|
158
|
+
one extra HTTP probe at the end of the runtime audit.
|
|
159
|
+
|
|
160
|
+
### Notes for hosts upgrading from 0.8.4
|
|
161
|
+
|
|
162
|
+
- No code changes required.
|
|
163
|
+
- Static audits will gain ROB010/011 immediately on every site;
|
|
164
|
+
the SRF010+ rules are silent unless the site has the
|
|
165
|
+
capability signal (so most content sites see no new findings).
|
|
166
|
+
- LNK020 + SRF030 only fire during runtime audits — static
|
|
167
|
+
audits don't reach that code path.
|
|
168
|
+
- The new `SiteCapabilities` API is exported from aexeo-core
|
|
169
|
+
for hosts that want to reuse the inference in their own
|
|
170
|
+
tooling.
|
|
171
|
+
|
|
172
|
+
## [0.8.4] - 2026-05-04
|
|
173
|
+
|
|
174
|
+
Three follow-up quality fixes from Aeptus's post-0.8.3 rollout
|
|
175
|
+
report. The 0.8.3 manifest-quality and GEO009 fixes landed
|
|
176
|
+
correctly; this release closes the remaining edges that surfaced
|
|
177
|
+
once those were out the door.
|
|
178
|
+
|
|
179
|
+
### Fixed (engine via bridge)
|
|
180
|
+
|
|
181
|
+
- **Multilingual 404 detection.** v0.0.9's blocklist was
|
|
182
|
+
English-only, so French, Spanish, Italian, German, Dutch, and
|
|
183
|
+
Portuguese 404 titles still leaked through as candidate
|
|
184
|
+
organization/product names. Aeptus reported a French
|
|
185
|
+
"Page introuvable" landing as `products[0].name`. The detector
|
|
186
|
+
now matches on cross-language morphological cues
|
|
187
|
+
(`introuvable`, `non trouv`, `no encontrad`, `não encontrad`,
|
|
188
|
+
`non trovat`, `nicht gefunden`, `niet gevonden`) plus the
|
|
189
|
+
literal numeric `404` anchor.
|
|
190
|
+
|
|
191
|
+
### Fixed (presence diagnostic via bridge)
|
|
192
|
+
|
|
193
|
+
- **RDAP normalizes to the apex domain.** The diagnostic was
|
|
194
|
+
asking rdap.org about `www.aeptus.com` (whatever subdomain the
|
|
195
|
+
manifest's website happened to record), which returns
|
|
196
|
+
not_found because the registrable domain is the apex
|
|
197
|
+
(`aeptus.com`). The RDAP fetcher now strips a leading `www.`
|
|
198
|
+
before the lookup; the result text shows the original host
|
|
199
|
+
alongside the apex so editors can see what was actually
|
|
200
|
+
checked. Deeper subdomains (`blog.foo.bar`) still need
|
|
201
|
+
manual manifest correction — full public-suffix-list-aware
|
|
202
|
+
resolution is a future hardening.
|
|
203
|
+
- **Wikidata disambiguation.** wbsearchentities returns
|
|
204
|
+
label-matched candidates without distinguishing
|
|
205
|
+
Aeptus-the-company from Aeptus-the-genus-of-insects. The
|
|
206
|
+
fetcher now requests up to 10 candidates and prefers ones
|
|
207
|
+
whose description doesn't begin with natural-world or
|
|
208
|
+
geographic disambiguators (`genus of`, `species of`, `village
|
|
209
|
+
in`, `asteroid`, …). When every match is a generic-concept
|
|
210
|
+
description, the result still lands but `extra` flags
|
|
211
|
+
"likely disambiguation needed" so the editor sees the
|
|
212
|
+
problem instead of trusting the wrong record.
|
|
213
|
+
|
|
214
|
+
### Notes for hosts upgrading from 0.8.3
|
|
215
|
+
|
|
216
|
+
- No code changes required; pure engine-side improvements.
|
|
217
|
+
- Worth re-running `intelligence facts generate` if your site
|
|
218
|
+
has any non-English 404 page that was leaking through.
|
|
219
|
+
- Worth re-running `intelligence presence` if you saw
|
|
220
|
+
Wikidata false-positives or RDAP not-found on a www-prefixed
|
|
221
|
+
domain.
|
|
222
|
+
|
|
9
223
|
## [0.8.3] - 2026-05-04
|
|
10
224
|
|
|
11
225
|
Picks up the upstream aexeo-core 0.0.9 improvements that address
|
|
@@ -608,7 +822,11 @@ First public release.
|
|
|
608
822
|
`astro.config.mjs` for the WASM import to resolve to a
|
|
609
823
|
precompiled `WebAssembly.Module`. Not optional.
|
|
610
824
|
|
|
611
|
-
[Unreleased]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.
|
|
825
|
+
[Unreleased]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.7...HEAD
|
|
826
|
+
[0.8.7]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.6...aexeo-emdash-v0.8.7
|
|
827
|
+
[0.8.6]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.5...aexeo-emdash-v0.8.6
|
|
828
|
+
[0.8.5]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.4...aexeo-emdash-v0.8.5
|
|
829
|
+
[0.8.4]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.3...aexeo-emdash-v0.8.4
|
|
612
830
|
[0.8.3]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.2...aexeo-emdash-v0.8.3
|
|
613
831
|
[0.8.2]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.1...aexeo-emdash-v0.8.2
|
|
614
832
|
[0.8.1]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.0...aexeo-emdash-v0.8.1
|
package/dist/configured.js
CHANGED
package/dist/index.js
CHANGED
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const PACKAGE_VERSION = "0.8.
|
|
1
|
+
export declare const PACKAGE_VERSION = "0.8.7";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
|
Binary file
|