pipulate 2.72__tar.gz → 2.73__tar.gz

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.
Files changed (98) hide show
  1. {pipulate-2.72 → pipulate-2.73}/.agents/skills/journal/references/index.md +3 -2
  2. {pipulate-2.72 → pipulate-2.73}/PKG-INFO +8 -8
  3. {pipulate-2.72 → pipulate-2.73}/README.md +7 -7
  4. {pipulate-2.72 → pipulate-2.73}/__init__.py +2 -2
  5. {pipulate-2.72 → pipulate-2.73}/pipulate.egg-info/PKG-INFO +8 -8
  6. {pipulate-2.72 → pipulate-2.73}/pyproject.toml +1 -1
  7. {pipulate-2.72 → pipulate-2.73}/.agents/skills/gsc-readonly/SKILL.md +0 -0
  8. {pipulate-2.72 → pipulate-2.73}/.agents/skills/hello-workflow/SKILL.md +0 -0
  9. {pipulate-2.72 → pipulate-2.73}/.agents/skills/journal/SKILL.md +0 -0
  10. {pipulate-2.72 → pipulate-2.73}/.agents/skills/pipulate/SKILL.md +0 -0
  11. {pipulate-2.72 → pipulate-2.73}/.agents/skills/roles/SKILL.md +0 -0
  12. {pipulate-2.72 → pipulate-2.73}/.agents/skills/sheets-readonly/SKILL.md +0 -0
  13. {pipulate-2.72 → pipulate-2.73}/AGENTS.md +0 -0
  14. {pipulate-2.72 → pipulate-2.73}/AUDIT.md +0 -0
  15. {pipulate-2.72 → pipulate-2.73}/LICENSE +0 -0
  16. {pipulate-2.72 → pipulate-2.73}/MANIFEST.in +0 -0
  17. {pipulate-2.72 → pipulate-2.73}/apps/010_introduction.py +0 -0
  18. {pipulate-2.72 → pipulate-2.73}/apps/015_config.py +0 -0
  19. {pipulate-2.72 → pipulate-2.73}/apps/020_profiles.py +0 -0
  20. {pipulate-2.72 → pipulate-2.73}/apps/025_aspect.py +0 -0
  21. {pipulate-2.72 → pipulate-2.73}/apps/030_roles.py +0 -0
  22. {pipulate-2.72 → pipulate-2.73}/apps/040_hello_workflow.py +0 -0
  23. {pipulate-2.72 → pipulate-2.73}/apps/050_documentation.py +0 -0
  24. {pipulate-2.72 → pipulate-2.73}/apps/060_tasks.py +0 -0
  25. {pipulate-2.72 → pipulate-2.73}/apps/070_history.py +0 -0
  26. {pipulate-2.72 → pipulate-2.73}/apps/110_parameter_buster.py +0 -0
  27. {pipulate-2.72 → pipulate-2.73}/apps/120_link_graph.py +0 -0
  28. {pipulate-2.72 → pipulate-2.73}/apps/130_gap_analysis.py +0 -0
  29. {pipulate-2.72 → pipulate-2.73}/apps/200_workflow_genesis.py +0 -0
  30. {pipulate-2.72 → pipulate-2.73}/apps/210_widget_examples.py +0 -0
  31. {pipulate-2.72 → pipulate-2.73}/apps/220_roadmap.py +0 -0
  32. {pipulate-2.72 → pipulate-2.73}/apps/230_dev_assistant.py +0 -0
  33. {pipulate-2.72 → pipulate-2.73}/apps/240_simon_mcp.py +0 -0
  34. {pipulate-2.72 → pipulate-2.73}/apps/300_blank_placeholder.py +0 -0
  35. {pipulate-2.72 → pipulate-2.73}/apps/400_botify_trifecta.py +0 -0
  36. {pipulate-2.72 → pipulate-2.73}/apps/440_browser_automation.py +0 -0
  37. {pipulate-2.72 → pipulate-2.73}/apps/450_stream_simulator.py +0 -0
  38. {pipulate-2.72 → pipulate-2.73}/apps/510_text_field.py +0 -0
  39. {pipulate-2.72 → pipulate-2.73}/apps/520_text_area.py +0 -0
  40. {pipulate-2.72 → pipulate-2.73}/apps/530_dropdown.py +0 -0
  41. {pipulate-2.72 → pipulate-2.73}/apps/540_checkboxes.py +0 -0
  42. {pipulate-2.72 → pipulate-2.73}/apps/550_radios.py +0 -0
  43. {pipulate-2.72 → pipulate-2.73}/apps/560_range.py +0 -0
  44. {pipulate-2.72 → pipulate-2.73}/apps/570_switch.py +0 -0
  45. {pipulate-2.72 → pipulate-2.73}/apps/580_upload.py +0 -0
  46. {pipulate-2.72 → pipulate-2.73}/apps/610_markdown.py +0 -0
  47. {pipulate-2.72 → pipulate-2.73}/apps/620_mermaid.py +0 -0
  48. {pipulate-2.72 → pipulate-2.73}/apps/630_prism.py +0 -0
  49. {pipulate-2.72 → pipulate-2.73}/apps/640_javascript.py +0 -0
  50. {pipulate-2.72 → pipulate-2.73}/apps/710_pandas.py +0 -0
  51. {pipulate-2.72 → pipulate-2.73}/apps/720_rich.py +0 -0
  52. {pipulate-2.72 → pipulate-2.73}/apps/730_matplotlib.py +0 -0
  53. {pipulate-2.72 → pipulate-2.73}/apps/810_webbrowser.py +0 -0
  54. {pipulate-2.72 → pipulate-2.73}/apps/820_selenium.py +0 -0
  55. {pipulate-2.72 → pipulate-2.73}/apps/830_pico_slider.py +0 -0
  56. {pipulate-2.72 → pipulate-2.73}/cli.py +0 -0
  57. {pipulate-2.72 → pipulate-2.73}/config.py +0 -0
  58. {pipulate-2.72 → pipulate-2.73}/imports/__init__.py +0 -0
  59. {pipulate-2.72 → pipulate-2.73}/imports/ai_dictdb.py +0 -0
  60. {pipulate-2.72 → pipulate-2.73}/imports/ai_tool_discovery_simple_parser.py +0 -0
  61. {pipulate-2.72 → pipulate-2.73}/imports/append_only_conversation.py +0 -0
  62. {pipulate-2.72 → pipulate-2.73}/imports/ascii_displays.py +0 -0
  63. {pipulate-2.72 → pipulate-2.73}/imports/botify/__init__.py +0 -0
  64. {pipulate-2.72 → pipulate-2.73}/imports/botify/code_generators.py +0 -0
  65. {pipulate-2.72 → pipulate-2.73}/imports/botify/true_schema_discoverer.py +0 -0
  66. {pipulate-2.72 → pipulate-2.73}/imports/botify_code_generation.py +0 -0
  67. {pipulate-2.72 → pipulate-2.73}/imports/crud.py +0 -0
  68. {pipulate-2.72 → pipulate-2.73}/imports/database_safety_wrapper.py +0 -0
  69. {pipulate-2.72 → pipulate-2.73}/imports/dom_processing/__init__.py +0 -0
  70. {pipulate-2.72 → pipulate-2.73}/imports/dom_processing/ai_dom_beautifier.py +0 -0
  71. {pipulate-2.72 → pipulate-2.73}/imports/dom_processing/enhanced_dom_processor.py +0 -0
  72. {pipulate-2.72 → pipulate-2.73}/imports/durable_backup_system.py +0 -0
  73. {pipulate-2.72 → pipulate-2.73}/imports/mcp_orchestrator.py +0 -0
  74. {pipulate-2.72 → pipulate-2.73}/imports/server_logging.py +0 -0
  75. {pipulate-2.72 → pipulate-2.73}/imports/stream_orchestrator.py +0 -0
  76. {pipulate-2.72 → pipulate-2.73}/imports/voice_synthesis.py +0 -0
  77. {pipulate-2.72 → pipulate-2.73}/pipulate/__init__.py +0 -0
  78. {pipulate-2.72 → pipulate-2.73}/pipulate/core.py +0 -0
  79. {pipulate-2.72 → pipulate-2.73}/pipulate.egg-info/SOURCES.txt +0 -0
  80. {pipulate-2.72 → pipulate-2.73}/pipulate.egg-info/dependency_links.txt +0 -0
  81. {pipulate-2.72 → pipulate-2.73}/pipulate.egg-info/entry_points.txt +0 -0
  82. {pipulate-2.72 → pipulate-2.73}/pipulate.egg-info/requires.txt +0 -0
  83. {pipulate-2.72 → pipulate-2.73}/pipulate.egg-info/top_level.txt +0 -0
  84. {pipulate-2.72 → pipulate-2.73}/server.py +0 -0
  85. {pipulate-2.72 → pipulate-2.73}/setup.cfg +0 -0
  86. {pipulate-2.72 → pipulate-2.73}/tests/test_apply_airlock.py +0 -0
  87. {pipulate-2.72 → pipulate-2.73}/tests/test_mck_rep2.py +0 -0
  88. {pipulate-2.72 → pipulate-2.73}/tools/__init__.py +0 -0
  89. {pipulate-2.72 → pipulate-2.73}/tools/advanced_automation_tools.py +0 -0
  90. {pipulate-2.72 → pipulate-2.73}/tools/botify_tools.py +0 -0
  91. {pipulate-2.72 → pipulate-2.73}/tools/connector_tools.py +0 -0
  92. {pipulate-2.72 → pipulate-2.73}/tools/conversation_tools.py +0 -0
  93. {pipulate-2.72 → pipulate-2.73}/tools/dom_tools.py +0 -0
  94. {pipulate-2.72 → pipulate-2.73}/tools/keychain_tools.py +0 -0
  95. {pipulate-2.72 → pipulate-2.73}/tools/llm_optics.py +0 -0
  96. {pipulate-2.72 → pipulate-2.73}/tools/mcp_tools.py +0 -0
  97. {pipulate-2.72 → pipulate-2.73}/tools/scraper_tools.py +0 -0
  98. {pipulate-2.72 → pipulate-2.73}/tools/system_tools.py +0 -0
