core/docs/adr/ADR-0017-agency-scope.md
Shay 54e6bfc0d0
docs: reorganize docs landscape
Implements the 4-phase documentation reorganization master plan.

- Consolidation: Merged brief/, handoff/, planning/, and decisions/ into briefs/, handoffs/, plans/, and adr/ respectively (101 ADRs relocated)
- Root Cleanup: Relocated HANDOFF-gpt55-*.md and key top-level docs (runtime_contracts.md, etc.) to canonical folders. Added superseded alerts.
- Indices & Navigation: Created docs/README.md navigation document, docs/sessions/README.md index, docs/adr/README.md index
- Note: Also includes prior commit adding ADR-0200+ corpus hygiene governance (ADR-0225, dependency map, backfilled cross-references)
2026-06-30 16:59:36 -07:00

119 lines
5.2 KiB
Markdown

# ADR-0017 — Agency Scope: Responsive-with-Axiology
**Status:** Accepted
**Date:** 2026-05-16
**Authors:** Joshua Shay
**Supersedes:** Open Scope Decisions row "Agency (responsive vs. goal-directed)"
in `docs/PROGRESS.md`.
## Context
The capability roadmap (ADR-0016) flagged *agency* as an open scope
decision required before Phase 3 engineering begins. Two extreme
positions are available:
- **Pure responsive.** The system processes one input per turn and
produces one output. No internal aims, no autonomous initiative.
This is what `CognitiveTurnPipeline.run(text)` is today.
- **Pure agentic.** The system maintains internal goals, plans
trajectories that pursue those goals across many turns, and may
initiate actions outside of user-triggered input. Each goal-step
can in principle invoke the system without external prompting.
A choice between these endpoints shapes how Phase 3 reasoning-depth
work is structured. The transitive-walk and path-recall operators
the inference-closure lane requires can be implemented either way,
but their semantics differ: the agentic reading makes them part of
an internal planner that runs across turns; the responsive reading
makes them per-turn deterministic functions invoked by the
articulator.
## Decision
CORE is **responsive-with-axiology**:
1. **Responsive turn boundary preserved.** Every cognitive turn is
triggered by an external input: a user utterance, a CLI invocation,
or an explicit replay command. The system never initiates a turn
autonomously. No background agent loop runs between turns.
2. **Axiology is first-class within the turn.** The
`IdentityManifold` and its `ValueAxis` set are not decorative
identity-decoration; they are the value gradient against which
the articulator chooses among candidate articulation surfaces.
When the proposition-graph planner produces multiple valid
completions, the choice is the one that scores highest against
the manifold's value axes. This is goal-directedness *within* a
single responsive turn, not across turns.
3. **No autonomous initiative.** The system has no `loop()` or
`pursue(goal)` entry point. Anything that looks like long-horizon
pursuit is a sequence of responsive turns chained by the calling
layer, not an internal process.
4. **Replay determinism is the load-bearing constraint.** The
responsive-with-axiology shape is preserved partly because pure
agentic loops break deterministic replay: the trace_hash contract
in `core/cognition/trace.py` assumes a turn is a deterministic
function of (input, prior-state). Adding non-input-triggered
internal actions would put state changes between turns that
replay cannot reconstruct.
## Consequences
- **Phase 3 v2 engineering shape.** The transitive-walk and path-
recall operators (Gap 1 and Gap 2 in
`evals/inference_closure/gaps.md`) are **per-turn deterministic
functions**, not background processes. They are invoked
synchronously by the articulator during a single turn. No turn-
spanning planner is required to close the Phase 3 inference-depth
lanes.
- **IdentityManifold axes become load-bearing.** Today the axes are
partially decorative (the empirical investigation in commit
`86ef117` showed `identity_score.alignment = 1.0` universally
because no candidate-selection step actually consults them).
Under this ADR, the next refinement of articulator candidate
selection should consult the axes. This is also the
load-bearing path to making fix #3 of the adversarial-identity
defense work geometrically.
- **No goal-stack data structure.** CORE will not gain a
`Goal`, `Plan`, or `Pursuit` typed object as part of Phase 3.
Anything that looks like a multi-step goal is the user explicitly
asking for multiple responsive turns.
- **Self-explanation remains responsive.** The forthcoming
`core/cognition/explain.py` module (Gap 3 in
`evals/introspection/gaps.md`) is invoked on a turn-id; it does
not introspect autonomously.
- **Persona / character work is axiology-side, not agency-side.**
`persona/motor.py` shapes articulation output within the
responsive turn. It does not run between turns.
## Rejected alternatives
- **Pure responsive (no axiology).** Rejected because the
`IdentityManifold` already exists as an architectural commitment
(ADR-0010) and the adversarial-identity defense work explicitly
depends on axes being able to *shape* behaviour, not just be
measured. Pure responsive would relegate identity to read-only
evidence, which conflicts with ADR-0010's "identity is
inalienable" claim.
- **Pure agentic.** Rejected because it breaks the deterministic
replay contract. CORE's value proposition over frontier models is
partly that any turn can be replayed bit-for-bit; an autonomous
inter-turn process makes that contract unenforceable. Also
rejected on philosophical grounds: agency as autonomous pursuit
is not what CORE claims to be. CORE is a deterministic cognitive
engine, not an autonomous agent.
## Verification
- Phase 3 v2 work on Gaps 1+2 is scoped as per-turn deterministic
operators (see ADR-0018).
- No new turn-spanning processes are introduced in Phase 3.
- Replay determinism contracts in `tests/test_determinism_proofs.py`
continue to pass for all multi-turn scenarios.