docs(6208): the remaining frontend comments drop milestone, step and rule citations
CI & Build / Python lint (push) Successful in 9s
CI & Build / Plugin hooks (push) Successful in 22s
CI & Build / TypeScript typecheck (push) Successful in 1m0s
CI & Build / integration (push) Successful in 1m55s
CI & Build / Python tests (push) Successful in 2m20s
CI & Build / Build & push image (push) Successful in 1m7s

Components, stores, api clients, router, types and shared CSS now state what
each piece is and why, without the milestone that introduced it. diff.ts
names its consumers instead of the copy history; stores/notes and tasks state
their current scope instead of the cleanup that set it; theme.css states the
token practice instead of the sweep that established it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-21 21:14:03 -04:00
co-authored by Claude Opus 5.5
parent 699a4cd986
commit bdd803537b
45 changed files with 80 additions and 95 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
<script setup lang="ts">
/**
* Family canon (milestone 463): the ideas every project on a platform shares,
* Family canon: the ideas every project on a platform shares,
* and the log of every decision about them.
*
* Nobody approves a promotion — the agent decides against the three criteria
+1 -1
View File
@@ -17,7 +17,7 @@
* exists (#3727) — sessions were proposing rules for things that should never
* have bound anyone.
*
* BUT IT CAN POINT AT ONE (milestone 440). A lesson that is an instance of a
* BUT IT CAN POINT AT ONE. A lesson that is an instance of a
* rule says so, and the page shows which of the three answers it holds: the
* rule(s) it was judged an instance of, "no rule fits" with the reason, or
* not yet judged. The third is the one worth acting on, so it is stated as
+5 -7
View File
@@ -5,11 +5,9 @@
*
* THREE FIELDS, NOT ONE MARKDOWN BOX. The title and body are composed by the
* service from `what`, `when_to_apply` and `insight`; this form never sends a
* document. That is the design milestone 385 step 1 settled on, and the
* evidence for it is blunt: the snippet corpus carries a trigger on every
* record with no guard anywhere, because a service composes the title from a
* named parameter. What is at 100% is a named structured field — not a writer
* remembering a convention.
* document, because a field the service composes from a named parameter is
* filled every time, with no guard anywhere — a writer remembering a
* convention is not.
*
* THE TRIGGER IS THE FIELD THAT CANNOT BE MISSED, so it is given the most
* room, its own explanation, and a save button that refuses without it. A
@@ -17,7 +15,7 @@
* surfaces — and there is nothing to notice afterwards, because it looks
* exactly like a lesson that works. The form is where that gets caught.
*
* WHICH RULE IS THIS AN INSTANCE OF (milestone 440) is asked here, while the
* WHICH RULE IS THIS AN INSTANCE OF is asked here, while the
* writer still has the situation in mind, the same way the create tool asks
* it. There are three answers: the rule(s), "no rule fits" with a reason, or
* leave it open. None is forced, because a lesson left open is still a
@@ -267,7 +265,7 @@ onMounted(() => {
// Pre-fill from the link that brought you here, the same convention the
// snippet editor uses. Left null it is a lesson with no recorded origin,
// which is valid — `project_id` says where a lesson was LEARNED and was
// never the limit on where it can be found (step 3).
// never the limit on where it can be found.
if (!isEdit.value && route.query.projectId) {
projectId.value = Number(route.query.projectId);
}
+2 -2
View File
@@ -35,7 +35,7 @@ const projectId = ref<number | null>(null);
const milestoneId = ref<number | null>(null);
const noteType = ref<NoteType>("note");
// The note's own check (milestone 317). Offered only for a plain note: a
// The note's own check. Offered only for a plain note: a
// task's decay is its status, and a snippet has verify_snippet — the service
// refuses both, so the form must not ask for what the save would reject.
const verifyWith = ref("");
@@ -509,7 +509,7 @@ onUnmounted(() => assist.clearSelection());
</select>
</div>
<!-- The note's own check (milestone 317). Shown only for a plain
<!-- The note's own check. Shown only for a plain
note: the service refuses a check on a task or a snippet, so
offering the fields there would be a form whose save fails. -->
<template v-if="canCarryCheck">
+1 -1
View File
@@ -50,7 +50,7 @@ const newTitle = ref("");
const newDescription = ref("");
const newGoal = ref("");
const creating = ref(false);
// Step 2 of the modal (milestone 297): what the new project inherits.
// Step 2 of the modal: what the new project inherits.
const modalStep = ref<1 | 2>(1);
const newInception = ref<InceptionChoices>(emptyChoices());