# Control-policy run — FC3 (condition C)

## history (verbs run, in order)

1. **match (retrieve)** — anchored the problem to the catalog.
   - `search_prime` with the domain-stripped meta-model ("many independent actors draw on a shared finite resource that degrades and crosses an irreversible threshold; individual use is hard to observe; rules must keep the resource above collapse while keeping users viable"). Top hit: `tragedy_of_the_commons` (score 0.707, **distinctive**, percentile 0.69, sf_label mixed-framed). Neighborhood: free_riding, public_goods, scarcity, cooperation, competition. Also surfaced: irreversibility (distinctive), social_dilemma, reversibility_and_irreversibility.
   - `search_by_facets` (six facets) — the governance facet ("a collective process that adjusts the rules as conditions change") surfaced `governance`, `institution`, `institutional_lag`; the enforcement facet surfaced `monitoring`, `informal_enforcement`; the uniform-rule facet surfaced `preference_heterogeneity_and_conflict`, `mandatory_vs_default_norms`, `fairness`; the popular-but-unsafe facet surfaced `procedural_fairness_due_process`, `reversibility_and_irreversibility`. Archetype side surfaced **`commons_governance`** directly (facet-1 rank ~4) plus `contribution_visibility_design`, `transition_boundary_monitoring`, `adaptive_response_recalibration`, `equity_adjustment`.
   - Post satisfied: ≥1 candidate with recorded source-prime overlap (commons_governance ← tragedy_of_the_commons, source).
   - `find_archetypes_for_prime(tragedy_of_the_commons)`: source → **commons_governance**; related → harmful_emergence_containment, iterative_reciprocity_and_repeated_interaction, public_goods_provision, reciprocity_protocol_design.

2. **salience-rank.**
   - `tragedy_of_the_commons` — **load_bearing** (the whole situation: rivalrous, hard-to-exclude resource; 1/N cost-share; threshold collapse). Removing it changes the recommendation.
   - `irreversibility` / threshold-crossing — **load_bearing** (past a threshold the resource is *permanently* lost; this asymmetric, non-recoverable downside is decisive for the success criterion).
   - `monitoring` + graduated sanctions + `feedback` — **load_bearing** (use is hard to meter; the only way to keep the stock above collapse when you cannot directly observe is to track resource *state* and respond).
   - `fairness` / `preference_heterogeneity_and_conflict` / `mandatory_vs_default_norms` — **context** (the "equal quota feels fairer / would be popular" pressure). Real, but it bears on legitimacy/adoption, not on whether the rule physically preserves the resource.
   - `incentive_compatibility`, `legitimacy` — context-to-load_bearing supports.

3. **prune.** Operative subset retained: {tragedy_of_the_commons, irreversibility, monitoring+graduated-sanctions, adaptation/feedback, fairness/heterogeneity (context), legitimacy (context)}. Cut: scarcity, scaling, lock_in, social_identity_theory, deadlock — generic neighbors with no load on the choice.

4. **compose** (typed relational model — referential integrity checked).
   - nodes: `R` = shared resource (kind: stock, has carrying capacity + collapse threshold); `U1..Un` = independent users (kind: agent); `S` = resource state/condition (kind: signal); `G` = governance rule (kind: institution); `meter` = direct-use observation (kind: signal, **degraded/low-fidelity**).
   - edges: `Ui --extract--> R` [prime: tragedy_of_the_commons, 1/N cost-share]; `R --crosses--> threshold` [prime: irreversibility]; `S --observes--> R` [prime: monitoring/feedback]; `G --constrains--> Ui` [prime: institution]; `G --reads--> S` (state-contingent) ; `meter --observes--> Ui` (marked low-fidelity — the metering gap). Every edge references declared nodes; every operative prime appears as an annotation. **Referential integrity: PASS.**

5. **lift — L1 (situation → meta-model).** Witnesses in parentheses.
   - roles: PRINCIPALS = many uncoordinated agents drawing on (R); SHARED-STOCK = a degradable carrier with a **point-of-no-return** (R + threshold); STATE-SIGNAL = observable condition of the stock (S); RULE = a constraint regime on agent draw (G); LEDGER = direct per-agent observation, **unreliable** (meter).
   - relations: each principal's marginal draw is privately beneficial but its cost is shared 1/N (tragedy); cumulative draw can push the stock past an **irreversible** boundary (irreversibility); the rule can be **fixed-in-advance** or **state-coupled** (the A-vs-B fork).
   - invariants that must hold for success: (i) cumulative draw ≤ sustainable yield *at all times* so the stock never crosses the threshold; (ii) per-agent allocation stays above each agent's viability floor. No domain terms remain. **L1 witness-check: PASS.**

6. **transport / lower.** Structural recognition: the situation IS a common-pool-resource dilemma; the in-hand pattern is the **commons_governance** archetype (source prime = tragedy_of_the_commons). Approach B *is* an instantiation of that pattern's operative core (state monitoring + graduated sanctions + collective adjustment). Approach A is a single isolated component of it (a use-limit) with the rest of the pattern declined-by-omission. The decisive structural fact carried across: **the binding constraint is keeping cumulative draw below a moving, irreversible threshold under metering uncertainty** — a fixed-in-advance number cannot track a moving threshold.

7. **lift — L2 (SCOPED COVERAGE CHECK on the single operative pattern the chosen approach relies on).**
   Pattern = **commons_governance**. The decision question is which approach's rule discharges this pattern well enough to hold both invariants. I coverage-check the chosen approach (B) against the pattern's load-bearing components; mark over-build as `correctly_declined`; nothing left `missing`.

