Skip to main content

FPF Agentic Thinking Map - Agent freedom. Explicit movement rules.

FPF Agentic Thinking Map

A small, deterministic Python runtime for agents that may reason freely but must move through a workflow lawfully.

It keeps operational state, evidence freshness, transition legality, authorization boundaries, and waiting conditions outside the model's prose context. The model can inspect the map and choose; the runtime decides whether the move is valid.

PyPI Downloads (honest) Python License Zero dependencies Verification Live demo

pip install fpf-thinking-map
python -m fpf_thinking_map.verify

Important links

The dev_mcp development and compliance harness is genuinely tested against the package and updated whenever runtime behavior, compliance checks, or integration requirements change.

The problem

An agent can explain a workflow rule and still lose track of it during a long run. Prose instructions compete with task content, earlier decisions, tool output, and context compression.

FPF Agentic Thinking Map moves the parts that should not depend on narration into ordinary code:

  • current context and state;
  • evidence presence and TTL freshness;
  • gates, guards, and lawful transitions;
  • cross-context bridges;
  • human authorization;
  • external dependencies and wake conditions;
  • concrete move identity and trace lineage.

This is not another reasoning prompt. It is a compact control surface around reasoning.

The contract

The division of responsibility is deliberate:

Agent or application Thinking map runtime
Interprets the task Holds explicit traversal state
Generates and compares options Computes which moves are legal
Collects evidence Checks presence and freshness
Proposes a concrete move Inspects or attempts that move
Explains the result Returns a bounded outcome and trace
Requests human input Enforces the authorization boundary
Executes tools and jobs Never executes, polls, or schedules them

The map constrains movement, not meaning. It does not replace the model, application logic, retrieval, tools, or a task scheduler.

Live runtime visual

Three test-backed traces of the traversal runtime

Open the interactive three-run trace

The visual follows evidence recovery, PendingInput/AWAIT, MoveIntent, state-bound authorization, and successful traced movement in the current runtime.

Minimal example

from fpf_thinking_map import (
    SemanticMap,
    ContextPrimitive,
    RolePrimitive,
    GatePrimitive,
    GateCheck,
    TransitionPrimitive,
    RuntimeBinding,
    ThinkingMapTraversal,
)

semantic_map = SemanticMap()
semantic_map.register_context(ContextPrimitive("deploy", "Deploy"))
semantic_map.register_role(RolePrimitive("owner", "Owner", "deploy"))
semantic_map.register_gate(
    GatePrimitive(
        "release_gate",
        "Release gate",
        "deploy",
        checks=[
            GateCheck(
                "tests",
                "Tests are green",
                required_evidence=["test_results"],
            )
        ],
    )
)
semantic_map.register_transition(
    TransitionPrimitive(
        "ship",
        "Ship release",
        "deploy",
        "candidate",
        "released",
        required_evidence=["test_results"],
    )
)

traversal = ThinkingMapTraversal(semantic_map)
state = traversal.build_active_state(
    RuntimeBinding(
        task="release",
        actor_role_ids=["owner"],
        active_context_id="deploy",
        current_evidence=["test_results"],
    ),
    current_state="candidate",
)

inspection = traversal.step(state)
result = traversal.attempt_transition(state, "ship")

print(inspection.kind)
print(result.kind)
print(state.current_state)

The map is domain-agnostic. Replace the deployment vocabulary with your own contexts, roles, evidence, gates, and transitions.

Run the packaged scenarios:

python -m fpf_thinking_map.examples

What is enforced

Explicit state

The active position is a first-class object, not a conclusion the model must repeatedly reconstruct from chat history.

Evidence with age

Transitions can require evidence. Evidence can decay by semantic floor and TTL, allowing the runtime to distinguish present evidence from usable evidence.

Gates, guards, and logic

Gates test declared conditions. Guards enforce hard constraints. A small propositional layer composes facts without asking the model to reinterpret the rules on every step.

Validated bridges

Cross-context movement is explicit. High-risk substitution without a sufficient bridge contract is refused or escalated rather than silently treated as equivalent.

Human authorization

requires_human_authorization separates "structurally legal" from "authorized to execute."

For stronger integrations, AuthorizationReceipt binds approval to:

  • one transition;
  • the exact inspected state fingerprint;
  • an expiry boundary;
  • single consumption.

A denied move may expose declared safe_alternatives, so escalation does not have to become a dead end.

External waiting

PendingInput and AWAIT distinguish "the workflow is finished" from "the workflow is alive but waiting for something outside the map." The host owns polling and resolution.

Concrete move identity

MoveIntent distinguishes a reusable transition type from one particular proposed move. inspect_move() evaluates it without mutation; a successful transition can stamp move lineage into the trace.

Why the versions matter

The project has grown by closing specific ambiguities in traversal state, not by expanding into a general agent framework.

Release line Capability added
v1.0 Runnable semantic primitives, deterministic guards, lawful traversal
v1.2 Evidence TTL, response contracts, IDLE and BRIDGE
v1.3 Enforced bridge crossing and lean state slices
v1.4 Stagnation detection, integrator advisories, verified documentation
v1.5 Stable public package boundary
v1.6 Human authorization and safe denial routes
v1.7 State-bound, expiring authorization receipts
v1.8 External dependency tracking and AWAIT
v1.9 Concrete move identity, inspection, lineage, authorization-clock fix

The complete reader-facing history is in docs/VERSION_TRACKER.md. Technical changes are in CHANGELOG.md, and full release bodies remain in GitHub Releases.

This separation is intentional: the README describes the stable product; the tracker records how that product became stronger.

