@jentrix/plugin-codex 0.3.0 → 0.3.2

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": "@jentrix/plugin-codex",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "The official Jentrix plugin for Codex: connected-session skills and trusted lifecycle hooks, materialized by the Jentrix CLI (jentrix plugin install codex).",
5
5
  "keywords": [
6
6
  "jentrix",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jentrix",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Connect Codex tasks to Jentrix with trusted lifecycle hooks, exact-rollout telemetry recovery, typed artifacts, and operator-confirmed alignment.",
5
5
  "author": {
6
6
  "name": "Jentrix",
@@ -59,6 +59,26 @@ wizard; a Project is an optional task label and is never part of it).
59
59
  `$jentrix-end` moves it to In review when the work is genuinely finished —
60
60
  the terminal move is the operator's Accept, never yours.
61
61
 
62
+ 5. **Finish by reading the card**, and relay what comes back:
63
+
64
+ ```
65
+ jentrix task context --task <that task>
66
+ ```
67
+
68
+ One call returns the description, the links BOTH ways with their titles,
69
+ the subtasks, the latest artifact of each type with its id, the last five
70
+ comments, and **Related evidence** — what OTHER work in this workspace
71
+ already said about this card (learnings, decisions, findings, reports
72
+ ranked by similarity; the align output printed the same block). Read it
73
+ before you touch any code: a linked card is usually where the prior
74
+ round's reasoning lives, its artifacts are the context you would otherwise
75
+ reconstruct from scratch, and a related learning is a mistake you do not
76
+ have to make twice — `jentrix artifact get --artifact-id <id>` reads one in
77
+ full. If it prints `no links · no artifacts · no comments · no related
78
+ evidence`, the card has nothing to give and you stop looking — that single
79
+ line is the answer, not an invitation to run `task get`, `task search` and
80
+ `comment list` to confirm it.
81
+
62
82
  Notes for you (the assistant):
63
83
 
64
84
  - Do NOT pass `--provider-session` — the CLI reads the current session id and
@@ -57,27 +57,63 @@ the plan, when a long investigation resolves, or before handing the work over.
57
57
  2. Do not summarize the transcript. Do not restate the prompt. Do not include
58
58
  anything you have not verified this session — a checkpoint that carries a
59
59
  guess as a fact poisons every session that reads it.
60
- 3. Push it:
60
+ 3. **If the checkpoint claims a gate, run the gate first.** A checkpoint that
61
+ says "typecheck green" without an attested LOG behind it is a claim, and
62
+ `jentrix session end` now REFUSES a close whose report claims a gate family
63
+ (`typecheck` · `lint` · `test` · `e2e`) with no attested LOG of that same
64
+ family. So, before writing the body: for each gate you are about to name,
65
+ check whether this session already has an attested LOG for it, and if not,
66
+ run it —
67
+
68
+ ```
69
+ jentrix push log --from-cmd "<the gate command>"
70
+ ```
71
+
72
+ — then cite the returned artifact id in the checkpoint beside the claim.
73
+ The command exits with the GATE's own code, so a red gate stays red and you
74
+ report it red. If you are not going to run it, do not claim it: say what was
75
+ not run and why.
76
+
77
+ 4. **`## Code contact`** — the files the objective named, and which of them
78
+ this session actually opened:
79
+
80
+ ```
81
+ jentrix session contact --paths <the files the PROMPT/GOAL named>
82
+ ```
83
+
84
+ List the never-opened ones under that heading, verbatim. This is the check
85
+ that catches the expensive failure: work built on a file nobody read. If the
86
+ answer says no local activity skeleton exists, say THAT — "never opened" by
87
+ absence is not the same claim as "never opened" by evidence.
88
+
89
+ 5. Push it — as an ARTIFACT, never as a comment. A "Checkpoint" posted as a
90
+ comment is not a checkpoint: the summary counts REPORTs titled
91
+ `Checkpoint — …` and prints `checkpoints: N`, and a comment counts zero.
61
92
  - `jentrix push learning --title "Checkpoint — <topic>"` when it is durable
62
93
  knowledge worth carrying past this work;
63
94
  - `jentrix push report --title "Checkpoint — <topic>"` when it is the
64
95
  state of THIS work.
65
96
  Content goes on stdin.
66
- 4. Relay the returned `artifactId` to the operator, and say which kind you
97
+ 6. Relay the returned `artifactId` to the operator, and say which kind you
67
98
  chose and why.
68
- 5. If the session's task status no longer matches reality, fix it now:
99
+ 7. If the session's task status no longer matches reality, fix it now:
69
100
  `jentrix column list --board <boardId>` then
70
101
  `jentrix task move --task <id> --to-column-id <id>`. Only the columns the
71
102
  board actually has.
72
103
 
73
104
  **Cadence duty (evidence floor).** Checkpoint after EVERY commit, not only at
74
- the end: push the `decision` (with `--basis`) the commit rested on the moment
75
- it lands, and run its gates through `jentrix push log --from-cmd "<command>"`
76
- so the exit code and output tail are recorded as a LOG. Record quality must
77
- track the work, not end-of-session diligence `jentrix session end` enforces
78
- this (it refuses on commits with no decision record and on sectioned reports
79
- with no typed artifacts; a deliberate exception is an ordinary
80
- `jentrix push gap`).
105
+ the end: push the `decision` the commit rested on the moment it lands — with
106
+ `--basis <artifact-id-or-url>`, or `--no-basis "<reason>"` when it rested on
107
+ your own reading and there is nothing filed to cite (the command REFUSES
108
+ without one of the two) and run its gates through `jentrix push log
109
+ --from-cmd "<command>"` so the exit code and output tail are recorded as a LOG.
110
+ Record quality must track the work, not end-of-session diligence — `jentrix
111
+ session end` enforces this: it refuses on commits with no decision record that
112
+ names its basis, on sectioned reports with no typed artifacts, and on a gate
113
+ claimed in prose with no attested LOG of that gate family. A deliberate
114
+ exception is an ordinary `jentrix push gap` — but a gap that names a file in
115
+ the checkout this session never opened is itself refused, because that is not a
116
+ limitation, it is an unread file.
81
117
 
82
118
  Note for the operator: this records the distillation. On a session aligned
83
119
  with `--capture`, the raw pre-compaction range is preserved separately and
@@ -32,15 +32,26 @@ pipeline), the typed artifacts ARE the record — push them before closing:
32
32
  - Push the final report: write a concise session report (what was done,
33
33
  what changed, what's next) and run
34
34
  `jentrix push report --title "<short title>"` with the content on stdin.
35
- - Push any decisions made this session that were not already pushed:
36
- `jentrix push decision --basis <artifact-id|url> …` (one per decision;
37
- `--basis` is repeatable and names what the decision rested on file the
38
- context first so the ref resolves).
35
+ - Push any decisions made this session that were not already pushed. **Ask
36
+ what the decision rested on BEFORE you write the memo** — the basis is
37
+ not a field to fill in afterwards, it is the thing that makes the memo a
38
+ decision rather than an assertion. For each one, answer "what did this
39
+ rest on?" first, then push:
40
+ `jentrix push decision --basis <artifact-id|url> …` (repeatable; file the
41
+ context first so the ref resolves), or, when it genuinely rested on your
42
+ own reading of the code and there is nothing filed to cite,
43
+ `jentrix push decision --no-basis "<the reason>"`. The command REFUSES
44
+ without one of the two, and a memo with neither would not have counted
45
+ toward E2/E3 anyway.
39
46
  - **Gap sweep**: every promised-but-undone item becomes a
40
47
  `jentrix push gap` — one per gap, title stating the claim ("Windows hook
41
48
  path untested"). A session with no output MUST have at least one gap
42
49
  explaining why. Push `jentrix push issue` for anything found broken and
43
- not yet recorded.
50
+ not yet recorded. A gap that names a file in this checkout the session
51
+ never OPENED is refused with the path and the remedy: read it or drop the
52
+ path. That refusal is not an obstacle to route around — the one-line read
53
+ that satisfies it is the read that would have told you whether the gap is
54
+ real.
44
55
  - Push any durable lessons: `jentrix push learning …`.
45
56
  - Do NOT push a diff by hand. When HEAD moved, `jentrix session end`
46
57
  generates the real `git log --patch` for the session's range itself and
@@ -94,18 +105,28 @@ pipeline), the typed artifacts ARE the record — push them before closing:
94
105
  say so if the user seems to expect it.
95
106
 
96
107
  **Evidence floor.** `jentrix session end` enforces fixed checks and will
97
- REFUSE to close when they are unmet: E1 — HEAD moved but no attested DIFF
98
- (the CLI pushes the real patch itself; just re-run `session end` from the
99
- aligned checkout); E2 commits with no `jentrix push decision` and no
100
- declared-deviation `jentrix push gap`; E3 a REPORT carrying `## Learnings`
101
- / `## Gaps` / `## Decisions` sections while the session has zero
102
- corresponding typed artifacts (split them into `push learning|gap|decision`,
103
- never one blob). Comply by pushing the named evidence and retrying, or
104
- deviate honestly with a `gap` `--acknowledge-evidence-gaps` closes anyway
105
- and stamps each unmet check MISSING into Review readiness. Run every gate
106
- through `jentrix push log --from-cmd "<command>"` (it records the exit code
107
- and output tail as a LOG and exits with the command's own code), so "tests
108
- green" claims carry evidence instead of tripping the E4 advisory.
108
+ REFUSE to close when they are unmet:
109
+
110
+ - **E1**HEAD moved but no attested DIFF (the CLI pushes the real patch
111
+ itself; just re-run `session end` from the aligned checkout).
112
+ - **E2** commits with no `jentrix push decision` **that names its basis**,
113
+ and no declared-deviation `jentrix push gap`. Basis-less memos do not count,
114
+ however many are pushed: the count was never the evidence.
115
+ - **E3** a REPORT carrying `## Learnings` / `## Gaps` / `## Decisions`
116
+ sections while the session has zero corresponding typed artifacts (split
117
+ them into `push learning|gap|decision`, never one blob).
118
+ - **E4** a REPORT that CLAIMS a gate refuses the close unless the session
119
+ has an attested LOG (`jentrix push log --from-cmd`) whose command names the
120
+ **same gate family**: `typecheck` · `lint` · `test` · `e2e`. Family, not
121
+ exact command — "tests green" is covered by `pnpm test:mvp` and is NOT
122
+ covered by `pnpm lint`. A pasted LOG covers nothing; the CLI warns
123
+ `UNATTESTED LOG` when you push one, and the summary marks it.
124
+
125
+ Comply by pushing the named evidence and retrying, or deviate honestly with a
126
+ `gap`. `--acknowledge-evidence-gaps` closes anyway and stamps each unmet check
127
+ MISSING into Review readiness — reach for it when the gap is real, never to get
128
+ past a check you could satisfy by running the gate. A refusal leaves the
129
+ session AND its capture host running, so the comply work is still recorded.
109
130
 
110
131
  ## Shared boundaries
111
132