### coverage_map — pattern: commons_governance (witnesses are from Approach B)

| component | status | witness / decline_reason |
|---|---|---|
| Shared Resource Boundary | instantiated | "a shared resource… users draw on" — resource + its user set are the defined object both rules govern. |
| Use Quota / Use Limit | instantiated | B's "allocate" sets the per-period draw constraint (the limit), now coupled to state. |
| Monitoring Signal | instantiated | B's "monitoring of the resource's state" — the STATE-SIGNAL (S). Directly addresses the metering gap: even when per-user use is unobservable, *resource condition* is observable. |
| Sanction Rule | instantiated | B's "graduated sanctions for over-use" — proportional, repeated-community enforcement that makes evasion non-rational. |
| Adaptation Cadence | instantiated | B's "collective-adjustment process as conditions change" — closes the loop so the limit tracks the moving threshold. |
| Replenishment Rule | homolog | not a separate B mechanism, but state-coupled tightening when S degrades *is* the repair/recovery function discharged here (back off draw → stock recovers). witness: state-contingent allocation. |
| Legitimacy Basis | homolog | B's "collective" process supplies participatory legitimacy; the equal-quota popularity pressure is the legitimacy demand, discharged by giving users voice in the adjustment process rather than by a one-shot equal number. |
| Dispute Resolution Path | correctly_declined | the situation poses no recurring inter-party adjudication need beyond the collective process; building a separate tribunal would over-build relative to the stated problem. |
| Contribution Rule / Funding Pool / Exception Process / Transparency Record | correctly_declined | finance/maintenance-labor and formal exception machinery are not load-bearing for *this* depletion-by-extraction problem; instantiating them would distort a sub-structure the collective process already handles naturally (over-lift guard). |
| Access Rule | homolog | who-may-draw is fixed by "the users" already; B's allocation is the access constraint. |

**No component is `missing`.** Coverage stop-condition satisfied. (Run against Approach A for contrast: Use-Limit instantiated; **Monitoring Signal MISSING**, **Adaptation Cadence MISSING**, **Sanction Rule MISSING** — three load-bearing components unmet, so A does not clear the L2 stop-condition for the pattern that the success criterion requires.)

8. **evaluate-fit (gate) — anti-signatures of commons_governance against the chosen approach (B).**
   - "Resource is fully private / use doesn't affect others" → **not tripped** (use is rivalrous and shared).
   - "Underproduction of a non-rival benefit (public-goods, not commons)" → **not tripped** (this is over-*extraction* of a rivalrous, depletable stock — the commons case, not public-goods).
   - "A central authority can directly allocate with no info/enforcement/legitimacy problem" → **not tripped**; in fact the *opposite* — metering is hard (info problem) and an equal quota faces a legitimacy/heterogeneity issue — which is exactly why the monitoring+adjustment institution is warranted, not simple administrative allocation.
   - "Actually a one-time two-party dispute" → **not tripped** (many users, repeated interaction).
   - Verdict: **keep B.** No disqualifying condition.
   - Anti-signature note also weighs *against A*: A is the "static administrative allocation" / "rigid quota" posture; commons_governance's own failure-mode list flags **rigid quota failure** ("use limits that ignore changing conditions") and **illegitimate/blunt exclusion**. A is precisely the rigid-quota anti-pattern.

9. **reconcile (model vs. meta-model).**
   - Concrete model: an equal fixed quota (A) might happen to sit below current sustainable yield, but if the threshold drifts down (slow degradation, shocks) the fixed number keeps draw constant while the safe level falls → stock crosses the irreversible boundary with no corrective signal. The two readings AGREE that A's open-loop control cannot guarantee invariant (i) under a moving threshold.
   - Where the views could diverge: the meta-model says "fairness/popularity" is a legitimacy input, not a preservation mechanism; the concrete model says the equal quota "feels fairer." Reconciled reading (consistent with both): popularity is real and matters for adoption, but it is satisfied better by giving users a voice in a state-coupled process than by locking in an equal number that fails the physical invariant. The meta-model is *not* decorative here — it is what demotes the popularity cue from "decisive" to "context."

## conclusion

Both invariants (stock never crosses the irreversible threshold; users stay viable) can be held only by a rule that **senses resource state and adjusts** — because the threshold is not known precisely in advance, can move, and is crossed irreversibly, while direct metering of use is unreliable. A single equal fixed quota is open-loop: it cannot detect approach to collapse and cannot correct, and its only virtue (felt fairness/popularity) is a legitimacy input that the adaptive process can also satisfy. Approach B closes the loop (monitor state → graduated sanctions → collective adjustment) and covers the operative pattern with no load-bearing component missing.

===DECISION_BEGIN===
DECISIVE_FACTOR: The loss is irreversible past an imprecise, possibly moving threshold while individual use can't be reliably metered, so only a rule that senses the resource's actual condition and adjusts can guarantee it never crosses that point.
CHOICE: B
JUSTIFICATION: The resource can be permanently lost once it crosses a threshold whose exact location isn't known in advance and can shift as conditions change, and you can't reliably measure how much each person is taking. A single fixed quota set ahead of time is a blind, open-loop rule: if the safe level drops, it keeps allowing the same draw and there is no signal or correction until the resource is already gone. Watching the resource's actual condition, escalating consequences for overuse, and adjusting allocations together as conditions change is the only way to keep the resource above the point of no return while keeping users supplied. The equal-quota option is more popular and feels fairer, but that is about acceptance, not survival, and people's voice can be preserved inside the adjustment process instead.
===DECISION_END===
