3.7 KiB
3.7 KiB
Proposal: Project Map Prompt Injection
Status
| Field | Value |
|---|---|
| Phase | Proposal |
| Based on | Grill Me checkpoint + runtime/doc inspection |
| Next | Spec |
Problem
pi-project-map currently provides strong generated artifacts and tool surfaces, but weak automatic runtime guidance.
Today the repo has:
- a one-time
before_agent_starthint, - a
session_startdirty-state UI notification, - tool metadata and docs,
- generated
.pi-map.md/.pi-map.index.mdartifacts.
But it lacks a clear spec for:
- when maps/indexes should be injected automatically,
- how much should be injected under a context budget,
- how reinjection should avoid wasting prompt space,
- how visible that guidance should be to the user,
- how strong enforcement should be,
- how to validate this behavior with integration tests.
Proposed change
Adopt a runtime prompt-injection policy for project-map that:
- always injects the root pair after init,
- expands outward under a hybrid context budget cap,
- avoids redundant reinjection by scanning the actual outgoing context,
- keeps retrieval guidance separate from this spec,
- exposes four configurable guidance modes (
off,advisory,strong,strict), - uses mixed visibility: user-visible startup hints, agent-visible artifact injection,
- requires extensive integration tests for reinjection and context-scanning behavior.
In scope
- Define pre-init startup hint behavior
- Define post-init automatic root-pair preload behavior
- Define hybrid budget defaults and config shape
- Define outgoing-context scanning for reinjection avoidance
- Define visibility model for hints vs injected artifacts
- Define configurable guidance-strength modes and default
- Define relevant-turn reinjection triggers for
strong - Define strict-mode bypass-justification behavior at the spec level
- Define validation and integration-test expectations
- Define implementation slices for runtime hooks/config/tests/docs
Out of scope
- Redesign retrieval ranking or
project_map_context - Merge retrieval behavior into this policy spec
- Redesign paired artifact contents
- Introduce vector stores, Engram, or external retrieval backends
- Guarantee provider-agnostic perfect token counting beyond best-effort budgeting
Decisions from grilling
| Topic | Decision |
|---|---|
| Change slug | project-map-prompt-injection |
| Scope split | Retrieval remains a separate spec |
| Pre-init | Inject only a lightweight project_map_init hint |
| Fake/synthetic maps before init | No |
| Guaranteed minimum | Always inject root .pi-map.index.md + root .pi-map.md |
| Budget model | Hybrid cap |
| Budget config | Relative percentage + optional absolute cap; smaller wins |
| Budget default | 15% of context window, capped at 100k tokens |
| Reinjection avoidance | Canonical marker scanning in actual outgoing context |
| Visibility | Mixed |
| Mode set | off, advisory, strong, strict |
| Default mode | strong |
strong triggers |
Relevant turns only |
| Validation | Extensive integration tests required |
Success criteria
- The spec clearly defines what is injected before and after init
- The spec clearly defines how much is injected and how budgets are applied
- The spec clearly defines when reinjection checks happen and how duplicates are avoided
- The spec clearly defines mode semantics and the default mode
- The spec clearly separates runtime injection policy from retrieval behavior
- The implementation plan can be executed in narrow, reviewable slices
- The validation section makes integration coverage a first-class requirement