Source custody on the living job board
Disposition: settled at the REQ-281 trial boundary; no broader Human
disposition is implied.
Delivery: REQ-281 is fulfilled and CHANGE-281 is complete.
Evidence: Eyes passed exact seven-path digest
91ce56b046c5d413009a42c898572f08a891d7611b522d0460dce75a6896ff86
after the final stored-scope amendment.
Opened: 2026-08-24.
Last observed: 2026-08-24T21:53:33-04:00.
This page preserves why the source-custody rail exists, how its candidate had to change under moving shared source, and what the terminal trial actually proved. It is not source custody itself. The owning rows, exact Git/source state, Tendril ties, and Eyes judgment remain authoritative.
Identity and boundary
FIND-760 controls the problem and architectural judgment. PROP-169 cut the first vertical trial; REQ-281 and CHANGE-281 own delivery:
REQ-281 --springs-from--> PROP-169 --springs-from--> FIND-760
|
+--points-to--> REQ-242
REQ-242 was useful predecessor ground: it shipped isolated Hands worktrees, but preparation remained conditional on provider capability. TRACE-425 proved the live counterexample—source-changing work could retain an ordinary packet against the crowded shared checkout when the provider bundle was unavailable.
The trial was deliberately narrower than the whole source lifecycle. It did not own immutable sealing as a house-wide primitive, PATCH/Goblin custody, checkpoint or remote-push policy, historical attribution, or a replacement VCS.
What became true
The shipped vertical makes source-changing job work declare validated repo-relative paths, establishes isolated base-bound custody independently of provider transport, refuses overlapping active scopes before dispatch, and projects declared custody separately from Git-derived actual paths and unowned shared-checkout dirt.
Several distinctions survived the implementation churn:
- Git status proves changed paths, not ownership.
- Declared scope and observed changes are separate facts.
- Unknown or malformed lease state blocks new writers; it never becomes an empty-looking lane.
- Review attaches to an exact candidate digest, not a semantic intention.
- A changed integration base creates a different candidate requiring fresh review.
- REQ fulfillment, CHANGE completion, durability checkpoint, and remote push are different events.
The accepted source body
The final seven-path candidate covered:
tools/capability_bundles.pytools/corpus_ops.pytools/ops_schema.pytools/corpus_ops_v1/domains/__init__.pytools/corpus_ops_v1/domains/house/news.pytests/test_capability_bundles.pytests/test_capability_bundle_spawn.py
TRACE-477 sealed digest 91ce56b0… after repairing canonical validation of
stored scopes. It reported 54 focused and 140 combined passing tests. TRACE-478
then independently passed that exact digest with 64 focused custody and 139
current-composite tests, specifically confirming that hostile stored scopes
project unknown and block reservation and start. The owning store subsequently
fulfilled REQ-281 and completed CHANGE-281.
This account does not turn those test counts into a durability claim or a remote-push claim. Neither was inside the trial.
Why the path was not linear
- Early provider movements failed before a reviewable candidate. TRACE-431 returned the first broad implementation.
- TRACE-432 found a load-bearing overlap/lease race and malformed-lease fail-open behavior despite otherwise passing evidence.
- TRACE-435 passed amended digest
8bcdf1e3…, but TRACE-436 correctly refused integration after shared main moved and the accepted schema/news siblings were absent from that snapshot. - FIND-790 named the accepted REQ-269, REQ-274, and REQ-280 work as the new
semantic base. TRACE-448 later produced seven-path digest
5eef0eae…. - TRACE-450 ended without a verdict when the Human paused review. PATCH-033
then changed overlapping
tools/corpus_ops.py, making that digest stale. - TRACE-454 and TRACE-466 were degraded refresh attempts. TRACE-471 produced
digest
40860353…against the moved base. - TRACE-472 returned AMEND: an incomplete object-shaped lease could evade the
unknown-state block. TRACE-473 repaired it as digest
bc4a8d4d…. - TRACE-475 returned AMEND again: stored
../escape, absolute, and noncanonical scope paths could evade overlap. TRACE-477 repaired canonical validation and sealed the final digest. - TRACE-478 passed that exact body. REQ-281 and CHANGE-281 then settled.
The failed and amended generations remain important evidence. They explain why the final contract includes atomic publication, structural lease validation, and canonical stored-path validation rather than merely a dashboard and a worktree.
Standing and reopen route
| Surface | Observed state | Reading |
|---|---|---|
| PROP-169 | enacted | The bounded vertical trial was routed |
| REQ-281 | fulfilled | The done-line was accepted against the final candidate |
| CHANGE-281 | complete, completed=1 |
The owning change is settled |
| PATCH-033 | verified | The overlapping provider-affinity movement was accounted for |
| TRACE-477 | closed / ok | Hands sealed the final exact digest |
| TRACE-478 | closed / ok | Eyes passed that exact digest |
The work entry is now frozen until evidence changes a material reading. Reopen for a demonstrated regression in the trial, a contradiction in the accepted digest, or a separately authorized cut for immutable sealing, PATCH custody, integration identity, or durability. Those larger ideas are not silently carried as unfinished REQ-281 work.
Refresh
python corpus.py ops tendril roots REQ-281
python corpus.py ops tendril shoots FIND-760
python corpus.py ops find get FIND-760
python corpus.py ops find get FIND-790
python corpus.py ops find get FIND-797
python corpus.py ops prop get PROP-169 --json
python corpus.py ops req get REQ-281 --json
python corpus.py ops change get CHANGE-281 --json
python corpus.py ops patch get PATCH-033 --json
python corpus.py ops trace list --request-id REQ-281 --limit 30 --json
python corpus.py ops trace get TRACE-472 --json
python corpus.py ops trace get TRACE-475 --json
python corpus.py ops trace get TRACE-477 --json
python corpus.py ops trace get TRACE-478 --json
git status --short
git rev-parse HEAD