task-context: links live in a human-readable "## Related" deep-link section#6
Merged
Merged
Conversation
…ection
Typed cross-task links previously sat inside the ats:context JSON block as
opaque {type, projectId, taskId} entries — a wall of IDs that means nothing to
a human reading the task in their storage app. Move them to a "## Related"
section near the bottom of the body, one bullet per link:
## Related
- depends-on: [Auth spec](https://ticktick.com/webapp/#p/demo/tasks/auth-spec)
The link text and deep link serve a human (Obsidian-style backlink navigation);
the agent reads the same lines. projectId/taskId are recovered from the URL
(TickTick deep link, or a generic .../<projectId>/<taskId> form), so the
in-memory link model and everything downstream (graph/context/hierarchy/events)
is unchanged. The machine block keeps only intent/lifecycle/security/hierarchy.
Back-compat: links still inside a legacy JSON block are read and migrate to the
Related section on the next write. Full suite green (180).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Typed cross-task links previously lived inside the
ats:contextJSON block as opaque{type, projectId, taskId}entries — a wall of IDs that means nothing to a human reading the task in TickTick/Obsidian. This moves them to a human-readable## Relatedsection near the bottom of the task body:One line serves both audiences: a human clicks the deep link (Obsidian-style backlink navigation), the agent parses
type: [title](url).How
packages/core/task-context.js(parseTaskMetadata/writeTaskMetadata+ helpers). The in-memory link model is unchanged, soats link,ats graph,ats context, hierarchy, and the event stream all keep working untouched.projectId/taskIdare recovered from the link URL — the TickTick native deep link (…/#p/<proj>/tasks/<task>), or a generic…/<projectId>/<taskId>form for other adapters'urlFor(). A link written without a url falls back to a parseableats://task/<proj>/<task>ref so it still round-trips.Back-compat
Links still inside a legacy JSON block are read (no data loss) and migrate to the
## Relatedsection on the next write.Tests
Docs updated in
docs/agent-layer.md.🤖 Generated with Claude Code