@@ -2,7 +2,7 @@
2
2
 
3
3
  > Auto-generated on 2026-09-29 by `scripts/articles/generate_ai_context.py` and
4
4
  > rewritten from scratch on every release. If this date looks stale, assume
5
- > the rest of the repo is newer than this map. 1504 entries indexed.
5
+ > the rest of the repo is newer than this map. 1505 entries indexed.
6
6
 
7
7
  This repository holds the *machinery*. The *reasoning*, the running journal
8
8
  that explains why every piece exists, lives on a separate website and not in
@@ -27,6 +27,7 @@ The first 20 entries include full `index.md` URLs to establish
27
27
  the link pattern. All remaining entries are bare slugs. Reconstruct any full
28
28
  URL as: `https://mikelev.in/futureproof/{slug}/index.md`
29
29
 
30
+ - [2026-09-29] [Layered Reality and Operator Overloading: Reading the Physics of CPython in the Age of AI](https://mikelev.in/futureproof/layered-reality-operator-overloading-cpython/index.md)
30
31
  - [2026-09-29] [The Three-Door Installer: Named Prompts, Split DNS, and Verifiable Releases](https://mikelev.in/futureproof/the-three-door-installer-and-named-prompts/index.md)
31
32
  - [2026-09-29] [The Deed Is Named for the Door: Engineering Replayable QA Archives for AI](https://mikelev.in/futureproof/the-deed-is-named-for-the-door-qa-archive-zip/index.md)
32
33
  - [2026-09-29] [The Qamy Door and the Cellular Witness: Launching a Third Domain with Replayable Receipts](https://mikelev.in/futureproof/qamy-door-cellular-witness-replayable-receipts/index.md)
@@ -46,12 +47,12 @@ URL as: `https://mikelev.in/futureproof/{slug}/index.md`
46
47
  - [2026-09-19] [Dual-Model Failover: Engineering Independent Backoff Clocks for LLM APIs](https://mikelev.in/futureproof/dual-model-failover-independent-backoff/index.md)
47
48
  - [2026-09-19] [Playing Pinball in the Age of AI: A Replayable Workflow Guide](https://mikelev.in/futureproof/playing-pinball-in-the-age-of-ai-replayable-workflow-guide/index.md)
48
49
  - [2026-09-19] [The Color Blue and the Pipe: Inspecting Code Before Execution](https://mikelev.in/futureproof/color-blue-pipe-inspecting-code/index.md)
49
- - [2026-09-19] [Edna Mode Rules for AI Workflows: Why Practical Tooling Beats Fragile Abstractions](https://mikelev.in/futureproof/edna-mode-rules-for-ai-workflows/index.md)
50
50
 
51
51
  ## Compact slug index -- pattern: https://mikelev.in/futureproof/{slug}/index.md
52
52
 
53
53
  Format: `[date] [size] slug` -- fetch any entry as `https://mikelev.in/futureproof/{slug}/index.md`
54
54
 
55
+ - [2026-09-19] [294k] edna-mode-rules-for-ai-workflows
55
56
  - [2026-09-18] [207k] the-one-door-threshold-replayable-ai-workflows
56
57
  - [2026-09-18] [292k] the-first-ten-minutes-reproducible-ai-workflows
57
58
  - [2026-09-17] [184k] retrieval-cue-memory-consolidation-selective-hydration
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pipulate
3
- Version: 2.72
3
+ Version: 2.73
4
4
  Summary: The context compiler that helps you prompt well -- local-first, Nix-reproducible, replayable. The successor to AI SEO software.
5
5
  Author-email: Mike Levin <pipulate@gmail.com>
6
6
  License-Expression: AGPL-3.0-or-later
@@ -62,13 +62,13 @@ Dynamic: license-file
62
62
  3. For the Why: `.agents/skills/journal/` (the journal index, an Agent Skills reference; served at https://pipulate.com/AI_CONTEXT.md )
63
63
 
64
64
  ```text
65
- ( "The AI said so" is a transcript, not a record. )
66
- O /) ____ This drawing is checksummed.
67
- > Same files, same words, same bytes: o /)\__// / \ If it reaches you altered, the
68
- > a change you can replay is a change ___(/_ 0 0 | | model rewrote what it was told to
69
- > you can put your name behind. *( ==(_T_)== NPvg | copy, and that is the finding.
70
- > One diff per turn, a reading before \ ) ""\ | | Verify with nothing installed:
71
- > and after, and a digest you can check. |__>-\_>_> \____/ python scripts/foo_cartridge.py foo.zip
65
+ ( Do you put your name on it because Claude said so? )
66
+ O /) __
67
+ > Do you think the Aviation industry o /)\__// / \ "What Claude said" is a Cockpit
68
+ > vibe-codes without checking for ___(/_ 0 0 | | Voice Recorder (CVR) hear-say of a
69
+ > confident hallucinations? So then *( ==(_T_)== QA | subcontractor. This tool is a Flight
70
+ > why should you? If anyone relies on \ ) ""\ | | Data Recorder (FDR) for High Reliability
71
+ > your work then you should Q/A it. |__>-\_>_> \__/ Organizations (HROs). Use when it matters.
72
72
  ```
73
73
 
74
74
  ## If you can't reproduce it, it didn't happen
@@ -5,13 +5,13 @@
5
5
  3. For the Why: `.agents/skills/journal/` (the journal index, an Agent Skills reference; served at https://pipulate.com/AI_CONTEXT.md )
6
6
 
7
7
  ```text
8
- ( "The AI said so" is a transcript, not a record. )
9
- O /) ____ This drawing is checksummed.
10
- > Same files, same words, same bytes: o /)\__// / \ If it reaches you altered, the
11
- > a change you can replay is a change ___(/_ 0 0 | | model rewrote what it was told to
12
- > you can put your name behind. *( ==(_T_)== NPvg | copy, and that is the finding.
13
- > One diff per turn, a reading before \ ) ""\ | | Verify with nothing installed:
14
- > and after, and a digest you can check. |__>-\_>_> \____/ python scripts/foo_cartridge.py foo.zip
8
+ ( Do you put your name on it because Claude said so? )
9
+ O /) __
10
+ > Do you think the Aviation industry o /)\__// / \ "What Claude said" is a Cockpit
11
+ > vibe-codes without checking for ___(/_ 0 0 | | Voice Recorder (CVR) hear-say of a
12
+ > confident hallucinations? So then *( ==(_T_)== QA | subcontractor. This tool is a Flight
13
+ > why should you? If anyone relies on \ ) ""\ | | Data Recorder (FDR) for High Reliability
14
+ > your work then you should Q/A it. |__>-\_>_> \__/ Organizations (HROs). Use when it matters.
15
15
  ```
16
16
 
17
17
  ## If you can't reproduce it, it didn't happen
@@ -12,7 +12,7 @@ Usage:
12
12
  pipulate
13
13
  """
14
14
 
15
- __version__ = "2.72"
15
+ __version__ = "2.73"
16
16
  # APOSTROPHES RESTORED (2026-08-04). They were stripped as a workaround for
17
17
  # flake.nix's descMatch regex, whose character class excluded ' from the
18
18
  # CAPTURE and truncated the banner to "(So)". That regex was fixed in the same
@@ -23,7 +23,7 @@ __version__ = "2.72"
23
23
  # is not a property of the system; the regex is. Blast radius is one banner:
24
24
  # nothing but flake.nix reads this name -- version_sync.py syncs __version__
25
25
  # and __description__, never this. So'wI' chu' -- "engage the cloaking device."
26
- __version_description__ = "No More em-dashes"
26
+ __version_description__ = "Follow the White Rabbit"
27
27
  # SPDX expression, single source of truth, synced into pyproject.toml by
28
28
  # scripts/release/version_sync.py. "-or-later" (not bare AGPL-3.0, which is
29
29
  # deprecated SPDX) because the header below grants "any later version".
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pipulate
3
- Version: 2.72
3
+ Version: 2.73
4
4
  Summary: The context compiler that helps you prompt well -- local-first, Nix-reproducible, replayable. The successor to AI SEO software.
5
5
  Author-email: Mike Levin <pipulate@gmail.com>
6
6
  License-Expression: AGPL-3.0-or-later
@@ -62,13 +62,13 @@ Dynamic: license-file
62
62
  3. For the Why: `.agents/skills/journal/` (the journal index, an Agent Skills reference; served at https://pipulate.com/AI_CONTEXT.md )
63
63
 
64
64
  ```text
65
- ( "The AI said so" is a transcript, not a record. )
66
- O /) ____ This drawing is checksummed.
67
- > Same files, same words, same bytes: o /)\__// / \ If it reaches you altered, the
68
- > a change you can replay is a change ___(/_ 0 0 | | model rewrote what it was told to
69
- > you can put your name behind. *( ==(_T_)== NPvg | copy, and that is the finding.
70
- > One diff per turn, a reading before \ ) ""\ | | Verify with nothing installed:
71
- > and after, and a digest you can check. |__>-\_>_> \____/ python scripts/foo_cartridge.py foo.zip
65
+ ( Do you put your name on it because Claude said so? )
66
+ O /) __
67
+ > Do you think the Aviation industry o /)\__// / \ "What Claude said" is a Cockpit
68
+ > vibe-codes without checking for ___(/_ 0 0 | | Voice Recorder (CVR) hear-say of a
69
+ > confident hallucinations? So then *( ==(_T_)== QA | subcontractor. This tool is a Flight
70
+ > why should you? If anyone relies on \ ) ""\ | | Data Recorder (FDR) for High Reliability
71
+ > your work then you should Q/A it. |__>-\_>_> \__/ Organizations (HROs). Use when it matters.
72
72
  ```
73
73
 
74
74
  ## If you can't reproduce it, it didn't happen
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
  [project]
6
6
  name = "pipulate"
7
7
  # VERSION NOTE: Synced from pipulate/__init__.py.__version__ via python version_sync.py
8
- version = "2.72"
8
+ version = "2.73"
9
9
  authors = [
10
10
  { name="Mike Levin", email="pipulate@gmail.com" },
11
11
  ]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes