fpf-thinking-map 1.2.1__py3-none-any.whl

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.
@@ -0,0 +1,62 @@
1
+ # Rejected: C.32 Candidate-Synthesis Logic
2
+
3
+ **Status**: Rejected — will not be added to this package.
4
+ **Date**: 2026-06-24
5
+ **Decision by**: igareosh (prichindel.com)
6
+ **FPF source**: [ailev/FPF commit 10cd224](https://github.com/ailev/FPF/commit/10cd224cef9c92043fb6821e165decd6ea05073f)
7
+
8
+ ---
9
+
10
+ ## What C.32 is
11
+
12
+ C.32 in the FPF spec introduces candidate-synthesis logic: structured option generation, variant racing, tradeoff-seeking, and candidate-multiplying patterns for decision-making under uncertainty.
13
+
14
+ ## Why it is rejected
15
+
16
+ This package is a **neutral semantic scaffold** — a thinking map that constrains an LLM's per-move reasoning within bounded semantics. C.32 material would break that neutrality.
17
+
18
+ ### The core problem: activation bias
19
+
20
+ The base models (GPT, Claude, Gemini, etc.) already contain strong priors for option generation. They are trained to branch, propose alternatives, weigh tradeoffs, and multiply candidates. These are deep model habits, not learned from FPF.
21
+
22
+ If the thinking map encodes C.32 patterns — even lightly — it stops being a neutral scaffold and becomes a **behavioral trigger**. The model does not just "have access" to candidate-synthesis logic. It starts to feel **invited to branch**, because the map mirrors priors the model already over-selects for.
23
+
24
+ The result:
25
+ - The map amplifies existing model habits instead of constraining them
26
+ - The model over-selects "variant racing" even when the scope is narrow and the move is clear
27
+ - The map stops preserving source semantics and becomes a **remapping layer** that biases toward generative branching
28
+
29
+ ### C.32 material is especially dangerous for a thinking map because it is:
30
+
31
+ - **Generative** — it produces options, not constraints
32
+ - **Branch-friendly** — it rewards divergence, not convergence
33
+ - **Tradeoff-seeking** — it opens evaluation dimensions instead of closing them
34
+ - **Candidate-multiplying** — it expands the decision space instead of narrowing it
35
+
36
+ These are **motion patterns**, not neutral semantic relations. They are the opposite of what a per-move guard-constrained thinking map should contain.
37
+
38
+ ### The design rule applies
39
+
40
+ > Only add structure when a missing relation changes what the agent does on a single move.
41
+
42
+ C.32 does not constrain a move. It multiplies moves. That is the wrong direction for this package.
43
+
44
+ ### What belongs here vs what does not
45
+
46
+ | This package | C.32 material |
47
+ |-------------|--------------|
48
+ | One move at a time | Many candidates at once |
49
+ | Guards constrain invalid moves | Synthesis generates more moves |
50
+ | Slice narrows the decision space | Variant racing widens it |
51
+ | Deterministic checks | Generative exploration |
52
+ | Convergent | Divergent |
53
+
54
+ The thinking map's value is that it makes each step **smaller and more bounded**. C.32 makes each step **larger and more open**. These are incompatible directions.
55
+
56
+ ## What to do instead
57
+
58
+ If candidate-synthesis is needed for a specific domain, it belongs in the **LLM prompt layer** or in a separate **strategy module** that runs outside the thinking map. The thinking map evaluates and constrains moves that have already been proposed — it does not propose them.
59
+
60
+ ---
61
+
62
+ prichindel.com | 2026-06-24 | v1.0.0
@@ -0,0 +1,64 @@
1
+ # Rejected: NQD / OEE / Cultural Evolution patterns
2
+
3
+ **Status**: Rejected — will not be added to this package.
4
+ **Date**: 2026-06-24 (evaluation on 2026-06-22)
5
+ **Decision by**: igareosh (prichindel.com)
6
+ **FPF source sections**: C.17 (Creativity-CHR), C.18 (NQD-CAL), C.19 (E/E-LOG), A.4 (Open-Ended Evolution), B.5.2.1 (Creative Abduction with NQD)
7
+ **FPF repo**: [ailev/FPF](https://github.com/ailev/FPF)
8
+
9
+ ---
10
+
11
+ ## What these patterns are
12
+
13
+ - **NQD-CAL (C.18)**: Novelty–Quality–Diversity open-ended search calculus. Structured brainstorming, illumination-style emitters, portfolio coverage maps.
14
+ - **E/E-LOG (C.19)**: Explore–Exploit governor. Policy for balancing exploration and exploitation, exploration quotas, selection lenses.
15
+ - **OEE / Open-Ended Evolution (A.4, P-10)**: The principle that any holon is perpetually incomplete and can be improved. Design-time vs run-time evolution.
16
+ - **Creativity-CHR (C.17)**: Characterizing generative novelty and value — Novelty, Use-Value, Surprise, Constraint-Fit scoring.
17
+ - **Creative Abduction (B.5.2.1)**: Hypothesis generation bound to NQD search with diversity maintenance.
18
+
19
+ These are interesting in FPF-land. They are not current-core for this thinking map.
20
+
21
+ ## Why they are rejected
22
+
23
+ Same class of risk as C.32 (candidate-synthesis), documented in `REJECTED_C32_CANDIDATE_SYNTHESIS.md`. The reasoning applies identically:
24
+
25
+ ### These patterns are bias injectors
26
+
27
+ NQD/OEE/cultural evolution material is:
28
+ - **Search-front expanding** — it widens the space of considered options
29
+ - **Novelty-seeking** — it rewards divergence from known paths
30
+ - **Diversity-maintaining** — it resists convergence toward a single answer
31
+ - **Portfolio-multiplying** — it turns one decision into a set of tracked alternatives
32
+
33
+ Base LLMs already over-index on these behaviors. They generate options readily, branch eagerly, and resist committing to a single path. These are deep training priors, not learned from FPF.
34
+
35
+ If the thinking map encodes NQD/OEE patterns, it does not add neutral semantic structure. It **amplifies existing model habits** toward exploration, divergence, and candidate multiplication — exactly the behaviors a per-move constrained map should not encourage.
36
+
37
+ ### The thinking map is convergent, not divergent
38
+
39
+ | This package | NQD/OEE/cultural evolution |
40
+ |-------------|---------------------------|
41
+ | Narrows to one move | Expands to a search front |
42
+ | Guards block invalid moves | Exploration quotas keep options open |
43
+ | Evidence must be present | Novelty is rewarded for being new |
44
+ | Transitions are bounded | Evolution is open-ended |
45
+ | Convergent per step | Divergent by design |
46
+
47
+ ### The design rule
48
+
49
+ > Only add structure when a missing relation changes what the agent does on a single move.
50
+
51
+ NQD/OEE patterns do not constrain a move. They generate and maintain alternative moves. They expand the per-step chew instead of reducing it. Wrong direction.
52
+
53
+ ## What to do instead
54
+
55
+ If novelty/diversity/search-front behavior is explicitly needed for a domain:
56
+ - It belongs in a **separate strategy module** outside the thinking map
57
+ - The thinking map evaluates and constrains moves that arrive from that module
58
+ - The map itself stays neutral — it does not invite the model to explore
59
+
60
+ The map is a **guard rail**, not a **search engine**.
61
+
62
+ ---
63
+
64
+ prichindel.com | 2026-06-24 | v1.0.0
@@ -0,0 +1,73 @@
1
+ # Sources and attribution
2
+
3
+ This package was built from two academic sources. Nothing was invented. Everything traces back to one of these.
4
+
5
+ ## Source 1: FPF (First Principles Framework)
6
+
7
+ A transdisciplinary specification for reasoning, assurance, and evolution — an "operating system for thought."
8
+
9
+ - **Author**: Anatoly Levenchuk (with LLM assistance)
10
+ - **Repository**: [github.com/ailev/FPF](https://github.com/ailev/FPF)
11
+ - **Spec**: `FPF-Spec.md` (~51,000 lines) — not included in this repository; see the original repo
12
+ - **Status**: Normative kernel, "eternal alpha" — used in working projects
13
+ - **Prior Python model**: `py-fpf` in the original repo (basic graph model with CSV artifacts — not used directly, but informed the design)
14
+
15
+ ### What we took from FPF and where it is in the spec
16
+
17
+ | What we built | FPF spec section(s) | What the spec section defines |
18
+ |--------------|---------------------|------------------------------|
19
+ | `ContextPrimitive` | A.1.1 U.BoundedContext | A bounded area where words have specific local meanings. Cross-context use requires explicit bridges with declared translation loss. |
20
+ | `ContextBridge` | A.6.9 CrossContextSamenessDisambiguation | How to connect two contexts: direction, mapping, substitution license, loss notes. |
21
+ | `RolePrimitive` | A.2 Role Taxonomy, A.2.1 U.RoleAssignment, A.2.7 U.RoleAlgebra, A.13 AgentialRole | Roles as assignments (not identities). Specialization (≤), incompatibility (⊥), bundles (⊗). Agency as a spectrum (passive → deliberative). |
22
+ | `WorkPrimitive` | A.15 U.Planning, A.15.1 U.Work, A.15.2 U.WorkPlan | The strict distinction between a plan (intent) and an enactment (what actually happened). A plan is NOT done work. |
23
+ | `CommitmentPrimitive` | A.2.8 U.Commitment | Deontic obligations: MUST, SHOULD, MAY, MUST_NOT, SHOULD_NOT. Scoped, with validity windows and evidence refs. Separate from gates (deontic vs structural). |
24
+ | `GatePrimitive` | A.21 GateProfilization, A.19.UNM (tri-state guard) | Operational gates that aggregate checks. Four outcomes: abstain, pass, degrade, block. Fail-closed by default. |
25
+ | `EvidencePrimitive` | A.10 Evidence Graph, A.2.4 U.EvidenceRole, B.3 Trust & Assurance (F-G-R), B.3.4 Evidence Decay | Evidence with provenance. Trust is a computed tuple: Formality (how rigorous), scope (how broad), Reliability (how dependable). Evidence can go stale. |
26
+ | `TransitionPrimitive` | A.3.3 U.Dynamics, B.4 Canonical Evolution Loop, A.2.5 U.RoleStateGraph | State transitions with optional gate requirements and required evidence. The canonical loop: Run → Observe → Refine → Deploy. |
27
+ | `PublicationPrimitive` | E.17 MVPK Multi-View Publication Kit | Same content, different audiences: plain, technical, interop, assurance. Views do not add new semantics. |
28
+ | Guard: commitment evidence | A.2.8 + A.10 | Binding commitments (MUST/MUST_NOT) require evidence refs to be present. |
29
+ | Guard: plan ≠ enactment | A.4 Temporal Duality, A.7 Strict Distinction | Having a plan does not mean the work is done. Cannot transition to "done" without enactment records. |
30
+ | Guard: role conflict | A.2.7 U.RoleAlgebra (⊥) | Incompatible roles cannot be active at the same time. |
31
+ | Guard: gate pass | A.21 GateProfilization | Gate must pass (or at least degrade, not abstain/block) before a guarded transition fires. |
32
+ | Guard: scope check | A.2.6 USM (Unified Scope Mechanism) | Actions must stay within the active context. Cross-context action requires a bridge. |
33
+ | Guard: evidence freshness | B.3.4 Evidence Decay | Stale or expired evidence triggers a warning before decisions. |
34
+
35
+ ### What we did NOT take from FPF
36
+
37
+ The full FPF spec is ~51,000 lines covering dozens of patterns across 7 parts (A through G). We extracted 10 objects and 9 guard rules. Everything else in the spec (the full ontology, the mathematical formalism, the publication kit details, the SoTA harvesting, the ethics framework, the explore-exploit calculus) was left out intentionally. This package is a distillation, not a port.
38
+
39
+ ## Source 2: Computational logic lectures (Mitev L.)
40
+
41
+ A university lecture series on propositional logic. We took the 6 basic logic operators and the Wumpus World pattern for agent navigation.
42
+
43
+ - **Title**: "Bazele programarii logice" (Fundamentals of Logic Programming)
44
+ - **Author**: Mitev L.
45
+ - **Format**: 5 lecture PDFs (c1p through c5p)
46
+
47
+ ### What each lecture covers and what we used
48
+
49
+ | Lecture | Topics | What we took |
50
+ |---------|--------|-------------|
51
+ | c1p | Propositions, 6 operators (NOT, AND, OR, XOR, IMPLIES, IFF), truth tables, operator precedence | All 6 operators as Python classes (`NotProp`, `AndProp`, `OrProp`, `XorProp`, `ImpliesProp`, `IffProp`). Truth table behavior is verified in `verify.py`. |
52
+ | c2p | Validity (tautology), satisfiability, unsatisfiability, contingency, consistency of proposition sets, system specifications | Consistency check in `LogicLayer.consistency_check()` — verifying that the set of fired rules does not contain contradictory actions. |
53
+ | c3p | Logical equivalences, De Morgan's laws, contrapositives, minimum connective sets | Informed the design that any complex condition can be built from NOT + one binary operator. We kept all 6 for readability. |
54
+ | c4p | Natural deduction (introduction/elimination rules for each operator), replacement rules | Not directly used in code, but informed the understanding of how each operator introduces or eliminates knowledge. |
55
+ | c5p | Semantic reasoning with truth tables, Wumpus World (propositional logic for AI agent navigation) | The core design pattern: an agent navigates a space, evaluates propositions about its surroundings at each step, and uses logic to determine safe/valid moves. Our "cells" = semantic states, "moves" = transitions, "percepts" = evidence/gate/commitment facts. |
56
+
57
+ ### The Wumpus World pattern (from lecture 5)
58
+
59
+ In the Wumpus World, an agent explores a 4x4 grid. Each cell may contain a pit or a monster. The agent perceives clues (breeze = adjacent pit, stench = adjacent wumpus) and uses propositional logic to deduce which cells are safe before moving.
60
+
61
+ We applied the same pattern:
62
+ - The semantic map is the grid
63
+ - Evidence, gates, and commitments are the percepts
64
+ - Logic operators compose percepts into safety checks
65
+ - Guards are the hard constraints (like "don't walk into a known pit")
66
+ - The model picks moves from the safe set
67
+
68
+ ## Package authorship
69
+
70
+ - **Adaptation**: prichindel.com
71
+ - **Created**: 2026-06-24
72
+ - **Purpose**: Semi-encode FPF into an agentic thinking map with propositional logic glue
73
+ - **Repository**: [github.com/igareosh/prichindel.com-agentic-thinking-map](https://github.com/igareosh/prichindel.com-agentic-thinking-map)
@@ -0,0 +1,92 @@
1
+ # Why this exists — compiled FPF vs raw FPF
2
+
3
+ This document explains why this package exists adjacent to the original FPF specification, and why feeding the raw spec text to a model is a fundamentally different (and worse) operation than feeding it the compiled thinking map.
4
+
5
+ This is not a critique of FPF itself. As a human-readable transdisciplinary framework, FPF is strong and well-structured. The problem is not the framework — it is the assumption that a language model can absorb a 51,000-line specification and then apply it the way a human reader would.
6
+
7
+ ## The triple tax: what happens when a model reads raw FPF
8
+
9
+ When you give a language model the FPF specification text and ask it to make a decision, three things happen in sequence. Each one costs tokens, time, and accuracy.
10
+
11
+ ### Pass 1 — Parse
12
+
13
+ The model reads the FPF text and activates attention on terms like "U.BoundedContext", "holon", "meta-holon", "ontic", "episteme." These are high-entropy tokens — rare words that pull attention strongly. The model spends capacity figuring out what the text MEANS before it can use it.
14
+
15
+ This is not how the model processes familiar concepts. When the model sees "test results passed," it maps that to a decision in one attention step. When it sees "the epistemic holon satisfies the F-G-R assurance calculus under the bounded context's invariant constitution," it spends multiple attention layers parsing syntax, resolving references, and building an internal representation of what the sentence is saying. The actual meaning ("the evidence is good enough") is the same, but the computational cost is higher.
16
+
17
+ ### Pass 2 — Aggregate
18
+
19
+ Now the model tries to map the FPF concepts onto the actual question. "The user asked about deploying. FPF says deployment requires a U.Work enacted under a U.RoleAssignment within a U.BoundedContext with evidence satisfying B.3 F-G-R..." The model is translating between two vocabularies — the FPF vocabulary and the task vocabulary. Every translation is a re-reasoning step.
20
+
21
+ This pass is where the model burns the most tokens for the least value. It is not solving the problem. It is translating the problem into FPF terms and then back into task terms. The translation adds nothing — the original question already contained everything the model needs. But the FPF text forces the model to route through the framework's terminology.
22
+
23
+ ### Pass 3 — Generate
24
+
25
+ Now the model answers. But it is answering through the FPF lens, which means every sentence is hedged with FPF terminology: "According to the holon-based epistemic framework, the role-assignment binding suggests..." The output is the model performing FPF, not solving the problem.
26
+
27
+ The generated text sounds rigorous. It uses the right FPF terms. It follows the right FPF structure. But it is not a better answer than the model would have given without FPF — it is the same answer wrapped in framework-flavored prose that the human reader must then unwrap to extract the actual decision.
28
+
29
+ ### The tax adds up
30
+
31
+ Reason about the framework → reason about the mapping → reason about the answer. Three passes where one should suffice. And each pass activates the same attention patterns (the FPF vocabulary), which means the model's prior biases about those scientific-sounding terms get amplified. "Holon" sounds important, so the model treats it as important, and spends more tokens on it.
32
+
33
+ On a multi-step traversal, the tax compounds. Each step re-reads the framework, re-maps the vocabulary, re-generates the FPF-flavored output. By step 5, the context is full of the model arguing with itself about whether a "U.RoleAssignment" is the same as an "actor binding" and whether "epistemic" means "evidential" in this context. The actual decision — should we deploy? — is buried under layers of framework self-interpretation.
34
+
35
+ ## What this package does instead
36
+
37
+ We compiled 51,000 lines into 10 dataclasses, 9 guards, and 6 logic operators. The FPF thinking happened once, at compile time, when we wrote the code. At runtime, the model never sees "holon" or "episteme" or "ontic." It sees:
38
+
39
+ ```json
40
+ {
41
+ "can_fire": false,
42
+ "blockers": ["missing evidence: ['owner_approval']"],
43
+ "response_contract": {
44
+ "basis": [{"id": "test_results", "freshness": "current", "ttl_remaining": 6}],
45
+ "modality": [{"commitment": "No deployment without evidence", "force": "must"}],
46
+ "canonical_terms": {"deploy": "push artefact to production environment"}
47
+ }
48
+ }
49
+ ```
50
+
51
+ One pass. No translation. No re-reasoning. The code already did the FPF thinking and handed the model a JSON with the answer pre-computed.
52
+
53
+ The model's job shrinks from "understand this 51k-line philosophy of reasoning and then apply it" to "read this small JSON, fill in the claim field, pick the next move."
54
+
55
+ ## Three problems with feeding raw FPF to a model
56
+
57
+ ### 1. It makes the model re-reason N times
58
+
59
+ Once per FPF concept layer (context → role → commitment → gate → evidence → transition). Each layer is a re-reasoning pass because the model has to carry forward all prior layers. On a 6-step traversal with 6 concept layers, the model performs 36 reasoning passes where 6 would suffice (one per step, each reading a pre-computed slice).
60
+
61
+ ### 2. It feeds the model biased activations
62
+
63
+ FPF uses terms like "agency spectrum", "candidate synthesis", "novelty-quality-diversity" that are already strong priors in the training data. The model sees these and shifts into "academic reasoning mode" — verbose, hedge-heavy, option-multiplying. Exactly the opposite of what a per-step decision map needs.
64
+
65
+ This is why we rejected FPF patterns like C.32 (candidate-synthesis logic) and NQD/OEE (novelty-quality-diversity). These patterns amplify existing LLM biases instead of constraining them. See [REJECTED_C32_CANDIDATE_SYNTHESIS.md](REJECTED_C32_CANDIDATE_SYNTHESIS.md) and [REJECTED_NQD_OEE_CULTURAL_EVOLUTION.md](REJECTED_NQD_OEE_CULTURAL_EVOLUTION.md).
66
+
67
+ ### 3. It is a word blob organized for human readers, not machine consumption
68
+
69
+ The 51k lines are structured as sections, subsections, cross-references, normative statements, and examples — a format designed for a human reader who can skim, jump between sections, and build a mental model over multiple readings. A model reading this does what it does with any large text: skims, activates on familiar patterns, and generates text that sounds like the input. The output is FPF-flavored prose, not decisions.
70
+
71
+ ## What FPF gets right (for humans)
72
+
73
+ None of this means FPF is wrong. For a human practitioner:
74
+
75
+ - The bounded context discipline is genuinely useful — it stops people from conflating terms across domains.
76
+ - The role/method/work separation catches real organizational confusion.
77
+ - The evidence-based gate system maps directly to how decisions should be made in engineering.
78
+ - The deontic commitment framework (MUST/SHOULD/MAY) prevents the common mistake of treating guidelines as requirements or vice versa.
79
+
80
+ These insights are strong. We extracted them. We compiled them into code that a model can use without re-deriving them from first principles on every step.
81
+
82
+ ## The fundamental misunderstanding
83
+
84
+ Treating an LLM like a human reader who can absorb a framework and then apply it. An LLM is a pattern completer. Give it a framework, it completes the framework's patterns. Give it a structured template with precomputed values, it fills the template. The second one is useful.
85
+
86
+ FPF as a human-readable specification: strong.
87
+ FPF as raw input to a language model: triple tax.
88
+ FPF compiled into a thinking map with precomputed state: what this package does.
89
+
90
+ ---
91
+
92
+ prichindel.com | 2026-06-27 | v1.1.3
@@ -0,0 +1,81 @@
1
+ """FPF Thinking Map — compiled semantic substrate for agentic traversal.
2
+
3
+ A structured board for LLM reasoning: the model navigates a pre-shaped
4
+ semantic field with deterministic guards and propositional logic constraints.
5
+ Evidence decays via TTL hop counter. The model reads small JSON slices and
6
+ picks moves — no re-reasoning about state the code already computed.
7
+
8
+ Modules:
9
+ primitives — 10 semantic objects + 5 semantic floors from FPF spec
10
+ state — runtime binding, active state, TTL tracking, per-move slices
11
+ guards — 9 deterministic guards (hard constraints, not LLM judgments)
12
+ logic — 6 propositional operators + freshness-aware decision rules
13
+ traversal — step engine with 10 lawful outcomes
14
+ examples — deploy decision scenarios demonstrating the full system
15
+ verify — 18-check self-verification harness
16
+ """
17
+
18
+ # --- Primitives: the semantic field ---
19
+ from fpf_thinking_map.primitives import (
20
+ ContextPrimitive,
21
+ ContextBridge,
22
+ RolePrimitive,
23
+ AgencyLevel,
24
+ RoleAssignment,
25
+ WorkPrimitive,
26
+ WorkPlanPrimitive,
27
+ SpeechActPrimitive,
28
+ SpeechActType,
29
+ CommitmentPrimitive,
30
+ DeonticModality,
31
+ GatePrimitive,
32
+ GateCheck,
33
+ GateDecision,
34
+ EvidencePrimitive,
35
+ FGR,
36
+ Freshness,
37
+ SemanticFloor,
38
+ FLOOR_BASE_TTL,
39
+ TransitionPrimitive,
40
+ PublicationPrimitive,
41
+ PublicationFace,
42
+ )
43
+
44
+ # --- State: binding + active state + slicing ---
45
+ from fpf_thinking_map.state import (
46
+ RuntimeBinding,
47
+ SemanticMap,
48
+ ActiveState,
49
+ MoveTrace,
50
+ )
51
+
52
+ # --- Guards: deterministic hard constraints ---
53
+ from fpf_thinking_map.guards import (
54
+ GuardEngine,
55
+ GuardVerdict,
56
+ GuardScope,
57
+ Guard,
58
+ GuardResult,
59
+ )
60
+
61
+ # --- Logic: propositional decision glue ---
62
+ from fpf_thinking_map.logic import (
63
+ LogicLayer,
64
+ DecisionRule,
65
+ RuleKind,
66
+ Prop,
67
+ EvidencePresent,
68
+ EvidenceFresh,
69
+ GatePasses,
70
+ GateBlocked,
71
+ RoleActive,
72
+ InState,
73
+ CommitmentMet,
74
+ HasMissingEvidence,
75
+ RiskAbove,
76
+ TransitionAvailable,
77
+ CustomProp,
78
+ )
79
+
80
+ # --- Traversal: the step engine ---
81
+ from fpf_thinking_map.traversal import ThinkingMapTraversal, Outcome, OutcomeKind