Evidence, verification, and limits

The repository includes three different kinds of support. They should not be confused:

  • Deterministic verification checks runtime invariants directly.
  • Scenario and adversarial tests exercise integration behavior and known failure shapes.
  • Model experiments show behavior under stated conditions; they are evidence, not universal guarantees.
python -m fpf_thinking_map.verify
python -m fpf_thinking_map.examples

The compiled state slice was also measured against injecting the corresponding raw FPF sections at five shipped decision points. The measured slice was much smaller, but this is a traversal-context result, not a claim about general intelligence or total application cost. Method and limitations: TRIPLE_TAX_CALCULUS.md.

For the authorization experiments, threat boundaries, failures found, and claims deliberately not made, see IGNITION_LOCK_WIND_TUNNEL.md.

Scope

Use this library when you need:

  • bounded multi-step traversal;
  • explicit next-move legality;
  • evidence-aware workflow state;
  • inspectable reasons for blocking or escalation;
  • human authorization for selected transitions;
  • a clean distinction between waiting, resting, and acting;
  • compact state projections for an LLM or agent host.

Do not use it as:

  • a universal reasoning engine;
  • a semantic ingestion system for all of FPF;
  • an embeddings or vector database;
  • a tool runner, queue, scheduler, or worker supervisor;
  • a substitute for application-specific policy;
  • a certification that an entire agent system is safe.

Correct map authoring and correct host integration remain part of the trust boundary. Known sharp edges and deliberate non-goals are recorded in ADVISORIES.md.

Repository guide

Path Purpose
fpf_thinking_map/ Zero-dependency runtime published to PyPI
dev_mcp/ Separate development and compliance-testing harness
ARCHITECTURE.md Verified control flow and module architecture
docs/VERSION_TRACKER.md Every release, with three practical consequences
docs/DECISIONS_REJECTIONS_ADOPTIONS.md Design provenance and rejected scope
docs/deep/ADVISORIES.md Integration boundaries and known sharp edges
SHA256SUMS Repository-wide source fingerprints

Design rules

  1. Keep the model free to generate and compare.
  2. Keep movement legality explicit and deterministic.
  3. Add structure only when it changes observable behavior.
  4. Keep each decision payload small.
  5. Keep host responsibilities outside the core.
  6. Record rejected ideas as carefully as adopted ones.
  7. Prefer a narrow mechanism with inspectable limits over a broad claim.

Relationship to FPF

This project is inspired by ailev/FPF by Anatoly Levenchuk. It is an independent, MIT-licensed implementation with its own runtime scope.

FPF provides the broad conceptual frame. This package compiles a selected part of that frame into a practical traversal runtime. It may omit or reject patterns that do not improve this package's observable agent behavior.

See NOTICE and SOURCES.md for attribution and scope boundaries.

License and contact

MIT License. See LICENSE.

Maintained by igareosh.com · @igareosh · igareosh@igareosh.com

Agent freedom. Explicit movement rules.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fpf_thinking_map-1.9.4.tar.gz (71.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fpf_thinking_map-1.9.4-py3-none-any.whl (73.9 kB view details)

Uploaded Python 3

File details

Details for the file fpf_thinking_map-1.9.4.tar.gz.

File metadata

  • Download URL: fpf_thinking_map-1.9.4.tar.gz
  • Upload date:
  • Size: 71.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for fpf_thinking_map-1.9.4.tar.gz
Algorithm Hash digest
SHA256 cb020a4aa43e15e3891cf21153148b16ba5ceb34111ab3f0a67ff923edb6f0ea
MD5 1ff975a91f3dfd6fc4ba46c41fd85a55
BLAKE2b-256 b4ad2d84aa650a97d90e222c0a162e0b0fa0c0e518795b2f0754730d62cbee74

See more details on using hashes here.

Provenance

The following attestation bundles were made for fpf_thinking_map-1.9.4.tar.gz:

Publisher: publish.yml on igareosh/fpf-agentic-thinking-map

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fpf_thinking_map-1.9.4-py3-none-any.whl.

File metadata

File hashes

Hashes for fpf_thinking_map-1.9.4-py3-none-any.whl
Algorithm Hash digest
SHA256 04b91ce34742289f7dd17122aaeb4e10683af35914c2c64fee5ea2097a0098dd
MD5 5e2063a388d496780fb315e271d76417
BLAKE2b-256 82a39d668831fbe3730d2d6c9d974be731179398345450b0df109a74f53cc554

See more details on using hashes here.

Provenance

The following attestation bundles were made for fpf_thinking_map-1.9.4-py3-none-any.whl:

Publisher: publish.yml on igareosh/fpf-agentic-thinking-map

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

1.9.5

2 files

This release

1.9.4 This release

2 files

1.9.3

2 files

1.9.2

2 files

1.9.1

2 files

1.6.0

2 files

1.5.0

2 files

1.4.25

2 files

1.4.24

2 files

1.4.23

2 files

1.4.22

2 files

1.4.21

2 files

1.4.20

2 files

1.4.19

2 files

1.4.18

2 files

1.4.17

2 files

1.4.16

2 files

1.4.15

2 files

1.4.14

2 files

1.4.13

2 files

1.4.12

2 files

1.4.11

2 files

1.4.10

2 files

1.4.9

2 files

1.4.8

2 files

1.4.7

2 files

1.4.6

2 files

1.4.5

2 files

1.4.4

2 files

1.4.3

2 files

1.4.2

2 files

1.4.1

2 files

1.4.0

2 files

1.3.1

2 files

1.3.0

2 files

1.2.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page