Skip to content
This repository was archived by the owner on Aug 8, 2026. It is now read-only.

Map the harvest: classify all 108 findings by what outlives this package - #81

Merged
mspinola merged 3 commits into
mainfrom
claude/deprecate-harvest
Aug 7, 2026
Merged

Map the harvest: classify all 108 findings by what outlives this package#81
mspinola merged 3 commits into
mainfrom
claude/deprecate-harvest

Conversation

@mspinola

@mspinola mspinola commented Aug 7, 2026

Copy link
Copy Markdown
Owner

First step of deprecation, and the one the whole exercise turns on: separating the hypothesis (which failed) from the measurements (several of which did not).

docs/HARVEST.md classifies every numbered section in design/amendments-*.md as PORTED, TO PORT, RESOLVED, or DIES.

PORTED in this pass

To cotdata (cotdata #102, docs only):

  • cross-report-comparability.md gets D7 (Legacy and TFF agree on exactly two quantities; anything built by subtracting one report's category from another's is not interpretable) with its spread_contracts trap, plus A1 and A2.
  • reading-the-store.md gets A5, A13, A14 with C12, the B26/B27/B30 continuity cluster, and D14.

Both documents were read in full before restating, not summarised from headers.

PORTED to cotmetrics

cotmetrics #9 lands A11 and C16, creating that repo's docs/ directory. Both read in full before restating.

Two things were settled in the porting, and both are written into the destination rather than into the map. A11's fact and its consequence were kept together: the fact is a cotmetrics property, the consequence that an exceedance count is not a sample size belongs to crucible and npf, and it is stated once with consumers asked to cite rather than restate. A11's scope is stated because it limits the transfer: the figures were measured on a z-score percentile panel over Managed Money positioning, not on cotmetrics' own index, so the cause transfers but the rates have not been re-measured there.

The port produced a finding that is not in this repo at all. Checking whether anything live does what C16 forbids turned up six price-against-positioning level correlations per lookback in cotmetrics, whose null has never been measured. Written up in the destination as a check to run rather than a defect report, including the point that longer windows are more exposed rather than less, so the 52-week columns are both the ones a reader is likeliest to trust and the ones most at risk.

B33 and B34 were on the TO PORT list and have been removed. They were classified from their headers, which name a statistical shape and read as general facts about positioning. Read in full they are about the template and about A = Q_sell/Q_buy, both crowdmon constructs, so they move to DIES. The correction is recorded in place rather than applied silently, because it is the same error the harvest is designed against: a header is a claim, not a reading.

TO PORT

Nothing. Every finding classified as needing a new home has one. What remains of the deprecation is operational rather than documentary: the two launchd jobs, the /damage page, and whether the open copy work order is done or closed unstarted.

RESOLVED

Checked rather than assumed. A9's docstring correction is live in cotdata/prices.py, A8 landed in ff2b755, B29 in cotdata #93. Re-filing any of these would have been noise.

DIES

The rest, and not a claim that those findings are wrong. Most are correct and were expensive to establish; they simply have no consumer once the composite is parked.

Three are flagged inside that list as general rather than local, so a future reader can find them: B24 on eigenvector sign identification, and B13 and B14, both about reasoning by analogy failing against measurement. That is the lesson this repo produced most often and the one least tied to its hypothesis.

What the harvest does not do

It does not edit the amendments, and the file says it must not. They are point-in-time records; rewriting them would destroy the record of when each thing was learned, which is what makes "the data contradicted the brief" a checkable claim rather than an assertion. Porting means restating the fact in the owning repo and citing the section here.

It also does not delete anything, does not re-verify the DIES list, and does not carry the hypothesis into a package that never asked for it.

Plain-language bottom line

The idea this package was built to test did not work out, and it is being shelved. But a research project that fails still produces facts, and some of these are about the underlying data rather than about the idea: they stay true no matter what happens here. This sorts all 108 recorded findings into the ones that need a new home, the ones already rehoused, and the ones that go quiet with the project. The first batch has moved. The remainder is named rather than assumed done.

🤖 Generated with Claude Code

mspinola and others added 2 commits August 6, 2026 20:25
First step of deprecation. docs/HARVEST.md classifies every numbered section in
design/amendments-*.md as PORTED, TO PORT, RESOLVED, or DIES.

PORTED and TO PORT are kept apart deliberately. A harvest that marked everything
done on the day it was planned is the same failure as a stale status line: a
reader would have no way to tell which facts had actually reached a surviving
package. Only rows marked PORTED have been written somewhere else, and both of
those documents were read in full and restated rather than summarised from
headers.

Ported to cotdata in this pass (cotdata PR, docs only): D7 with its
spread_contracts trap, A1, A2 into cross-report-comparability.md; A5, A13, A14
with C12, B26/B27/B30 and D14 into reading-the-store.md.

Still TO PORT, and named as such: A11, C16, B33/B34, all owned by cotmetrics,
which has no docs directory today so they need a home created rather than a file
appended. A11 is the one worth doing next. Over 117,940 scored market-weeks,
10.11% sit above the 95th percentile against a nominal 5%, mean run 4.8 weeks and
57.6% of hot weeks inside runs of 8 or more, so anything treating "weeks above the
95th" as a sample size has an effective sample about a fifth of nominal. Its own
text says the measurement belongs downstream.

RESOLVED rows record what was already fixed upstream before this harvest, checked
rather than assumed: A9's docstring correction is live in cotdata/prices.py, A8
landed in ff2b755, B29 in cotdata #93.

The DIES list is the rest, and it is not a claim that those findings are wrong.
Most are correct and were expensive to establish; they simply have no consumer
once the composite is parked. Three are flagged inside it as general rather than
local, so a future reader can find them: B24 on eigenvector sign identification,
and B13 and B14, both about reasoning by analogy failing against measurement,
which is the lesson this repo produced most often and the one least tied to its
hypothesis.

The amendments files are not edited by this harvest and the file says they must
not be. They are point-in-time records; rewriting them would destroy the record of
when each thing was learned, which is what makes "the data contradicted the brief"
a checkable claim.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…rics

Two changes to HARVEST.md, both from reading sections in full that the first
draft classified from their headers.

B33 and B34 were listed TO PORT and that was wrong. Their headers name a
statistical shape ("the coin flip is in the sign, not the size"; "0.993 is
direction cancelling") and read as general facts about positioning. Read in full
they are about the template and about A = Q_sell/Q_buy, both crowdmon constructs
that die here. They move to DIES, and the correction is recorded in place rather
than applied silently because it is the same error this harvest is designed
against: a header is a claim, not a reading.

What survives them is a reasoning trap rather than a COT fact, so both join B13
and B14 in the group flagged as general rather than local. B33: a 50% sign
frequency is consistent with two opposite worlds, and per market it was a mixture
of always and never rather than a weekly coin flip. B34: a signed ratio whose
direction is near a coin flip has a median close to 1 whether or not the sides
differ in size, 3.0237 direction-agnostic against 0.993 directional.

That leaves A11 and C16 as the cotmetrics port, and C16's row now carries its
actual numbers rather than a one-line gloss: MM net positioning is near unit-root
at a median lag-1 of 0.956, an independent random walk scores a maximum level
correlation of 0.773 against the panel half the time, and 33.5% of cross-complex
pairs whose true correlation is zero exceed 0.5 on levels against 0.0% on first
differences.

Two notes added for whoever does that port.

A11's fact and its consequence have different owners. The fact is a property of
COT positioning series, which cotmetrics owns; the consequence, that an exceedance
count is not a sample size, belongs to crucible and npf. Recommended: state it
once in cotmetrics and have npf cite rather than restate it, because splitting a
fact from its consequence is how one of them goes stale.

C16 has a live neighbour: cotmetrics' calculate_spearman_correlation correlates
price levels against positioning levels over a rolling 13-week window and feeds
comms_spearman and the regime-shift signal. Recorded as a check to run, NOT a
defect report, and the file says so: it is a within-market question rather than
C16's cross-market one, the window is 13 points rather than a full sample, and the
downstream signal thresholds velocity against a rolling baseline. What is missing
is the null, which has never been measured on this data. The settling check is
C16's own procedure against a synthetic independent series over the same window.

Stakes are stated so it is not over-read: npf does not consume comms_spearman. Its
only spearman is wfc_gate.correlation_method, which correlates in-sample against
out-of-sample performance and touches no positioning level.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
cotmetrics PR #9 lands both, creating that repo's docs/ directory. Moves them
from TO PORT to a PORTED section rather than leaving the map claiming work that
is done, which is the failure the two categories exist to catch.

Records two things settled during the porting, both written into the destination
rather than here. A11's fact and its consequence were kept together in one place,
stated once in cotmetrics with consumers asked to cite rather than restate, since
a fact and its consequence in two repos is how one goes stale. And A11's scope is
stated because it limits the transfer: the figures were measured on a z-score
percentile panel over Managed Money positioning, not on cotmetrics' own index, so
the cause transfers but the rates have not been re-measured there.

Also records that the port produced a finding that is not in this repo at all.
Checking whether anything live does what C16 forbids turned up six
price-against-positioning level correlations per lookback in cotmetrics, whose
null has never been measured. It is written up in the destination as a check to
run rather than a defect report, including the point that longer windows are more
exposed rather than less, so the 52-week columns are both the ones a reader is
likeliest to trust and the ones most at risk.

TO PORT now reads "nothing", explicitly rather than by omission. What remains of
the deprecation is operational: the two launchd jobs, the /damage page, and
whether the open copy work order is done or closed unstarted.

The preamble keeps the PORTED / TO PORT distinction now that TO PORT is empty,
because the categories exist to be checkable rather than reassuring.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@mspinola
mspinola merged commit 8947ffa into main Aug 7, 2026
5 checks passed
@mspinola
mspinola deleted the claude/deprecate-harvest branch August 7, 2026 22:56
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant