Competitor Activity Monitor
The canonical named-parts (facet) example: one ### Maintains block that
declares three independently-subscribable facets as #### sub-headings.
Quick Start
prose compile
cp dist/manifest.next.json dist/manifest.active.json # promote the compiled IR
prose serve
prose serve then waits for the signal-feeds gateway to fire: a webhook
delivery or the 6h feed poll that carries a funding, hiring, or launch item the
monitor has not seen. A re-poll that returns the same items moves no facet, so
nothing downstream renders (the monitor's own 6h self-driven re-check only
re-derives truth those inputs already produced).
What This Repository Does
Keeps a current, corroborated view of each tracked competitor's material activity (funding events, hiring activity, and product launches) and exposes each as its own subscribable facet.
The named-parts model
src/competitor-activity-monitor.prose.md declares its facets by naming the
parts of its truth: a #### sub-heading inside ### Maintains is a facet.
The author writes one name and gets three things at once
(the named-parts rule in contract-markdown.md):
- the fingerprint unit: the compiled canonicalizer emits one token per
####part, plus the always-on@atomictoken over the whole truth; - the subscription symbol: a consumer names it in
### Requires, and the reconciler wakes that consumer only when that part's token moves (Requires.<facet>↔Maintains.<facet>); - the world-model subtree:
published/<facet>/…, so the on-disk directory structure literally shows the facets (state/filesystem.md).
A downstream that ### Requires the monitor's funding truth resolves to the
#### funding facet and wakes only when funding moves, not when #### hiring
or #### product-launches move. The monitor itself subscribes the same way one
level up: its three needs resolve, facet by facet, to the signal-feeds
gateway's #### funding-signals, #### hiring-signals, and
#### launch-signals parts. The shared name / last_corroborated sit outside
any part, so they move only the @atomic token. This is React's selector
boundary made authorable.
Source Shape
src/: thesignal-feedsgateway (three####signal facets, the entry point) and thecompetitor-activity-monitorresponsibility that subscribes to them facet by facet and declares three####facet parts of its own under### Maintainsdist/: compiled topology + canonicalizers produced byprose compileruns/: append-only receipt ledgerstate/: the canonical world-model, laid out aspublished/<facet>/…subtreesdeps/: installed OpenProse dependencies