first-tree-staging 0.5.4-staging.293.1 → 0.5.4-staging.294.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "first-tree-staging",
|
|
3
|
-
"version": "0.5.4-staging.
|
|
3
|
+
"version": "0.5.4-staging.294.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "First Tree — unified CLI for Context Tree onboarding, agent management, and team messaging. (Source-tree dev build; CI rewrites `name` and `bin` for prod / staging publishes — see docs/local-dev-isolation.md.)",
|
|
6
6
|
"keywords": [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: first-tree-context
|
|
3
|
-
version: 0.8.
|
|
3
|
+
version: 0.8.2
|
|
4
4
|
cliCompat:
|
|
5
5
|
first-tree: ">=0.5.0 <0.6.0"
|
|
6
6
|
description: Context Tree operating guide. Covers what a Context Tree is, the source-system boundary, how to read the tree before acting, and how to write tree updates from a specific source (PR / doc / note). Load before any task that reads or writes context — including when the user pastes a PR / doc / note and says "reflect this in the tree", "update the tree from this", or "write this decision to the tree".
|
|
@@ -183,21 +183,52 @@ goes in frontmatter:
|
|
|
183
183
|
- **What** — the decision, design choice, or constraint, **as it
|
|
184
184
|
stands today**. High-level: the durable claim, not the
|
|
185
185
|
implementation; current state, not a timeline of prior states.
|
|
186
|
-
When the
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
186
|
+
When the design ends up somewhere the first draft did not — a
|
|
187
|
+
different architectural choice, an extra constraint, a
|
|
188
|
+
course-correct on the initial proposal — **the new direction
|
|
189
|
+
is the What.** Write it as the durable claim of the design,
|
|
190
|
+
not as "what we changed to" or "what the reviewer asked for".
|
|
191
|
+
When the decision later changes again, rewrite *What* in place
|
|
192
|
+
to reflect the new state; do not preserve the old state
|
|
193
|
+
alongside it (`git log`, and any raw-archive domain your tree
|
|
194
|
+
may have, are where prior states live). The Source-System
|
|
195
|
+
Boundary table above is the canonical guide for which "whats"
|
|
196
|
+
belong.
|
|
197
|
+
- **Why** — the path the design took to its final state: the
|
|
198
|
+
concerns weighed, the alternatives considered, the
|
|
199
|
+
course-corrections made and what triggered each one. The final
|
|
200
|
+
decision is the *What*; the path to it is the *Why*. **A node
|
|
201
|
+
without a Why is a fact, not a decision record.** Why-content is
|
|
202
|
+
the most commonly lost axis — protect it deliberately during the
|
|
203
|
+
rush to land a PR or close a meeting.
|
|
204
|
+
- **Why lives in the design phase, not the final state.** The
|
|
205
|
+
concerns, course-corrections, and dropped alternatives are
|
|
206
|
+
generated *during* design — the moment somebody flags "won't
|
|
207
|
+
this break X?", the moment a first proposal is corrected, the
|
|
208
|
+
moment an option is dropped because it conflicts with another
|
|
209
|
+
domain. By the time the PR lands the design is settled, but
|
|
210
|
+
the reasoning that settled it lives only in chat / review
|
|
211
|
+
threads / meeting notes and decays fast.
|
|
212
|
+
- **Course-corrections are the canonical Why.** Each correction
|
|
213
|
+
encodes two things at once: an alternative that was *actually
|
|
214
|
+
pursued* (not abstractly considered), and the constraint or
|
|
215
|
+
insight that ruled it out. Both are exactly the content that
|
|
216
|
+
keeps the next agent from re-litigating the same path. In a
|
|
217
|
+
copilot team most corrections come from human↔agent
|
|
218
|
+
back-and-forth — capture them while you still have them.
|
|
219
|
+
- **Translate corrections into present-tense rationale, not
|
|
220
|
+
narration.** "The agent first proposed a global cache; the
|
|
221
|
+
human said no" is a timeline (Hard Rule 8 forbids it). "Cache
|
|
222
|
+
is per-tenant because multi-tenancy isolation is a hard
|
|
223
|
+
constraint" is the surviving Why. Keep the *constraint* the
|
|
224
|
+
correction introduced; drop the *story* of how it happened.
|
|
225
|
+
- Other rich sources: meeting discussions where a decision was
|
|
226
|
+
reached; PR review threads that changed the design.
|
|
198
227
|
- Self-check: "Six months from now, if a reader reads only the
|
|
199
|
-
*What*, will they be tempted to re-litigate this decision?"
|
|
200
|
-
yes, the Why is under-documented
|
|
228
|
+
*What*, will they be tempted to re-litigate this decision?"
|
|
229
|
+
If yes, the Why is under-documented — the most common gap is
|
|
230
|
+
a concern or course-correction from the design phase that
|
|
231
|
+
lived only in chat and never made it into the node.
|
|
201
232
|
- **Who** — ownership, carried by `owners` frontmatter and
|
|
202
233
|
`members/<id>/NODE.md` nodes. **Do not put ownership in the body.**
|
|
203
234
|
Changes here go through humans (Hard Rule 6).
|
|
@@ -333,6 +364,50 @@ Belongs: constraints that came out of it ("session tokens must be
|
|
|
333
364
|
HMAC-signed before storage"); the accountable owner.
|
|
334
365
|
Does not belong: the specific vulnerabilities or how they were patched.
|
|
335
366
|
|
|
367
|
+
**Trigger: course-correction during design — partway through, a
|
|
368
|
+
reviewer says "no, the cache should be per-tenant, not global;
|
|
369
|
+
multi-tenancy was the whole point of last quarter's work."**
|
|
370
|
+
Belongs (What): "cache is keyed per-tenant".
|
|
371
|
+
Belongs (Why): the multi-tenancy constraint that ruled global caching
|
|
372
|
+
out, written as a *current* constraint ("multi-tenancy isolation is a
|
|
373
|
+
hard constraint; a shared cache violates it"). The correction is the
|
|
374
|
+
canonical Why — without it, the next agent reading the cache code
|
|
375
|
+
alone has no way to re-derive the constraint.
|
|
376
|
+
Does not belong: "we originally proposed a global cache, then switched
|
|
377
|
+
after review" — that is timeline narration (Hard Rule 8). State the
|
|
378
|
+
surviving constraint, not the path to it.
|
|
379
|
+
|
|
380
|
+
**Trigger: a constraint surfaces during design — partway through,
|
|
381
|
+
somebody points out "this also has to work offline-first for the
|
|
382
|
+
mobile client; we cannot assume connectivity."**
|
|
383
|
+
Belongs (What): "writes are offline-first; the client buffers and
|
|
384
|
+
reconciles on reconnect".
|
|
385
|
+
Belongs (Why): "the mobile client operates without connectivity for
|
|
386
|
+
hours at a time; designs requiring server round-trips do not satisfy
|
|
387
|
+
this constraint." This is the canonical Why a future reader will need
|
|
388
|
+
— no amount of reading the source repo alone would surface the
|
|
389
|
+
offline-first requirement, because it lives only in somebody's head
|
|
390
|
+
until the design phase forces it out and the node records it.
|
|
391
|
+
Does not belong: "the first cut of the design didn't consider
|
|
392
|
+
offline, then we added it after a teammate flagged the mobile case"
|
|
393
|
+
— that is timeline narration (Hard Rule 8). Record the surviving
|
|
394
|
+
constraint, not the path that surfaced it.
|
|
395
|
+
|
|
396
|
+
**Trigger: design-phase direction picked between options — the
|
|
397
|
+
candidates were A and B; the chosen direction is "B, because A would
|
|
398
|
+
block the auth-rewrite landing next quarter."**
|
|
399
|
+
Belongs (What): the decision to go with B, stated as the durable
|
|
400
|
+
claim of the design.
|
|
401
|
+
Belongs (Why): the cross-domain interaction with the upcoming
|
|
402
|
+
auth-rewrite, named as a present-tense constraint ("the auth-rewrite
|
|
403
|
+
in `/auth/NODE.md` constrains this domain to B-shaped designs"). This
|
|
404
|
+
is the kind of constraint that only surfaces when somebody carrying
|
|
405
|
+
the broader org context weighs in during design — and exactly the Why
|
|
406
|
+
nobody will reconstruct from the code six months from now.
|
|
407
|
+
Does not belong: "option A was considered and rejected because…" as
|
|
408
|
+
historical narration. Phrase the surviving constraint, not the
|
|
409
|
+
past-tense rejection.
|
|
410
|
+
|
|
336
411
|
**Trigger: PR that flips a policy default — e.g. "approvals required"
|
|
337
412
|
goes from 1 to 0.**
|
|
338
413
|
Belongs: the *current* rule stated as fact ("approvals required = 0");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.8.
|
|
1
|
+
0.8.2
|